Ultralytics YOLO27:

Contagem de objetos em regiões com Ultralytics YOLO26#

A solução RegionCounter do Ultralytics YOLO26 acompanha objetos ao longo dos frames do vídeo e, em cada frame, conta os objetos cujo centro da caixa delimitadora fica dentro de cada região que definires. Cada região é desenhada no frame com a sua própria contagem em tempo real, 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 um comando CLI.



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

Porquê utilizar a contagem por regiões?#

  • Várias zonas numa só passagem: Passa um dicionário de polígonos nomeados e cada zona recebe uma contagem independente desenhada no frame, para que um único fluxo de vídeo cubra todas as áreas relevantes.
  • Acompanhamento integrado: A solução executa internamente a deteção do YOLO26 e o acompanhamento de objetos, por isso não precisas de configurar um pipeline de acompanhamento separado.
  • Contagens que podes ler programaticamente: Cada frame processado devolve um objeto de resultados com um dicionário de contagens por região, pronto para dashboards, alertas ou registos.

Aplicações no mundo real#

RetalhoRuas de mercado
Ultralytics YOLO a contar pessoas dentro de regiões poligonais desenhadas numa loja de retalhoContagens de regiões do Ultralytics YOLO sobrepostas numa 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#

Executa a solução RegionCounter numa fonte de vídeo a partir da CLI ou do 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 de Python abaixo conta objetos em duas regiões nomeadas e grava os frames processados num ficheiro de vídeo de saída:

Contagem de regiões com 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()#

Eis uma tabela com os argumentos de 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 tuplos (x, y) ou um dicionário que associa nomes de regiões a listas de pontos para várias regiões (apenas RegionCounter). Quando None, as soluções que requerem uma região utilizam uma predefinição.
line_widthint2Espessura das linhas das caixas, dos pontos-chave e das contagens desenhados pela solução.
verboseboolTrueAtiva o registo por fotograma da solução, incluindo a forma da entrada, as contagens por classe e a velocidade de processamento. A chamada de rastreamento permanece sempre silenciosa.

A solução RegionCounter permite utilizar parâmetros de acompanhamento 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 rastrear mais objetos, mas podem incluir falsos positivos.
ioufloat0.7Define o limiar de Interseção sobre a 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 selecionar entre CPU, uma GPU específica ou outros dispositivos de computação para executar o modelo.
imgszint or tuple640Tamanho da imagem de inferência alvo: um inteiro para um quadrado ou um par (height, width). As formas são ajustadas para o passo do modelo.
max_detint300Número máximo de detecções mantidas por quadro antes do rastreamento, limitando os objetos que uma solução processa em cenas densas.
quantizeint or strNonePrecisão de inferência: 16 (FP16) ou 32/não definido (FP32) para modelos PyTorch e TorchScript; outros formatos computam na precisão que o artefato e o tempo de execução selecionam. Substitui a flag obsoleta half.

Além disso, são suportadas as seguintes definições de visualização:

ArgumentoTipoPredefiniçãoDescrição
showboolFalseSe True, apresenta as imagens ou vídeos anotados numa janela. É útil para obter feedback visual imediato durante o desenvolvimento ou os testes.
show_confboolTrueApresenta a pontuação de confiança de cada deteção junto à etiqueta. Permite compreender o grau de certeza do modelo em cada deteção.
show_labelsboolTrueApresenta etiquetas para cada deteção no resultado visual. Permite compreender imediatamente os objetos detetados.

Como funciona a contagem por regiões#

A solução RegionCounter 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 denominada 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 Ultralytics. Em seguida, cada frame é processado em três etapas:

  1. O rastreamento do YOLO26 deteta e segue cada objeto no frame
  2. Para cada objeto acompanhado, a solução calcula o centro da caixa delimitadora e verifica em que polígonos de região esse centro se encontra
  3. A contagem de cada região é desenhada no respetivo centro e as contagens são repostas antes do frame seguinte

Como as contagens recomeçam em cada frame, o número apresentado numa região corresponde à sua ocupação atual, ou seja, quantos objetos estão dentro dela naquele momento, e não a um total acumulado. Para contar cumulativamente os objetos que atravessam uma fronteira, utiliza antes a solução ObjectCounter.

Cada chamada também devolve um objeto de resultados cujo atributo plot_im contém o frame anotado e cujo dicionário region_counts associa os nomes das regiões às respetivas contagens, para que possas utilizar os números na lógica da tua própria aplicação.

Conclusão#

A solução RegionCounter do Ultralytics YOLO26 monitoriza as contagens de objetos em tempo real em tantas zonas nomeadas quantas precisares, com poucas linhas de código. Para explorares mais possibilidades, conta atravessamentos de fronteiras com a contagem de objetos, acompanha objetos dentro de uma única zona com o TrackZone ou explora as restantes Ultralytics Solutions.

Perguntas frequentes#

  • O Ultralytics YOLO26 conta objetos em regiões acompanhando cada objeto no frame e verificando se o centro da sua caixa delimitadora está dentro de cada polígono definido pelo utilizador. A contagem apresentada numa região corresponde à sua ocupação atual nesse frame, e não a um total acumulado. As opções de configuração estão listadas na secção RegionCounter() Arguments.

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

  • O objeto devolvido por cada chamada regioncounter(im0) contém um dicionário region_counts que associa os nomes das regiões às respetivas contagens, juntamente com plot_im (o frame anotado) e total_tracks (o número de objetos acompanhados). Imprime o objeto de resultados para inspecionar todos os campos disponíveis.

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

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

Comentários