Ir al contenido

TrackZone utilizando Ultralytics YOLO11

Abrir TrackZone en Colab

¿Qué es TrackZone?

TrackZone se especializa en el monitoreo de objetos dentro de áreas designadas de un fotograma en lugar de todo el fotograma. Construido sobre Ultralytics YOLO11, integra la detección y el seguimiento de objetos específicamente dentro de zonas para videos y transmisiones de cámaras en vivo. Los algoritmos avanzados de YOLO11 y las tecnologías de aprendizaje profundo lo convierten en una opción perfecta para casos de uso en tiempo real, ofreciendo un seguimiento de objetos preciso y eficiente en aplicaciones como el monitoreo de multitudes y la vigilancia.



Ver: Cómo rastrear objetos en una región usando Ultralytics YOLO11 | TrackZone 🚀

¿Ventajas del seguimiento de objetos en zonas (TrackZone)?

  • Análisis específico: El seguimiento de objetos dentro de zonas específicas permite obtener información más precisa, lo que permite una supervisión y un análisis precisos de las áreas de interés, como los puntos de entrada o las zonas restringidas.
  • Mayor eficiencia: Al reducir el alcance del seguimiento a zonas definidas, TrackZone reduce la sobrecarga computacional, lo que garantiza un procesamiento más rápido y un rendimiento óptimo.
  • Seguridad mejorada: El seguimiento zonal mejora la vigilancia al monitorear áreas críticas, lo que ayuda en la detección temprana de actividades inusuales o brechas de seguridad.
  • Soluciones Escalables: La capacidad de centrarse en zonas específicas hace que TrackZone se adapte a varios escenarios, desde espacios comerciales hasta entornos industriales, lo que garantiza una integración y escalabilidad perfectas.

Aplicaciones en el mundo real

AgriculturaTransporte
Seguimiento de plantas en el campo utilizando Ultralytics YOLO11Seguimiento de vehículos en carretera usando Ultralytics YOLO11
Seguimiento de plantas en el campo utilizando Ultralytics YOLO11Seguimiento de vehículos en carretera usando Ultralytics YOLO11

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

TrackZone se basa en el region para saber qué parte del marco hay que vigilar. Defina el polígono para que coincida con la zona física que le interesa (puertas, portones, etc.), y mantenga show=True activado durante la configuración para que pueda verificar que la superposición se alinea con la señal de vídeo.

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

Aquí tiene una tabla con el TrackZone argumentos:

ArgumentoTipoPredeterminadoDescripción
modelstrNoneRuta a un archivo de modeloYOLO Ultralytics .
regionlist'[(20, 400), (1260, 400)]'Lista de puntos que definen la región de conteo.

La solución TrackZone incluye soporte para track parámetros:

ArgumentoTipoPredeterminadoDescripción
trackerstr'botsort.yaml'Especifica el algoritmo de seguimiento a utilizar, p. ej., bytetrack.yaml o botsort.yaml.
conffloat0.3Establece el umbral de confianza para las detecciones; los valores más bajos permiten rastrear más objetos, pero pueden incluir falsos positivos.
ioufloat0.5Establece el umbral de Intersección sobre Unión (IoU) para filtrar detecciones superpuestas.
classeslistNoneFiltra los resultados por índice de clase. Por ejemplo, classes=[0, 2, 3] solo rastrea las clases especificadas.
verboseboolTrueControla la visualización de los resultados del seguimiento, proporcionando una salida visual de los objetos rastreados.
devicestrNoneEspecifica el dispositivo para la inferencia (p. ej., cpu, cuda:0 o 0). Permite a los usuarios seleccionar entre CPU, una GPU específica u otros dispositivos de cálculo para la ejecución del modelo.

Además, están disponibles las siguientes opciones de visualización:

ArgumentoTipoPredeterminadoDescripción
showboolFalseSi True, muestra las imágenes o vídeos anotados en una ventana. Útil para obtener información visual inmediata durante el desarrollo o las pruebas.
line_widthNone or intNoneEspecifica el ancho de línea de los cuadros delimitadores. Si None, el ancho de línea se ajusta automáticamente en función del tamaño de la imagen. Proporciona personalización visual para mayor claridad.
show_confboolTrueMuestra la puntuación de confianza para cada detección junto con la etiqueta. Ofrece información sobre la certeza del modelo para cada detección.
show_labelsboolTrueMuestra etiquetas para cada detección en la salida visual. Proporciona una comprensión inmediata de los objetos detectados.

Preguntas frecuentes

¿Cómo realizo el seguimiento de objetos en un área o zona específica de un fotograma de video usando Ultralytics YOLO11?

El seguimiento de objetos en un área o zona definida de un fotograma de video es sencillo con Ultralytics YOLO11. Simplemente utiliza el comando proporcionado a continuación para iniciar el seguimiento. Este enfoque garantiza un análisis eficiente y resultados precisos, lo que lo hace ideal para aplicaciones como la vigilancia, la gestión de multitudes o cualquier escenario que requiera el seguimiento zonal.

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

¿Cómo puedo usar TrackZone en Python con Ultralytics YOLO11?

Con solo unas pocas líneas de código, puede configurar el seguimiento de objetos en zonas específicas, lo que facilita la integración en sus proyectos.

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

¿Cómo configuro los puntos de zona para el procesamiento de vídeo utilizando Ultralytics TrackZone?

Configurar puntos de zona para el procesamiento de video con Ultralytics TrackZone es sencillo y personalizable. Puede definir y ajustar las zonas directamente a través de un script de Python, lo que permite un control preciso sobre las áreas que desea supervisar.

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


Creado hace 11 meses ✏️ Actualizado hace 5 días
RizwanMunawarglenn-jocher

Comentarios