Ultralytics YOLO27:

TrackZone con Ultralytics YOLO26#

¿Qué es TrackZone?#

Open TrackZone In Colab

TrackZone se especializa en monitorizar objetos dentro de áreas designadas de un fotograma en lugar de todo el fotograma. Basado en Ultralytics YOLO26, integra la detección de objetos y el seguimiento específicamente dentro de zonas para vídeos y emisiones de cámaras en directo. Los algoritmos avanzados y las tecnologías de aprendizaje profundo de YOLO26 lo convierten en una opción perfecta para casos de uso en tiempo real, ya que ofrece un seguimiento de objetos preciso y eficiente en aplicaciones como la monitorización de multitudes y la vigilancia.



Watch: How to Track Objects in Region using Ultralytics YOLO26 | TrackZone 🚀

Ventajas del seguimiento de objetos en zonas (TrackZone)#

  • Análisis focalizado: El seguimiento de objetos dentro de zonas específicas permite obtener información más relevante, lo que facilita la monitorización y el análisis precisos de áreas de interés, como puntos de entrada o zonas restringidas.
  • Menor carga de trabajo posterior: Al ignorar los objetos que están fuera de la zona, TrackZone elimina las detecciones irrelevantes, por lo que hay menos objetos que contar, registrar o sobre los que generar alertas en la lógica que desarrolles sobre esta base. La detección sigue ejecutándose sobre un fotograma enmascarado de tamaño completo, no sobre un recorte ajustado de la zona, por lo que la ventaja es obtener resultados más limpios y focalizados, no acelerar la inferencia del modelo.
  • Mayor seguridad: El seguimiento por zonas mejora la vigilancia al monitorizar áreas críticas, lo que ayuda a detectar con antelación actividades inusuales o brechas de seguridad.
  • Soluciones escalables: La capacidad de centrarse en zonas específicas hace que TrackZone se adapte a diversos escenarios, desde espacios comerciales hasta entornos industriales, garantizando una integración fluida y escalabilidad.

Aplicaciones en el mundo real#

AgriculturaTransporte
Seguimiento de plantas en un campo con Ultralytics YOLO26Seguimiento de vehículos en carretera con Ultralytics YOLO26
Seguimiento de plantas en un campo con Ultralytics YOLO26Seguimiento de vehículos en carretera con Ultralytics YOLO26
TrackZone con 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 utiliza la lista region para saber qué parte del fotograma debe monitorizar. Define el polígono para que coincida con la zona física que te interesa (puertas, entradas, etc.) y mantén show=True activado durante la configuración para poder comprobar que la superposición está alineada con la emisión de vídeo.

Definición de la zona de seguimiento
  • Cada entrada de region es una coordenada de píxel (x, y) del fotograma de vídeo. Enumera los puntos en el orden en el que deben conectarse alrededor del perímetro del área que quieras monitorizar.
  • Las coordenadas están vinculadas a la resolución del fotograma, por lo que una región dimensionada para una emisión de 1280×720 no coincidirá con una de 640×480. Mantén show=True durante la configuración para poder confirmar que la superposición coincide con tu emisión.
  • TrackZone reduce los puntos a su envolvente convexa, por lo que una forma cóncava se simplifica al polígono convexo más pequeño que contiene todos sus puntos. Para formas no convexas o varias áreas independientes, utiliza la solución RegionCounter.
  • Si omites por completo region, se utiliza una zona predeterminada de [(75, 75), (565, 75), (565, 285), (75, 285)].

Argumentos de TrackZone#

Aquí tienes una tabla con los argumentos de TrackZone:

ArgumentoTipoPredeterminadoDescripción
modelstrNoneRuta al archivo del modelo YOLO de Ultralytics.
regionlist o dictNonePuntos que definen la región de interés, ya sea una lista de tuplas (x, y) o un diccionario que asigne nombres de región a listas de puntos para varias regiones (solo RegionCounter). Cuando None, las soluciones que requieren una región recurren a una región predeterminada.
line_widthint2Grosor de línea de las cajas, los puntos clave y los recuentos que dibuja la solución.
verboseboolTrueActiva el registro por fotograma de la solución, que incluye la forma de entrada, los recuentos de clases y la velocidad de procesamiento. La llamada de seguimiento en sí siempre es silenciosa.

