TrackZone com Ultralytics YOLO26#
O que é o TrackZone?#
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#
| Agricultura | Transportes |
|---|---|
![]() | ![]() |
| Rastreamento de plantas num campo com Ultralytics YOLO26 | Rastreamento de veículos numa estrada com Ultralytics YOLO26 |
# 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.
- 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=Trueativado durante a configuração para confirmares se a sobreposição corresponde à tua transmissão. TrackZonereduz 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:
| Argumento | Tipo | Padrão | Descrição |
|---|---|---|---|
model | str | None | Caminho para um arquivo de modelo Ultralytics YOLO. |
region | list ou dict | None | Pontos 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_width | int | 2 | Espessura das linhas das caixas, dos pontos-chave e das contagens desenhados pela solução. |
verbose | bool | True | Ativa 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:
| Argumento | Tipo | Padrão | Descrição |
|---|---|---|---|
tracker | str | 'tracktrack.yaml' | Especifica o algoritmo de rastreamento a utilizar. Opções integradas: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml. |
conf | float | 0.25 | Define o limiar de confiança das deteções; valores mais baixos permitem rastrear mais objetos, mas podem incluir falsos positivos. |
iou | float | 0.7 | Define o limiar de interseção sobre união (IoU) para filtrar deteções sobrepostas. |
classes | list | None | Filtra os resultados pelo índice da classe. Por exemplo, classes=[0, 2, 3] rastreia apenas as classes especificadas. |
device | str | None | Especifica 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. |
imgsz | int or tuple | 640 | Tamanho 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_det | int | 300 | Número máximo de deteções mantidas por fotograma antes do rastreamento, limitando os objetos que uma solução processa em cenas densas. |
quantize | int or str | None | Precisã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:
| Argumento | Tipo | Padrão | Descrição |
|---|---|---|---|
show | bool | False | Se 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_conf | bool | True | Exibe 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_labels | bool | True | Exibe 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=TrueCom 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
TrackZonereduz 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ção Usa-o para Resultado típico TrackZone Rastrear objetos e monitorizar a ocupação em tempo real numa única zona convexa IDs dos objetos rastreados e total_trackspara a zonaObjectCounter Contar objetos que atravessam uma linha ou entram e saem de uma região Contagens acumuladas de entradas e saídas RegionCounter Contar 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.

