Ultralytics YOLO27:
Get Started

TrackZone com Ultralytics YOLO26#

O que é o TrackZone?#

Open TrackZone In Colab

O TrackZone especializa-se na monitorização de objetos em áreas específicas de um fotograma, em vez de monitorizar o fotograma inteiro. Desenvolvido com o Ultralytics YOLO26, integra a deteção e o rastreamento de objetos especificamente em zonas de vídeos e transmissões de câmaras em direto. Os algoritmos avançados e as tecnologias de aprendizagem profunda do YOLO26 tornam-no ideal para aplicações em tempo real, oferecendo um rastreamento preciso e eficiente de objetos em aplicações como a monitorização de multidões e a vigilância.



Assista: Como rastrear objetos em uma região usando Ultralytics YOLO26 | TrackZone 🚀

Vantagens do rastreamento de objetos em zonas (TrackZone)#

  • Análise direcionada: O rastreamento de objetos em zonas específicas permite obter informações mais focadas, possibilitando a monitorização e a análise precisas de áreas de interesse, como entradas ou zonas restritas.
  • Redução da carga de trabalho posterior: Ao ignorar os objetos fora da zona, o TrackZone elimina deteções irrelevantes, reduzindo o número de objetos a contar, registar ou assinalar na lógica que construíres com base nos resultados. A deteção continua a ser executada num fotograma mascarado de tamanho integral, em vez de num recorte apertado da zona, pelo que a vantagem consiste em obter resultados mais limpos e focados, e não numa inferência mais rápida do modelo.
  • Maior segurança: O rastreamento por zonas melhora a vigilância ao monitorizar áreas críticas, ajudando a detetar precocemente atividades invulgares ou violações de segurança.
  • Soluções escaláveis: A capacidade de se focar em zonas específicas torna o TrackZone adaptável a vários cenários, desde espaços comerciais até ambientes industriais, garantindo uma integração fluida e escalabilidade.

Aplicações no mundo real#

AgriculturaTransportes
Rastreamento de plantas num campo com Ultralytics YOLO26Rastreamento de veículos numa estrada com Ultralytics YOLO26
Rastreamento de plantas num campo com Ultralytics YOLO26Rastreamento de veículos numa estrada com Ultralytics YOLO26
TrackZone com 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 utiliza a lista region para saber que parte do fotograma deve monitorizar. Define o polígono de acordo com a zona física que te interessa (portas, portões, etc.) e mantém show=True ativado durante a configuração para poderes verificar se a sobreposição está alinhada com a transmissão de vídeo.

Definir a zona de rastreamento
  • Cada entrada em region é uma coordenada de píxel (x, y) no fotograma do vídeo. Enumera os pontos pela ordem em que devem ser ligados ao longo do perímetro da área que pretendes monitorizar.
  • As coordenadas dependem da resolução do fotograma, pelo que uma região definida para uma transmissão de 1280×720 não ficará alinhada com uma de 640×480. Mantém show=True ativado durante a configuração para confirmares se a sobreposição corresponde à tua transmissão.
  • TrackZone reduz os pontos ao seu invólucro convexo, pelo que uma forma côncava é simplificada para o menor polígono convexo que contém todos os seus pontos. Para formas não convexas ou várias áreas separadas, usa a solução RegionCounter.
  • Se omitires completamente region, será usada a zona predefinida [(75, 75), (565, 75), (565, 285), (75, 285)].

Argumentos de TrackZone#

Aqui está uma tabela com os argumentos de TrackZone:

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

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.

Contar objetos dentro da zona#

Cada chamada ao rastreador devolve um objeto SolutionResults cujo atributo total_tracks contém o número de objetos atualmente rastreados dentro da zona. Lê esse atributo em cada fotograma para monitorizar a ocupação em tempo real, por exemplo, para registar o nível de movimento numa entrada ou numa á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()

Perguntas frequentes#

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

    yolo solutions trackzone source="path/to/video.mp4" show=True
  • Com apenas algumas linhas de código, podes configurar o rastreamento de objetos em zonas específicas e integrá-lo facilmente 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 os pontos da zona para processar vídeos com o Ultralytics TrackZone é simples e personalizável. Podes definir e ajustar diretamente as zonas através de um script Python, o que permite controlar com precisão as áreas que pretendes monitorizar.

    from ultralytics import solutions
    
    # Definir os pontos da região
    region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)]
    
    # Inicializar o TrackZone
    trackzone = solutions.TrackZone(
        show=True,  # # Apresenta o resultado
        region=region_points,  # # Passa os pontos da região
    )

    Lembra-te de que TrackZone reduz os pontos ao seu invólucro convexo, pelo que um contorno côncavo é simplificado para o menor polígono convexo que contém todos os seus pontos.

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

    SoluçãoUsa-o paraResultado típico
    TrackZoneRastrear objetos e monitorizar a ocupação em tempo real numa única zona convexaIDs dos objetos rastreados e total_tracks para a zona
    ObjectCounterContar objetos que atravessam uma linha ou entram e saem de uma regiãoContagens acumuladas de entradas e saídas
    RegionCounterContar objetos dentro de uma ou mais regiões arbitrárias (incluindo regiões 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 convexa.

Comentários