YOLO Vision 2026:

Contagem de objetos usando Ultralytics YOLO26#

O que é contagem de objetos?#

Open Object Counting In Colab

A contagem de objetos com Ultralytics YOLO26 envolve a identificação e contagem precisa de objetos específicos em vídeos e fluxos de câmeras. O YOLO26 destaca-se em aplicações em tempo real, fornecendo 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 última geração e capacidades de deep learning.



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 gestão de inventário.
  • Segurança Aprimorada: A contagem de objetos melhora a segurança e a vigilância ao rastrear e contar entidades com precisão, auxiliando na detecção de ameaças proativa.
  • Tomada de Decisão Informada: A contagem de objetos oferece insights valiosos para a tomada de decisões, otimizando processos no varejo, gestão de tráfego e vários outros domínios.

Aplicações no mundo real#

LogísticaAquicultura
Conveyor Belt Packets Counting Using Ultralytics YOLO26Fish Counting in Sea using Ultralytics YOLO26
Contagem de pacotes em esteira usando Ultralytics YOLO26Contagem de peixes no mar usando Ultralytics YOLO26

Conta objetos com YOLO26#

Define um region de contagem — dois pontos para uma linha ou três ou mais para um polígono — e passa-o para a solução ObjectCounter. O contador rastreia cada objeto entre os quadros e contabiliza as contagens ENTRADA/SAÍDA quando os objetos rastreados cruzam a linha ou passam pela região, retornando um quadro anotado que podes gravar num vídeo de saída.

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 argumento region aceita dois pontos (para uma linha) ou um polígono com três ou mais pontos. Define as coordenadas na ordem em que devem ser conectadas para que o contador saiba exatamente onde ocorrem as entradas e saídas.

Argumentos do ObjectCounter#

Aqui tens uma tabela com os argumentos do ObjectCounter:

ArgumentoTipoPredefiniçãoDescrição
modelstrNoneCaminho para um ficheiro de modelo YOLO da Ultralytics.
show_inboolTrueFlag para controlar se os números de entrada devem ser exibidos no stream de vídeo.
show_outboolTrueFlag para controlar se os números de saída devem ser exibidos no stream de vídeo.
regionlist ou dictNonePontos que definem a região de interesse, seja uma lista de tuplas (x, y) ou um dicionário que mapeia nomes de regiões para listas de pontos para múltiplas regiões (apenas RegionCounter). Quando None, as soluções que exigem uma região recorrem a um padrão pré-definido.
line_widthint2Espessura da linha para as caixas, pontos-chave e contagens que a solução desenha.
verboseboolTrueAtiva o registro por quadro da solução contendo formato de entrada, contagens de classes e velocidade de processamento. A chamada de rastreamento em si é sempre silenciosa.

A solução ObjectCounter permite a utilização de vários argumentos do track:

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 que mais objetos sejam rastreados, mas podem incluir falsos positivos.
ioufloat0.7Define o limiar de Intersection over Union (IoU) para filtrar deteções sobrepostas.
classeslistNoneFiltra resultados por índice de classe. Por exemplo, classes=[0, 2, 3] rastreia apenas as classes especificadas.
devicestrNoneEspecifica o dispositivo para inferência (por exemplo, cpu, cuda:0 ou 0). Permite aos utilizadores selecionar entre CPU, uma GPU específica ou outros dispositivos de computação para a execução do modelo.

Além disso, os argumentos de visualização listados abaixo são suportados:

ArgumentoTipoPredefiniçãoDescrição
showboolFalseSe True, exibe as imagens ou vídeos anotados em uma janela. Útil para feedback visual imediato durante o desenvolvimento ou teste.
show_confboolTrueExibe a pontuação de confiança para cada detecção ao lado do rótulo. Fornece uma visão sobre a certeza do modelo para cada detecção.
show_labelsboolTrueExibe rótulos para cada detecção na saída visual. Fornece compreensão imediata dos objetos detectados.

FAQ#

  • Para contar objetos em um vídeo usando Ultralytics YOLO26, podes seguir estes passos:

    1. Importa as bibliotecas necessárias (cv2, ultralytics).
    2. Define a região de contagem (por exemplo, um polígono, linha, etc.).
    3. Configura a captura de vídeo e inicializa o contador de objetos.
    4. Processa cada quadro para rastrear 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, consulta a solução RegionCounter solution para contar objetos em várias regiões simultaneamente.

  • Usar o Ultralytics YOLO26 para contagem de objetos oferece várias vantagens:

    1. Otimização de Recursos: Facilita a gestão eficiente de recursos ao fornecer contagens precisas, ajudando a otimizar a alocação de recursos em indústrias como gestão de inventário.
    2. Segurança Aprimorada: Melhora a segurança e a vigilância ao rastrear e contar entidades com precisão, auxiliando na detecção proativa de ameaças e em sistemas de segurança.
    3. Tomada de decisão informada: Oferece insights valiosos para a tomada de decisão, otimizando processos em domínios como varejo, gestão de tráfego e mais.
    4. Processamento em Tempo Real: A arquitetura do YOLO26 permite inferência em tempo real, tornando-o adequado para fluxos de vídeo ao vivo e aplicações sensíveis ao tempo.

    Para exemplos de implementação e aplicações práticas, explora a solução TrackZone solution para rastrear objetos em zonas específicas.

  • Para contar classes específicas de objetos usando o Ultralytics YOLO26, precisas especificar as classes nas quais tens interesse durante a fase de rastreamento. 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 das classes 0 e 2 (por exemplo, pessoa e carro no dataset COCO). Podes encontrar mais informações sobre índices de classes na documentação do dataset COCO.

  • O Ultralytics YOLO26 oferece várias vantagens sobre outros modelos de detecção de objetos como Faster R-CNN, SSD e versões anteriores do YOLO:

    1. 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.
    2. Accuracy: Fornece precisão de deteção e rastreamento de última geração, reduzindo falsos positivos e melhorando a confiabilidade geral do sistema.
    3. Facilidade de Integração: O YOLO26 oferece integração perfeita com várias plataformas e dispositivos, incluindo dispositivos móveis e edge devices, o que é crucial para aplicações modernas de IA.
    4. Flexibilidade: Suporta tarefas de detection e segmentation com o track mode em cima, e modelos configuráveis para atender aos requisitos específicos de cada caso de uso.

    Consulta a Documentação do YOLO26 da Ultralytics para uma análise mais profunda 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 devido às suas capacidades de detecção em tempo real, escalabilidade e flexibilidade de integração. Seus recursos avançados permitem rastreamento, contagem e classificação de objetos de alta precisão em ambientes dinâmicos. Exemplos de casos de uso incluem:

    • Análise de Multidões: Monitoriza e gerencia grandes aglomerações, garantindo a segurança e otimizando o fluxo de pessoas com contagem baseada em regiões.
    • Gestão de Tráfego: Rastreia e conta veículos, analisa padrões de tráfego e gerencia congestionamentos em tempo real com capacidades de estimação de velocidade.
    • Análise de Varejo: Analise padrões de movimento de clientes e interações com produtos para otimizar layouts de lojas e melhorar a experiência do cliente.
    • Automação Industrial: Conte produtos em esteiras e monitore linhas de produção para controle de qualidade e melhorias de eficiência.

    Para aplicações mais especializadas, explora as Ultralytics Solutions para um conjunto abrangente de ferramentas concebidas para desafios de visão computacional do mundo real.

Comentários