目标跟踪 卡尔曼 python_新3D多目标追踪baseline(kitti 2D多目标追踪开源代码第二名,快第一名65倍)...

A Baseline for 3D Multi-Object Tracking​arxiv.org

一、摘要:

3D多目标跟踪(MOT)是自动驾驶与机器人必不可少的实时应用模块。然而,最近3D MOT的工作倾向于更多地关注开发准确性, 较少考虑计算成本和系统复杂性。相比之下,这项工作提出了一个简单而准确的实时基线3D MOT系统。

作者使用现成的3D目标检测算法(PointRCNN)来获得定向的3D边界框。然后将3D卡尔曼滤波器和匈牙利算法用于状态估计和数据关联。虽然提出的方法直观且简单,仅是现有方法的组合,却在Kitti多目标赛道中获得非常好的结果。

为了评估此基线系统,作者提出了一个新的3D MOT扩增评估方法到官方KITTI 2D MOT评估方法中,包含两个新的指标。作者提出的3D MOT算法在KITTI的3D MOT赛道中建立了新的最佳性能,从而改进了3D MOTA的72.23现有技术为76.47。同时,作者将3D跟踪结果投影到2D图像平面并与已发布的2D MOT方法进行比较,此方法在官方KITTI 2D MOT开源方案中达到第二名。此外,我们提出的3D MOT方法运行速率为214.7 FPS,比最先进当前开源方案中第一名的2D MOT系统快65倍。

代码详见 :https://github.com/xinshuoweng/AB3DMOT

二、主要贡献:

(1)提供简单而准确的3D MOT baseline 在线和实时应用系统。

(2)将3D MOT评估方法扩增进KITTI 2D MOT评估中; 并提出两个MOT鲁棒性提出新评价指标(average MOTA and MOTP),这两个指标目的是解决当前单一 trajectory confidence threshold的问题,此评价方法平均了多个threshold,更好的反应了MOTA与MOTP的特性。

三、主要方法:

33e04179f8416884935c164c3be59bfe.png

上图为整个方法pipeline,主要分为五阶段:

(1)3D目标检测模块提供LiDAR点云的边界框

(2)3D卡尔曼滤波器将对象状态预测到当前帧

(3)数据关联模块匹配预测轨迹与当前帧检测框

(4)3D卡尔曼滤波器基于测量结果更新对象状态

(5)birth&death 记忆模块控制新出现和消失的轨迹

以下进行五大模块详细解说 ~

(1) 3D目标检测

作者在这模块直接使用了现成的算法,测试了PointRCNN跟Monocular 3D Object Detection,并直接用他们的pretrain model拿来跑,最终这模块输出是连续视频中的每一帧检测出的目标框,用

表示,nt代表t时间被检测出的n个物件,每个目标用(x, y, z, l, w, h, θ, s)进行表示。

(2)3D卡尔曼滤波器-状态预测

作者使用的是定速(constant velocity)的卡尔曼滤波器,并将卡尔曼滤波器推广到3D范围,物体轨迹T共用十个维度(x, y, z, θ, l, w, h, vx, vy, vz)进行推算。

具体公式如下:

x = x + vx | y = y + vy | z = z + vz

同一帧多物体就变成

(T=trajectory, m=m个物体轨迹, t=t时刻)

(另外,作者发现加上角速度

,性能的表现会变差,所以并没有扩展角速度推算)

(3)数据关连

在有了每一帧的3D目标检测

与卡尔曼滤波器推算后的物体轨迹
后,我们透过匈牙利算法将
中的物体计算3D IOU并进行匹配(将每个物体对应上正确的轨迹,以利后面操作),匈牙利算法可以在多项式时间内解完( 匈牙利算法时间复杂度为O(
)),对匈牙利算法不熟悉的读者们,请参考这里。

(4)3D卡尔曼滤波器-状态更新

此阶段,我们将刚匹配好的目标轨迹进行状态更新(

),更新後的值是根据
的不確定性之加权平均(目标检测中的score与估计值的斜方差)。

另外作者发现车的方向性预测与卡尔曼预测出的车方向性,会有较大的偏差,因此作者提出了一个简单的矫正方法,当观测值与预测值大于

,则将轨迹预测值+π。

(3D目标检测常见的坑 : 3D目标检测中,有些算法为了简化方向性预测,会直接的将方向性预测省略,透过周期性的方法将值限制在

~
之间,因此会出现方向性完全相反的问题,但回到PointRCNN原文看,发现PointRCNN确实也有做方向性预测,且结果也还不错,因此推论在Lidar点云三维检测中,点云是由激光打到物体表面的而记录的值,车刚好前后左右某种程度上有对称,在特定角度,点云下的算法无法检测出正反方向性

作者在这边处理的方式不太洽当,因为目标检测出错概率比轨道推算出来的大,照理说应该是把目标检测值+

去匹配轨道,而非轨道+
匹配目标检测结果。)

(5)birth&death 记忆

物体可能超出检测范围而消失,也可能出现新的检测目标在范围中,需要新增新的轨道,因此我们需要添加记忆模块,去更新目标追踪中轨迹的生存周期。

新增目标轨迹:

系统中,我们默认

