Guida all'analisi delle presenze

Icona che raffigura la scheda del modello di analisi del numero di persone.

Il modello Analisi dell'occupazione ti consente di contare persone o veicoli in base a input specifici che aggiungi nei fotogrammi video. Rispetto al modello di rilevamento di persone e veicoli, nel modello di analisi dell'occupazione sono disponibili funzionalità avanzate. Queste funzionalità sono il conteggio delle zone attive, il conteggio dell'attraversamento di linee e il rilevamento della permanenza.

  • Le zone attive consentono agli utenti di contare persone o veicoli in zone specifiche definite dall'utente.
  • L'attraversamento di linea consente di conteggiare la direzione in cui un oggetto attraversa una determinata linea.
  • Il rilevamento del tempo di permanenza si basa sulle zone attive e offre la possibilità di rilevare se gli oggetti sono rimasti in una zona per un periodo di tempo minimo.

Il modello accetta uno stream video come input e restituisce un buffer di protocollo con un conteggio di persone e veicoli rilevati in ogni frame. Il modello viene eseguito a 6 FPS.

Caso d'uso: analisi del traffico delle smart city

Il seguente video mostra come utilizzare Gemini Enterprise Agent Platform Vision per creare, compilare e fare il deployment di un'applicazione di analisi dell'occupazione.

Questa applicazione utilizza un modello che conta le auto che attraversano le linee negli incroci specificati dall'utente nella consoleGoogle Cloud . Inoltre, l'applicazione utilizza un modello di sfocatura delle persone per proteggere l'identità di chiunque appaia nelle origini dei feed video.

L'applicazione invia i dati analizzati a un Media Warehouse di Gemini Enterprise Agent Platform Vision per l'archiviazione dei contenuti multimediali e anche a BigQuery per archiviare i dati strutturati in una tabella. Il magazzino ti consente di cercare i dati archiviati in base a criteri dei modelli, ad esempio il numero di veicoli o persone. I dati della tabella in BigQuery ti consentono di eseguire query sui dati per ottenere informazioni analitiche.

Output del modello

Il rilevamento di persone e veicoli mostra il numero di persone e veicoli rilevati nel frame elaborato corrente. Il tipo di conteggio si basa sull'input di annotazione fornito dall'utente. Nell'output sono presenti anche i risultati di rilevamento e monitoraggio non elaborati. Di seguito è riportata la definizione del buffer di protocollo dell'output del processore. La frequenza del flusso di output è costante: tre frame al secondo.

// The prediction result proto for Person/Vehicle Detection.
message OccupancyCountingPredictionResult {

 // Current timestamp.
 google.protobuf.Timestamp current_time = 1;

 // The entity info for annotations from the processor.
 message Entity {
   // Label id.
   int64 label_id = 1;
   // Human readable string of the label.
   string label_string = 2;
 }

 // Identified box contains location and the entity of the object.
 message IdentifiedBox {
   // An unique id for this box.
   int64 box_id = 1;
   // 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;
   }

   // Bounding Box in the normalized coordinates.
   NormalizedBoundingBox normalized_bounding_box = 2;

   // Confidence score associated with this box.
   float score = 3;

   // Entity of this box.
   Entity entity = 4;

   // A unique id to identify a track. It must be consistent across frames.
   // It only exists if tracking is enabled.
   int64 track_id = 5;
 }

 // A list of identified boxes.
 repeated IdentifiedBox identified_boxes = 2;

 // The statistics info for annotations from the processor.
 message Stats {
   // The object info and count for annotations from the processor.
   message ObjectCount {
     // Entity of this object.
     Entity entity = 1;
     // Count of the object.
     int32 count = 2;
   }

   // Counts of the full frame.
   repeated ObjectCount full_frame_count = 1;

   // Message for Crossing line count.
   message CrossingLineCount {
     // Line annotation from the user.
     StreamAnnotation annotation = 1;
     // The direction that follows the right hand rule.
     repeated ObjectCount positive_direction_counts = 2;
     // The direction that is opposite to the right hand rule.
     repeated ObjectCount negative_direction_counts = 3;
   }

   // Crossing line counts.
   repeated CrossingLineCount crossing_line_counts = 2;

   // Message for the active zone count.
   message ActiveZoneCount {
     // Active zone annotation from the user.
     StreamAnnotation annotation = 1;
     // Counts in the zone.
     repeated ObjectCount counts = 2;
   }

   // Active zone counts.
   repeated ActiveZoneCount active_zone_counts = 3;
 }

 // Detection statistics.
 Stats stats = 3;

 // The track info for annotations from the processor.
 message TrackInfo {
   // A unique id to identify a track. It must be consistent across frames.
   string track_id = 1;
   // Start timestamp of this track.
   google.protobuf.Timestamp start_time = 2;
 }

 // The dwell time info for annotations from the processor.
 message DwellTimeInfo {
   // A unique id to identify a track. It must be consistent across frames.
   string track_id = 1;
   // The unique id for the zone in which the object is dwelling/waiting.
   string zone_id = 2;
   // The beginning time when a dwelling object has been identified in a zone.
   google.protobuf.Timestamp dwell_start_time = 3;
   // The end time when a dwelling object has exited in a zone.
   google.protobuf.Timestamp dwell_end_time = 4;
 }

 // Track related information. All the tracks that are live at this timestamp.
 // It only exists if tracking is enabled.
 repeated TrackInfo track_info = 4;

 // Dwell time related information. All the tracks that are live in a given
 // zone with a start and end dwell time timestamp
 repeated DwellTimeInfo dwell_time_info = 5;
}

Best practice e limitazioni

  • Evita punti di vista insoliti della videocamera (ad esempio, una visualizzazione dall'alto verso il basso) in cui persone e veicoli appaiono in modo diverso rispetto a una visuale standard o comune. La qualità del rilevamento può essere influenzata in modo significativo da visualizzazioni insolite.
  • Assicurati che persone e veicoli siano completamente o quasi completamente visibili. La qualità del rilevamento può essere influenzata dall'occlusione parziale da parte di altri oggetti.
  • Il rilevatore di persone e veicoli ha una dimensione minima rilevabile degli oggetti. Questa dimensione è circa il 2% rispetto alle dimensioni dell'inquadratura. Assicurati che le persone e i veicoli target non siano troppo lontani dalla videocamera. Le dimensioni visibili di questi oggetti chiave devono essere sufficientemente grandi.
  • Le aree di interesse devono essere illuminate correttamente.
  • Assicurati che l'obiettivo della videocamera della sorgente video sia pulito.
  • Assicurati che le entità (diverse da persone o auto) non ostruiscano nessuna parte del campo visivo della videocamera.
  • I seguenti fattori potrebbero peggiorare le prestazioni del modello. Considera questi fattori quando acquisisci i dati:
    • Scarse condizioni di illuminazione.
    • Affollamento e occlusione degli oggetti.
    • Punti di vista insoliti o meno comuni.
    • Dimensioni ridotte degli oggetti.