Guida al rilevatore di dispositivi di protezione individuale (DPI)

scheda del modello di sfocatura delle persone nella console

Il modello Rilevamento di dispositivi di protezione individuale (DPI) ti aiuta a verificare la presenza di attrezzature che limitano l'esposizione ai rischi in un ambiente di lavoro o comunitario.

Il modello rileva le persone e gli articoli DPI (guanti, mascherine e caschi) su una persona specifica. Il modello rileva gli articoli DPI e se questi coprono le parti del corpo umano corrispondenti. Il modello segnala queste informazioni sulla copertura come un punteggio di copertura compreso tra [0, 1]. Il modello accetta un flusso video come input. Il modello restituisce i risultati del rilevamento come un buffer di protocollo che puoi visualizzare in BigQuery. Il modello viene eseguito a 1 FPS.

L'operatore di rilevamento dei DPI ha tre parametri di controllo che puoi impostare:

  • Copricapo: L' operatore restituisce informazioni sugli articoli DPI relativi alla copertura della testa. Imposta questo valore nella Google Cloud console o imposta enableHeadCoverageDetection su true in PersonalProtectiveEquipmentDetectionConfig.
  • Copertura del viso: l'operatore restituisce informazioni sugli articoli DPI relativi alla copertura del viso. Imposta questo valore nella Google Cloud console o imposta enableFaceCoverageDetection su true in PersonalProtectiveEquipmentDetectionConfig.
  • Copertura delle mani: l'operatore restituisce informazioni sugli articoli DPI relativi alla copertura delle mani. Imposta questo valore nella Google Cloud console o imposta enableHandsCoverageDetection su true in PersonalProtectiveEquipmentDetectionConfig.

Specifiche dell'app del modello di rilevamento dei DPI

Segui queste istruzioni per creare un modello di rilevamento dei DPI nella Google Cloud console.

Console

Crea un'app nella Google Cloud console

  1. Per creare un'app di rilevamento dei DPI, segui le istruzioni riportate in Creare un'applicazione.

    Vai alla scheda Applicazioni

Aggiungi un modello di rilevamento dei DPI

  1. Quando aggiungi nodi del modello, seleziona Rilevamento di DPI dall'elenco dei modelli preaddestrati.

  2. Imposta i tipi di DPI che vuoi rilevare nel menu opzioni.

Aggiungi un connettore BigQuery

  1. Per utilizzare l'output, collega l'app a un connettore BigQuery.

    Per informazioni sull'utilizzo del connettore BigQuery, consulta Connettere e archiviare i dati in BigQuery. Per informazioni sui prezzi di BigQuery, consulta la pagina Prezzi di BigQuery.

Visualizza i risultati dell'output in BigQuery

Dopo che il modello ha generato i dati in BigQuery, visualizza le annotazioni di output nella dashboard di BigQuery.

Se non hai specificato un percorso BigQuery, puoi visualizzare il percorso creato dal sistema nella pagina Studio dello schema di visione della piattaforma dell'agente.

  1. Nella Google Cloud console, apri la pagina BigQuery.

    Vai a BigQuery

  2. Seleziona Espandi accanto al progetto di destinazione, al nome del set di dati e al nome dell'applicazione.

    Seleziona la tabella dell'app in BigQuery

  3. Nella visualizzazione dei dettagli della tabella, fai clic su Anteprima. Visualizza i risultati nella colonna annotazione. Per una descrizione del formato di output, consulta Output del modello.

L'applicazione archivia i risultati in ordine cronologico. I risultati più vecchi si trovano all'inizio della tabella, mentre i risultati più recenti vengono aggiunti alla fine della tabella. Per controllare i risultati più recenti, fai clic sul numero di pagina per andare all'ultima pagina della tabella.

Output del modello

L'output del modello include un timestamp, i riquadri di rilevamento, le etichette degli oggetti che corrispondono ai riquadri e i punteggi di affidabilità dell'oggetto. La frequenza del flusso di output è di un frame al secondo.

