Multi-Object Tracking (MOT)
Многократное отслеживание объектов (MOT) отслеживает каждый объект в видео и сохраняет за ним один и тот же ID между кадрами. Разбираем, как трекеры связывают детекции, метрики и код.
Многообъектное отслеживание (MOT) — задача компьютерного зрения, в которой нужно одновременно следить за каждым интересующим объектом в видео, присваивая ему постоянный идентификатор, чтобы его положения в разных кадрах образовывали траекторию. Число объектов заранее неизвестно и постоянно меняется: люди или автомобили появляются в кадре, уходят из него, пересекаются и скрываются друг за другом. Поэтому трекер должен в каждом кадре определять, какие обнаруженные объекты продолжают существующие траектории, какие начинают новые и какие траектории завершились. MOT — наиболее распространённый тип отслеживания объектов; однообъектное отслеживание (SOT) следит за одной целью, выбранной в первом кадре, независимо от её класса.
Как работает многообъектное отслеживание#
В большинстве систем MOT используется подход «отслеживание по обнаружениям»: модель обнаружения объектов находит объекты в каждом кадре, а трекер связывает обнаружения с уже существующими траекториями. С помощью модели движения, обычно фильтра Калмана, трекер предсказывает, где должна находиться каждая цель, а затем строит матрицу стоимости между прогнозируемыми траекториями и новыми обнаружениями, учитывая перекрытие рамок (IoU), движение и, при необходимости, эмбеддинги внешнего вида, полученные моделью повторной идентификации объектов (Re-ID). Соответствия ищутся как задача о линейном назначении с помощью венгерского алгоритма. Совпавшие траектории сохраняют свои идентификаторы, обнаружения с высокой уверенностью, для которых не найдено соответствий, начинают новые траектории, а траектории без совпадения некоторое число кадров сохраняются как «потерянные», чтобы их можно было восстановить после перекрытия.
В толпе сопоставлять объекты сложно: частично скрытые люди дают обнаружения с низкой уверенностью, которые отбрасываются при простом пороговом отсечении. ByteTrack сохраняет такие обнаружения для второго прохода сопоставления:
Архитектуры трекеров#
- SORT и его последователи: SORT (2016) объединяет фильтр Калмана, стоимости на основе IoU и венгерский алгоритм. DeepSORT добавил признаки внешнего вида для восстановления идентификаторов после перекрытия, ByteTrack — второй проход для обнаружений с низкой уверенностью, OC-SORT — устойчивые к перекрытиям оценки движения, а BoT-SORT — компенсацию движения камеры для движущихся камер.
- Совместное обнаружение и получение эмбеддингов (FairMOT): FairMOT обучает одну сеть одновременно формировать обнаружения и эмбеддинги Re-ID, поэтому для признаков внешнего вида не нужна вторая модель.
- Отслеживание от начала до конца (MOTR): MOTR и TrackFormer расширяют трансформер DETR запросами траекторий, которые переносят идентификатор каждого объекта из кадра в кадр; таким образом, сопоставление обучается в ходе тренировки.
Режим трекинга Ultralytics YOLO выполняет трекинг на основе детекций для любой модели YOLO26 для детекции, сегментации, оценки позы или ориентированных рамок. Доступно шесть встроенных трекеров, выбираемых аргументом tracker: TrackTrack (по умолчанию), BoT-SORT, ByteTrack, OC-SORT, Deep OC-SORT и FastTracker. В этом примере трекер отслеживает людей в коротком ролике и считает, сколько кадров сохраняется каждый ID:
from collections import Counter
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
video = "https://github.com/ultralytics/assets/releases/download/v0.0.0/decelera_portrait_min.mov"
# Отслеживание людей (класс COCO 0) и подсчёт кадров, в которых появляется каждый идентификатор траектории
frames_per_id = Counter()
for result in model.track(video, stream=True, classes=[0]):
if result.boxes.is_track:
frames_per_id.update(result.boxes.id.int().tolist())
# Пять самых длинных траекторий в формате (идентификатор траектории, число кадров)
print(frames_per_id.most_common(5))Каждая пара содержит идентификатор траектории и число кадров, в течение которых он сохранялся. Долгоживущий идентификатор означает, что трекер продолжал следить за одним человеком на протяжении многих кадров.
Оценка качества отслеживания#
Качество MOT оценивают на таких бенчмарках, как MOT17, MOT20 для плотных толп и DanceTrack, где танцоры похожи друг на друга и непредсказуемо двигаются. Наиболее распространены три метрики:
- MOTA: Единица минус сумма пропущенных объектов, ложноположительных результатов и переключений идентификаторов, делённая на число объектов с эталонной разметкой. Поэтому метрика в основном отражает качество обнаружения.
- IDF1: F1-мера правильно идентифицированных обнаружений, показывающая, насколько последовательно каждому реальному объекту присваивается один и тот же идентификатор.
- HOTA: Геометрическое среднее точности обнаружения и точности сопоставления, которое одинаково учитывает поиск объектов и связывание их в траектории.
Сложности#
- Перекрытие: Объект, скрытый на протяжении многих кадров, может вернуться с новым идентификатором, если его не удастся восстановить по прогнозу движения или сопоставлению внешнего вида.
- Толпы и сходство внешнего вида: В плотных группах людей или среди игроков в одинаковой форме оценки по IoU и внешнему виду становятся неоднозначными, и идентификаторы меняются местами.
- Движение камеры: При панорамировании или вибрации камеры все рамки одновременно смещаются, нарушая модели движения с постоянной скоростью, если трекер не компенсирует движение камеры.
- Ограничения реального времени: Обнаружение, сопоставление и любая модель Re-ID используют общий временной бюджет кадра, а отдельная модель Re-ID требует дополнительного прохода сети для каждого обнаруженного объекта.










