多目标跟踪MOT入门

 摘自:一线算法工程师整理!超实用的3大多目标跟踪算法

一线算法工程师整理!超实用的3大多目标跟踪算法https://mp.weixin.qq.com/s/LkfFY5PXzek-KRblo2gKGA

 另推荐参考

多目标研究入门-从SORT到FairMOT

多目标研究入门-从SORT到FairMOT - 知乎目标跟踪分为单目标跟踪(SOT)和多目标跟踪(MOT)。SOT一般在首帧给出目标,跟踪器(tracker)需要在后续帧定位出目标位置,可以看成目标重定位问题。MOT一般需要检测器(detector)先检测出目标,跟踪器对属于同一目标…https://zhuanlan.zhihu.com/p/260292966

多行人追踪至落地部署项目,Deepsort、JDE、Fair-MOT三种算法简介及其核心卡尔曼滤波器与匈牙利算法简介_锦鲤AI幸运的博客-CSDN博客

Sort和Deepsort原理解析及在JDE和Fairmot中的应用_藏晖的博客-CSDN博客

1、理论基础

目标跟踪分为单目标跟踪(SOT)和多目标跟踪(MOT)。SOT一般在首帧给出目标,跟踪器(tracker)需要在后续帧定位出目标位置,可以看成目标重定位问题。MOT一般需要检测器(detector)先检测出目标,跟踪器对属于同一目标的框进行关联,可以看作目标匹配问题。

MOT算法的通常工作流程:(1)给定视频的原始帧;(2)运行对象检测器以获得对象的边界框;(3)对于每个检测到的物体,计算出不同的特征,通常是视觉和运动特征;(4)之后,相似度计算步骤计算两个对象属于同一目标的概率;(5)最后,关联步骤为每个对象分配数字ID。

MOT的分类

1)TBD(Tracking-by-Detection)与DFT(Detection-Free Tracking)也即基于检测的多目标跟踪与基于目标外形的先验知识无需检测器的多目标跟踪。TBD是目前学界业界研究的主流。

2) 传统的跟踪方式有在线跟踪(Online)与离线跟踪(Offline)两种。在线跟踪算法中,只能使用当前帧及之前帧的信息来进行当前帧的跟踪。而在离线跟踪算法中则没有了这个限制,对每一帧的预测,都可以使用整个视频的信息,这样更容易获得一个全局最优解。两种方式各有优劣,一般视应用场合而定,离线跟踪算法的效果一般会优于在线跟踪算法。而介于这两者之间,还有一种称之为接近在线的多目标跟踪算法(NOMT),即可以部分利用未来帧的信息。

在跟踪结果可修改性方面,在线跟踪是不允许修改以往的跟踪结果的。因为一旦修改,算法自然就不再符合在线跟踪原则,从而不能利用未来帧,进而变成了Near-Online或者Offline的跟踪方式。

需要特别注意,在线跟踪不等于Real-Time实时跟踪,实时跟踪一定属于在线跟踪的,但绝大部分在线跟踪算法速度还太慢,不足以支持实时处理的要求. 尤其是应用了深度学习的算法,往往需要大量运算,对实时处理有较大压力。

MOT常用评价标准

多目标跟踪MOT入门_第1张图片

表1. 常用评价指标

此外,还有两种评价方式CLEAR MOT Metrics与ID Scores,这里不做详细介绍。

MOT的难点

MOT最常用的类别是Tracking-By-Detection与Online,对应的算法处理步骤:

多目标跟踪MOT入门_第2张图片

图1 MOT算法处理步骤

其中,有两个难点:

1)遮挡,这也是ID交换和轨迹分段的主要原因;

2)两个轨迹非常靠近,ID容易匹配不准,出现错位或丢失。

目前所有目标追逐算法都围绕着这两大难点进行优化,优化的方向围绕着这四个步骤,如:运用Private Dataset,挑选合适检测模型,提升检测精度;特征提取不局限于一般的CNN,还有Siamese Network等网络;特征间的相似度,不再是简单的Distance Metric,也开始运用CNN、RNN、LSTM等;数据关联匹配除了传统经典的Hungarian Algorithm,也可以当作图优化的问题处理。

常用的效果较好的有以下几种:

  • Sort(Simple nline and real time tracking)

  • Deep Sort(Deep simple online and realtime tracking)

  • FairMot(A simple baseline for multi-object tracking)

  • Graphnn Multi-object Trachking。(后面简写为Graphnn-mot)

2、典型的追踪算法介绍

1. Sort和Deep Sort

Sort和Deep Sort[9]是经典的追踪算法之一,算法原理流程图如下:

多目标跟踪MOT入门_第3张图片

图2. Deep Sort算法的简单流程图

如上图,算法模块,根据目前MOT常用的算法步骤:a.检测, b.特征提取、轨迹预测, c.计算相似度,d.数据匹配,Deep Sort算法就这四个步骤,按序简介涉及到的核心知识点五个:Setection、ReID model、Kalman Filter、iou与余弦/马氏距离、Hungarian Algorithm。

