Skip to content

Multitarget tracker algorithm

Andrey Smorodov edited this page Apr 23, 2020 · 8 revisions

Сопровождение объектов в Multitarget tracker

Определение

Multitarget tracker является библиотекой реализованных на C++ алгоритмов, предназначенных для построения программ сопровождения множественных объектов.

Состав

Multitarget tracker включает в себя следующие группы блоков:

  1. Детекторы
  2. Ассоциаторы треков
  3. Фильтры
  4. Утилиты (визуализация, триггеры, ... )

Состав типового трекера

Крупноблочно, типовой трекер включает в свой состав:

  1. детектор, например YOLO. На входе видео, на выходе вектор координат объектов;
  2. ассоциатор треков, например венгерский алгоритм. На входе вектор координат, на выходе вектор треков;
  3. фильтр, например фильтр Калмана. На входе вектор треков, на выходе вектор треков после фильтрации;
  4. методы управления треками (создание, удаление, визуализация ...).

Сопровождение объектов трекером, построенным на базе модулей Multitarget tracker

Алгоритм сопровождения объектов (multitarget tracking, multiple objects tracking) представляет собой комбинацию алгоритмов решающих задачу пространственно-временной ассоциации обнаруженных на видео объектов. Обнаружение объектов решается каким-либо детектором произвольной природы: детектор движения, HOG+SVM, HAAR+AdaBoost, глубокие нейронные сети (DNN) и другие. Результатом работы детектора является список объектов, найденных на текущем кадре. Каждый найденный объект (CRegion) характеризуется следующими параметрами:

  • описывающий прямоугольник (cv::Rect m_brect или cv::RotatedRect m_rrect);
  • тип объекта (std::string m_type);
  • коэффициент доверия или вероятность правильного распознавания (float m_confidence).

За сопровождение объектов отвечает класс Ctracker, реализующий в себе весь необходимый функционал. Схематично принцип его работы можно описать так:

  1. Для впервые детектированных объектов создаются треки (CTrack) — структуры, содержащие в себе модель движения объекта, его траекторию и другие характеристики.
  2. После детектирования объектов на каждом последующем кадре происходит решение задачи ассоциации — сопоставления ранее найденных трэков с детектированными объектами. При создании матрицы расстояний между объектами и треками используется не последнее положение трека, а предсказанное с помощью фильтра Калмана.
  3. Если для трека был найден соответствующий объект, то его состояние обновляется: фильтр Калмана корректирует модель движения, запоминаются новые размеры и, при необходимости, визуальные характеристики объекта.
  4. Если для трека не нашлось подходящего объекта, то, в зависимости от настроек, он либо обновляет своё состояние с помощью предсказания фильтра Калмана, либо создаёт VOT – visual objects tracker на основе последнего найденного объекта и уточняет свое положение на кадре сам.
  5. Если трек не ассоциировался с объектами заданный интервал времени или вышел за пределы кадра, то он удаляется.

Описание примеров

  1. Базовый пример
  2. Трекинг лиц
  3. Трекинг автомобилей
  4. Триггер оставленного предмета

Ссылки на литературу

Детекторы

Ассоциаторы

Фильтры

Компиляция библиотеки

Зависимости

Шаблон нового приложения и его компиляция

Часто задаваемые вопросы