论文题目:An LSTM Approach to Temporal 3D Object Detection in LiDAR Point Clouds
论文地址:在公众号「计算机视觉工坊」,后台回复「3D目标检测」,即可获得原文链接。
这是一篇来自Google-Research的研究工作,基于点云的3D目标检测目前有三个前沿的研究点,分别是:多模态、时序融合、自监督和弱监督。其中就笔者看到过和汇总过的文章而言(https://github.com/LittleYuanzi/awesome-Automanous-3D-detection-methods),其中多模态的研究是最火的,笔者也在前一期的文章中对这类研究做了一个综述。其次是时序融合,再其次是自监督和弱监督。当然这三个研究任务所需要的知识面也是逐渐增加的。今天笔者想分享的是一篇发表在ECCV20上的采用时序融合做3D目标检测的文章,这也是笔者看到过的第二篇做点云时序融合的文章(第一篇是CVPR20的 3DVID)
一个简单的理解,图像是二维的,如果把视频当做一组图像序列,那么视频任务中的目标检测也就可以和点云的时序融合做类比。也就是说,点云连续扫描即可得到视频流的lidar信息,lidar-video。时序融合也就是说将当前帧之前帧的一些信息也利用起来和当前帧做信息融合,使得输出的定位更加精确,并且和前一个帧的检测结果的bbox连接更加平滑。方便在自动驾驶场景的下游决策段做处理。 如下图所示,展示了再waymo中连续三帧的场景展示。
这个点的知识比较基础,网上的教程也比较多,这里就做更多分享了
点云时序融合的一个先要条件是,数据集必须提供连续多帧的时间信息,就目前研究的比较多的数据集而言,KITTI是不提供点云时间信息的,因此无法做时序融合研究,而nuscenes和waymo都是提供的,所以做时序融合的研究工作需要在一些特定的数据集上。
如下图所示的内容。本文的研究工作是基于点云序列作为输入的目标检测框架。首先利用LSTM中的memory对前面帧所检测到的物体做编码,这些编码的之前帧的检测信息是对当前帧的检测有检测帮助的。具体来讲,每一帧都会使用LSTM模块对这些memory信息和隐含层的包含前面最近几帧的特征做融合,同时需要更新新的memory信息和隐含状态。值得注意的是,作者在LSTM的memory包含的信息中仅仅是少量于detection-proposals有用的点而不是整个场景所有的点。
如下图所示,该网络结构主要包含有三个大的方面:
(1)3D稀疏U-Net特征提取单帧点云特征。
(2)3D稀疏LSTM对输入的当前帧点云特征和之前的memory-features、隐含层特征做‘融合’
(3)从hidden层输出的特征经过proposals-head得到proposals,再经过图网络优化,最后经NMS筛选最优检测结果。
本文的3D稀疏U-Net结构是从Dops衍生的特征提取网络,具体的过程是
(1)点云voxel化(在笔者之前的分享<3D目标检测深度学习方法中voxel-represetnation内容综述(一)>有详细的介绍过体素化过程)
(2)然后通过采用稀疏卷积搭建的encoder-decoder和跳跃连接结构做对应的特征提取
(3)作者通过voxel2point操作将特征赋予原始点云,因此最后输出N×F特征(N表示点的个数,F是特征维数)
如下图所示,作者所谓的稀疏LSTM是因为对于输入的当前帧的特征和隐含层的特征会先送入3D稀疏UNet做特征提取,最后LSTM相应的输出也需要从voxel到point转化输出。
上图中的LSTM结构即是Vanilla LSTM的衍生,对于一般的LSTM有如下图的计算公式,这里的 表示当前特征, 表示隐含层的特征。这里的几个LSTM中的gate都是从根据这二者的特征融合,这里的 表示memroy中的特征。类比3D稀疏backbone而言,本文的的表示的是当前帧的点云特征,memory中和隐含层的特征则是上一帧的特征,
由于该方法涉及到的模块的关联系不大,因此作者首先对单帧训练一个特征提取网络,接着是3D稀疏LSTM融合前后帧特征信息,再使回归proposals。因此在联合训练时,作者需要对每一帧都采用回归损失和分类损失计算。
该自动驾驶数据集包含了1000个点云序列(其中798个是训练集,202个为验证序列)。其中每一个序列大概存在200帧,帧率为100ms。在waymo验证集上实验对比如下。
本文提出了一种全新的融合时序的点云目标检测网络,比以往的融合方法显得更加高效。但是该类方法可以看出依旧存在的问题是网络结构复杂和显卡占用巨大,对于一般做研究的服务器可能是承受不了的。此外,融合之前帧的信息是比较有必要的,但是在工业界目前采用的融合方法一般都是在后处理上,即是每一帧也是单帧检测,但是会将之前帧的检测结果和当前帧在通过卡尔曼滤波或者其他方法对当前的估计做一定的修正,一方面是可以得到更加精确的定位,另外一方面则是在应用场景下,得到连续的Bbox是更加平滑的。
既然上面提到了单帧检测+卡尔曼滤波也可以在lidar_video中做点云的时序融合和检测追踪,这里再分享一下最新的在waymo数据集点云单模态上检测追踪取得最好效果的PV-RCNN的实现方案。 文章: PV-RCNN: The Top-Performing LiDAR-only Solutions for 3D Detection / 3D Tracking / Domain Adaptation of Waymo Open Dataset Challenges 论文链接:https://arxiv.org/pdf/2008.12599.pdf 代码链接 :https://github.com/open-mmlab/OpenPCDet
同样是在waymo数据集上,之前帧信息可以作为当前帧的信息补偿。这里作者则是做了一个简单的融合:将前一帧结合起来,得到一个更密集的点云作为检测框架的输入。这里作者表示,这样简单的对点云直接融合输入的方法对小物体,比如自行车和行人是比较有用的。
在waymo点云目标检测的挑战中,有一项是目标追踪,这里作者的方案是将PVRCNN当做一个不需要修改的目标检测框架,然后从[6]中一样仅仅是采用卡尔曼滤波和匈牙利算法相结合的方法进行当前的目标检测结果和之前帧的结果做融合估计和数据关联。作者表示尽管这样做显得很简单,但是却是非常有效的。
[1] LiDAR-based Online 3D Video Object Detection with Graph-based Message Passing and Spatiotemporal Transformer Attention. : https://arxiv.org/pdf/2004.01389 [2]nuscenes: A multimodal dataset for autonomous driving : https://arxiv.org/abs/1903.11027 [3]Scalability in perception for autonomous driving: Waymo open dataset https://waymo.com/open/ [4]Dops: Learning to detect 3d objects and predict their 3d shapes. :https://arxiv.org/pdf/2004.01170 [5] Long short-term memory. Neural computation. [6] A baseline for 3d multiobject tracking. arXiv preprint arXiv:1907.03961, 2019.
本文仅做学术分享,如有侵权,请联系删文。