FairMOT--A Simple Baseline for Multi-Object Tracking

个人理解

针对作者的几点结论的个人理解,感觉根本原因并不是在anchor based和anchor free的方法上,个人认为,造成结果不同的主要差异就是在训练reid网络的label assign和网络的定位精度上。欢迎讨论。

1、anchor based的方法比anchor free的方法引起歧义?

作者使用anchor based的对比方法是借鉴JDE的,JDE是基于yolov3的端到端的MOT方法,JDE的源码中label assign的方法是和SSD类似的MaxIoUAssigner,即anchor 和 ground truth 的IOU大于阈值,就分配为正样本。而原始的yolov3的label assign方法是和ground truth中心点同一个gird cell的IOU最大的anchor为正样本。这样才会导致多个正样本对应同一个ground truth,造成歧义。如果使用原始yolov3的label assign策略,是可以保证训练reid网络不发生歧义的。

2、anchor based特征很难对齐?

不是很理解作者所说的对齐。目标检测网络通常的stride=8,但是也是可以改为stride=4的。然后yolov3强就是强在map50,定位精度在目标检测网络里是比较差的。这似乎影响了reid的性能。但是是可以通过调整iou thresh去改善的。

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小的删除。

一、主要贡献

目前多目标跟踪都是检测器和跟踪器分离的,单步的方法通常准确性会下降,尤其是IDS会明显增加,作者发现了单步的方法之所以比两步的方法差主要有三个原因:

1、anchor-based的方法会影响reid的性能

anchor-based的方法会引起歧义,不同位置的anchor可能会对应同一个id的目标。并且anchor-based的方法大多数都是下采样8倍,这在目标检测中是可以接受的,但是在reid中会导致抽取的特征无法对齐,从而引起歧义。


image.png

2、多层特征图聚合

这对于reid来说特别重要,因为reid需要高级特征和低级特征去同时适应不同尺寸的目标。由于提高了reid的质量和尺度变化的处理能力,在实验中我们观察到这可以显著降低IDS。但是对于两步的方法这没那么重要,因为两步的方法它会裁剪出原图的目标然后resize到相同的大小。

3、reid特征的维度

之前的reid方法都是使用高纬度的特征向量来表示,并且也取得了很好的结果。但是在MOT中我们发现低纬度的reid特征更好,因为数据集更少,可以加降低过拟合的风险。

二、网络结构

就是在CenterNet上加入了一个reid的分支。


image.png

三、损失函数

  • heatmap loss:和centernet一样
  • offset and size loss:和centernet一样, l1 loss
  • identity loss:softmax loss

四、在线跟踪

1、网络推理

和JDE一样,我们采用1088X608的输入尺寸,通过网络前向推理得到keypoints,然后通过offset和size得到keypoints对应的box,最后通过reid分支得到box对应的特征向量。

2、在线目标关联

这部分借鉴了deepsort:

  • 卡尔曼滤波预测当前帧track的位置,如果和当前帧预测box相差很远则不匹配
  • 关联策略:reid特征和iou

五、实验部分

1、数据集和评价指标

我们合并了六个数据集,其中ETH和CityPerson没有标注ID,我们用其训练检测,The CalTech、 MOT17 、CUHK-SYSU、PRW标注了框和ID,我们用着四个数据集训练检测和reid。为了公平,我们还移除了ETH数据集中出现在了MOT16测试集中的数据。我们再2DMOT15、MOT16、MOT17和MOT20上验证了我们的方法。检测部分用AP作为评价指标,reid部分使用TPR( True Positive Rate at a false accept rate of 0.1) 作为评价指标。跟踪使用CLEAR和IDF1作为评价指标。

2、实现细节

  • DLA作为backbone, COCO预训练的权重
  • ADAM,30epoch
  • 初始学习率1e-4,在20和27轮时下降0.1倍
  • batch size 12,两块RTX2080,输入尺寸1088X608,训练30个小时

六、消融实验结果

1、anchor-free和anchor-based

我们在我们的结构上使用了anchor,保持其他影响因素都相同。实验结果如下:


image.png

主要结果:

  • 1、在stride=8时,anchor free的方法比anchor based的方法在TPR上85.5% VS 75.3%,主要原因是anchor free的方法能够更好的对齐,这种无法对齐的情况造成的歧义stride越大越明显。
  • 2、对于anchor based的方法,提高feature map的分辨率,会导致MOTA下降。这是因为提高分辨率之后,会有更多的未对齐的positive anchors,导致训练变的更加困难。
  • 3、对于anchor free的方法,在MOTA上好于anchor based的方法,并且在stride=4时,IDS从137下降到93。此外,stride从8提升到4,anchor free方法的性能大大提升。
  • 4、对于anchor free的方法,将stride从4提升到2性能下降,因为低级的语义特征导致reid不鲁棒。

2、多层特征图聚合

所有方法都采用stride=4,对于ResNet,我们加上了三次上采样。数据集使用2DMOT15中5段训练视频和6段验证视频,去验证Resnet、FPN、HRNET、DLA不同的聚合方法。


image.png
  • 1、对于resnet34和resnet50的结果,越大的网络只会提升检测的性能,AP提高,而不会提升reid的性能
  • 2、对于resnet-34-FPN和DLA-34的结果,比起使用更深的网络,不同的聚合方法更难影响reid性能。
  • 3、DLA由于有deformable convolution的原因,减轻了小目标在下采样中无法对齐的现象,所以在小目标和中等目标上,TPR要好于HRNetV2


    image.png

3、reid的特征维度

维度太大过拟合,太小表达能力不足。


image.png

4、和其他方法的对比

image.png
image.png

深兰科技团队针对多目标跟踪任务的一些问题以及思考

  • 1、检测器和特征提取器mAP越高,最终跟踪的性能也会相应的提升?
  • 2、数据关联过程真的需要运动模型么?
  • 3、跟踪器的特征平滑为何有效?
  • 4、Part-Based的特征提取器为何有效?

团队对以上问题进行了思考,得出一些比较简单的看法:

1、一般来说检测器和特征提取器的性能越理想,最终跟踪的性能也会有相应的提升;mAP作为常用的检测器评估指标来说,mAP的提升不一定能带来跟踪的性能提升,当然这也和评价指标有关系,需要具体问题具体分析,比如检测上多尺度增强带来的AP增益往往会造成MOTA的降低。mAP作为特征提取器的评估指标来说,mAP的提升也不一定能带来跟踪的性能提升,比如Part-Based 的MGN在本次竞赛中虽然mAP比全局特征提取器差几个点,在最后的跟踪上却取得不错的效果。

2、现实中的多目标跟踪任务中,摄像头的突然运动以及跟踪对象的突然加速往往都是存在的,这时候的运动模型其实动态性能十分的差劲,反而造成不好的跟踪效果,本次竞赛采用的是直接不采用运动模型的方法。

3、跟踪器的特征平滑操作十分简单有效,不需要类似于DeepSORT进行级联匹配,速度比较快,考虑了同一轨迹的历史特征,使得特征更加鲁棒,减少了单帧跟踪错误带来的影响;

4、Part-Based的特征提取器针对这种遮挡比较严重的情况在距离度量时考虑了各个部分的特征,特别的,遮挡部分往往变化比较大,结合特征平滑操作,一定程度上消除了遮挡部分的影响,更关注没有遮挡部分的特征。

你可能感兴趣的:(FairMOT--A Simple Baseline for Multi-Object Tracking)