Contagem de objetos com Ultralytics YOLO26#
O que é a contagem de objetos?#
A contagem de objetos com Ultralytics YOLO26 envolve a identificação e a contagem precisas de objetos específicos em vídeos e transmissões de câmaras. O YOLO26 destaca-se em aplicações em tempo real, proporcionando uma contagem de objetos eficiente e precisa em vários cenários, como análise de multidões e vigilância, graças aos seus algoritmos de última geração e às suas capacidades de aprendizagem profunda.
Watch: How to Perform Real-Time Object Counting with 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, otimizando a alocação de recursos em aplicações como a gestão de inventário.
- Segurança reforçada: a contagem de objetos reforça a segurança e a vigilância ao monitorizar e contar entidades com precisão, ajudando na deteção de ameaças proativa.
- Tomada de decisões informada: a contagem de objetos fornece informações valiosas para a tomada de decisões, otimizando processos no retalho, na gestão de tráfego e em vários outros domínios.
Aplicações no mundo real#
| Logística | Aquacultura |
|---|---|
![]() | ![]() |
| Contagem de pacotes numa correia transportadora com Ultralytics YOLO26 | Contagem de peixes no mar com Ultralytics YOLO26 |
Contar objetos com YOLO26#
Define uma region de contagem — dois pontos para uma linha ou três ou mais para um polígono — e passa-a para a solução ObjectCounter. O contador acompanha cada objeto entre frames e contabiliza as entradas/saídas quando os objetos monitorizados atravessam a linha ou passam pela região, devolvendo um frame anotado que podes escrever num 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. Define as coordenadas pela ordem em que devem ser ligadas, para que o contador saiba exatamente onde ocorrem as entradas e as saídas.
Argumentos de ObjectCounter#
Eis uma tabela com os argumentos de ObjectCounter:
| Argumento | Tipo | Predefinição | Descrição |
|---|---|---|---|
model | str | None | Caminho para um ficheiro de modelo YOLO da Ultralytics. |
show_in | bool | True | Sinalizador que controla se as contagens de entradas são apresentadas na transmissão de vídeo. |
show_out | bool | True | Sinalizador que controla se as contagens de saídas são apresentadas na transmissão de vídeo. |
region | list ou dict | None | Pontos 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_width | int | 2 | Espessura das linhas das caixas, dos pontos-chave e das contagens desenhados pela solução. |
verbose | bool | True | Ativa 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 ObjectCounter permite utilizar vários argumentos track:
| Argumento | Tipo | Predefinição | Descrição |
|---|---|---|---|
tracker | str | 'botsort.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 para as 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 a 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 selecionar 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 inferência alvo: um inteiro para um quadrado ou um par (height, width). As formas são ajustadas para o passo do modelo. |
max_det | int | 300 | Número máximo de detecções mantidas por quadro 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/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 suportados os argumentos de visualização indicados abaixo:
| Argumento | Tipo | Predefinição | Descrição |
|---|---|---|---|
show | bool | False | Se True, apresenta as imagens ou vídeos anotados numa janela. É útil para obter feedback visual imediato durante o desenvolvimento ou os testes. |
show_conf | bool | True | Apresenta 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_labels | bool | True | Apresenta etiquetas para cada deteção no resultado visual. Permite compreender imediatamente os objetos detetados. |
Perguntas frequentes#
Para contar objetos num vídeo com o Ultralytics YOLO26, podes seguir estes passos:
- Importa as bibliotecas necessárias (
cv2,ultralytics). - Define a região de contagem (por exemplo, um polígono, uma linha, etc.).
- Configura a captura de vídeo e inicializa o contador de objetos.
- Processa cada frame para acompanhar os objetos e contá-los dentro da região definida.
Aqui tens um exemplo simples de contagem numa 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, consulta a solução RegionCounter para contar objetos em várias regiões simultaneamente.
- Importa as bibliotecas necessárias (
A utilização do Ultralytics YOLO26 para a contagem de objetos oferece várias vantagens:
- Otimização de recursos: facilita a gestão eficiente de recursos ao fornecer contagens precisas, ajudando a otimizar a alocação de recursos em setores como a gestão de inventário.
- Segurança reforçada: reforça a segurança e a vigilância ao monitorizar e contar entidades com precisão, ajudando na deteção proativa de ameaças e nos sistemas de segurança.
- Tomada de decisões informada: fornece informações valiosas para a tomada de decisões, otimizando processos em domínios como o retalho, a 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 transmissões de vídeo ao vivo e aplicações sensíveis ao tempo.
Para obter exemplos de implementação e aplicações práticas, explora a solução TrackZone para acompanhar objetos em zonas específicas.
Para contar classes específicas de objetos com o Ultralytics YOLO26, tens de especificar as classes pretendidas durante a fase de acompanhamento. Abaixo tens 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 são contados objetos da classe0e2(por exemplo, pessoa e carro no conjunto de dados COCO). Podes encontrar mais informações sobre os índices das classes na documentação do conjunto de dados COCO.O Ultralytics YOLO26 oferece várias vantagens em relação a outros modelos de deteçã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, sendo ideal para aplicações que exigem inferência de alta velocidade, como vigilância e condução autónoma.
- Precisão: proporciona uma precisão de deteção e acompanhamento de última geração, reduzindo os falsos positivos e melhorando a fiabilidade geral do sistema.
- Facilidade de integração: o YOLO26 oferece uma integração perfeita com várias plataformas e dispositivos, incluindo dispositivos móveis e dispositivos de edge, o que é crucial para as aplicações modernas de IA.
- Flexibilidade: suporta tarefas de deteção e segmentação, com o modo de acompanhamento e modelos configuráveis para satisfazer requisitos específicos de cada caso de utilização.
Consulta a documentação do YOLO26 da Ultralytics para uma análise mais aprofundada das suas funcionalidades e comparações de desempenho.
Sim, o Ultralytics YOLO26 é perfeitamente adequado para aplicações avançadas, como análise de multidões e gestão de tráfego, graças às suas capacidades de deteção em tempo real, escalabilidade e flexibilidade de integração. As suas funcionalidades avançadas permitem um acompanhamento, uma contagem e uma classificação de objetos de alta precisão em ambientes dinâmicos. Alguns exemplos de utilização incluem:
- Análise de multidões: monitoriza e gere grandes concentrações de pessoas, garantindo a segurança e otimizando o fluxo de multidões com a contagem baseada em regiões.
- Gestão de tráfego: acompanha e conta veículos, analisa padrões de tráfego e gere congestionamentos em tempo real com capacidades de estimativa de velocidade.
- Análise de retalho: analisa padrões de movimentação dos clientes e interações com produtos para otimizar a disposição das lojas e melhorar a experiência do cliente.
- Automação industrial: conta produtos em correias transportadoras e monitoriza linhas de produção para melhorar o controlo de qualidade e a eficiência.
Para aplicações mais especializadas, explora as soluções da Ultralytics, que oferecem um conjunto abrangente de ferramentas concebidas para desafios reais de visão computacional.

