
El modelo de análisis de ocupación te permite contar personas o vehículos a partir de las entradas específicas que agregas en los fotogramas de video. En comparación con el modelo de Detector de personas y vehículos, el modelo de Análisis de ocupación proporciona funciones avanzadas. Estas funciones son el recuento de zonas activas, el recuento de cruces de líneas y la detección de permanencia.
- Las zonas activas permiten a los usuarios contar personas o vehículos en zonas específicas definidas por el usuario.
- El cruce de línea permite contar la dirección en la que un objeto cruza una línea en particular.
- La detección del tiempo de permanencia se basa en las zonas activas y permite detectar si los objetos permanecieron en una zona durante un período mínimo.
El modelo acepta una transmisión de video por Internet como entrada y genera un búfer de protocolo con un recuento de las personas y los vehículos detectados en cada fotograma. El modelo se ejecuta a seis FPS.
Caso de uso: Análisis de tráfico de ciudades inteligentes
En el siguiente video, se muestra cómo puedes usar Gemini Enterprise Agent Platform Vision para crear, compilar e implementar una aplicación de análisis de ocupación.
Esta aplicación usa un modelo que cuenta los automóviles que cruzan las líneas en las intersecciones que el usuario especifica en la consola deGoogle Cloud . Además, la aplicación usa un modelo de desenfoque de personas para proteger la identidad de cualquier persona que aparezca en las fuentes de transmisión de video.
La aplicación envía los datos analizados a un almacén de medios de la plataforma de agentes de Gemini Enterprise Vision para el almacenamiento de medios y también a BigQuery para almacenar datos estructurados en una tabla. El almacén te permite buscar datos almacenados según criterios de los modelos, como la cantidad de vehículos o personas. Los datos de la tabla en BigQuery te permiten consultar los datos para obtener información analítica.
Salida del modelo
La detección de personas y vehículos muestra la cantidad de personas y vehículos detectados en el fotograma procesado actual. El tipo de recuento se basa en la entrada de anotación proporcionada por el usuario. Los resultados sin procesar de la detección y el seguimiento también se incluyen en el resultado. A continuación, se muestra la definición del búfer de protocolo del resultado del procesador. La frecuencia del flujo de salida es constante: tres fotogramas por segundo.
// 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;
}Prácticas recomendadas y limitaciones
- Evita los puntos de vista inusuales de la cámara (por ejemplo, una vista desde arriba) en los que las personas y los vehículos se ven de manera diferente a una vista estándar o común de ellos. La calidad de la detección puede verse muy afectada por las vistas inusuales.
- Asegúrate de que las personas y los vehículos sean completamente visibles o que se vean en su mayor parte. La calidad de la detección puede verse afectada por la oclusión parcial de otros objetos.
- El detector de vehículos y personas tiene un tamaño mínimo de objeto detectable. Este tamaño es aproximadamente el 2% con respecto al tamaño de la vista de la cámara. Asegúrate de que las personas y los vehículos objetivo no estén demasiado lejos de la cámara. Los tamaños visibles de estos objetos clave deben ser lo suficientemente grandes.
- Las áreas de interés deben tener la iluminación adecuada.
- Asegúrate de que el lente de la cámara de la fuente de video esté limpio.
- Asegúrate de que las entidades (que no sean personas o automóviles) no obstruyan ninguna parte del campo visual de la cámara.
- Los siguientes factores pueden degradar el rendimiento del modelo: Ten en cuenta estos factores cuando obtengas datos de fuentes externas:
- Las condiciones de iluminación son deficientes.
- Congestión y oclusiones de objetos
- Puntos de vista poco comunes o menos frecuentes
- Tamaños de objetos pequeños