本文来源公众号“江大白”,仅用于学术分享,侵权删,干货满满。
原文链接:多目标追踪算法,项目工程化部署原理汇总
导读
多目标跟踪是计算机视觉领域中的一个重要任务,它旨在从视频或图像序列中准确地检测和跟踪多个移动目标。不过在落地部署时,有一些关键点需要解决。本文从快速应用部署的角度,和大家讲解多目标跟踪的实现方式,希望对大家有帮助。
实际应用中,做工程落地所遵从的原则是能够在保证实现功能的情况下,以最快的速度实现,先出一版,后期再不断迭代优化。所以定方案是最重要的,前期的调研工作做的好,对于后续的部署会极为方便,否则会走很多弯路。
回到本文的内容中来,目标检测已产生出很多优秀的算法(这里提的都是基于神经网络的算法,传统的CV检测算法不在考虑范围内),类似的综述性文章很多,无论单阶段式的(ssd/yolo),还是两阶段式的(faster rcnn)在实际工程中都有被应用,哪种框架用的熟练就用哪种框架,目标检测这一块就不过多讨论;
多目标追踪顾名思义就是跟踪视频画面中的多个目标,得到这些目标的运动轨迹;核心在于目标检测和数据关联,即在每一帧进行目标检测,再利用目标检测的结果来进行目标跟踪,后面一步一般称之为数据关联,数据关联更多依赖于手工特征提取(外观特征、运动特征、形状特征)。下面就多目标跟踪算法总结归纳为以下几类:
一、以卡尔曼滤波和匈牙利、KM匹配的后端追踪优化算法(代表性的应用有SORT、DEEP-SORT)
这类算法特点在于能达到实时性,但依赖于检测算法效果要好,特征区分要好(有点互相甩锅的味道,输出最终结果的好坏依赖于较强的检测算法,而基于卡尔曼加匈牙利匹配的追踪算法作用在于能够输出检测目标的id,其次能保证追踪算法的实时性),这样追踪效果会好,id切换少。相关论文和代码如下:
-
DeepSort : Wojke, Nicolai and Bewley, Alex and Paulus, Dietrich "Simple Online and Realtime Tracking with a Deep Association Metric" [paper] [code] In ICIP 2017
-
Sort : Bewley, Alex and Ge, Zongyuan and Ott, Lionel and Ramos, Fabio and Upcroft, Ben "Simple Online and Realtime Tracking"[paper] [code] In ICIP 2016.
二、基于多线程的单目标跟踪器的多目标追踪算法(代表性的算法有KCF、LEDS)
这类算法特点是跟踪效果会很好,因为其为每一类物体都单独分配了一个跟踪器。但该算法对目标尺度变化要求较大,参数调试需要合理,同时该算法极耗cpu资源,实时性不高。相关论文和代码如下:
-
KCF: "High-Speed Tracking with Kernelized Correlation Filters" [paper]