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 della linea 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 contare 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 ed eseguire 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 warehouse 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 dell'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 fotogrammi 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 dalle visualizzazioni insolite.
- Assicurati che persone e veicoli siano completamente o quasi 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. Queste dimensioni corrispondono a 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 di origine del 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. Tieni in considerazione questi
fattori quando scegli le origini dati:
- Scarse condizioni di illuminazione.
- Affollamento e occlusione degli oggetti.
- Punti di vista insoliti o meno comuni.
- Dimensioni ridotte degli oggetti.