Ultralytics YOLO27:
Get Started

Contagem de objetos em regiões com Ultralytics YOLO26#

A solução RegionCounter do Ultralytics YOLO26 rastreia objetos entre os quadros do vídeo e, a cada quadro, conta os objetos cujo centro da caixa delimitadora está dentro de cada região definida por você. Cada região é desenhada no quadro com sua própria contagem atualizada, permitindo monitorar várias zonas, como corredores de lojas, faixas de rodagem ou áreas de produção, com uma única chamada em Python ou um comando CLI.



Assista: Contagem de objetos em diferentes regiões usando Ultralytics YOLO | Soluções Ultralytics

Por que usar a contagem por região?#

  • Várias zonas em uma única passagem: Passe um dicionário de polígonos nomeados; cada zona recebe uma contagem independente desenhada no quadro, para que um único fluxo de vídeo cubra todas as áreas que importam para você.
  • Rastreamento integrado: A solução executa internamente a detecção do YOLO26 e o rastreamento de objetos, sem precisar configurar um pipeline de rastreamento separado.
  • Contagens acessíveis por código: Cada quadro processado retorna um objeto de resultados com um dicionário de contagens por região, pronto para uso em painéis, alertas ou registros.

Aplicações no mundo real#

RetalhoRuas de mercado
Ultralytics YOLO contando pessoas dentro de regiões poligonais desenhadas em uma loja de varejoContagens por região do Ultralytics YOLO sobrepostas a uma rua de mercado movimentada
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 usando CLI ou Python. Uma região pode ser uma lista de pontos (uma única zona) ou um dicionário que associa nomes de zonas a listas de pontos. O exemplo em Python abaixo conta objetos em duas regiões nomeadas e grava os quadros processados em um arquivo de vídeo de saída:

Contagem por região 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 de RegionCounter()#

Aqui está uma tabela com os argumentos de RegionCounter:

ArgumentoTipoPadrãoDescrição
modelstrNoneCaminho para um arquivo de modelo Ultralytics YOLO.
regionlist ou dictNonePontos que definem a região de interesse, seja como uma lista de tuplas (x, y) ou como um dicionário que associa nomes de regiões a listas de pontos para várias regiões (somente RegionCounter). Quando None, as soluções que exigem uma região usam uma região padrão predefinida.
line_widthint2Espessura das linhas das caixas, dos pontos-chave e das contagens desenhados pela solução.
verboseboolTrueAtiva o registro por quadro da solução, com o formato da entrada, as contagens por classe e a velocidade de processamento. A chamada de rastreamento em si é sempre silenciosa.

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

ArgumentoTipoPadrãoDescrição
trackerstr'tracktrack.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 das deteções; valores mais baixos permitem rastrear mais objetos, mas podem incluir falsos positivos.
ioufloat0.7Define o limiar de interseção sobre união (IoU) para filtrar deteções sobrepostas.
classeslistNoneFiltra os resultados pelo índice da classe. Por exemplo, classes=[0, 2, 3] rastreia apenas as classes especificadas.
devicestrNoneEspecifica o dispositivo para a inferência (por exemplo, cpu, cuda:0 ou 0). Permite escolher entre CPU, uma GPU específica ou outros dispositivos de computação para executar o modelo.
imgszint or tuple640Tamanho da imagem de destino para a inferência: um número inteiro para uma imagem quadrada ou um par (height, width). As dimensões são ajustadas ao stride do modelo.
max_detint300Número máximo de deteções mantidas por fotograma antes do rastreamento, limitando os objetos que uma solução processa em cenas densas.
quantizeint or strNonePrecisão da inferência: 16 (FP16) ou 32/não definido (FP32) para modelos PyTorch e TorchScript; os outros formatos calculam com a precisão selecionada pelo artefacto e pelo ambiente de execução. Substitui a opção half, obsoleta.

Além disso, há suporte para as seguintes configurações de visualização:

ArgumentoTipoPadrãoDescrição
showboolFalseSe True, exibe as imagens ou os vídeos anotados em uma janela. Útil para obter feedback visual imediato durante o desenvolvimento ou os testes.
show_confboolTrueExibe a pontuação de confiança de cada detecção junto ao rótulo. Mostra o grau de certeza do modelo em cada detecção.
show_labelsboolTrueExibe os rótulos de cada detecção na saída visual. Permite identificar imediatamente os objetos detectados.

Como funciona a contagem por região#

A solução RegionCounter transforma cada região fornecida em um polígono com pelo menos três pontos. Uma lista simples de pontos se torna uma única zona chamada Region#01, enquanto um dicionário mantém os nomes de zona definidos por você; cada zona é desenhada com uma cor própria da paleta da Ultralytics. Em seguida, cada quadro é processado em três etapas:

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

Como as contagens recomeçam a cada quadro, o número exibido em uma região representa a ocupação atual, ou seja, quantos objetos estão dentro dela naquele momento, e não um total acumulado. Para contar cumulativamente os objetos que cruzam um limite, use a solução ObjectCounter.

Cada chamada também retorna um objeto de resultados cujo atributo plot_im contém o quadro anotado e cujo dicionário region_counts associa os nomes das regiões às respectivas contagens, para que você possa usar esses números na lógica da sua aplicação.

Conclusão#

A solução RegionCounter do Ultralytics YOLO26 monitora as contagens atuais de objetos em quantas zonas nomeadas forem necessárias, usando apenas algumas linhas de código. Para ir além, conte cruzamentos de limites com a contagem de objetos, acompanhe objetos dentro de uma única zona com TrackZone ou explore as outras soluções da Ultralytics.

Perguntas frequentes#

  • Ultralytics YOLO26 conta objetos em regiões rastreando cada objeto no quadro e verificando se o centro da caixa delimitadora está dentro de cada polígono definido pelo usuário. A contagem exibida em uma região representa a ocupação atual daquele quadro, não um total acumulado. As opções de configuração estão listadas na seção RegionCounter() Arguments.

  • Passe o argumento region como um dicionário que associa nomes de zonas a listas de pontos, como no exemplo principal:

    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 uma cor própria e tem uma contagem independente.

  • O objeto retornado por cada chamada regioncounter(im0) contém um dicionário region_counts que associa os nomes das regiões às respectivas contagens, além de plot_im (o quadro anotado) e total_tracks (o número de objetos rastreados). Imprima o objeto de resultados para consultar todos os campos disponíveis.

  • Sim. Passe o argumento classes com os índices das classes que quer manter, por exemplo, classes=[0] para contar apenas pessoas com um modelo pré-treinado no COCO. A lista completa de argumentos relacionados ao rastreamento está na seção RegionCounter() Argumentos.

  • RegionCounter mostra quantos objetos estão dentro de cada zona poligonal no frame atual, enquanto ObjectCounter conta objetos cumulativamente à medida que cruzam uma linha ou o limite de uma região, acompanhando os totais de entradas e saídas. Use RegionCounter para acompanhar a ocupação ao vivo de uma ou mais zonas e ObjectCounter para contar entradas e saídas; apenas ObjectCounter oferece suporte a regiões em forma de linha.

Comentários