Object Tracking
El seguimiento de objetos asocia las detecciones entre fotogramas de vídeo y mantiene un ID persistente para cada objeto durante el movimiento y las oclusiones. Descubre cómo funcionan los rastreadores y consulta el código.
El seguimiento de objetos es una tarea de visión artificial que localiza objetos en fotogramas de vídeo sucesivos y enlaza esas ubicaciones en trayectorias, asignando a cada objeto un ID persistente. Un coche que entra en el fotograma con el ID 7 conserva el ID 7 mientras se mueve, gira y pasa brevemente detrás de un autobús, lo que permite al sistema contarlo una sola vez, medir su velocidad y deducir hacia dónde se dirige. El seguimiento de un solo objeto sigue un objetivo elegido en el primer fotograma, mientras que el seguimiento de múltiples objetos (MOT), la forma más habitual en la práctica, sigue a la vez todos los objetos de las clases de interés.
Cómo funciona el seguimiento de objetos#
La mayoría de los seguidores de múltiples objetos utilizan el seguimiento basado en detecciones: un modelo de detección de objetos encuentra objetos en cada fotograma y un seguidor enlaza esas detecciones a lo largo del tiempo. El seguidor usa un modelo de movimiento, normalmente un filtro de Kalman, el solapamiento de cajas medido mediante intersección sobre unión (IoU), incrustaciones de apariencia opcionales obtenidas de un modelo de reidentificación de objetos (Re-ID) y un solucionador de asignación lineal, como el algoritmo húngaro. En cada fotograma ejecuta cuatro pasos:
- Predecir: El filtro de Kalman, que presupone una velocidad constante, predice dónde aparecerá la caja de cada trayectoria existente en el nuevo fotograma.
- Puntuar: El seguidor crea una matriz de costes entre las trayectorias previstas y las nuevas detecciones a partir de IoU, el movimiento y, en algunos seguidores, la similitud de apariencia.
- Asignar: El solucionador elige las correspondencias uno a uno de menor coste.
- Gestionar trayectorias: Las trayectorias emparejadas actualizan su estado, las detecciones no emparejadas con suficiente confianza inician nuevas trayectorias y las trayectorias sin emparejar se conservan como «perdidas» durante un búfer de fotogramas para poder recuperarlas tras una oclusión.
El paso del ciclo de vida es lo que mantiene estables los ID cuando las detecciones desaparecen durante unos pocos fotogramas:
El diseño básico se remonta a SORT, de 2016, que solo usaba un filtro de Kalman, costes IoU y el algoritmo húngaro. DeepSORT añadió características de apariencia para recuperar identidades tras una oclusión, y ByteTrack mejoró la exhaustividad al emparejar también, en una segunda pasada, las detecciones con baja confianza, que a menudo corresponden a objetos parcialmente ocluidos. Los seguidores posteriores añaden compensación del movimiento de cámara para cámaras móviles y reglas de asociación más elaboradas para multitudes.
Seguimiento y detección#
Un detector no tiene estado: procesa cada fotograma de forma independiente, así que el coche del fotograma 1 y el del fotograma 2 son detecciones sin relación entre sí. El seguimiento añade un estado que conserva las identidades de un fotograma a otro, algo de lo que dependen el recuento, el tiempo de permanencia y la estimación de velocidad. El seguimiento también se diferencia del seguimiento de puntos y del flujo óptico, que siguen píxeles individuales o puntos de una superficie sin agruparlos en objetos etiquetados.
El modo de seguimiento de Ultralytics YOLO añade este estado a cualquier modelo de detección YOLO26, segmentación, pose o cajas orientadas, con seis rastreadores integrados, entre ellos ByteTrack, BoT-SORT y el predeterminado, TrackTrack:
from ultralytics import YOLO
# Load a YOLO26 detector; track() pairs it with a tracker that assigns persistent IDs
model = YOLO("yolo26n.pt")
detections, track_ids = 0, set()
for result in model.track(
"https://github.com/ultralytics/assets/releases/download/v0.0.0/decelera_portrait_min.mov", stream=True
):
detections += len(result.boxes)
if result.boxes.is_track:
track_ids.update(result.boxes.id.int().tolist())
print(f"Detections summed over all frames: {detections}")
print(f"Unique tracked objects: {len(track_ids)}")El número de ID únicos es menor que la suma de detecciones, porque cada ID representa un objeto en todos los fotogramas en los que aparece.
Aplicaciones en el mundo real#
- Supervisión del tráfico y estimación de velocidad: El seguimiento de cada vehículo entre fotogramas permite realizar recuentos, analizar el flujo por carril y estimar la velocidad a partir de la distancia que recorre una trayectoria por segundo.
- Analítica del comercio minorista: Las cámaras de las tiendas siguen a los compradores para medir la afluencia, la longitud de las colas y el tiempo de permanencia frente a los expositores, sin contar dos veces a la misma persona.
- Análisis deportivo: Las cadenas y los entrenadores siguen a los jugadores y al balón para calcular la distancia recorrida, la velocidad y las formaciones de los equipos.
- Vehículos autónomos y robótica: Los sistemas de percepción siguen a peatones y vehículos para estimar sus velocidades y predecir dónde estarán durante el segundo siguiente.
Medición de la calidad del seguimiento#
Los seguidores se comparan en benchmarks como MOT17, MOT20 para multitudes densas y DanceTrack para personas de aspecto similar que se mueven de forma impredecible. MOTA suma las omisiones, los falsos positivos y los cambios de identidad en una puntuación dominada por la calidad de detección; IDF1 mide con qué consistencia cada objeto real conserva un único ID, y HOTA equilibra ambos aspectos mediante la media geométrica de la precisión de detección y la precisión de asociación.










