下面这张图就介绍了三种不同的MOT实现方案:
SDE:Detection与Embedding分为两个独立的模型,性能高、实时性差。
Two-stage:检测通过two-stage detection实现,感觉类似于 SDE,只不过检测模型通过RPN实现,实时性也不好(10fps左右)。
JDE:Detection与Embedding通过同一个网络实现,Detection用的是one-stage的方法。
一、 SDE
通过上图可知我们以前提过的DeepSort模型就是属于SDE模型,相比较Two-stage的模型在检测模型中使用的是RPN网络,因此通过感受野的位置得到目标的对应特征(这里也是与SDE是有区别的),再通过特征提取器提取低维特征。
二、 JDE
什么是JDE可以通过名字就能看出来(Jointly learns the Detector and Embedding model ),很明显相对于DeepSort,其实就是在我们做目标检测的同时多一个分支专门做特征提取的,也就是按名字理解的将特征提取器以及我们的检测器放在了一个网络。这里的特征提取器在DeepSort的原理已经说明,其实该作用也是用来做外部特征匹配,辅助我们进行id匹配,我们通常抽取该特征为128的低维特征。
通过上图可以得知,JDE使用的是FPN结构每一层都有一个预测头,该预测头除了正常的分类与定位的分支以外还会加上一个embedding的分支,该分支则是被利用到我们后续进行
Re-ID
的。这里的思路我们可以理解为这是一个多任务学习(multi-task learning)
。看到这里有同学就可能有疑问前面的分类和定位的损失可以训练出来,但是针对embedding的分支我们怎么通过训练来计算呢?我们通过全局ID进行分类,这里怎么理解呢?我们把一堆视频中所有的人的ID都拿去出来(数量应该非常打,但代码设定14455个输出节点),我们将人进行分类,不同的人对应一个类别,然后进行分类即可。
tracking by detection是非常常见的MOT范式,但是目前MOT领域为了平衡追踪速度和精度,慢慢放弃了这种范式,转而投入将检测与embedding/匹配进行结合的范式研究中。本文介绍的JDE就是一个网络同时输出图像画面中的检测框位置和检测框内物体的embedding,从而加速MOT的速度。但是值得注意的是,JDE只是同时输出了检测框和embedding信息。后面还是要通过卡尔曼滤波和匈牙利算法进行目标的匹配。总的来说,还是分为检测和匹配双阶段。
三、 FairMot
参考FairMOT--A Simple Baseline for Multi-Object Tracking
FairMOT关联算法和deepsort关联算法的不同:
1、多个track并行执行卡尔曼滤波,比deepsort的卡尔曼滤波更快。
2、特征向量只保存一个,使用指数滑动平均进行融合多个特征向量,计算加快。
3、基于外观信息匹配时,距离使用deepsort论文中采用马氏距离和余弦距离的加权,系数分别为0.02和0.98。
4、不再使用级联匹配,即self.time_since_update更小的track更高的匹配优先级。
5、不使用匈牙利算法进行匹配,而是使用了lapjv算法。
6、所有detection都会进行和track的关联,如果没有关联上,即detection被标记为unmatched_detecion,加入了一个对阈值的判定,如果box的score低于这个阈值,不将这个detection初始化为新的track。
7、track的状态标记为lost、refind、tracked、new四种状态标识,对于lost和tracked的track最后会进行一个iou计算,如果iou大于0.85,则认为两个track跟踪了同一个目标,比较两个track的age,将age小的删除。
8、特征提取采用了anchor-free的方式
四、 CenterTrack
参考【MOT】CenterTrack深度解析
多了时间维度。
五、 ByteTrack
可参考ByteTrack: Multi-Object Tracking by Associating Every Detection Box。在deepsort基础上改动不大,加了点策略,仍然是两步式。
参考
[1] 【MOT】对JDE的深度解析
[2] 【MOT】CenterTrack深度解析
[3] [Intensive Reading]MOT:Towards Real-Time Multi-Object Tracking_zhangxu-程序员宝宝
[4] 目标跟踪 - Towards Real-Time Multi-Object Tracking
[5] 【MOT】对FairMOT深度解析
[6] FairMOT--A Simple Baseline for Multi-Object Tracking
[7] ByteTrack: Multi-Object Tracking by Associating Every Detection Box