1 Introducción

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.

Diagrama de Arquitectura del Sistema Híbrido
Diagrama de Arquitectura del Sistema Híbrido

2 Objetivos del Proyecto

2.1 Objetivo General

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.

2.2 Objetivos Específicos

  • Implementar un Subsistema de Detección Desacoplado: Diseñar un adaptador de software (Wrapper) para el modelo YOLOv8 que transforme los tensores de inferencia al espacio de estados del rastreador, permitiendo la modernización del motor de detección sin alterar la lógica central del sistema.
  • Desarrollar un Motor de Seguimiento por Flujo Óptico: Configurar e integrar el algoritmo de Lucas-Kanade Piramidal junto con técnicas de estimación afín robusta (RANSAC) para predecir la posición geométrica de los objetos en los fotogramas intermedios, garantizando la continuidad de las trayectorias sin uso intensivo de GPU.
  • Orquestar la Asociación de Datos: Implementar algoritmos de optimización combinatoria (Algoritmo Húngaro) basados en métricas de superposición espacial (IoU) para vincular eficazmente las predicciones del Filtro de Kalman con las nuevas detecciones.
  • Evaluar el Desempeño Cuantitativo: Validar la eficacia del sistema mediante un módulo de métricas dedicado, generando reportes estandarizados para analizar la precisión del seguimiento y la estabilidad de las identidades a lo largo del tiempo.

3 Metodología

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.

3.1 Arquitectura del Sistema: Pipeline Híbrido

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\)):

  1. Fase de Detección y Corrección (\(t \mod N = 0\)): Se activa el motor de inferencia YOLOv8. Las detecciones resultantes actúan como “mediciones absolutas” que corrigen la deriva acumulada y gestionan la entrada de nuevos objetos en la escena o la salida de los existentes.
  2. Fase de Seguimiento Inercial (\(t \mod N \neq 0\)): Se suspende la ejecución de la GPU para la detección. En su lugar, se activa el módulo de Flujo Óptico, que propaga las posiciones de los objetos basándose en la coherencia temporal de los píxeles.

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.

3.2 Subsistema de Detección (YOLOv8 Wrapper)

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.

  • Desacoplamiento de Software: Se implementó la clase YOLOv8Wrapper (en src/fastmot/models/yolo_wrapper.py) para aislar la lógica de seguimiento de la librería de detección. Este componente transforma los tensores de salida de PyTorch (formato [x_center, y_center, width, height]) al sistema de coordenadas estandarizado TLBR (Top-Left-Bottom-Right) requerido por el rastreador.
  • Configuración: El sistema está configurado para filtrar clases irrelevantes, centrando la atención en las clases de interés definidas en configs/mot.json (automóviles, autobuses, motocicletas y personas).

3.3 Estimación de Movimiento: Flujo Óptico Robusto

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:

  1. Extracción de Características Dinámica: Si un objeto carece de puntos de seguimiento previos, se utiliza el detector de esquinas Shi-Tomasi (cv2.goodFeaturesToTrack) dentro de la región de interés (ROI) del objeto para identificar puntos de alto contraste.
  2. Lucas-Kanade Piramidal: Se emplea el algoritmo cv2.calcOpticalFlowPyrLK con una configuración de pirámide de 3 niveles (maxLevel=3) y una ventana de búsqueda de \(15 \times 15\). La estructura piramidal es crucial para capturar desplazamientos rápidos o grandes saltos entre fotogramas.
  3. Filtrado de Outliers con RANSAC: Dado que el flujo óptico es ruidoso (p.ej., reflejos o fondo en movimiento), se implementó una estimación de Transformación Afín Parcial con RANSAC (cv2.estimateAffinePartial2D).
    • Este algoritmo ajusta un modelo geométrico (traslación + escala) al conjunto de vectores de flujo.
    • Descarta automáticamente los vectores anómalos (outliers) que no coinciden con el movimiento rígido del objeto.
    • El resultado es una predicción de posición extremadamente estable y robusta frente a oclusiones parciales.

3.4 Filtrado Estocástico: Filtro de Kalman de 8 Estados

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.

3.5 Asociación de Datos y Gestión de Vida del Track

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:

  1. Matriz de Costo: Se calcula la “distancia” entre cada predicción del Kalman y cada nueva detección utilizando la métrica IoU (Intersection over Union) (1 - IoU).
  2. Asignación Óptima: Se emplea el Algoritmo Húngaro (implementado vía scipy.optimize.linear_sum_assignment) para encontrar la asignación global que minimiza el costo total, resolviendo conflictos de manera determinista.
  3. Ciclo de Vida:
    • Nacimiento: Nuevas detecciones no asociadas inician un track en estado “Tentativo”.
    • Confirmación: Un track solo se considera válido si recibe confirmaciones (hits) durante un número mínimo de cuadros consecutivos (n_init), filtrando falsos positivos esporádicos.
    • Muerte: Los tracks que no se actualizan durante un periodo definido (max_age) son eliminados de la memoria para mantener la eficiencia.

3.6 Infraestructura y Reproducibilidad

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.

Diagrama de la metodologia
Diagrama de la metodologia

4 Estructura de Directorios

Para garantizar la reproducibilidad y el rigor científico, se ha reestructurado el repositorio base en una jerarquía modular.

4.1 Estructura de Archivos Clave

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.

5 Diseño Experimental y Validación (Datasets)

La validación del rendimiento del sistema híbrido se realiza utilizando datasets de referencia y métricas estándar de la industria.

5.1 Datasets de Referencia

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
MOT17 MOT20

5.2 Métricas de Evaluación

