作者 | 半闲 编辑 | 汽车人
原文链接:https://zhuanlan.zhihu.com/p/460005003?
点击下方卡片,关注“自动驾驶之心”公众号
ADAS巨卷干货,即可获取
点击进入→自动驾驶之心【目标跟踪】技术交流群
后台回复【目标跟踪综述】获取单目标、多目标、基于学习方法的领域综述!
论文名称:
SimpleTrack: Understanding and Rethinking 3D Multi-object Tracking
作者信息:

文章地址:
https://arxiv.org/abs/2111.09621
代码开源:
https://github.com/tusen-ai/SimpleTrack
这是一篇21年11月挂上arxiv的论文
如果说上次的3D Mutli-object Tracking 是3D多目标跟踪领域的新手教程,那这篇文章可以说是进阶分析
目前该方法在Nuscences数据集的多目标跟踪领域排第二. 2022.1.20
1Motivation
作者将多目标跟踪算法分解为了四个模块:检测模块、运动预测、关联模块、轨迹管理模块。并且对四个模块现在常见的一些做法进行了分析和改进。本文的所有消融实验和改进都是基于CenterPoint.
2Method
2.1、目标检测
在当前的检测算法中,通常会输出较多的目标框。但是这些目标框中有一些的检测效果很差,并且有重叠,如果直接使用他们会导致产生错误的轨迹。如图1所示。

但是如果使用固定阈值的分数滤波方式,又会丢失掉很多轨迹,导致被跟踪物体的轨迹提前消失,效果如图2所示。

所以作者想到了使用NMS(非极大值抑制)对检测结果进行一次处理。NMS在检测领域是非常常见了。效果如图3所示。

从性能上来说,有了一丢丢的提升,如图4所示。

2.2 运动预测
运动预测模块主要根据轨迹预测后续运动,进而实现与检测结果的匹配。目前常用的预测方法分为两种,分别是卡尔曼滤波法(KF)和速度预测模型法(CV, 如CenterPoint这样把两帧点云放进去预测速度)。其中卡尔曼滤波在检测质量较低时可以提供更平滑的预测结果,而速度预测模型法可以较好的处理突发和不可预测的运动。作者对两种方法对了对比实验,如图5所示。其中额外添加了一个KF PD尽心对比(只是用卡尔曼滤波进行匹配,而不对检测结果进行校正)

可以看到在两个数据集上,占据优势的分别是KF和CV。换句话说谁也不服谁。作者分析这是因为nuScenes上的数据帧率较低只有2Hz(Waymo是10Hz),这对传统方法KF不利。随后作者将nuScenes的帧率提高到了10Hz,同时测试CV方法和KF方法,发现KF方法更好,2所以选择使用KF方法作为运动估计算法。(至于帧率如何提高到10Hz,作者称可以在5.1节中看到,但是我在5.1节看半天也没看明白,如果有看明白的朋友,可以给我说说,感谢!)
2.3 关联模块
关联模块主要有两种做法,一种是基于IoU的关联方式,一种是基于距离的关联方式。基于IoU的只要两者的IoU大于一定值就关联上了,反之就没有关联上。基于关联的方式一般使用L2范数距离或者马氏距离,两者之间距离小于一定值就关联上。
这两种方法各有优劣,对于基于IoU的方法而言,一旦IoU过小就关联不上。但是这个目标仍然是存在的,这就会导致某些目标的轨迹提前消失。这种提前消失是很大的问题,意味着我们手动给这个目标判了死刑,再也不能和他进行关联了。效果如图6所示。

对于距离的关联方式而言,可能会导致误检。如图7所示,其中红色Box是正确的检测结果,绿色Box是错误的结果,但是绿色Box和预测结果更近。

基于以上问题,作者提出了Generalized IoU(GIoU)进行关联。GIoU的 公式如下所示:

其中 和 是两个检测结果Box, I 是Box和交集, U 是Box的并集,V 是多边形的体积, C 是U的闭凸集的交集。
来来来,你问我这个闭凸集的交集是什么?我当然也不知道了。所以我就去请教了我学数学的漂亮师姐 @天才小李的知乎 。给大伙看点图。

哦对不起放错了,是这张

其中 U 是两个不相交Box的组合,那么 C 就使用一个封闭的区域将他们包起来,变得连通了。如果用一维来举例就如图10所示:

