YOLO Vision 2026:

TrackZone usando Ultralytics YOLO26#

O que é o TrackZone?#

Open TrackZone In Colab

O TrackZone é especializado em monitorar objetos dentro de áreas designadas de um quadro em vez do quadro inteiro. Construído com base no Ultralytics YOLO26, ele integra detecção de objetos e rastreamento especificamente dentro de zonas para vídeos e feeds de câmeras ao vivo. Os algoritmos avançados do YOLO26 e as tecnologias de deep learning o tornam a escolha perfeita para casos de uso em tempo real, oferecendo rastreamento de objetos preciso e eficiente em aplicações como monitoramento de multidões e vigilância.



Watch: How to Track Objects in Region using Ultralytics YOLO26 | TrackZone 🚀

Vantagens do Rastreio de Objetos em Zonas (TrackZone)#

  • Análise Direcionada: Rastrear objetos dentro de zonas específicas permite obter insights mais focados, permitindo uma monitorização e análise precisas de áreas de interesse, como pontos de entrada ou zonas restritas.
  • Carga de trabalho a jusante reduzida: Ao ignorar objetos fora da zona, o TrackZone remove deteções irrelevantes, pelo que há menos objetos para contar, registar ou sobre os quais emitir alertas na lógica que construíres sobre ele. A deteção continua a ser executada num frame mascarado de tamanho completo em vez de um recorte estreito da zona, pelo que o benefício é uma saída mais limpa e focada, em vez de uma inferência de modelo mais rápida.
  • Segurança Reforçada: O rastreio zonal melhora a vigilância ao monitorizar áreas críticas, ajudando na deteção precoce de atividades invulgares ou brechas de segurança.
  • Soluções Escaláveis: A capacidade de focar em zonas específicas torna o TrackZone adaptável a vários cenários, desde espaços de retalho a ambientes industriais, garantindo uma integração perfeita e escalabilidade.

Aplicações no mundo real#

AgriculturaTransporte
Plants Tracking in Field Using Ultralytics YOLO26Vehicles Tracking on Road using Ultralytics YOLO26
Rastreio de Plantas no Campo Usando Ultralytics YOLO26Rastreio de Veículos na Estrada usando Ultralytics YOLO26
TrackZone usando Ultralytics YOLO
# Run a trackzone example
yolo solutions trackzone show=True

# Pass a source video
yolo solutions trackzone source="path/to/video.mp4" show=True

# Pass region coordinates
yolo solutions trackzone show=True region="[(150, 150), (1130, 150), (1130, 570), (150, 570)]"

O TrackZone depende da lista region para saber qual parte do quadro monitorar. Defina o polígono para corresponder à zona física de seu interesse (portas, portões, etc.) e mantenha show=True ativado durante a configuração para poder verificar se a sobreposição está alinhada com o feed de vídeo.

Definir a zona de rastreio
  • Cada entrada em region é uma coordenada de pixel (x, y) no quadro de vídeo. Liste os pontos na ordem em que devem ser conectados ao redor do perímetro da área que queres monitorar.
  • As coordenadas estão vinculadas à resolução do quadro, portanto, uma região dimensionada para um feed de 1280×720 não corresponderá a uma de 640×480. Mantenha show=True durante a configuração para poder confirmar se a sobreposição corresponde ao teu feed.
  • TrackZone reduz os pontos ao seu fecho convexo, portanto, uma forma côncava é simplificada para o menor polígono convexo que contém todos os seus pontos. Para formas não côncavas ou várias áreas separadas, usa a solução RegionCounter.
  • Se omitires region por completo, uma zona padrão de [(75, 75), (565, 75), (565, 285), (75, 285)] será utilizada.

Argumentos do TrackZone#

Aqui tens uma tabela com os argumentos do TrackZone:

ArgumentoTipoPredefiniçãoDescrição
modelstrNoneCaminho para um ficheiro de modelo YOLO da Ultralytics.
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 TrackZone inclui suporte para os parâmetros de 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, as seguintes opções de visualização estão disponíveis:

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.

Contar objetos dentro da zona#

Cada chamada para o rastreador retorna um objeto SolutionResults cujo atributo total_tracks contém o número de objetos atualmente rastreados dentro da zona. Lê-o em cada quadro para monitorar a ocupação ao vivo, por exemplo, para registrar o quão movimentado está um ponto de entrada ou área restrita:

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)]
trackzone = solutions.TrackZone(show=False, region=region_points, model="yolo26n.pt")

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        break
    results = trackzone(im0)
    print(f"Objects currently in zone: {results.total_tracks}")  # live zone occupancy

cap.release()

FAQ#

  • Rastrear objetos numa área ou zona definida de um frame de vídeo é simples com o Ultralytics YOLO26. Basta usar o comando fornecido abaixo para iniciar o rastreio. Esta abordagem garante uma análise eficiente e resultados precisos, tornando-a ideal para aplicações como vigilância, gestão de multidões ou qualquer cenário que exija rastreio zonal.

    yolo solutions trackzone source="path/to/video.mp4" show=True
  • Com apenas algumas linhas de código, podes configurar o rastreio de objetos em zonas específicas, facilitando a sua integração nos teus projetos.

    import cv2
    
    from ultralytics import solutions
    
    cap = cv2.VideoCapture("path/to/video.mp4")
    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("trackzone_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
    
    trackzone = solutions.TrackZone(
        show=True, region=[(150, 150), (1130, 150), (1130, 570), (150, 570)], model="yolo26n.pt"
    )
    
    while cap.isOpened():
        success, im0 = cap.read()
        if not success:
            break
        results = trackzone(im0)
        video_writer.write(results.plot_im)
    
    cap.release()
    video_writer.release()
    cv2.destroyAllWindows()
  • Configurar pontos de zona para processamento de vídeo com o Ultralytics TrackZone é simples e personalizável. Podes definir e ajustar diretamente as zonas através de um script Python, permitindo um controlo preciso sobre as áreas que pretendes monitorizar.

    # Define region points
    region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)]
    
    # Initialize trackzone
    trackzone = solutions.TrackZone(
        show=True,  # display the output
        region=region_points,  # pass region points
    )

    Lembra-te de que TrackZone reduz os pontos ao seu fecho convexo, portanto, lista-os em ordem ao redor do perímetro da área que queres monitorar.

  • Todas as três soluções funcionam com regiões, mas respondem a perguntas diferentes:

    SoluçãoUtiliza-o paraResultado típico
    TrackZoneRastrear objetos e monitorizar a ocupação em tempo real dentro de uma única zona convexaIDs rastreados e total_tracks para a zona
    ObjectCounterContar objetos que cruzam uma linha ou entram e saem de uma regiãoContagens cumulativas de entrada e saída
    RegionCounterContar objetos dentro de uma ou mais regiões arbitrárias (incluindo não convexas)Contagens de objetos por região

    Escolhe o TrackZone quando quiseres rastreamento contínuo dentro de uma área e o RegionCounter quando precisares de várias zonas ou de uma forma não côncava.

Comentários