Ultralytics YOLO27:
Get Started

Contagem de objetos usando Ultralytics YOLO26#

O que é contagem de objetos?#

Open Object Counting In Colab

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ísticaAquacultura
Contagem de pacotes em esteira usando Ultralytics YOLO26Contagem de peixes no mar usando Ultralytics YOLO26
Contagem de pacotes em esteira usando Ultralytics YOLO26Contagem 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.

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. 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:

ArgumentoTipoPadrãoDescrição
modelstrNoneCaminho para um arquivo de modelo Ultralytics YOLO.
show_inboolTrueFlag que controla se as contagens de entrada são exibidas no fluxo de vídeo.
show_outboolTrueFlag que controla se as contagens de saída são exibidas no fluxo de vídeo.
regionlist ou dictNonePontos 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_widthint2Espessura das linhas das caixas, dos pontos-chave e das contagens desenhados pela solução.
verboseboolTrueAtiva 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:

ArgumentoTipoPadrãoDescrição
trackerstr'tracktrack.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 das deteções; valores mais baixos permitem rastrear mais objetos, mas podem incluir falsos positivos.
ioufloat0.7Define o limiar de interseção sobre 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 escolher entre CPU, uma GPU específica ou outros dispositivos de computação para executar o modelo.
imgszint or tuple640Tamanho 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_detint300Número máximo de deteções mantidas por fotograma 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/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:

ArgumentoTipoPadrãoDescrição
showboolFalseSe 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_confboolTrueExibe 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_labelsboolTrueExibe 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:

    1. Importe as bibliotecas necessárias (cv2, ultralytics).
    2. Defina a região de contagem (por exemplo, um polígono, uma linha etc.).
    3. Configure a captura de vídeo e inicialize o contador de objetos.
    4. 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.

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

    1. 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.
    2. 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.
    3. 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.
    4. 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 classes 0 e 2 (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:

    1. 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.
    2. Precisão: Oferece precisão de detecção e rastreamento de última geração, reduzindo falsos positivos e melhorando a confiabilidade geral do sistema.
    3. 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.
    4. 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.

Comentários