Object Tracking
Отслеживание объектов связывает детекции между кадрами видео и сохраняет постоянный ID каждого объекта при движении и окклюзиях. Разбираем принцип работы трекеров и приводим код.
Отслеживание объектов — это задача компьютерного зрения, которая находит объекты в последовательных кадрах видео и связывает их местоположения в траектории, присваивая каждому объекту постоянный ID. Автомобиль, появившийся в кадре под ID 7, сохраняет этот ID, пока движется, поворачивает и ненадолго скрывается за автобусом; это позволяет посчитать его один раз, измерить скорость и определить, куда он направляется. Отслеживание одного объекта следует за целью, выбранной в первом кадре, а отслеживание множества объектов (MOT) — самый распространенный на практике вариант — одновременно отслеживает все объекты интересующих классов.
Как работает отслеживание объектов#
Большинство трекеров для отслеживания нескольких объектов используют подход «отслеживание по детекциям»: модель детекции объектов находит объекты в каждом кадре, а трекер сопоставляет эти детекции во времени. Трекер использует модель движения, обычно фильтр Калмана, перекрытие ограничивающих рамок, измеряемое как пересечение по отношению к объединению (IoU), необязательные эмбеддинги внешнего вида, полученные с помощью модели повторной идентификации объектов (Re-ID), и алгоритм линейного сопоставления, например венгерский алгоритм. На каждом кадре трекер выполняет четыре шага:
- Предсказание: фильтр Калмана, предполагая постоянную скорость, предсказывает, где рамка каждого существующего трека появится в новом кадре.
- Оценка: трекер формирует матрицу стоимостей между предсказанными треками и новыми детекциями на основе IoU, движения и, в некоторых трекерах, сходства внешнего вида.
- Сопоставление: алгоритм выбирает взаимно однозначные соответствия с наименьшей стоимостью.
- Управление треками: у сопоставленных треков обновляется состояние, уверенные несопоставленные детекции начинают новые треки, а несопоставленные треки сохраняются как «потерянные» на несколько кадров, чтобы их можно было восстановить после перекрытия.
Именно этап жизненного цикла позволяет ID оставаться стабильными, даже если детекции пропадают на несколько кадров:
Базовая архитектура появилась в SORT в 2016 году; она использовала только фильтр Калмана, стоимости IoU и венгерский алгоритм. В DeepSORT добавили признаки внешнего вида, чтобы восстанавливать идентификаторы после перекрытия, а ByteTrack повысил полноту, сопоставляя на втором проходе также детекции с низкой уверенностью, которые часто соответствуют частично перекрытым объектам. Более поздние трекеры добавляют компенсацию движения камеры для съемки с движущихся камер и более сложные правила сопоставления для толпы.
Отслеживание и детекция#
Детектор не хранит состояние: он обрабатывает каждый кадр независимо, поэтому автомобиль в кадре 1 и автомобиль в кадре 2 — никак не связанные детекции. Отслеживание добавляет состояние, переносящее идентификаторы из кадра в кадр; на этом основаны подсчет, измерение времени пребывания и оценка скорости. Отслеживание также отличается от отслеживания точек и оптического потока, которые следят за отдельными пикселями или точками поверхности, не объединяя их в размеченные объекты.
Режим трекинга Ultralytics YOLO добавляет это состояние к любой модели YOLO26 для детекции, сегментации, оценки позы или ориентированных рамок. Доступно шесть встроенных трекеров, включая ByteTrack, BoT-SORT и используемый по умолчанию 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)}")Число уникальных ID меньше общего числа детекций, потому что один ID обозначает один объект во всех кадрах, где он появляется.
Примеры применения в реальных условиях#
- Мониторинг дорожного движения и оценка скорости: отслеживание каждого автомобиля в кадрах позволяет вести подсчет, анализировать поток по полосам и оценивать скорость по расстоянию, которое трек проходит за секунду.
- Аналитика в розничной торговле: камеры в магазинах отслеживают покупателей, чтобы измерять поток посетителей, длину очередей и время, проведенное перед витринами, не считая одного человека дважды.
- Спортивная аналитика: вещатели и тренеры отслеживают игроков и мяч, чтобы вычислять пройденное расстояние, скорость и расстановку команд.
- Автономные транспортные средства и робототехника: системы восприятия отслеживают пешеходов и транспортные средства, оценивая их скорости и предсказывая, где они окажутся через секунду.
Оценка качества отслеживания#
Трекеры сравнивают на бенчмарках, таких как MOT17, MOT20 для плотных толп и DanceTrack для похожих внешне людей, движущихся непредсказуемо. MOTA объединяет пропуски, ложноположительные срабатывания и переключения идентификаторов в одну оценку, на которую сильнее всего влияет качество детекции; IDF1 измеряет, насколько стабильно каждому реальному объекту соответствует один ID; а HOTA уравновешивает обе составляющие, вычисляя среднее геометрическое точности детекции и точности сопоставления.










