-
Notifications
You must be signed in to change notification settings - Fork 651
Multitarget tracker algorithm
Multitarget tracker является библиотекой реализованных на C++ алгоритмов, предназначенных для построения программ сопровождения множественных объектов.
Multitarget tracker включает в себя следующие группы блоков:
- Детекторы
- Ассоциаторы треков
- Фильтры
- Утилиты (визуализация, триггеры, ... )
Крупноблочно, типовой трекер включает в свой состав:
- детектор, например YOLO. На входе видео, на выходе вектор координат объектов;
- ассоциатор треков, например венгерский алгоритм. На входе вектор координат, на выходе вектор треков;
- фильтр, например фильтр Калмана. На входе вектор треков, на выходе вектор треков после фильтрации;
- методы управления треками (создание, удаление, визуализация ...).
Алгоритм сопровождения объектов (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, реализующий в себе весь необходимый функционал. Схематично принцип его работы можно описать так:
- Для впервые детектированных объектов создаются треки (CTrack) — структуры, содержащие в себе модель движения объекта, его траекторию и другие характеристики.
- После детектирования объектов на каждом последующем кадре происходит решение задачи ассоциации — сопоставления ранее найденных трэков с детектированными объектами. При создании матрицы расстояний между объектами и треками используется не последнее положение трека, а предсказанное с помощью фильтра Калмана.
- Если для трека был найден соответствующий объект, то его состояние обновляется: фильтр Калмана корректирует модель движения, запоминаются новые размеры и, при необходимости, визуальные характеристики объекта.
- Если для трека не нашлось подходящего объекта, то, в зависимости от настроек, он либо обновляет своё состояние с помощью предсказания фильтра Калмана, либо создаёт VOT – visual objects tracker на основе последнего найденного объекта и уточняет свое положение на кадре сам.
- Если трек не ассоциировался с объектами заданный интервал времени или вышел за пределы кадра, то он удаляется.