
O modelo de estatísticas de ocupação permite-lhe contar pessoas ou veículos com base em entradas específicas que adiciona em frames de vídeo. Em comparação com o modelo de deteção de veículos com pessoas, o modelo de estatísticas de ocupação oferece funcionalidades avançadas. Estas funcionalidades são a contagem de zonas de atividade, a contagem de atravessamentos de linhas e a deteção de permanência.
- As zonas ativas permitem aos utilizadores contar pessoas ou veículos em zonas específicas definidas pelo utilizador.
- A deteção de atravessamento de linhas permite contabilizar a direção em que um objeto atravessa uma linha específica.
- A deteção do tempo de permanência baseia-se nas zonas de atividade e oferece a capacidade de detetar se os objetos permaneceram ou não numa zona durante um período mínimo.
O modelo aceita uma stream de vídeo como entrada e produz um protocol buffer com uma contagem de pessoas e veículos detetados em cada frame. O modelo é executado a seis FPS.
Exemplo de utilização: estatísticas de tráfego de cidades inteligentes
O vídeo seguinte mostra como pode usar o Vertex AI Vision para criar, compilar e implementar uma aplicação de estatísticas de ocupação.
Esta aplicação usa um modelo que conta os carros que atravessam linhas em cruzamentos que o utilizador especifica naGoogle Cloud consola. Além disso, a aplicação usa um modelo de esbatimento de pessoas para proteger a identidade de qualquer pessoa que apareça nas fontes de feeds de vídeo.
A aplicação envia dados analisados para o Media Warehouse do Vertex AI Vision para armazenamento de multimédia e também para o BigQuery para armazenar dados estruturados numa tabela. O armazém permite-lhe pesquisar dados armazenados com base em critérios dos modelos, como o número de veículos ou pessoas. Os dados da tabela no BigQuery permitem-lhe consultar os dados para obter informações analíticas.
Saída do modelo
A deteção de pessoas e veículos mostra o número de pessoas e veículos detetados no frame processado atual. O tipo de contagem baseia-se na entrada de anotações fornecida pelo utilizador. Os resultados de deteção e acompanhamento não processados também estão no resultado. Segue-se a definição do protocol buffer do resultado do processador. A frequência da stream de saída é constante: três frames 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áticas recomendadas e limitações
- Evite pontos de vista invulgares da câmara (por exemplo, uma vista de cima) em que as pessoas e os veículos aparecem de forma diferente de uma vista padrão ou comum dos mesmos. A qualidade da deteção pode ser bastante afetada por visualizações invulgares.
- Certifique-se de que as pessoas e os veículos estão total ou maioritariamente visíveis. A qualidade da deteção pode ser afetada pela oclusão parcial de outros objetos.
- O detetor de veículos com pessoas tem um tamanho mínimo de objeto detetável. Este tamanho é de aproximadamente 2% relativamente ao tamanho da vista da câmara. Certifique-se de que as pessoas e os veículos-alvo não estão demasiado afastados da câmara. Os tamanhos visíveis destes objetos principais têm de ser suficientemente grandes.
- As áreas de interesse têm de ter iluminação adequada.
- Certifique-se de que a lente da câmara de origem do vídeo está limpa.
- Certifique-se de que as entidades (exceto pessoas ou carros) não obstruem nenhuma parte do campo de visão da câmara.
- Os seguintes fatores podem prejudicar o desempenho do modelo. Considere estes fatores quando obtiver dados:
- Condições de iluminação deficientes.
- Aglomerados e oclusões de objetos.
- Pontos de vista invulgares ou menos comuns.
- Tamanhos de objetos pequenos.