Saltar para o conteúdo

TrackZone utilizando Ultralytics YOLO11

Abrir TrackZone em Colab

O que é o TrackZone?

O TrackZone é especializado na monitorização de objectos dentro de áreas designadas de um quadro em vez de todo o quadro. Construído em Ultralytics YOLO11integra a deteção e o seguimento de objectos especificamente em zonas para vídeos e imagens de câmaras em direto. YOLO11 Os algoritmos avançados e as tecnologias de aprendizagem profunda da TrackZone fazem dela a escolha perfeita para casos de utilização em tempo real, oferecendo um seguimento de objectos preciso e eficiente em aplicações como a monitorização e vigilância de multidões.



Ver: Como rastrear objetos na região usando Ultralytics YOLO11 | Zona de Rastreamento 🚀

Vantagens do Seguimento de Objectos em Zonas (TrackZone)

  • Análise direcionada: O rastreio de objectos dentro de zonas específicas permite obter informações mais específicas, possibilitando uma monitorização e análise precisas de áreas de interesse, tais como pontos de entrada ou zonas restritas.
  • Eficiência melhorada: Ao limitar o âmbito do rastreio a zonas definidas, o TrackZone reduz a sobrecarga computacional, assegurando um processamento mais rápido e um desempenho ótimo.
  • Segurança melhorada: O seguimento por zonas melhora a vigilância através da monitorização de áreas críticas, ajudando na deteção precoce de atividade invulgar ou de violações de segurança.
  • Soluções escaláveis: A capacidade de se concentrar 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 e escalabilidade perfeitas.

Aplicações no mundo real

Agricultura Transporte
Rastreio de plantas no campo utilizando Ultralytics YOLO11 Localização de veículos na estrada utilizando Ultralytics YOLO11
Rastreio de plantas no campo utilizando Ultralytics YOLO11 Localização de veículos na estrada utilizando Ultralytics YOLO11

TrackZone utilizando Ultralytics YOLO

# Run a trackzone example
yolo solutions trackzone show=True

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

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

from ultralytics import solutions

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

# Define region points
region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)]

# Video writer
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))

# Init trackzone (object tracking in zones, not complete frame)
trackzone = solutions.TrackZone(
    show=True,  # display the output
    region=region_points,  # pass region points
    model="yolo11n.pt",  # use any model that Ultralytics support, i.e. YOLOv9, YOLOv10
    # line_width=2,  # adjust the line width for bounding boxes and text display
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or processing is complete.")
        break

    results = trackzone(im0)

    # print(results)  # access the output

    video_writer.write(results.plot_im)  # write the video file

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # destroy all opened windows

TrackZone Argumentos

Aqui está uma tabela com os TrackZone argumentos:

Argumento Tipo Predefinição Descrição
model str None Caminho para o ficheiro do modelo Ultralytics YOLO .
region list [(20, 400), (1260, 400)] Lista de pontos que definem a região de contagem.

A solução TrackZone inclui suporte para track parâmetros:

Argumento Tipo Predefinição Descrição
tracker str 'botsort.yaml' Especifica o algoritmo de seguimento a utilizar, por exemplo, bytetrack.yaml ou botsort.yaml.
conf float 0.3 Define o limiar de confiança para as detecções; valores mais baixos permitem o seguimento de mais objectos, mas podem incluir falsos positivos.
iou float 0.5 Define o limiar de Intersecção sobre União (IoU) para filtrar detecções sobrepostas.
classes list None Filtra os resultados por índice de classe. Por exemplo, classes=[0, 2, 3] só rastreia as classes especificadas.
verbose bool True Controla a apresentação dos resultados do seguimento, fornecendo uma saída visual dos objectos seguidos.
device str None Especifica o dispositivo para inferência (por exemplo, cpu, cuda:0 ou 0). Permite aos utilizadores selecionar entre CPU, um GPU específico, ou outros dispositivos de computação para a execução do modelo.

Além disso, estão disponíveis as seguintes opções de visualização:

Argumento Tipo Predefinição Descrição
show bool False Se Trueapresenta as imagens ou vídeos anotados numa janela. Útil para feedback visual imediato durante o desenvolvimento ou teste.
line_width None or int None Especifica a largura da linha das caixas delimitadoras. Se NoneA largura da linha é ajustada automaticamente com base no tamanho da imagem. Proporciona uma personalização visual para maior clareza.

FAQ

Como posso localizar objectos numa área ou zona específica de um fotograma de vídeo utilizando Ultralytics YOLO11 ?

O seguimento de objectos numa área ou zona definida de um fotograma de vídeo é simples com Ultralytics YOLO11 . Basta usar o comando fornecido abaixo para iniciar o rastreamento. Esta abordagem assegura 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 o seguimento zonal.

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

Como posso utilizar o TrackZone em Python com Ultralytics YOLO11 ?

Com apenas algumas linhas de código, pode configurar o seguimento de objectos em zonas específicas, facilitando a sua integração nos seus projectos.

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))

# Define region points
region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)]

# Video writer
video_writer = cv2.VideoWriter("object_counting_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Init trackzone (object tracking in zones, not complete frame)
trackzone = solutions.TrackZone(
    show=True,  # display the output
    region=region_points,  # pass region points
    model="yolo11n.pt",
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break
    results = trackzone(im0)
    video_writer.write(results.plot_im)

cap.release()
video_writer.release()
cv2.destroyAllWindows()

Como configurar os pontos de zona para processamento de vídeo utilizando Ultralytics TrackZone?

A configuração de pontos de zona para processamento de vídeo com o Ultralytics TrackZone é simples e personalizável. Pode definir e ajustar diretamente as zonas através de um script Python , permitindo um controlo preciso das áreas que pretende 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
)
📅C riado há 3 meses ✏️ Atualizado há 5 dias

Comentários