TrackZone con Ultralytics YOLO26#
¿Qué es TrackZone?#
TrackZone se especializa en supervisar objetos dentro de zonas concretas de un fotograma, en lugar de hacerlo en todo el fotograma. Desarrollado con Ultralytics YOLO26, integra la detección y el seguimiento de objetos específicamente dentro de zonas, tanto en vídeos como en emisiones de cámaras en directo. Los algoritmos avanzados y las tecnologías de aprendizaje profundo de YOLO26 lo convierten en una opción ideal para aplicaciones en tiempo real, ya que ofrece un seguimiento de objetos preciso y eficiente en casos de uso como la supervisión de multitudes y la vigilancia.
Ver: Cómo seguir objetos en una región con Ultralytics YOLO26 | TrackZone 🚀
Ventajas del seguimiento de objetos por zonas (TrackZone)#
- Análisis específico: El seguimiento de objetos en zonas concretas permite obtener información más precisa y supervisar y analizar con exactitud las áreas de interés, como los puntos de entrada o las zonas restringidas.
- Menos carga de trabajo posterior: Al ignorar los objetos que quedan 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 a partir de estos resultados. La detección sigue ejecutándose en un fotograma enmascarado de tamaño completo, en lugar de recortar estrictamente la zona, así que la ventaja es obtener resultados más limpios y específicos, no acelerar la inferencia del modelo.
- Mayor seguridad: El seguimiento por zonas mejora la vigilancia al supervisar áreas críticas, lo que ayuda a detectar antes actividades inusuales o brechas de seguridad.
- Soluciones escalables: La capacidad de centrarse en zonas concretas hace que TrackZone se adapte a distintos entornos, desde espacios comerciales hasta instalaciones industriales, y permite una integración fluida y una gran escalabilidad.
Aplicaciones reales#
| 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 supervisar. Define el polígono para que coincida con la zona física que te interesa (puertas, portones, etc.) y mantén show=True activado durante la configuración para comprobar que la superposición se alinea con la señal de vídeo.
- Cada entrada de
regiones una coordenada de píxel(x, y)en el fotograma de vídeo. Enumera los puntos en el orden en que deben conectarse alrededor del perímetro de la zona que quieras supervisar. - Las coordenadas dependen de la resolución del fotograma, por lo que una región configurada para una señal de 1280×720 no se alineará con otra de 640×480. Mantén
show=Trueactivado durante la configuración para confirmar que la superposición coincide con tu señal. 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 zonas separadas, usa la solución RegionCounter.- Si omites por completo
region, se usa 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 a un archivo de modelo Ultralytics YOLO. |
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 asigna nombres de región a listas de puntos para varias regiones (solo RegionCounter). Si None, las soluciones que requieren una región usan una región predeterminada predefinida. |
line_width | int | 2 | Grosor de línea de los cuadros, puntos clave y recuentos que dibuja la solución. |
verbose | bool | True | Activa el registro por fotograma de la forma de entrada, los recuentos por clase y la velocidad de procesamiento de la solución. La llamada de seguimiento en sí siempre es silenciosa. |
La solución TrackZone admite los parámetros track:
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
tracker | str | 'tracktrack.yaml' | Especifica el algoritmo de seguimiento que se va a usar. Opciones integradas: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml. |
conf | float | 0.25 | Establece el umbral de confianza de 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 solapadas. |
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 (p. ej., cpu, cuda:0 o 0). Permite elegir entre CPU, una GPU concreta u otros dispositivos de cálculo para ejecutar el modelo. |
imgsz | int or tuple | 640 | Tamaño de imagen de destino para la inferencia: un entero para una imagen cuadrada o una pareja (height, width). Las dimensiones se ajustan al stride del modelo. |
max_det | int | 300 | Número máximo de detecciones que se conservan 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/unset (FP32) para los modelos PyTorch y TorchScript fuera de CPU; los demás formatos usan la precisión que seleccionen el artefacto y el entorno de ejecución. Sustituye al argumento 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 los 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 etiquetas para cada detección en la salida visual. Facilita la identificación inmediata de los objetos detectados. |
Cuenta los objetos dentro de la zona#
Cada llamada al seguidor 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 supervisar la ocupación en directo, por ejemplo, para registrar el nivel de actividad de un punto de entrada o una zona 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#
Con Ultralytics YOLO26, seguir objetos en una zona o área definida de un fotograma de vídeo es muy sencillo. Solo tienes que usar el comando que se muestra a continuación para iniciar el seguimiento. Este método 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 otro caso 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 concretas e integrarlo fácilmente 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 te permite controlar con precisión las áreas que quieres supervisar.
from ultralytics import solutions # Define los puntos de la región region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)] # Inicializa TrackZone trackzone = solutions.TrackZone( show=True, # mostrar el resultado region=region_points, # pasar los puntos de la región )Recuerda que
TrackZonereduce los puntos a su envolvente convexa, por lo que un contorno cóncavo se simplifica al polígono convexo más pequeño que contiene todos sus puntos.Las tres soluciones funcionan con regiones, pero responden a preguntas distintas:
Solución Úsala para Resultado habitual TrackZone Seguir objetos y supervisar la ocupación en directo dentro de una única zona convexa ID de los objetos seguidos y total_tracksde la zonaObjectCounter Contar los objetos que cruzan una línea o entran y salen de una región Recuentos acumulados de entradas y salidas RegionCounter Contar objetos en 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 una zona y RegionCounter cuando necesites varias zonas o una forma no convexa.