La solución TrackZone admite los parámetros de track:

ArgumentoTipoPredeterminadoDescripción
trackerstr'botsort.yaml'Especifica el algoritmo de seguimiento que se utilizará. Opciones integradas: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml.
conffloat0.25Establece el umbral de confianza para las detecciones; los valores más bajos permiten seguir más objetos, pero pueden incluir falsos positivos.
ioufloat0.7Establece el umbral de intersección sobre unión (IoU) para filtrar las detecciones superpuestas.
classeslistNoneFiltra los resultados por índice de clase. Por ejemplo, classes=[0, 2, 3] solo sigue las clases especificadas.
devicestrNoneEspecifica el dispositivo para la inferencia (por ejemplo, cpu, cuda:0 o 0). Permite seleccionar entre la CPU, una GPU específica u otros dispositivos de cálculo para ejecutar el modelo.
imgszint or tuple640Tamaño de imagen de inferencia objetivo: un número entero para una imagen cuadrada o un par (height, width). Las formas se ajustan al paso del modelo.
max_detint300Número máximo de detecciones conservadas por fotograma antes del seguimiento, lo que limita los objetos que procesa una solución en escenas densas.
quantizeint or strNonePrecisión de inferencia: 16 (FP16) o 32/sin definir (FP32) para los modelos de PyTorch y TorchScript; otros formatos calculan a la precisión que seleccionan su artefacto y su motor de ejecución. Sustituye al indicador obsoleto half.

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. Es útil para obtener información visual inmediata durante el desarrollo o las pruebas.
show_confboolTrueMuestra la puntuación de confianza de cada detección junto a su etiqueta. Permite conocer el grado de certeza del modelo para cada detección.
show_labelsboolTrueMuestra las etiquetas de cada detección en la salida visual. Proporciona una comprensión inmediata de los objetos detectados.

Contar objetos dentro de la zona#

Cada llamada al tracker devuelve un objeto SolutionResults cuyo atributo total_tracks contiene el número de objetos que se están siguiendo actualmente dentro de la zona. Léelo en cada fotograma para monitorizar la ocupación en directo, por ejemplo, para registrar lo concurrido que está un punto de entrada o un área restringida:

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

Preguntas frecuentes#

  • Seguir objetos en un área o zona definida de un fotograma de vídeo es sencillo con Ultralytics YOLO26. Solo tienes que utilizar el comando que se muestra a continuación para iniciar el seguimiento. Este enfoque garantiza un análisis eficiente y resultados precisos, por lo que es ideal para aplicaciones como la vigilancia, la gestión de multitudes o cualquier escenario que requiera un seguimiento por zonas.

    yolo solutions trackzone source="path/to/video.mp4" show=True
  • Con solo unas pocas líneas de código, puedes configurar el seguimiento de objetos en zonas específicas, lo que facilita su integración en tus 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))
    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 los puntos de la zona para procesar vídeo con Ultralytics TrackZone es sencillo y personalizable. Puedes definir y ajustar las zonas directamente mediante un script de Python, lo que permite controlar con precisión las áreas que quieras 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
    )

    Recuerda que TrackZone reduce los puntos a su envolvente convexa, así que enuméralos en orden alrededor del perímetro del área que quieras monitorizar.

  • Las tres soluciones funcionan con regiones, pero responden a preguntas diferentes:

    SoluciónUtilízala paraResultado habitual
    TrackZoneSeguir objetos y monitorizar la ocupación en directo dentro de una única zona convexaID seguidos y total_tracks para la zona
    ObjectCounterContar objetos que cruzan una línea o entran y salen de una regiónRecuentos acumulados de entradas y salidas
    RegionCounterContar objetos dentro de una o varias regiones arbitrarias (incluidas las no convexas)Recuentos de objetos por región

    Elige TrackZone cuando quieras realizar un seguimiento continuo dentro de un área y RegionCounter cuando necesites varias zonas o una forma no convexa.

Comentarios