Ultralytics YOLO27:

Contagem de objetos com Ultralytics YOLO26#

O que é a contagem de objetos?#

Open Object Counting In Colab

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ísticaAquacultura
Contagem de pacotes numa correia transportadora com Ultralytics YOLO26Contagem de peixes no mar com Ultralytics YOLO26
Contagem de pacotes numa correia transportadora com Ultralytics YOLO26Contagem 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.

Contagem de objetos com 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 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:

ArgumentoTipoPredefiniçãoDescrição
modelstrNoneCaminho para um ficheiro de modelo YOLO da Ultralytics.
show_inboolTrueSinalizador que controla se as contagens de entradas são apresentadas na transmissão de vídeo.
show_outboolTrueSinalizador que controla se as contagens de saídas são apresentadas na transmissão de vídeo.
regionlist ou dictNonePontos 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_widthint2Espessura das linhas das caixas, dos pontos-chave e das contagens desenhados pela solução.
verboseboolTrueAtiva 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:

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 rastrear mais objetos, mas podem incluir falsos positivos.
ioufloat0.7Define o limiar de Interseção sobre a 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 selecionar entre CPU, uma GPU específica ou outros dispositivos de computação para executar o modelo.
imgszint or tuple640Tamanho 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_detint300Número máximo de detecções mantidas por quadro 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/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:

ArgumentoTipoPredefiniçãoDescrição
showboolFalseSe True, apresenta as imagens ou vídeos anotados numa janela. É útil para obter feedback visual imediato durante o desenvolvimento ou os testes.
show_confboolTrueApresenta 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_labelsboolTrueApresenta 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:

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

  • A utilização do Ultralytics YOLO26 para a 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 setores como a gestão de inventário.
    2. 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.
    3. 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.
    4. 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 classe 0 e 2 (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:

    1. 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.
    2. 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.
    3. 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.
    4. 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.

Comentários