L'output del modello è in formato buffer di protocollo e include informazioni sul frame video e sul risultato della previsione di rilevamento dei DPI. L'obiettivo del modello è verificare se le persone indossano correttamente i dispositivi di protezione. Di conseguenza, il modello si concentra sul rilevamento delle persone e dei DPI che indossano. L'output del modello si concentra sul rilevamento persone. Per ogni persona rilevata, il modello elenca i DPI indossati e il punteggio di copertura di ogni dispositivo.

Nell'esempio di buffer di protocollo che segue, tieni presente quanto segue.

  • Ora corrente: il timestamp indica l'ora in cui viene generato il risultato dell'inferenza.
  • Persone rilevate: il risultato di rilevamento principale che include un riquadro identificato dalla persona, più riquadri identificati dai DPI e un punteggio di copertura per ogni parte del corpo.
  • Riquadro identificato dalla persona: il riquadro di delimitazione, il punteggio di affidabilità e l'entità della persona.
  • Riquadro identificato dai DPI: il riquadro di delimitazione, il punteggio di affidabilità e l'entità dei DPI.

Oggetto JSON di output di annotazione di esempio

{
  "currentTime": "2022-11-10T21:02:13.499255040Z",
  "detectedPersons": [
    {
      "personId": "0",
      "detectedPersonIdentifiedBox": {
        "boxId": "0",
        "normalizedBoundingBox": {
          "xmin": 0.486749,
          "ymin": 0.35927793,
          "width": 0.048630536,
          "height": 0.21746585
        },
        "confidenceScore": 0.31775203,
        "personEntity":{
          "personEntityId":"0"
        }
      },
      "detected_ppe_identified_boxes": {
        "normalized_bounding_box": {
          "xmin": 0.07268746,
          "ymin": 0.80575824,
          "width": 0.22973709,
          "height": 0.18754286
        },
        "confidence_score": 0.45171335,
        "ppe_entity": {
          "ppe_label_string": "Glove",
          "ppe_supercategory_label_string": "Hand Coverage"
        }
      },
      "detected_ppe_identified_boxes":{
        "normalized_bounding_box":{
          "xmin": 0.35457548,
          "ymin": 0.016402662,
          "width": 0.31828704,
          "height": 0.18849815
        },
        "confidence_score": 0.44129524,
        "ppe_entity":{
          "ppe_label_string": "Helmet",
          "ppe_supercategory_label_string": "Head Coverage"
          }
      }
    }
  ]
}

Definizione del buffer di protocollo

// Output format for Personal Protective Equipment Detection Operator
message PersonalProtectiveEquipmentDetectionOutput {
 // Current timestamp
 protobuf.Timestamp current_time = 1;

 // The entity info for annotations from person detection prediction result
 message PersonEntity {

   // Entity id
   int64 person_entity_id = 1;
 }

 // The entity info for annotations from PPE detection prediction result
 message PPEEntity {
   // Label id
   int64 ppe_label_id = 1;
   // Human readable string of the label (Examples: helmet, glove, mask)
   string ppe_label_string = 2;
   // Human readable string of the super category label (Examples: head_cover,
   // hands_cover, face_cover)
   string ppe_supercategory_label_string = 3;
   // Entity id
   int64 ppe_entity_id = 4;
 }

 // Bounding Box in the normalized coordinates
 message NormalizedBoundingBox {
   // Min in x coordinate
   float xmin = 1;
   // Min in y coordinate
   float ymin = 2;
   // Width of the bounding box
   float width = 3;
   // Height of the bounding box
   float height = 4;
 }

 // PersonIdentified box contains the location and the entity info of the
 // person
 message PersonIdentifiedBox {
   // An unique id for this box
   int64 box_id = 1;
   // Bounding Box in the normalized coordinates
   NormalizedBoundingBox normalized_bounding_box = 2;
   // Confidence score associated with this box
   float confidence_score = 3;
   // Person entity info
   PersonEntity person_entity = 4;
 }

 // PPEIdentified box contains the location and the entity info of the PPE
 message PPEIdentifiedBox {
   // An unique id for this box
   int64 box_id = 1;
   // Bounding Box in the normalized coordinates
   NormalizedBoundingBox normalized_bounding_box = 2;
   // Confidence score associated with this box
   float confidence_score = 3;
   // PPE entity info
   PPEEntity ppe_entity = 4;
 }

 // Detected Person contains the detected person and their associated
 // PPE and their protecting information
 message DetectedPerson {
   // The id of detected person
   int64 person_id = 1;
   // The info of detected person identified box
   PersonIdentifiedBox detected_person_identified_box = 2;
   // The info of detected person associated ppe identified boxes
   repeated PPEIdentifiedBox detected_ppe_identified_boxes = 3;

   // Coverage score for each body part


   // Coverage score for face
   optional float face_coverage_score = 4;
   // Coverage score for eyes
   optional float eyes_coverage_score = 5;
   // Coverage score for head
   optional float head_coverage_score = 6;
   // Coverage score for hands
   optional float hands_coverage_score = 7;
   // Coverage score for body
   optional float body_coverage_score = 8;
   // Coverage score for feet
   optional float feet_coverage_score = 9;
 }

 // A list of DetectedPersons
 repeated DetectedPerson detected_persons = 2;
}

