Самый простой пример трекинга который работает

Разные алгоритмы трекинга мы делаем последние лет 12. Зачастую это очень простые алгоритмы трекинга. Иногда очень сложные и накрученные, как в Cherry.
Если честно, то очень часто мы собирали их с нуля руками. Что такое фильтр Калмана понимаем, как сделать выбор лучшего соответствия в целом тоже.

Но, если честно, недавно бомбануло. Я увидел, как в двух разных фирмах для трекинга используют это – https://www.pyimagesearch.com/2018/10/29/multi-object-tracking-with-dlib/ (или аналоги с того же сайта).
Для тех кто не хочет читать вкратце: детекция за счёт MobileNet-ssd, а связывание объектов за счёт трекера Dlib (или вариантов cv2).
В одной из таких фирм это даже заработало каким-то чудом.

Но… Не надо так. Не надо использовать бажный оптический трекер. Править все его ошибки это гигантская работа, на которую нет OpenSource исходников.
Я решил рассказать как сделать проще и стабильнее в несколько кликов.

Для того чтобы всё это завернуть нам понадобиться… Вот этот вот трекер – https://github.com/abewley/sort
Только вот примеров с ним в интернете сильно меньше.

По сути это фильтр Калмана + венгерские потери на выходе. Работающий их коробки. Видел его использование минимум в 3-4 проектах. В отличие от dlib:)

Работает как-то так (YoloV4 как бэкбон):

Вот тут вот выложил небольшой пример использования – https://github.com/ZlodeiBaal/SimpleTrackSample

Для запуска не забудьте взять веса отсюда – https://pjreddie.com/darknet/yolo/
должно работать с любой версией YOLO. Но v4 пока в базовой версии OpenCV не подерживается

По коду – 80% подготовки и разбора результатов сети. Где-то 15% отрисовка. Весь трекинг делается через:

from sort import *
mot_tracker = Sort() 

# update SORT and get result
track_bbs_ids = mot_tracker.update(detections)

В коде подробный пример. В качестве движка использовал OpenCV, чтобы у всех пошло.

З.Ю.

В последнее время свои статьи я публикую на очень разных платформах.
И, так получилось, что единое место куда я их свожу тут – https://vk.com/cvml_team ( дублирую в https://t.me/CVML_team )
На базе этого рассказа сделал большую публикацию на Хабре – https://habr.com/ru/company/recognitor/blog/505694/

Так что советую подписаться!