那么咱们回过来再审视一下这个GIoU公式就很好理解了,我把他写为

2.3 匹配模块
目前的匹配算法主要有两种形式:1)将问题表述二部图匹配问题,使用匈牙利算法进行匹配 2) 使用贪婪算法进行匹配。作者使用不同的关联方式与匹配方式的组合,得到了如图11的结果。

作者觉得都还行,所以这一块没有改动。
2.4 轨迹管理模块
在MOT中有一个重要的评价指标ID-Switches,这个指标表示预测的ID与真实的ID不匹配的次数。作者将出现这个错误的原因分为了两种,分别是1、错误关联 2、提前结束。示意图如图12所示:

其中提前结束这种错误占了大多数。提前结束常是因为出现了点云很稀疏、遮挡这样的情况,使得检测结果的置信度分数很低,进而被抛弃了。但是这些物体是实际存在的,不应该就这样把人家抛弃了。
所以作者提出了两阶段关联。简单来说就是设置了两个阈值,分别是 和 ,其中> 。首先进行对置信度大于的Box做正常的匹配关联。在第二阶段,只要Box的置信度高于就允许进行关联,但是由于着一段检测结果质量较差,所以检测结果不用于更新运动模型,并且使用运动预测结果代替检测结果输出。图12是这种两阶段思想实现的示意图:

在使用两阶段关联后,ID-Switch指标得到了明显的提升,效果如图13所示:

2.5 总的效果
把前面这几个模块一起塞进去,效果如下图14,15


3对nuScenes数据集的再思考及错误分析
作者认为帧率对跟踪效果会有明显影响,所以做了不同帧率下的性能试验,发现10FPS下的nuScence性能不错。如图16所示:

作者把运动预测的结果,赋予了很低的置信度,也当做检测结果输出了,结果指标有所提高,如图17。

检测质量和置信度得分的相关性不强,即置信度很高的情况下,可能检测质量并不好。作者认为可以使用多帧信息融合给出质量评估。
4总结
作者:
本文将三维MOT算法分解为几个部分,并分析了它们的典型问题。并基于此我们提出了使用NMS、GIoU和两阶段关联的相应增强。此外,我们也重新考虑帧速率和插值预处理在nuScenes。最后指出了3D MOT的几个可能的发展方向。然而,除了Tracking by detection范式之外,还有一些具有巨大潜力的分支。为了获得更好的Box质量,3D MOT可以使用长期信息对其进行改进,这已被证明优于仅基于局部帧的检测。未来的工作还可以将现有的基于手动规则的方法转化为基于学习的对应方法,如使用基于学习的框架内机制替代NMS,使用帧间推理替代3D GIoU和轨迹管理等
笔者:
说老实话,这种文章我还多喜欢的,没有花里胡哨,上来就一通分析。咱们干干脆脆炼丹,炼得坦坦荡荡。好吧,其实我比较喜欢这种文章将一个问题拆开,仔细分析,给出解决办法的行为,可以一定程度上帮助大家把这个任务看得更明白,更能找到问题所在。找到问题了才能解决问题。至于你解决问题的方式是Trick还是Method,就看自己的本事了。
2022.1.21 10.06 周五
教学二区
有一个学数学的师姐,真好啊
视频课程来了!
自动驾驶之心为大家汇集了毫米波雷达视觉融合、高精地图、BEV感知、传感器标定、传感器部署、自动驾驶协同感知、语义分割、自动驾驶仿真、L4感知、决策规划、轨迹预测等多个方向学习视频,欢迎大家自取(扫码进入学习)
(扫码学习最新视频)
国内首个自动驾驶学习社区
近1000人的交流社区,和20+自动驾驶技术栈学习路线,想要了解更多自动驾驶感知(分类、检测、分割、关键点、车道线、3D目标检测、Occpuancy、多传感器融合、目标跟踪、光流估计、轨迹预测)、自动驾驶定位建图(SLAM、高精地图)、自动驾驶规划控制、领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频,期待交流!
【自动驾驶之心】全栈技术交流群
自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多传感器融合、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、产品经理、硬件配置、AI求职交流等方向;
添加汽车人助理微信邀请入群
备注:学校/公司+方向+昵称