Contagem de Objetos usando Ultralytics YOLO26
O que é a Contagem de Objetos?
A contagem de objetos com Ultralytics YOLO26 envolve a identificação e contagem precisas de objetos específicos em vídeos e transmissões de câmeras. O YOLO26 se destaca em aplicações em tempo real, proporcionando uma contagem de objetos eficiente e precisa para vários cenários, como análise de multidões e vigilância, graças aos seus algoritmos de ponta e capacidades de deep learning.
Assista: Como Realizar a Contagem de Objetos em Tempo Real com Ultralytics YOLO26 🍏
Vantagens da Contagem de Objetos
- Otimização de Recursos: A contagem de objetos facilita o gerenciamento eficiente de recursos, fornecendo contagens precisas, otimizando 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, rastreando e contando entidades com precisão, auxiliando na detecção proativa de ameaças.
- Tomada de Decisão Informada: A contagem de objetos oferece insights valiosos para a tomada de decisões, otimizando processos no varejo, gerenciamento de tráfego e vários outros domínios.
Aplicações no Mundo Real
| Logística | Aquicultura |
|---|---|
![]() | ![]() |
| Contagem de Pacotes em Esteira Transportadora Usando Ultralytics YOLO26 | Contagem de Peixes no Mar usando Ultralytics YOLO26 |
Contagem de Objetos usando Ultralytics YOLO
# 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 region argumento 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.
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
# region_points = [(20, 400), (1080, 400)] # line counting
region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)] # rectangular region
# region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360), (20, 400)] # polygon region
# Video writer
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("object_counting_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Initialize object counter object
counter = solutions.ObjectCounter(
show=True, # display the output
region=region_points, # pass region points
model="yolo26n.pt", # model="yolo26n-obb.pt" for object counting with OBB model.
# classes=[0, 2], # count specific classes, e.g., person and car with the COCO pretrained model.
# tracker="botsort.yaml", # choose trackers, e.g., "bytetrack.yaml"
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = counter(im0)
# print(results) # access the output
video_writer.write(results.plot_im) # write the processed frame.
cap.release()
video_writer.release()
cv2.destroyAllWindows() # destroy all opened windows
ObjectCounter Argumentos
Aqui está uma tabela com o ObjectCounter argumentos:
| Argumento | Tipo | Padrão | Descrição |
|---|---|---|---|
model | str | None | Caminho para um arquivo de modelo Ultralytics YOLO. |
show_in | bool | True | Flag para controlar se exibe as contagens de entrada no fluxo de vídeo. |
show_out | bool | True | Flag para controlar se exibe as contagens de saída no fluxo de vídeo. |
region | list | '[(20, 400), (1260, 400)]' | Lista de pontos que definem a região de contagem. |
O ObjectCounter solução permite o uso de vários track argumentos:
| Argumento | Tipo | Padrão | Descrição |
|---|---|---|---|
tracker | str | 'botsort.yaml' | Especifica o algoritmo de rastreamento a ser usado, por exemplo, bytetrack.yaml ou botsort.yaml. |
conf | float | 0.1 | Define o limite de confiança para detecções; valores mais baixos permitem que mais objetos sejam rastreados, mas podem incluir falsos positivos. |
iou | float | 0.7 | Define o limite de Intersecção sobre União (IoU) para filtrar detecções sobrepostas. |
classes | list | None | Filtra os resultados por índice de classe. Por exemplo, classes=[0, 2, 3] rastreia apenas as classes especificadas. |
verbose | bool | True | Controla a exibição dos resultados de rastreamento, fornecendo uma saída visual dos objetos rastreados. |
device | str | None | Especifica o dispositivo para inferência (por exemplo, cpu, cuda:0 ou 0). Permite que os usuários selecionem entre CPU, uma GPU específica ou outros dispositivos de computação para a execução do modelo. |
Adicionalmente, os argumentos de visualização listados abaixo são suportados:
| Argumento | Tipo | Padrão | Descrição |
|---|---|---|---|
show | bool | False | Se True, exibe as imagens ou vídeos anotados em uma janela. Útil para feedback visual imediato durante o desenvolvimento ou teste. |
line_width | int or None | None | Especifica a largura da linha das caixas delimitadoras. Se None, a largura da linha é ajustada automaticamente com base no tamanho da imagem. Fornece personalização visual para clareza. |
show_conf | bool | True | Exibe o score de confiança para cada detecção junto com o rótulo. Dá uma ideia da certeza do modelo para cada detecção. |
show_labels | bool | True | Exibe rótulos para cada detecção na saída visual. Fornece compreensão imediata dos objetos detectados. |
FAQ
Como faço para contar objetos em um vídeo usando Ultralytics YOLO26?
Para contar objetos em um vídeo usando Ultralytics YOLO26, você pode seguir estes passos:
- Importe as bibliotecas necessárias (
cv2,ultralytics). - Defina a região de contagem (por exemplo, um polígono, linha, etc.).
- Configure a captura de vídeo e inicialize o contador de objetos.
- Processe cada frame para track objetos e contá-los dentro da região definida.
Aqui está um exemplo simples para 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, consulte a solução RegionCounter para contar objetos em várias regiões simultaneamente.
Quais são as vantagens de usar Ultralytics YOLO26 para contagem de objetos?
Usar Ultralytics YOLO26 para contagem de objetos oferece diversas vantagens:
- Otimização de Recursos: Facilita o gerenciamento eficiente de recursos, fornecendo contagens precisas, ajudando a otimizar a alocação de recursos em setores como gestão de inventário.
- Segurança Aprimorada: Aprimora a segurança e a vigilância, rastreando e contando entidades com precisão, auxiliando na detecção proativa de ameaças e em sistemas de segurança.
- Tomada de Decisão Informada: Oferece insights valiosos para a tomada de decisão, otimizando processos em domínios como varejo, gerenciamento de tráfego e muito mais.
- Processamento em Tempo Real: A arquitetura do YOLO26 permite inferência em tempo real, tornando-o adequado para transmissões de vídeo ao vivo e aplicações sensíveis ao tempo.
Para exemplos de implementação e aplicações práticas, explore a solução TrackZone para rastrear objetos em zonas específicas.
Como posso contar classes específicas de objetos usando Ultralytics YOLO26?
Para contar classes específicas de objetos usando Ultralytics YOLO26, você precisa especificar as classes de seu interesse durante a fase de track. Abaixo está 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 conta objetos da classe 0 e 2 (por exemplo, pessoa e carro no conjunto de dados COCO). Você pode encontrar mais informações sobre os índices de classe no Documentação do conjunto de dados COCO.
Por que devo usar o YOLO26 em vez de outros modelos de detecção de objetos para aplicações em tempo real?
Ultralytics YOLO26 oferece diversas 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: O YOLO26 oferece capacidades de processamento em tempo real, tornando-o ideal para aplicações que exigem inferência de alta velocidade, como vigilância e condução autônoma.
- Precisão: Oferece precisão de última geração para tarefas de detecção e rastreamento de objetos, reduzindo o número de falsos positivos e melhorando a confiabilidade geral do sistema.
- Facilidade de Integração: O YOLO26 oferece integração perfeita com diversas plataformas e dispositivos, incluindo dispositivos móveis e de borda, o que é crucial para aplicações modernas de IA.
- Flexibilidade: Suporta várias tarefas, como detecção de objetos, segmentação e rastreamento com modelos configuráveis para atender aos requisitos específicos do caso de uso.
Consulte a Documentação do Ultralytics YOLO26 para uma análise mais aprofundada de seus recursos e comparações de desempenho.
Posso usar o YOLO26 para aplicações avançadas como análise de multidões e gerenciamento de tráfego?
Sim, o Ultralytics YOLO26 é perfeitamente adequado para aplicações avançadas como análise de multidões e gerenciamento de tráfego devido às suas capacidades de detecção em tempo real, escalabilidade e flexibilidade de integração. Seus recursos avançados permitem o track de objetos, contagem e classificação de alta precisão em ambientes dinâmicos. Exemplos de casos de uso incluem:
- Análise de Multidões: Monitore e gerencie grandes aglomerações, garantindo a segurança e otimizando o fluxo de pessoas com contagem baseada em região.
- Gestão de Tráfego: Rastreie e conte veículos, analise padrões de tráfego e gerencie o congestionamento em tempo real com capacidades de estimativa de velocidade.
- Análise de Varejo: Analise os padrões de movimento dos clientes e as interações com os produtos para otimizar o layout da loja e melhorar a experiência do cliente.
- Automação Industrial: Contar produtos em esteiras transportadoras e monitorar linhas de produção para controle de qualidade e melhorias de eficiência.
Para aplicações mais especializadas, explore as Soluções Ultralytics para um conjunto abrangente de ferramentas projetadas para desafios de visão computacional no mundo real.

