O modelo de Análise de ocupação permite contar pessoas ou veículos com base em entradas específicas adicionadas aos frames de vídeo. Em comparação com o modelo do 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.
- As zonas ativas permitem que os usuários contem pessoas ou veículos em zonas específicas definidas pelo usuário.
- O cruzamento de linhas permite contar a direção em que um objeto cruza uma linha específica.
- A detecção de tempo de permanência é baseada em zonas ativas e permite detectar se os objetos permaneceram ou não 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 QPS.
Caso de uso: análise de tráfego de cidades inteligentes
O vídeo a seguir mostra como usar a Vertex AI Vision para criar, desenvolver e implantar um aplicativo de análise de ocupação.
Esse aplicativo usa um modelo que conta carros que cruzam linhas em cruzamentos especificados pelo usuário no consoleGoogle Cloud . Além disso, o aplicativo usa um modelo de desfoque de pessoa para proteger a identidade de qualquer pessoa que apareça nas fontes de feeds de vídeo.
O aplicativo envia dados analisados para o Media Warehouse da Vertex AI Vision para armazenamento de mídia e também para o BigQuery para armazenar dados estruturados em uma tabela. O repositório permite 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 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 de 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 vista de cima para baixo), em que pessoas e veículos aparecem de maneira diferente de uma vista padrão ou comum. A qualidade da detecção pode ser afetada em grande parte 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 pela obstrução parcial de outros objetos.
- O detector de veículos de pessoas tem um tamanho mínimo de objeto detectável. Esse tamanho é de aproximadamente 2% em relação ao tamanho da visualização da câmera. Verifique se as pessoas e os veículos de destino não estão muito longe da câmera. Os tamanhos visíveis desses objetos principais precisam ser suficientemente grandes.
- As áreas de interesse precisam ter iluminação adequada.
- Confira se a lente da câmera da fonte de vídeo está limpa.
- Verifique se as entidades (exceto pessoas ou carros) não obstruem nenhuma parte do campo de visão da câmera.
- Os fatores a seguir podem prejudicar a performance do modelo. Considere estes
fatores ao buscar dados:
- Condições de baixa luminosidade.
- Multidão e obstruções de objetos.
- Pontos de vista incomuns ou menos comuns.
- Tamanhos de objetos pequenos.