La implementación debe reportar las siguientes métricas, calculadas utilizando la herramienta oficial TrackEval sobre los CSV generados por MetricsExporter.

  • MOTA (Multiple Object Tracking Accuracy): Métrica principal de precisión. Combina falsos positivos, falsos negativos y cambios de identidad (ID Switches).
  • IDF1 (ID F1 Score): Mide la consistencia de la identidad a largo plazo. Es crucial para evaluar la efectividad del Re-ID y el Flujo Óptico tras oclusiones.
  • HOTA (Higher Order Tracking Accuracy): Una métrica moderna que equilibra la detección y la asociación de forma más equitativa que MOTA.

5.3 Tabla Comparativa de Rendimiento Esperado

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

6 Conclusiones

La implementación de la arquitectura de seguimiento híbrido ha alcanzado exitosamente sus objetivos de modernización y optimización. El logro principal fue el desacoplamiento del framework FastMOT, originalmente basado en implementaciones de YOLOv4 con dependencias rígidas en C++ y TensorRT , y su reemplazo por la arquitectura de vanguardia YOLOv8 de Ultralytics.

Esta transición se gestionó mediante un Wrapper de Python (yolo_wrapper.py), que garantizó la flexibilidad necesaria para la investigación al tiempo que mantuvo la lógica central optimizada de FastMOT.

El sistema resultante se basa en el principio de seguimiento intermitente, logrando un equilibrio superior entre latencia y precisión. La integración crucial reside en: * Eficiencia Híbrida: La combinación del Flujo Óptico de Lucas-Kanade (KLT) y el Filtro de Kalman permite actualizar el estado del objeto y reducir la incertidumbre incluso en los fotogramas donde no se ejecuta la red neuronal (los skip frames). * Rendimiento Acelerado: Este enfoque evita la ejecución de “fuerza bruta” de la red profunda en cada ciclo de reloj, permitiendo que el hardware modesto (como la NVIDIA Jetson Xavier NX) procese video de alta velocidad con un rendimiento proyectado de ~60+ FPS y una precisión MOTA superior al 75%, superando significativamente la configuración base. * Resiliencia: El rastreo de puntos característicos por KLT mejora la solidez del sistema, proporcionando vectores de movimiento válidos al Filtro de Kalman incluso bajo condiciones de oclusiones parciales.

Finalmente, la nueva estructura de directorios modular asegura la reproducibilidad y permite futuros estudios de ablación (por ejemplo, experimentando con diferentes valores del parámetro \(N\) de salto de fotogramas) sin modificar el núcleo del tracker.

7 Referencia

  1. optical flow consume a lot of time. Issue #56 · GeekAlexis/FastMOT - GitHub, fecha de acceso: diciembre 11, 2025, https://github.com/GeekAlexis/FastMOT/issues/56
  2. MOT20 - MOT Challenge - Data, fecha de acceso: diciembre 11, 2025, https://motchallenge.net/data/MOT20/
  3. Reference for ultralytics/models/yolo/model.py, fecha de acceso: diciembre 11, 2025, https://docs.ultralytics.com/reference/models/yolo/model/
  4. Python OpenCV: Optical Flow with Lucas-Kanade method - GeeksforGeeks, fecha de acceso: diciembre 11, 2025, https://www.geeksforgeeks.org/python/python-opencv-optical-flow-with-lucas-kanade-method/
  5. sktedro/vehicle_detection_for_embedded_platforms: Vehicle detection and tracking in a surveillance type of a video using a convolutional neural network - GitHub, fecha de acceso: diciembre 11, 2025, https://github.com/sktedro/vehicle_detection_for_embedded_platforms
  6. UA-DETRAC: A New Benchmark and Protocol for Multi-Object Detection and Tracking - UC Merced, fecha de acceso: diciembre 1

8 Reporte de contribución individual

El desarrollo del presente trabajo se llevó a cabo de manera colaborativa por un equipo conformado por tres integrantes, quienes participaron activamente en las distintas fases del proyecto. La distribución de tareas se realizó con el objetivo de aprovechar las habilidades técnicas de cada integrante y asegurar un avance ordenado y eficiente del sistema propuesto.

En una primera etapa, el Integrante 1 (Laura Camila Agudelo) fue responsable del estudio del estado del arte y la selección de las tecnologías base del proyecto. Esta labor incluyó la revisión de literatura relacionada con detección y seguimiento de múltiples objetos, el análisis del enfoque tracking-by-detection y la selección del framework FastMOT como base del sistema. Asimismo, se encargó de la redacción inicial de la introducción y el planteamiento metodológico del trabajo.

El Integrante 2 (Johan Sebastian Cano) se enfocó en la parte técnica relacionada con la detección de objetos. Sus tareas incluyeron la preparación de los conjuntos de datos MOT17 y MOT20, la conversión de las anotaciones al formato YOLO, y el entrenamiento del modelo YOLOv8. Además, realizó ajustes de hiperparámetros y verificó el correcto almacenamiento del mejor modelo entrenado, que posteriormente fue utilizado en el sistema de seguimiento.

Por su parte, el Integrante 3 (Brayan Armando Cumbalaza) se encargó de la implementación y adaptación del módulo de seguimiento de objetos. Este trabajo incluyó la integración del modelo YOLOv8 entrenado dentro del framework FastMOT, el ajuste de los parámetros del flujo óptico y del filtro de Kalman, así como la validación del mantenimiento de identidades a lo largo del tiempo. También participó en la definición de la aplicación práctica orientada al análisis de patrones de movimiento de personas en espacios públicos.

Finalmente, los tres integrantes colaboraron de manera conjunta en la fase de experimentación, análisis de resultados y redacción final del documento. Las decisiones técnicas fueron discutidas de forma consensuada, y se realizaron revisiones cruzadas del código y del informe para garantizar la coherencia, claridad y calidad académica del trabajo final.