El seguimiento de múltiples objetos (MOT) constituye un pilar fundamental en la visión por computador moderna, habilitando aplicaciones críticas que van desde la conducción autónoma hasta el análisis de tráfico y la videovigilancia inteligente. El desafío central en este dominio reside en construir una narrativa temporal coherente, manteniendo la identidad única de cada objeto a pesar de las oclusiones, los cambios de iluminación y el desenfoque por movimiento.
Históricamente, las arquitecturas de tipo Tracking-by-Detection han dominado el estado del arte. Sin embargo, enfoques robustos como DeepSORT presentan una limitación significativa: la ejecución secuencial de redes neuronales profundas en cada fotograma satura rápidamente los recursos de hardware, generando latencias que dificultan su operación en tiempo real en dispositivos de borde.
Como alternativa eficiente, GeekAlexis (2019) propuso la arquitectura FastMOT, la cual introduce un paradigma híbrido que intercala la inferencia neuronal con algoritmos de estimación de movimiento de bajo coste. Si bien este enfoque demostró ser performante, su implementación original depende de versiones anteriores de detectores y librerías rígidamente acopladas.
Este proyecto presenta una evolución y adaptación académica de dicha arquitectura. Se propone la integración de YOLOv8 (Jocher et al., 2023), un modelo anchor-free de vanguardia, dentro de un pipeline modular desarrollado en Python. La solución resultante combina la alta capacidad de generalización de la detección moderna con la velocidad del flujo óptico de Lucas-Kanade, logrando un equilibrio óptimo entre precisión y eficiencia computacional.
Desarrollar, implementar y validar un sistema de visión artificial modular para la detección y seguimiento de objetos, que optimice el uso de recursos computacionales mediante una arquitectura híbrida que integre redes neuronales convolucionales (YOLOv8) con técnicas de visión geométrica y flujo óptico.
La solución propuesta implementa un sistema de seguimiento multi-objeto (MOT) de alto rendimiento bajo una arquitectura híbrida. El diseño prioriza el equilibrio entre la precisión de detección y la eficiencia computacional, alternando estratégicamente entre inferencia profunda y algoritmos de visión geométrica clásica.
A continuación, se detalla la implementación técnica de cada subsistema.
El núcleo del sistema, orquestado en el módulo mot.py, implementa un bucle de control basado en eventos temporales. Para mitigar el alto coste computacional de las redes neuronales, el sistema opera en dos modalidades distintas según el índice del fotograma actual (\(t\)):
Este enfoque permite reducir la carga de la GPU en un factor cercano a \(N\) (donde \(N=3\) según la configuración en mot.json), liberando recursos para otras tareas.
La detección de objetos se delega al modelo YOLOv8, seleccionado por su arquitectura anchor-free que mejora la generalización en objetos de escalas variadas.
Para garantizar la continuidad de las trayectorias en los fotogramas “ciegos” (donde YOLO no se ejecuta), se desarrolló un motor de estimación de movimiento avanzado en src/fastmot/flow.py. A diferencia de enfoques simples que solo calculan la media de vectores, nuestra implementación utiliza una estrategia de tres etapas:
La fusión de datos y la predicción del estado futuro se realizan mediante un Filtro de Kalman lineal (src/fastmot/kalman_filter.py). Se ha modelado el objeto como un vector de estado de 8 dimensiones:
\[x = [u, v, s, r, \dot{u}, \dot{v}, \dot{s}, \dot{u}]^T\]
Donde: * \((u, v)\): Coordenadas del centro de la caja delimitadora. * \(s\): Área (escala) de la caja. * \(r\): Relación de aspecto (aspect ratio). * \((\dot{u}, \dot{v}, \dot{s})\): Velocidades de cambio de las respectivas variables.
El filtro opera bajo un modelo de *Velocidad Constante. Una característica distintiva de esta implementación es el manejo adaptativo de la incertidumbre (ruido de covarianza \(R\)). Como se observa en el código, el filtro aplica matrices de ruido diferentes dependiendo de si la actualización proviene del **Detector* (alta confianza espacial) o del Flujo Óptico (mayor incertidumbre acumulativa), permitiendo que el sistema “confíe” más en YOLO cuando está disponible, pero mantenga la suavidad gracias al Flujo Óptico.
La correspondencia entre las detecciones nuevas y las trayectorias existentes se resuelve en el módulo tracker.py utilizando técnicas de optimización combinatoria:
Todo el desarrollo se ha encapsulado utilizando Docker, garantizando un entorno reproducible independientemente del sistema operativo anfitrión. El uso de contenedores asegura que las dependencias críticas, como CUDA 12.1 y las librerías de visión artificial aceleradas por hardware, funcionen de manera consistente.
Para garantizar la reproducibilidad y el rigor científico, se ha reestructurado el repositorio base en una jerarquía modular.
| Directorio/Archivo | Propósito |
|---|---|
| configs/ | Gestión centralizada de la configuración (Umbrales KLT,
Kalman, yolov8_academic.yaml). |
| data/mot_benchmark/ | Estructura para gestionar Datasets oficiales como MOT17/MOT20. |
| src/fastmot/models/yolo_wrapper.py | Adaptador para la integración de Ultralytics YOLOv8. |
| src/fastmot/flow.py | Lógica de Flujo Óptico
(cv2.calcOpticalFlowPyrLK). |
| src/metrics/exporter.py | Módulo de exportación a formato CSV/MOTChallenge. |
| main_academic.py | Punto de entrada principal (Script Maestro) para orquestar el tracker. |
| outputs/csv_metrics/ | Archivos CSV generados para análisis estadístico. |
La validación del rendimiento del sistema híbrido se realiza utilizando datasets de referencia y métricas estándar de la industria.
La preparación de los datos de validación para los benchmarks de MOTChallenge (MOT17/MOT20) es crucial y sigue una estructura de directorios y un formato de archivos muy estandarizados. Específicamente, cada secuencia de video dentro del dataset debe residir en su propia carpeta, la cual a su vez debe contener tres elementos principales: el subdirectorio img1/, que almacena todos los fotogramas del video (000001.jpg, 000002.jpg, etc.); el subdirectorio gt/, que alberga el archivo de Verdad Fundamental (gt.txt) usado para calcular la precisión; y el archivo de metadatos seqinfo.ini, que especifica la tasa de fotogramas, la resolución y la longitud total de la secuencia.
| Figura 1: Imagen de MOT17 | Figura 2: Imagen de MOT20 |
|---|---|
La implementación debe reportar las siguientes métricas, calculadas
utilizando la herramienta oficial TrackEval sobre los CSV generados por
MetricsExporter.
Basado en benchmarks previos y la literatura de YOLOv8, se espera el siguiente perfil de rendimiento en una NVIDIA Jetson Xavier NX:
| Configuración | Detector | Skip Frames (\(N\)) | MOTA Est. | FPS Est. | Uso CPU/GPU |
|---|---|---|---|---|---|
| FastMOT Base | YOLOv4-tiny | 1 | 66.8% | ~22 | Alto / Alto |
| Propuesta | YOLOv8n | 3 | Mayor al 75% | ~60+ | Medio / Medio |
La hibridación, al utilizar Flujo Óptico en fotogramas intermedios (\(N=3\)), evita la ejecución completa de la red neuronal, logrando una aceleración de “fuerza bruta” que permite a hardware modesto procesar video de alta velocidad.
He actualizado el documento con una sección de Conclusiones y te ofrezco sugerencias sobre las imágenes clave que deberías incluir para complementar el informe técnico.
| Detección de personas y conteo personas cancha de baseball | Detección de personas y conteo personas en la calle |
|---|---|