Detection:常用的检测网络,如Faster Rcnn、Yolov4、SSD等,可根据实际项目对精度或时间的要求挑选。本文复现时,上面的几种网络都有尝试,源代码使用了商汤的mmdetection框架下的cascade-rcnn,但项目考虑时间和精度,最终使用了Yolov4[3]作为检测来源。

ReID model:源代码使用了多重粒度网络(Mutiple Granularity Network),是以Resnet50作为backbone,以Softmax_2048分支作为id特征。考虑到2048维特征过大,数据关联时,时间会比较长,所以一般项目上会采用MobileNetv2[4]作为主干网络,id特征维度可以下降到751,减少运算量。

Kalman Filter:卡尔曼滤波,预测confirmed id在下一帧的中心点位置以及box的size。

iou与余弦距离:用于计算数据匹配的代价矩阵。1-iou的值作为box间的距离值,余弦距离函数值作为id特征值间的距离。

Hungarian Algorithm:匈牙利匹配算法用于目标预测与目标检测的关联匹配,确定目标的轨迹。

相比之下,Sort算法比起Deep sort算法少了ReID model与余弦距离判断,所以ID切换的过于频繁,精度要低很多。速度几乎只取决于Detection模型的预测速度。如果对速度要求很高的,可以考虑用sort算法。

2. FairMot

FairMot追踪算法[10],算法处理流程图如下:

多目标跟踪MOT入门_第4张图片

图3. FairMot算法的简单流程图

FairMot算法重点突破:

a. 比起之前两步(先检测后Re-ID)的追踪算法,FairMot完成检测与Re-ID共享网络参数,减少算法推理时间,速度大幅度提升。

b. 比起之前单步的追踪算法JDE[12],存在的一些不足,如:一个物体可能被多个anchor负责并进行检测,或实际物体的中心可能与负责对该物体进行检测的anchor中心有偏差,都会导致id频繁变换。Fairmot针对这些不足,不用anchor-based的检测方式,以anchor-free目标检测范式代替。

涉及到的核心知识点:一个有效简洁的网络结构DLA34、Kalman Filter、iou与余弦距离、Hungarian Algorithm。下面详细介绍DLA34网络,至于Kalman,Distance Metrixes, Hungarian Algorithm同Deep Sort的内容一致,这里不多做解释。

FairMot旨在将检测与Re-ID揉在一个网络结构里,且需要是anchor-free的目标检测方式,所以DLA34网络结构必需要预估目标中心点的位置和对应目标的features。FairMot的网络结构图如下:

多目标跟踪MOT入门_第5张图片

图4. FairMot网络结构及检测示意图

DLA34的backbone是Resnet34[5],Resnet网络结构是里程碑似的出现,比起一般的plain network, Resnet直接使用stride=2的down sample并且用global average pool层替换全连接层,保持了网络的复杂度,并有效解决了深度网络的退化问题。

DLA34[6]是对Resnet34加强,除了Down Sample,还有Up Sample,有点类似FPN[7]的网络结构,跨层添加features,使得多层融合,跨层stride=4。

heatmap head:用于预估目标中心位置,使用了与focal loss类似的损失函数,详情推导见源文。

box offset head:目的是使得预估的目标位置更精准,辅助目标中心位置的预估。box size head:对每个预估了的目标中心,预估其对应的box的长和宽。offset与size两个头加入在一个l1 loss函数里面。

Re-ID branch:一个分类任务,旨在对每个预估出的目标中心产生64维的features,通过features用于后续计算前后帧的目标的相似度。使用了通用的softmax损失函数。

3. Graphnn-mot

Graphnn-mot算法[11],简单流程图如下:

多目标跟踪MOT入门_第6张图片

图5. Graphnn-mot算法的处理流程

Graphnn-mot是基于图神经网络[8]的离线MOT,利用图结构同时执行特征提取和数据关联匹配,提出了时间感知信息传递网络对节点和连接边信息的更新。

涉及到的核心知识点:图构造、特征编码、信息传递、轨迹预测。

图构造:对需检测的所有图片(图片之间要有时间关联,最好是视频),进行目标检测。构建图,其中节点对应检测目标,边对应检测目标之间的连接。对图中的每条边引入了一个二元变量,如果某些边连接了属于同一条跟踪轨迹且在同一条跟踪轨迹上是时间连续的节点,那么其标签为1,否则为0。一个节点不会属于超过一个跟踪轨迹。论文提出直接学习预测图中的哪条边被激活,即边上的二元变量的最终值,为此将这个任务视为边上的二分类任务,标签就是二元变量值y。

特征编码:在边界框图像上应用一个卷积神经网络,初始化节点的外观特征嵌入。对于每一条边也就是不同帧的每一对检测,我们计算一个具有编码了他们的边界框之间的相对大小,位置以及时间差的特征的向量。然后将其输入到一个多层感知器中得到边的几何嵌入。

