YOLO Vision 2026:

Contagem de objetos em regiões com Ultralytics YOLO26#

A RegionCounter solution em Ultralytics YOLO26 rastreia objetos em quadros de vídeo e, a cada quadro, conta os objetos cujo centro da caixa delimitadora cai dentro de cada região que defines. Cada região é desenhada no quadro com a sua própria contagem em tempo direto, para que possas monitorizar várias zonas, como corredores de lojas, faixas de rodagem ou áreas de produção, com uma única chamada Python ou comando CLI.



Watch: Object Counting in Different Regions using Ultralytics YOLO | Ultralytics Solutions

Por que usar a contagem de regiões?#

  • Várias zonas de uma só vez: Passe um dicionário de polígonos nomeados e cada zona receberá uma contagem independente desenhada no quadro, para que um fluxo de vídeo cubra todas as áreas que lhe interessam.
  • Rastreamento integrado: A solução executa a deteção do YOLO26 e o object tracking internamente, pelo que não há nenhum pipeline de rastreamento separado para configurar.
  • Contagens que você pode ler programaticamente: Cada quadro processado retorna um objeto de resultados com um dicionário de contagens de regiões, pronto para painéis, alertas ou registro de logs.

Aplicações no mundo real#

VarejoRuas comerciais
Ultralytics YOLO counting people inside drawn polygon regions in a retail storeUltralytics YOLO region counts overlaid on a crowded market street
Contagem de pessoas em regiões com Ultralytics YOLOContagem de multidões em regiões com Ultralytics YOLO

Como contar objetos em regiões com Ultralytics YOLO#

Execute a solução RegionCounter em uma fonte de vídeo via CLI ou Python. Uma região pode ser uma lista de pontos (uma única zona) ou um dicionário que mapeia nomes de zonas para listas de pontos. O exemplo Python abaixo conta objetos em duas regiões nomeadas e grava os quadros processados em um arquivo de vídeo de saída:

Contagem de regiões usando Ultralytics YOLO
# Run a region counting example
yolo solutions region show=True

# Pass a source video
yolo solutions region source="path/to/video.mp4"

# Pass a custom region
yolo solutions region region="[(20, 400), (1080, 400), (1080, 360), (20, 360)]"

Argumentos do RegionCounter()#

Aqui tens uma tabela com os argumentos do RegionCounter:

ArgumentoTipoPredefiniçãoDescrição
modelstrNoneCaminho para um ficheiro de modelo YOLO da Ultralytics.
regionlist ou dictNonePontos que definem a região de interesse, seja uma lista de tuplas (x, y) ou um dicionário que mapeia nomes de regiões para listas de pontos para múltiplas regiões (apenas RegionCounter). Quando None, as soluções que exigem uma região recorrem a um padrão pré-definido.
line_widthint2Espessura da linha para as caixas, pontos-chave e contagens que a solução desenha.
verboseboolTrueAtiva o registro por quadro da solução contendo formato de entrada, contagens de classes e velocidade de processamento. A chamada de rastreamento em si é sempre silenciosa.

A solução RegionCounter permite a utilização de parâmetros de rastreamento de objetos:

ArgumentoTipoPredefiniçãoDescrição
trackerstr'botsort.yaml'Especifica o algoritmo de rastreamento a utilizar. Opções integradas: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml.
conffloat0.25Define o limiar de confiança para as deteções; valores mais baixos permitem que mais objetos sejam rastreados, mas podem incluir falsos positivos.
ioufloat0.7Define o limiar de Intersection over Union (IoU) para filtrar deteções sobrepostas.
classeslistNoneFiltra resultados por índice de classe. Por exemplo, classes=[0, 2, 3] rastreia apenas as classes especificadas.
devicestrNoneEspecifica o dispositivo para inferência (por exemplo, cpu, cuda:0 ou 0). Permite aos utilizadores selecionar entre CPU, uma GPU específica ou outros dispositivos de computação para a execução do modelo.

Adicionalmente, as seguintes definições de visualização são suportadas:

