Contagem de objetos usando Ultralytics YOLO26#
O que é contagem de objetos?#
A contagem de objetos com Ultralytics YOLO26 envolve identificar e contar com precisão objetos específicos em vídeos e fluxos de câmeras. O YOLO26 se destaca em aplicações em tempo real, oferecendo uma contagem de objetos eficiente e precisa em vários cenários, como análise de multidões e vigilância, graças a seus algoritmos de última geração e recursos de aprendizado profundo.
Assista: Como realizar contagem de objetos em tempo real com Ultralytics YOLO26 🚀
Vantagens da contagem de objetos#
- Otimização de recursos: A contagem de objetos facilita a gestão eficiente de recursos ao fornecer contagens precisas e otimizar a alocação de recursos em aplicações como gestão de inventário.
- Segurança aprimorada: A contagem de objetos aprimora a segurança e a vigilância ao rastrear e contar entidades com precisão, contribuindo para a detecção proativa de ameaças.
- Tomada de decisões informada: A contagem de objetos oferece informações valiosas para a tomada de decisões e otimiza processos no varejo, na gestão de tráfego e em vários outros domínios.
Aplicações no mundo real#
| Logística | Aquacultura |
|---|---|
![]() | ![]() |
| Contagem de pacotes em esteira usando Ultralytics YOLO26 | Contagem de peixes no mar usando Ultralytics YOLO26 |
Conte objetos com YOLO26#
Defina uma region para contagem — dois pontos para uma linha ou três ou mais para um polígono — e passe-a para a solução ObjectCounter. O contador rastreia cada objeto entre os quadros e contabiliza as entradas/saídas quando os objetos rastreados cruzam a linha ou passam pela região, retornando um quadro anotado que você pode gravar em um vídeo de saída.
# Run a counting example
yolo solutions count show=True
# Pass a source video
yolo solutions count source="path/to/video.mp4"
# Pass region coordinates
yolo solutions count region="[(20, 400), (1080, 400), (1080, 360), (20, 360)]"O argumento region aceita dois pontos (para uma linha) ou um polígono com três ou mais pontos. Defina as coordenadas na ordem em que devem ser conectadas para que o contador saiba exatamente onde ocorrem as entradas e saídas.
Argumentos de ObjectCounter#
Aqui está uma tabela com os argumentos de ObjectCounter:
| Argumento | Tipo | Padrão | Descrição |
|---|---|---|---|
model | str | None | Caminho para um arquivo de modelo Ultralytics YOLO. |
show_in | bool | True | Flag que controla se as contagens de entrada são exibidas no fluxo de vídeo. |
show_out | bool | True | Flag que controla se as contagens de saída são exibidas no fluxo de vídeo. |
region | list ou dict | None | Pontos 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_width | int | 2 | Espessura das linhas das caixas, dos pontos-chave e das contagens desenhados pela solução. |
verbose | bool | True | Ativa 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 ObjectCounter permite usar vários argumentos track:
| Argumento | Tipo | Padrão | Descrição |
|---|---|---|---|
tracker | str | 'tracktrack.yaml' | Especifica o algoritmo de rastreamento a utilizar. Opções integradas: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml. |
conf | float | 0.25 | Define o limiar de confiança das deteções; valores mais baixos permitem rastrear mais objetos, mas podem incluir falsos positivos. |
iou | float | 0.7 | Define o limiar de interseção sobre união (IoU) para filtrar deteções sobrepostas. |
classes | list | None | Filtra os resultados pelo índice da classe. Por exemplo, classes=[0, 2, 3] rastreia apenas as classes especificadas. |
device | str | None | Especifica 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. |
imgsz | int or tuple | 640 | Tamanho 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_det | int | 300 | Número máximo de deteções mantidas por fotograma antes do rastreamento, limitando os objetos que uma solução processa em cenas densas. |
quantize | int or str | None | Precisão de inferência: 16 (FP16) ou 32/unset (FP32) para modelos PyTorch e TorchScript fora da CPU; os outros formatos usam a precisão selecionada pelo artefato e pelo ambiente de execução. Substitui o argumento obsoleto half. |
Além disso, há suporte para os argumentos de visualização listados abaixo:
| Argumento | Tipo | Padrão | Descrição |
|---|---|---|---|
show | bool | False | Se 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_conf | bool | True | Exibe 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_labels | bool | True | Exibe os rótulos de cada detecção na saída visual. Permite identificar imediatamente os objetos detectados. |
Perguntas frequentes#
Para contar objetos em um vídeo usando Ultralytics YOLO26, siga estas etapas:
- Importe as bibliotecas necessárias (
cv2,ultralytics). - Defina a região de contagem (por exemplo, um polígono, uma linha etc.).
- Configure a captura de vídeo e inicialize o contador de objetos.
- Processe cada quadro para rastrear os objetos e contá-los na região definida.
Veja um exemplo simples de contagem em uma região:
import cv2 from ultralytics import solutions def count_objects_in_region(video_path, output_video_path, model_path): """Count objects in a specific region within a video.""" cap = cv2.VideoCapture(video_path) assert cap.isOpened(), "Error reading video file" w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS)) video_writer = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h)) region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)] counter = solutions.ObjectCounter(show=True, region=region_points, model=model_path) while cap.isOpened(): success, im0 = cap.read() if not success: print("Video frame is empty or processing is complete.") break results = counter(im0) video_writer.write(results.plot_im) cap.release() video_writer.release() cv2.destroyAllWindows() count_objects_in_region("path/to/video.mp4", "output_video.avi", "yolo26n.pt")Para configurações e opções mais avançadas, confira a solução RegionCounter para contar objetos simultaneamente em várias regiões.
- Importe as bibliotecas necessárias (
Usar Ultralytics YOLO26 para contagem de objetos oferece várias vantagens:
- Otimização de recursos: A solução facilita a gestão eficiente de recursos ao fornecer contagens precisas, ajudando a otimizar a alocação de recursos em setores como gestão de inventário.
- Segurança aprimorada: A solução aprimora a segurança e a vigilância ao rastrear e contar entidades com precisão, contribuindo para a detecção proativa de ameaças e os sistemas de segurança.
- Tomada de decisões informada: A solução oferece informações valiosas para a tomada de decisões e otimiza processos em domínios como varejo, gestão de tráfego e outros.
- Processamento em tempo real: A arquitetura do YOLO26 permite a inferência em tempo real, tornando-o adequado para fluxos de vídeo ao vivo e aplicações sensíveis ao tempo.
Para ver exemplos de implementação e aplicações práticas, explore a solução TrackZone para rastrear objetos em zonas específicas.
Para contar classes específicas de objetos usando Ultralytics YOLO26, especifique as classes desejadas durante a etapa de rastreamento. Veja abaixo um exemplo em Python:
import cv2 from ultralytics import solutions def count_specific_classes(video_path, output_video_path, model_path, classes_to_count): """Count specific classes of objects in a video.""" cap = cv2.VideoCapture(video_path) assert cap.isOpened(), "Error reading video file" w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS)) video_writer = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h)) line_points = [(20, 400), (1080, 400)] counter = solutions.ObjectCounter(show=True, region=line_points, model=model_path, classes=classes_to_count) while cap.isOpened(): success, im0 = cap.read() if not success: print("Video frame is empty or processing is complete.") break results = counter(im0) video_writer.write(results.plot_im) cap.release() video_writer.release() cv2.destroyAllWindows() count_specific_classes("path/to/video.mp4", "output_specific_classes.avi", "yolo26n.pt", [0, 2])Neste exemplo,
classes_to_count=[0, 2]significa que a solução conta objetos das classes0e2(por exemplo, pessoa e carro no conjunto de dados COCO). Você encontra mais informações sobre os índices das classes na documentação do conjunto de dados COCO.Ultralytics YOLO26 oferece várias vantagens em relação a outros modelos de detecção de objetos, como Faster R-CNN, SSD e versões anteriores do YOLO:
- Velocidade e eficiência: YOLO26 oferece processamento em tempo real, sendo ideal para aplicações que exigem inferência em alta velocidade, como vigilância e condução autônoma.
- Precisão: Oferece precisão de detecção e rastreamento de última geração, reduzindo falsos positivos e melhorando a confiabilidade geral do sistema.
- Facilidade de integração: YOLO26 oferece integração perfeita com várias plataformas e dispositivos, incluindo dispositivos móveis e dispositivos de borda, algo crucial para as aplicações modernas de IA.
- Flexibilidade: Oferece suporte às tarefas de detecção e segmentação, com o modo de rastreamento integrado e modelos configuráveis para atender a requisitos de casos de uso específicos.
Confira a documentação do YOLO26 da Ultralytics para conhecer melhor seus recursos e comparações de desempenho.
Sim, Ultralytics YOLO26 é ideal para aplicações avançadas, como análise de multidões e gestão de tráfego, graças aos recursos de detecção em tempo real, à escalabilidade e à flexibilidade de integração. Seus recursos avançados permitem rastrear, contar e classificar objetos com alta precisão em ambientes dinâmicos. Alguns exemplos de casos de uso:
- Análise de multidões: Monitore e gerencie grandes aglomerações, garantindo a segurança e otimizando o fluxo de pessoas com a contagem baseada em regiões.
- Gestão de tráfego: Rastreie e conte veículos, analise padrões de tráfego e gerencie congestionamentos em tempo real com os recursos de estimativa de velocidade.
- Análise de varejo: Analise os padrões de movimentação dos clientes e suas interações com os produtos para otimizar o layout das lojas e melhorar a experiência do cliente.
- Automação industrial: Conte produtos em esteiras e monitore linhas de produção para controlar a qualidade e melhorar a eficiência.
Para aplicações mais especializadas, explore as soluções da Ultralytics, um conjunto abrangente de ferramentas criado para desafios de visão computacional do mundo real.