信息传递:我们在整个图上执行了一系列的信息传递步骤。对于每一轮的信息传递,节点会与他们的连接边分享外观信息,边会与他们的伴随节点分享几何信息。最后,能够获得节点和边的更新嵌入信息,其包含了依赖于整个图结构的高阶信息。

轨迹预测:根据最后的所有边嵌入预测的连续的二元结果,获得最终的跟踪轨迹。

3、实际算法测试分析

本文对Deep Sort、FairMot、Graphnn-mot算法进行横向测试,并使用追踪经典指标评估(见表1),基于MOTChallenge数据集实际测试进行评估,评估结果如下表(测试环境详见附录1):

多目标跟踪MOT入门_第7张图片

表2. 追踪算法实际测试的时间和精度(精度含义见表1)

如表所示,无论时间还是精度,Farimot更有优势。影响精度的原因主要是两个:

1. 检测目标聚集,被遮挡,ID switches频率太高。三种追踪算法都有出现这类情况,严重程度graphnn mot >deep sort>fairmot,可见下面拥挤场景例图:

多目标跟踪MOT入门_第8张图片

组图1:拥挤场景中的graphnn mot追踪算法

多目标跟踪MOT入门_第9张图片

组图2:拥挤场景中的deep sort追踪算法

多目标跟踪MOT入门_第10张图片

组图3:拥挤场景中的farimot追踪算法

如上图红上衣人为例,graphnn mot对应的id号为:无->15->20,id号连续变换;deep sort对应的id号:32->32->48,id号部分变换,只在最聚集的地方变换了id号;fairmot对应的id号:30->30->30,id号一直很稳定。

2. 目标检测精度不高,漏检与误检。主要是graphnn mot算法有明显漏检,可见下面例图:

多目标跟踪MOT入门_第11张图片

组图4:graphnn追踪算法目标检测漏检示例图

对于目前最常使用的追踪算法,都是tracking-by detection,所以目标检测的精度直接影响追踪的精度。

4、总结

对于跟踪模块,目前来说更好的解决方案,比如使用MOTDT[13],此算法在DeepSort的基础上加入了轨迹评分的机制,目前像FairMOT、JDE使用的跟踪模块都是MOTDT,从精度和速度上此算法表现都是较优的。

图神经网络在追踪上的运用,还处于刚起步阶段。属于离线跟踪算法之一,而且目标检测与ReID检测结果没有进行融合,所以速度方面,没有太大优势。

对于实际项目来说,对综合目标跟踪效果影响最大的因素是目标检测的精确度,相对于公共数据集,当使用实际项目的数据集时,使用的目标检测精度提升后,实际跟踪效果能达到比较理想的水平。     

  目前以上追踪算法用于滴普的某养殖企业养殖场猪计数项目和某地产企业施工地段安全帽的检测预警项目中,已取得较好效果,并能为企业持续创造新价值。

参考文献

[1] Multiple Object Tracking: A Literature Review. https://arxiv.org/abs/1409.7618

[2] Deep Learning in Video Multi-Object Tracking: a Survey. https://arxiv.org/pdf/1907.12740.pdf

[3] YOLOv4: Optimal Speed and Accuracy of Object Detection. https://arxiv.org/pdf/2004.10934v1.pdf

[4] MobileNetV2: Inverted Residuals and Linear Bottlenecks. https://arxiv.org/abs/1704.04861

[5] Deep Residual Learning for Image Recognition. https://arxiv.org/abs/1512.03385

[6] Deep Layer Aggregate. https://arxiv.org/pdf/1707.06484.pdf

[7] Feature Pyramid Networks for Object Detection. https://arxiv.org/pdf/1612.03144.pdf

[8] A Comprehensive Survey on Graph Neural Networks. https://arxiv.org/abs/1901.00596

[9] Simple Online and Realtime Tracking with a Deep Association Metric. https://arxiv.org/pdf/1703.07402.pdf

[10] FairMOT: On the Fairness of Detection and Re-Identification in Multiple Object Tracking. https://arxiv.org/pdf/2004.01888.pdf

[11] Learning a Neural Solver for Multiple Object Tracking. https://arxiv.org/pdf/1912.07515.pdf

[12] Towards Real-Time Multi-object tracking.  https://arxiv.org/pdf/1909.12605v1.pdf

[13] Real-Time Multi People Tracking with Deeply Learned Candidate Selection and Person Re-Identification.  https://arxiv.org/abs/1809.04427 

[14] http://www.deepexi.com/

附录

1. 测试条件与环境

环境配置:

ubuntu 20.04.4LTS 单卡GTX1060 CUDA Version 10.1.

python=3.8.3 opencv-python=4.3.0.36 pytorch=1.4 torchvision cudatoolkit=10.1.243

数据集:

public dataset: MOT2017-MOT2020 crowdhuman 用于detection模型训练和测试

CUHK03 Market1501 DukeMTMC-reID MSMT17用于reID模型训练  

你可能感兴趣的:(目标跟踪,目标跟踪,人工智能,计算机视觉)