ArgumentoTipoPredefiniçãoDescrição
showboolFalseSe True, exibe as imagens ou vídeos anotados em uma janela. Útil para feedback visual imediato durante o desenvolvimento ou teste.
show_confboolTrueExibe a pontuação de confiança para cada detecção ao lado do rótulo. Fornece uma visão sobre a certeza do modelo para cada detecção.
show_labelsboolTrueExibe rótulos para cada detecção na saída visual. Fornece compreensão imediata dos objetos detectados.

Como a contagem de regiões funciona#

A RegionCounter solution transforma cada região que passas num polígono, com pelo menos três pontos por região. Uma lista simples de pontos torna-se numa única zona chamada Region#01, enquanto um dicionário mantém os teus próprios nomes de zonas; cada zona é desenhada com a sua própria cor da paleta da Ultralytics. Cada quadro é então processado em três etapas:

  1. O rastreamento YOLO26 detecta e segue cada objeto no quadro
  2. Para cada objeto rastreado, a solução calcula o centro da bbox e verifica quais polígonos de região o contêm
  3. A contagem de cada região é desenhada em seu centro, e as contagens são reiniciadas antes do próximo quadro

Como as contagens reiniciam a cada quadro, o número mostrado numa região é a sua ocupação atual, o que significa quantos objetos estão lá dentro neste momento, e não um total acumulado. Para contar objetos que cruzam uma fronteira cumulativamente, usa a ObjectCounter solution em vez disso.

Cada chamada também retorna um objeto de resultados cujo atributo plot_im contém o quadro anotado e cujo dicionário region_counts mapeia os nomes das regiões para as respetivas contagens, para que possas alimentar os números na tua própria lógica de aplicação.

Conclusão#

A solução Ultralytics YOLO26 RegionCounter monitoriza contagens de objetos em tempo real em quantas zonas nomeadas precisares com algumas linhas de código. Para ir mais longe, conta cruzamentos de fronteiras com object counting, acompanha objetos dentro de uma única zona com TrackZone ou explora as outras Ultralytics Solutions.

FAQ#

  • O Ultralytics YOLO26 conta objetos em regiões rastreando todos os objetos no quadro e testando se o centro da sua caixa delimitadora se encontra dentro de cada polígono definido pelo utilizador. A contagem mostrada numa região é a sua ocupação atual para esse quadro, e não um total acumulado. As opções de configuração estão listadas na seção RegionCounter() Arguments.

  • Passa o argumento region como um dicionário que mapeia nomes de zonas para listas de pontos, tal como no main example:

    from ultralytics import solutions
    
    region_points = {
        "region-01": [(50, 50), (250, 50), (250, 250), (50, 250)],
        "region-02": [(640, 640), (780, 640), (780, 720), (640, 720)],
    }
    regioncounter = solutions.RegionCounter(region=region_points, model="yolo26n.pt", show=True)

    Cada zona nomeada é desenhada com sua própria cor com uma contagem independente.

  • O objeto retornado por cada chamada regioncounter(im0) transporta um dicionário region_counts que mapeia os nomes das regiões para as respetivas contagens, juntamente com plot_im (o quadro anotado) e total_tracks (o número de objetos rastreados). Imprime o objeto de resultados para inspecionar todos os campos disponíveis.

  • Sim. Passa o argumento classes com os índices de classe a manter, por exemplo classes=[0] para contar apenas pessoas com um modelo pré-treinado em COCO. A lista completa de argumentos relacionados com o rastreamento está na seção RegionCounter() Arguments.

  • RegionCounter mostra quantos objetos estão dentro de cada zona poligonal no quadro atual, enquanto o ObjectCounter conta objetos cumulativamente à medida que cruzam uma linha ou limite de região, rastreando os totais de entrada e saída. Usa RegionCounter para a ocupação em tempo real de uma ou mais zonas e ObjectCounter para a contagem de entradas e saídas; regiões em forma de linha são suportadas apenas por ObjectCounter.

Comentários