TrackZone con Ultralytics YOLO26#
¿Qué es TrackZone?#
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#
| Agricultura | Transporte |
|---|---|
![]() | ![]() |
| Seguimiento de plantas en un campo con Ultralytics YOLO26 | Seguimiento de vehículos en carretera con 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)]"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.
- Cada entrada de
regiones 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=Truedurante la configuración para poder confirmar que la superposición coincide con tu emisión. TrackZonereduce 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:
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
model | str | None | Ruta al archivo del modelo YOLO de Ultralytics. |
region | list o dict | None | Puntos 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_width | int | 2 | Grosor de línea de las cajas, los puntos clave y los recuentos que dibuja la solución. |
verbose | bool | True | Activa 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:
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
tracker | str | 'botsort.yaml' | Especifica el algoritmo de seguimiento que se utilizará. Opciones integradas: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml. |
conf | float | 0.25 | Establece el umbral de confianza para las detecciones; los valores más bajos permiten seguir más objetos, pero pueden incluir falsos positivos. |
iou | float | 0.7 | Establece el umbral de intersección sobre unión (IoU) para filtrar las detecciones superpuestas. |
classes | list | None | Filtra los resultados por índice de clase. Por ejemplo, classes=[0, 2, 3] solo sigue las clases especificadas. |
device | str | None | Especifica 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. |
imgsz | int or tuple | 640 | Tamañ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_det | int | 300 | Número máximo de detecciones conservadas por fotograma antes del seguimiento, lo que limita los objetos que procesa una solución en escenas densas. |
quantize | int or str | None | Precisió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:
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
show | bool | False | Si 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_conf | bool | True | Muestra 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_labels | bool | True | Muestra 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=TrueCon 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
TrackZonereduce 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ón Utilízala para Resultado habitual TrackZone Seguir objetos y monitorizar la ocupación en directo dentro de una única zona convexa ID seguidos y total_trackspara la zonaObjectCounter Contar objetos que cruzan una línea o entran y salen de una región Recuentos acumulados de entradas y salidas RegionCounter Contar 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.

