多目标追踪总结

最近在看目标检测与跟踪相关的内容,记录一下看过的内容,是有转载其他作者的,如果需要下架请告知。

多目标追踪定义:

多目标追踪顾名思义就是跟踪视频画面中的多个目标,得到这些目标的运动轨迹;核心在于**目标检测和数据关联,**即在每一帧进行目标检测,再利用目标检测的结果来进行目标跟踪,后面一步一般称之为数据关联,数据关联更多依赖于手工特征提取(外观特征、运动特征、形状特征)。

纯检测的方式检测+追踪(跟踪)的方式实现视频帧中目标追踪的对比:

纯检测方式:目标神经网络训练出的模型(这里先指2d检测),2d检测网络回归出的是一个2d检测框,输出内容有:[image_id, conf, label, xmin, ymin, xmax, ymax],image_id:图像的帧;conf:检测的置信度;label:检测物体的类别;xmin,ymin:检测框左上角的像素坐标归一化值;xmax,ymax:检测框右下角的像素坐标归一化值;可以看到这些信息只能给出被检测物体在图像中的像素信息(定位)与类别信息(分类),在实际工程中,这些信息是远远不够的,比如本车前方检测到了有行人通过,此时应该及时刹车,刹车的前提是需要知道人与车之间的距离信息,所以检测加测距是分不开的,这样的感知才有意义;同样,实际检测过程中,外界环境复杂(光照、遮挡等)、相机会抖动等多因素影响,仅依赖检测的结果,检测框是很不稳定的

检测+追踪(跟踪)方式:在检测中加入追踪后的检测框极其稳定,输出结果更平滑,几乎不存在抖动,同时还给出了不同物体的label,和同一类型物体的不同的id信息,既对不同物体做了区分,又对同一类型物体做了区分,即实现了多目标追踪;通过对轨迹特征的自动分析和提取,弥补视觉目标检测的不足,有效的去除错误的检测,增加遗漏的检测,为进一步的行为分析提供基础

多目标追踪思路:

多目标追踪(Multi-object Tracking, MOT)有两种思路:

  1. 一种是基于检测和匹配的方法,即通过目标检测结合帧间的数据关联来实现;基本思路是基于常规的目标检测算法(ssd/yolo/faster rcnn),将每一帧的目标检测出来,然后使用KM等匹配算法将相邻帧之间检测到的目标进行关联,得到每个特定目标的运动轨迹;最重要的方法是带权图模型。这里又分为离线跟踪算法和在线跟踪算法,离线跟踪算法主要是使用每一帧检测到的目标构成图的结点基于运动、外观等参考量作为边的费用或权值(相似性度量),构造一个全局图结构,求解最短路径、最小费用流等得到最优结果;实时跟踪则直接使用KM算法求解相邻两帧的最优匹配。这种方法的核心主要是目标检测性能的好坏,帧间的匹配算法几乎是固定的,影响不大,目标检测器性能越好,最终的追踪输出效果也会更好。数据关联和目标检测是这个算法的核心。
    多目标追踪总结_第1张图片
  2. 第二种是基于单目标跟踪器的目标跟踪;因为多目标追踪相当于同时追踪多个目标,可以为每个目标分配一个跟踪器(KCF),然后间接使用匹配算法来修正那些跟踪失败或新出现的目标;这种方法很明显的劣势在于“吃硬件”,需要较高的计算力资源,工程中应用难度较大。当然还有基于神经网络的多目标跟踪算法,(基于YOLOV3和Deep_Sort实现的实时多人追踪)。
    这里提供一些参考链接:
    https://blog.csdn.net/zziahgf/article/details/85344859
    https://blog.csdn.net/xiao__run/article/details/84374959

具体的一些算法上文提到了,KM匹配算法、KCF(核相关滤波算法)、Deep-sort;针对自己的需要,可以有选择性的选择某类算法。

目前主流的多目标追踪算法为分三类:

目前主流的多目标追踪算法为分三类:

​1. 以匈牙利、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.
  1. 基于多线程的单目标跟踪器的多目标追踪算法(代表性的算法有KCF、LEDS),这类算法特点是跟踪效果会很好,毕竟为每一类物体都单独分配了一个跟踪器。但该算法对目标尺度变化要求较大,参数调试需要合理,同时该算法极耗cpu资源,实时性不高。
    · KCF: “High-Speed Tracking with Kernelized Correlation Filters” [paper] [code] In TPAMI 2015
    · LEDS:“Robust Estimation of Similarity Transformation for Visual Object Tracking” [paper] [code] In AAAI 2019.
  2. 基于深度学习的多目标跟踪算法。现阶段end-to-end的算法还不多,大多处于实验室刷榜阶段,有进一步落地应用的及时更新。相关论文和代码如下:
    · DAN: “Deep Affinity Network for Multiple Object Tracking” [paper] [code] In TPAMI 2019.
    · MCSA: “Multi-Object Tracking with Multiple Cues and Switcher-Aware Classification” [paper] In CVPR 2019.

你可能感兴趣的:(目标检测与跟踪)