Best practice e limitazioni

Per ottenere risultati ottimali quando utilizzi il rilevamento dei DPI, tieni presente quanto segue quando recuperi i dati e utilizzi il modello.

Suggerimenti per i dati di origine

Consigliato: se possibile, fai in modo che i soggetti da rilevare rimangano fermi e rivolti verso la videocamera.

Dati immagine di esempio che il rilevamento dei DPI è in grado di elaborare correttamente:

immagine di esempio di una persona rivolta verso la fotocamera con una copertura del viso
Fonte immagine: Ani Kolleshi su Unsplash.
immagine di esempio di una persona rivolta verso la fotocamera con una copertura del viso
Fonte immagine: Ahsanization su Unsplash.
immagine di esempio di una persona rivolta verso la fotocamera con una copertura del viso
Fonte immagine: Anastasiia Chepinska su Unsplash.

Non consigliato: evita i dati immagine in cui gli articoli DPI chiave sono troppo piccoli nel frame.

Dati immagine di esempio che il rilevamento dei DPI non è in grado di elaborare correttamente:

immagine di esempio di DPI troppo piccoli per essere rilevati
Fonte immagine: Josue Isai Ramos Figueroa su Unsplash.

Non consigliato: evita i dati immagine che mostrano gli articoli DPI chiave da un punto di vista non comune o con angoli irregolari.

Dati immagine di esempio che il rilevamento dei DPI non è in grado di elaborare correttamente:

immagine di esempio di un DPI mostrato da un'angolazione troppo insolita per essere rilevato
Fonte immagine: Niclas Moser su Unsplash.

Limitazioni

  • Risoluzione: la risoluzione video di input massima consigliata è 1920 x 1080, e la risoluzione minima consigliata è 160 x 120.
  • Dimensione minima dell'oggetto rilevabile: il modello ignora qualsiasi oggetto nella scena che occupa meno del 5% della dimensione del frame.
  • Illuminazione: l'illuminazione del video deve essere normale. Una luminosità o un'oscurità estreme nei dati video possono causare un calo del rendimento del rilevamento.
  • Posizionamento degli articoli DPI: il modello DPI si concentra sull'analisi per verificare se le persone utilizzano correttamente gli articoli DPI. Di conseguenza, se una persona non indossa un articolo DPI, il modello lo ignora.
  • Tipo di articolo DPI: il modello si concentra sui dispositivi di protezione per l'edilizia e non sugli articoli DPI medici. Pertanto, il rilevamento potrebbe non funzionare correttamente nei centri medici o negli ospedali.
  • Tipi di DPI personalizzati: il modello DPI non supporta gli articoli DPI definiti dal cliente. Il modello supporta il rilevamento di caschi, mascherine e guanti.

Questo elenco non è esaustivo e queste limitazioni e funzionalità sono soggette a modifiche future del prodotto.