前言
今天经群友提醒,发现漏掉了一篇CVPR2020的MOT论文,同样是基于检测和跟踪一体的框架,只不过它是以车辆跟踪为背景而写的。这里我们也凑个整,Tracktor++(就叫它FrcnnTrack吧,哈哈)、CenterTrack、FairMOT、JDE(YoloTrack。。。) ,以及这次的RetinaTrack开始神仙打架。不过也为MOT领域担忧,在public赛道上基于检测的跟踪框架把baseline刷得太高了,有点不利于后续发展呀。
RetinaTrack
论文题目:RetinaTrack: Online Single Stage Joint Detection and Tracking
作者团队:谷歌
备注:Waymo 39.12MOTA,14FPS
虽然RetinaTrack也是同之前的联合检测和跟踪的算法一样的框架(感兴趣的可以在我放在参考文献中的链接里面去看看),从名字也知道是基于RetinaNet的,但是论文中是以自动驾驶为背景进行介绍的,没有在MOT Challenge赛道比拼,倒是跟Tracktor++进行了比较。
首先我们回顾一下RetinaNet的结构:
整体来看,我们可以讲其归纳为三个特点:FPN、focal loss、回归和分类的两个分支(在我之前介绍目标检测中的特征冲突中提到了)。然后我们看看RetinaTrack的架构:
直接从图上看的话我们可以得到的信息是,RetinaNet在分类和回归的分支上分别预测了k个anchor下的分类和回归信息。
而RetinaTrack与JDE和FairMOT一样,都增加了一个256维的特征信息embeddings分支:
我们都知道,在MOT场景中需要解决严重遮挡问题,这个问题对于检测的影响也很大,比如:
上图中两辆车的中心重合,二者的检测框如果都是基于同一个anchor点进行预测的,则很难得到具有分辨力的embeddings。另外,我们之前的博客讨论过,reid和目标检测在特征方面的需求不同,以行人检索为例,目标检测中分类要求同类目标特征一致,而ReID则是要求在保证类内距离尽可能小的同时,确保类间距离大,但是这里的类间指的是不同身份的人,但是对于目标检测而言都是人。所以这里将ReID和分类的共享特征减少是最好的选择,作者这里实际上隐含着用了三种方式改进这一点:
- 通过将分类、回归和特征提取设为三个分支任务,除了FPN之前的部分,三者的特征共享部分含有m1个3x3卷积;
- 对于每层特征图上每个特征点的k个anchor,全部预测分类、回归和特征,增加区分度。;
- 对于检测任务,分类和回归分支都包含m2个3x3卷积,而embedding分支则为m3个1x1卷积。
对于训练部分,不同于JDE和FairMOT采用的identification模式,RetinaTrack采用的是verification模式,采用基于batch-hard的triplet loss进行训练,其中margin为0.1。
以上任务是在一堆TPU上训练的,基于Momentum SGD算法,每个batch还有128个clips,每个clip含两个相隔8帧的样本(对于10Hz的Waymo数据集而言就是相隔0.8s),图像输入是1024x1024,并采用bfloat16式的混合精度训练模式。其中去除embeddings分支的部分是在COCO数据集上预训练的,然后采用warmup和余弦退火学习策略训练。
实验效果如下:
由消融实验可知,anchor类型数量越多效果越好,其中RetinaNet部分是直接通过IOU进行数据关联的。紧接着作者又做了几组对比实验:
- 对比MOT Challenge中表现良好的Tracktor++算法,RetinaTrack效果更好;
- 基于IOU,不采用triplet loss(这是直接做成identification了?),或者将特征分支单独利用resnet50训练这两种方法都不如RetinaTrack。
- 在Waymo v1.1数据集上MOTA可达44.92,mAP可达45.70,推理速度为70ms
参考资源
[1] RetinaTrack: Online Single Stage Joint Detection and Tracking
[2] https://zhuanlan.zhihu.com/p/125395219