Guia de análise de ocupação

card de modelo de análise de ocupação no console

Com o modelo de análise de ocupação, é possível contar pessoas ou veículos com base em entradas específicas adicionadas aos frames de vídeo. Em comparação com o modelo de detector de pessoas e veículos, o modelo de análise de ocupação oferece recursos avançados. Esses recursos são contagem de zonas ativas, contagem de cruzamento de linha e detecção de permanência.

  • Com as zonas ativas, os usuários podem contar pessoas ou veículos em zonas específicas definidas por eles.
  • Com a detecção de cruzamento de linha, é possível contar a direção em que um objeto cruza uma linha específica.
  • A detecção de tempo de permanência se baseia em zonas ativas e oferece a capacidade de detectar se os objetos permaneceram em uma zona por um período mínimo.

O modelo aceita um fluxo de vídeo como entrada e gera um buffer de protocolo com uma contagem de pessoas e veículos detectados em cada frame. O modelo é executado a 6 FPS.

Caso de uso: análise de tráfego de cidades inteligentes

O vídeo a seguir mostra como usar a plataforma de agentes do Gemini Enterprise Vision para criar, desenvolver e implantar um aplicativo de análise de ocupação.

Esse aplicativo usa um modelo que conta os carros que cruzam as linhas em cruzamentos especificados pelo usuário no console doGoogle Cloud . Além disso, o aplicativo usa um modelo de desfoque de pessoas para proteger a identidade de quem aparece nas fontes de feed de vídeo.

O aplicativo envia dados analisados para um warehouse de mídia do Gemini Enterprise Agent Platform Vision para armazenamento de mídia e também para o BigQuery para armazenar dados estruturados em uma tabela. O data warehouse permite pesquisar dados armazenados com base em critérios dos modelos, como número de veículos ou pessoas. Com os dados da tabela no BigQuery, é possível consultar os dados para informações analíticas.

Saída do modelo

A detecção de pessoas e veículos mostra o número de pessoas e veículos detectados no frame processado atual. O tipo de contagem é baseado na entrada de anotação fornecida pelo usuário. Os resultados brutos de detecção e rastreamento também estão na saída. Confira abaixo a definição do buffer de protocolo da saída do processador. A frequência do fluxo 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 incomuns da câmera (por exemplo, uma visualização de cima para baixo) em que pessoas e veículos aparecem de forma diferente de uma visão padrão ou comum deles. A qualidade da detecção pode ser muito afetada por visualizações incomuns.
  • Confira se as pessoas e os veículos estão totalmente ou quase totalmente visíveis. A qualidade da detecção pode ser afetada por oclusão parcial de outros objetos.
  • O detector de pessoas e veículos tem um tamanho mínimo de objeto detectável. Esse tamanho é de aproximadamente 2% em relação ao tamanho da imagem da câmera ao vivo. Verifique se as pessoas e os veículos de interesse não estão muito longe da câmera. Os tamanhos visíveis desses objetos principais precisam ser grandes o suficiente.
  • As áreas de interesse precisam ter iluminação adequada.
  • Verifique se a lente da câmera da fonte de vídeo está limpa.
  • Verifique se as entidades (que não sejam pessoas ou carros) não obstruem nenhuma parte do campo de visão da câmera.
  • Os fatores a seguir podem prejudicar o desempenho do modelo. Considere estes fatores ao coletar dados:
    • Condições de iluminação ruins.
    • Aglomeração e oclusões de objetos.
    • Pontos de vista incomuns ou menos comuns.
    • Tamanhos de objetos pequenos.