CVPR2022|稀疏融合稠密:通过深度补全实现高质量的3D目标检测
作者丨花椒壳壳@知乎来源丨https://zhuanlan.zhihu.com/p/500409423编辑丨3D视觉工坊论文标题:Sparse Fuse Dense: Towards High Quality 3D Detection with Depth Completion作者单位:浙大等论文:https://arxiv.org/abs/2203.09780代码:暂未...
作者丨花椒壳壳@知乎
来源丨https://zhuanlan.zhihu.com/p/500409423
编辑丨3D视觉工坊
论文标题:Sparse Fuse Dense: Towards High Quality 3D Detection with Depth Completion
作者单位:浙大等
论文:https://arxiv.org/abs/2203.09780
代码:暂未开源
1.动机
室外点云+图像的方法没有纯点云的方法效果好,主要有两个原因(1)多模态的数据增广不好做(2)因为现在方法大多是从点云找对应的图像融合特征,但是点云能对应上的像素点比较少,因此没有完全利用好图像的特征。
2.解决方法
对图像上的像素点进行深度补全(深度补全网络:Penet: Towards precise and efficient image guided depth completion,在Kitti上预训练后再训练目标检测网络时不再改变参数),有了深度信息就生成了新的pseudo clouds,点云就变得Dense了,而且每个像素都有了对应的point.然后使用稠密的包含颜色信息的伪点云进行特征提取,和纯点云的特征融合,进行3D目标检测。对于数据增广,在伪点云中做数据增广后投影到图像上会有遮挡的情况出校,因此不是将整个点云投影回去,而是在经过RPN有了ROI之后将ROI投影回去,就不会有遮挡的情况发生了。
3. Sparse Fuse Dense
3.1. Preliminaries
原始的点云是raw clouds,深度补全后生成的点云为pseudo clouds。给定一针原始点云R,可以将R转换成一个稀疏的深度图S通过雷达->图像的转换矩阵。R对应的图像为I,将I和S feed到深度补全网络中,输出一个稠密的深度图D,然后通过图像->雷达的转换矩阵,就可以获得一阵pseudo cloudsP。
3.2. Overview of Methods
如下图1所示,整体的网络架构包括:(1)LiDAR Stream:仅使用raw points作为输入,通过一个RPN网络输出3D ROIs。(2)Pseudo Stream:使用提出的CPConv提取点云特征,使用稀疏卷积提取体素特征。(3)Sparse Dense Fusion Head:将原始云和伪点云以网格方式融合3D RoI特征,并产生最终预测。我们将在下面几节详细介绍我们的方法。
3.3. 3D Grid-wise Attentive Fusion
由于点云和图像之间维度是不一样的,之前的方法是将点云转换到BEV视角和图像进行融合,由于雷达和图像的视角都是不一样的,融合效果肯定不好,文章作者称这种融合方法为粗融合。在本文中,2D图像转换为了3D伪点云,维度一致了,因此可以使用更加精细的融合方式进行融合。如下图2所示,3D-GAF包括了3D融合, Grid-wise融合和注意力融合。
(1) 3D Fusion. 通过3D ROI可以载点云上获得相应的区域,然后进行融合。(2) Grid-wise Fusion。可以每个格子对应融合。它使我们能够使用相应的伪点云网格特征准确地增强对象的每个部分。(3) Attentive Fusion. 为了自适应地融合原始点云RoI 和伪点云RoI 中的每一对网格特征,我们利用了一个由 [11、13、18] 激发的简单注意模块。通常,我们为每对网格预测一对权重,并用权重对这对网格特征进行加权以获得融合的网格特征。为了验证 3DFusion,Grid-wise Fusion 和 Attentive Fusion 的有效性,我们在第 4 节中提供了消融研究。
在这里,我们提供了我们的 3D-GAF 的详细描述。
将一个ROI分为6*6*6的grid(原始点云和伪点云一样,Grid是一一对应的).将同一个grid对应的两个特征concat起来,然后通过全连接层和sigmoid层,输出权重,然后再通过权重调节融合特征。(可以并行计算)
3.4. Synchronized Augmentation
由于图像和点云的不同表示,多模态方法很难利用许多数据增强方法,例如 gt-sampling [41] 和局部噪声 [49]。数据增强不足极大地限制了许多多模态方法的性能。因此,我们提出了一种多模态数据增强方法 SynAugment,以使我们的 SFD 能够使用为仅 LiDAR 方法量身定制的所有数据增强方法。具体来说,SynAugment 由两部分组成:像点云一样操作图像,并在 3D 空间中提取图像特征。
Manipulate Images like Point Clouds 多模态数据增强的最大挑战是如何处理像点云这样的图像。深度补全给出了答案。通过深度补全,可以将 2D 图像转换为 3D 伪云。用RGB绘制伪云,伪云承载了图像的所有信息。然后我们只需要像原始云一样在伪云上执行数据增强,如图 3 顶部所示。
Extract Image Features in 3D Space 像点云这样处理图像对于多模态数据增强来说是不够的。目前,大多数多模态方法都需要在 FOV 图像上提取图像特征。然而,这将限制模型使用可能导致 FOV 遮挡问题的数据增强方法(例如 gt 采样和局部旋转)。为了解决这个问题,我们建议在 3D 空间中提取图像特征,并将 2D 图像转换为 3D 伪云。这样就不需要考虑遮挡问题,因为我们不再在 FOV 图像上提取图像特征。为了在 3D 空间中提取特征,我们可以使用 3D 稀疏卷积。但是,还有一种更有效的方法(参见第 3.5 节)。
值得注意的是,[35, 47] 可以通过对图像进行额外的遮挡检测来实现多模态 gtsampling,但它们不适合更复杂的数据增强,这不能简单地通过遮挡检测来解决,例如局部噪声 [49]和 SA-DA [50]。一些将图像分割分数投影到原始云的作品[34,38]也可以使用多模态数据增强,但由于图像与点云之间的稀疏对应关系,原始云携带的图像信息是稀疏的。在我们的方法中,每个 gt 采样器的图像信息是密集的,因为我们可以在伪云中裁剪采样器的完整图像信息。
3.5. Color Point Convolution
Definition 对于伪点云数据,将图像的RGB值和U,V都与伪点云坐标拼接起来。(x, y, z, r, g, b, u, z)
一种简单的提取伪云特征的方法是直接对伪云进行体素化并执行 3D 稀疏卷积,而实际上并没有充分挖掘伪点云中丰富的语义和结构信息。PointNet++ [27] 是提取点特征的一个很好的例子,但它不适用于伪云。首先,PointNet++中的球查询操作,由于伪点的海量,会带来海量的计算。其次,PointNet++ 无法提取 2D 特征,因为球查询操作没有考虑 2D 邻域关系(因为伪点云的特征中包含了u, z)。鉴于此,我们需要一个能够有效提取 2D 语义特征和 3D 结构特征的特征提取器。
RoI-aware Neighbor Search on the Image Domain(图像域上的 RoI 感知邻居搜索) 基于上述分析,我们提出了一种 CPConv(Color Point Convolution),它在图像域上搜索邻居,受体素查询 [4] 和网格搜索 [5] 的启发。这样,我们就可以克服 PointNet++ 的缺点。首先,一个伪点可以在恒定时间内搜索它的邻居,这使得它比球查询快得多。其次,图像域上的邻域关系使得提取二维语义特征成为可能。
不幸的是,我们不能将所有伪点投影到当前帧图像空间以进行邻居搜索,因为使用 gt 采样,来自其他帧的伪点可能会导致 FOV 遮挡(这里的意思是转换成伪点云后使用gt 采样做数据增广,增广过后就不能转换到2D图像了,因为会有遮挡)。为此,我们提出了一种 RoI-aware Neighbor Search。具体来说,我们根据伪点携带的(u, v)属性,分别将每个3D RoI中的伪点投影到它们的原始图像空间,如图3底部所示。这样,被相互遮挡的伪点就会不会成为邻居,因此即使在 FOV 上它们之间存在严重遮挡,它们的特征也不会相互干扰。
Pseudo Point Features 对于第i个伪点云,特征包括(x,y,z,r,g,b),包含了3D集合特征xyz和2D语义特征RGB。在进行邻域搜索之前使用一个全连接层将(x,y,z,r,g,b)转换为一个C3维度的特征,减少复杂度。然后根据邻域搜索结果取出其中的K个。(N应该是一个ROI中的点的数量)
Position Residuals 利用Pi与邻域内点的残差让点云的特征同时可以感知2D和3D空间的局部关系。同样这个特征升为C3。
Feature Aggregation 将两个C3维度的特征拼起来,变成了KC3,使用位置残差特征对邻域点的特征加权拼接,变成了[K*C3,1],然后经过一个全连接变为C3.
Multi-Level Feature Fusion 我们堆叠三个 CPConvs 来提取伪云的更深层次的特征。考虑到高层特征提供更大的感受野和更丰富的语义信息,而低层特征可以提供更精细的结构信息,我们将每个 CPConv 的输出连接起来,以获得对伪云的更全面和判别性的表示。
3.6. Loss Function
我们遵循 VoxelRCNN [4] 的 RPN 损失和 RoI 头损失,分别表示为 Lrpn 和 Lroi。为了防止梯度被特定的流控制,我们在 LiDAR 流和伪流上添加了辅助 RoI 头部损失,分别表示为 Laux1 和 Laux2 。Laux1 和 Laux2 与 Lroi 一致,包括类置信度损失和回归损失。深度补全网络损失 Ldepth 遵循 [12] 的定义。那么总损失为:
4. Experiments
备注:作者也是我们「3D视觉从入门到精通」特邀嘉宾:一个超干货的3D视觉学习社区
本文仅做学术分享,如有侵权,请联系删文。
3D视觉工坊精品课程官网:3dcver.com
2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
4.国内首个面向工业级实战的点云处理课程
5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)
重磅!3DCVer-学术论文写作投稿 交流群已成立
扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。
同时也可申请加入我们的细分方向交流群,目前主要有3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。
一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。
▲长按加微信群或投稿
▲长按关注公众号
3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、激光/视觉SLAM、自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近4000星球成员为创造更好的AI世界共同进步,知识星球入口:
学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
圈里有高质量教程资料、答疑解惑、助你高效解决问题
觉得有用,麻烦给个赞和在看~
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)