TrackZone utilizando Ultralytics YOLO26#
O que é o TrackZone?#
O TrackZone é especializado na monitorização de objetos dentro de áreas designadas de um frame, em vez de monitorizar o frame inteiro. Desenvolvido com base no Ultralytics YOLO26, integra deteção e rastreamento de objetos especificamente dentro de zonas para vídeos e transmissões de câmaras em direto. Os algoritmos avançados e as tecnologias de aprendizagem profunda do YOLO26 fazem dele uma escolha perfeita para casos de uso em tempo real, oferecendo um rastreamento de objetos preciso e eficiente em aplicações como monitorização de multidões e vigilância.
Watch: How to Track Objects in Region using Ultralytics YOLO26 | TrackZone 🚀
Vantagens do rastreamento de objetos em zonas (TrackZone)#
- Análise direcionada: O rastreamento de objetos dentro de zonas específicas permite obter informações mais focadas, possibilitando a monitorização e a análise precisas de áreas de interesse, como pontos de entrada ou zonas restritas.
- Redução da carga de trabalho posterior: Ao ignorar objetos fora da zona, o TrackZone remove deteções irrelevantes, reduzindo o número de objetos a contar, registar ou para os quais gerar alertas na lógica que desenvolves sobre ele. A deteção continua a ser executada num frame mascarado de tamanho completo, em vez de num recorte justo da zona, pelo que o benefício é obter resultados mais limpos e focados, e não uma inferência do modelo mais rápida.
- Segurança reforçada: 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 focar zonas específicas torna o TrackZone adaptável a vários cenários, desde espaços comerciais a ambientes industriais, garantindo uma integração e uma escalabilidade perfeitas.
Aplicações no mundo real#
| Agricultura | Transportes |
|---|---|
![]() | ![]() |
| Rastreamento de plantas no campo utilizando Ultralytics YOLO26 | Rastreamento de veículos na estrada utilizando 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 frame 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 pixel(x, y)no frame de vídeo. Lista os pontos pela ordem em que devem ser ligados ao longo do perímetro da área que queres monitorizar. - As coordenadas estão associadas à resolução do frame, pelo que uma região dimensionada para uma transmissão de 1280×720 não ficará alinhada com uma de 640×480. Mantém
show=Truedurante a configuração para poderes confirmar que a sobreposição corresponde à tua transmissão. TrackZonereduz os pontos ao seu fecho convexo, simplificando assim uma forma côncava para o menor polígono convexo que contém todos os seus pontos. Para formas não convexas ou várias áreas separadas, utiliza a solução RegionCounter.- Se omitires totalmente
region, será utilizada uma zona predefinida de[(75, 75), (565, 75), (565, 285), (75, 285)].
Argumentos de TrackZone#
Eis uma tabela com os argumentos de TrackZone:
| Argumento | Tipo | Predefinição | Descrição |
|---|---|---|---|
model | str | None | Caminho para um ficheiro de modelo YOLO da Ultralytics. |
region | list ou dict | None | Pontos 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_width | int | 2 | Espessura das linhas das caixas, dos pontos-chave e das contagens desenhados pela solução. |
verbose | bool | True | Ativa 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 TrackZone inclui suporte para os parâmetros de track:
| Argumento | Tipo | Predefinição | Descrição |
|---|---|---|---|
tracker | str | 'botsort.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 para as 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 a 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 selecionar 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 inferência alvo: um inteiro para um quadrado ou um par (height, width). As formas são ajustadas para o passo do modelo. |
max_det | int | 300 | Número máximo de detecções mantidas por quadro 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/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, estão disponíveis as seguintes opções de visualização:
| Argumento | Tipo | Predefinição | Descrição |
|---|---|---|---|
show | bool | False | Se True, apresenta as imagens ou vídeos anotados numa janela. É útil para obter feedback visual imediato durante o desenvolvimento ou os testes. |
show_conf | bool | True | Apresenta 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_labels | bool | True | Apresenta etiquetas para cada deteção no resultado visual. Permite compreender imediatamente os objetos detetados. |
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 valor em cada frame para monitorizar a ocupação em direto, por exemplo, para registar o nível de movimento num ponto de 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 frame de vídeo é simples com o Ultralytics YOLO26. Basta utilizar o comando apresentado 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, facilitando a 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 os pontos da zona para o 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, obtendo um controlo preciso sobre as áreas que queres 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
TrackZonereduz os pontos ao seu fecho convexo, por isso lista-os pela ordem do perímetro da área que queres monitorizar.As três soluções funcionam com regiões, mas respondem a perguntas diferentes:
Solução Utiliza-a para Resultado típico TrackZone Rastrear objetos e monitorizar a ocupação em direto dentro de uma única zona convexa IDs 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 não convexas) Contagens de objetos por região Escolhe o TrackZone quando quiseres um rastreamento contínuo dentro de uma área e o RegionCounter quando precisares de várias zonas ou de uma forma não convexa.