是新出现的物体(目标检测中无法与当前轨迹匹配的物体),但为了避免False Positive(算法误检),作者设定该物体要连续满足
帧都存在,才会为此目标新增轨道,新增的初始状态为当前检测状态(x, y, z, θ, l, w, h),加上(vx, vy, vz),速度分别用0进行初始化。

这边作者没有说明满足连续存在
帧后的新增条件设置与方法细节,个人认为可以直接先新增待加入轨道
并初始化v,同时这个目标轨迹也要使用卡尔曼滤波器进行状态预测与更新,当连续满足下几帧也有匹配的目标后,则让
进入

移除目标轨迹:

同样的,我们默认

为物体离开检测范围,但未了避免删除True Positive轨迹(或者说避免正样本算法漏检情况),我们持续追踪
这个轨道
帧,当超过这个值,还没有匹配的目标出现,我们才删除。

作者在论文第四章节有说明为什么要新增3D MOT评价方法、MOTA、MOTP,有兴趣小夥伴可以去读原文~

四、实验结果:

b8cbfd642e757d2e84cbd6485b1441f3.png

直上结果~

两个对比,分别为作者提出的评价方法3D MOT和Kitti 2D MOT。

(1) 3D MOT

官方赛道没有3D MOT的结果,因此作者复现了两个经典3D MOT算法,分别为FANTrack(最精准)、Complexer-YOLO(最快),除了MT跟ML指标外,其他评价指标都有不错的结果,尤其是速度。

(2) 2D MOT

作者在Kitti 2D MOT排行上其实当前只排到第14名,但在开源方案中,排到了第二,值得一提的是,即便前面的方法点刷很高,但在速度方面真的是远远不及此方法,因此作者也说提出来的方法创新性也许不足,但真的简单又快,才把论文名称取名成baseline。

Ablation Study也做了一些实验,分别包含

  • 换其他目标检测器
  • 换成2D 卡尔曼滤波器
  • 卡尔曼滤波器中多加角速度
  • 一些参数的调优(F, Age)

有兴趣小夥伴请详略原文。

五、结论:

本文提供一个简单且快速的3D MOT,新增了3D MOT评价与两个评价指标,同时在Kitti榜上刷的不错的成绩,虽然创新性并没有这么高,但确实是一个还不错的工作。

心得(挖坑):

  1. 自动驾驶中到底有没有必要在3D进行多目标追踪 ?

一般在自动驾驶中做目标追踪都是在2D上,其主要原因是因为感知后的预测与决策模块多以BEV角度当做输入,因此3D的感知最终都会回到2D,本文作者相信3D追踪能够更好的发展自动驾驶追踪模块,我们也应该深入探讨,是否有必要使用3D感知后的输出与其他模块进行结合,达成更高的追踪精度。(个人认为假设上下坡度很大时,z轴的预测确实还是满重要的,但是现在目标是发展L4,在限定范围中做自动驾驶,不太会出现极端陡坡情况,未来想要进展到L5时,这块应该是免不掉的)

2. 多传感器融合+多目标追踪

作者在Ablation Study中,将目标检测器从PointRCNN换成Monocular 3D Object Detection,也就是仅用图片进行3D目标检测,来做为每一帧的目标检测器,效果可想而知的会下降,因未单图做3D目标检测,mAP还是不够。但这件事不代表没有价值,先前已经有图片+目标检测的算法出现,如Frustum Pointnet、与其相关工作,我认为未来研究方向可以在2D多目标追踪(并非指BEV,而是正面视角)与3D多目标追踪(可以是BEV或是真3D)上多做结合,两种视角若能融合的好,则能更好的追踪每个物体的轨迹。

各位读者欢迎在下面留言自己的阅读心得~

知识补充:

  1. 匈牙利算法
  2. 卡尔曼滤波器

为了促进自动驾驶研究人员更多的交流,本专栏开设一个自动驾驶paper reading学习交流群组,每天推送新的论文,有兴趣请扫码,备注自动驾驶交流群+公司or学校+研究方向,我再拉近群。

7376927f12f55b93a811c18df8f31cb0.png
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标跟踪卡尔曼滤波是一种利用卡尔曼滤波算法来实现多目标跟踪的方法。其中,使用Python实现的无迹卡尔曼滤波算法(Unscented Kalman Filter, UKF)可以用于多目标跟踪任务。不同的目标可能有不同的观测方程,可以根据具体的问题进行相应的调整。 在实际应用中,可以利用扩展卡尔曼滤波理论(Extended Kalman Filter, EKF)来求解最优估计。通过编写仿真程序,可以使用Matlab或Python来实现多目标跟踪卡尔曼滤波,并给出各状态变量的真值和估计值曲线变化图,以及真值与估计值之间的误差曲线变化图,并计算误差的均值和其他统计指标。 卡尔曼滤波算法是一种序贯数据同化方法,它利用前一时刻的状态估计值和当前时刻的观测值来获得动态系统当前时刻状态变量的最优估计。因此,多目标跟踪卡尔曼滤波python可以用于实现对多目标的跟踪和估计。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [ukf.py 无迹卡尔曼滤波 python demo](https://download.csdn.net/download/jieohsong/12682694)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [扩展卡尔曼滤波python代码](https://download.csdn.net/download/qq_31476017/10792840)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [卡尔曼滤波Python代码实例实现](https://download.csdn.net/download/m0_50019540/85317086)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值