作者:PCIPG-NaiveGeng | 来源:计算机视觉工坊
在公众号「3D视觉工坊」后台,回复「原论文」即可获取论文pdf和代码。
添加微信:dddvisiona,备注:目标检测,拉你入群。文末附行业细分群。
PointPainting: Sequential Fusion for 3D Object Detection(CVPR2020)
1.简介
3D物体目标检测任务最好采用哪种传感器?Camera还是Lidar?不同团队给出了不同的答案。Camera和Lidar作为目标检测领域的两大巨头传感器,各有优缺点:图像的分辨率比较高,纹理信息比较丰富,但深度信息相对模糊;点云的空间信息、深度信息比较准确丰富,但数据往往比较稀疏、不够完整。由于两种传感器在一些方面存在互补关系,所以很多人相信我们可以利用多模态的方案来实现强强联合,开创1+1>2的局面,但实际却是...各种1+1<1。这是因为图像和点云两种数据之间存在着完全不同的特性,这种差异性致使我们无法通过一些“理所当然”的方案来实现性能的叠加。虽然已经有很长一段时间各大榜单被Lidar-only的方案所霸占(最近好像有逆转的趋势),但在之间也不乏一些多模态方法的优秀工作,比如PointPainting。PointPainting是工业界发表的一篇多模态3D物体目标检测Paper,在文中作者提出了一种图像与点云的新型融合方案。这里也推荐「3D视觉工坊」新课程《面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)》。
2.核心思路
上面我们已经提到多模态经常会遇到1+1<1的尴尬局面,然后作者就想我们可不可以通过让输入信息更加“丰富”的方法来发挥多模态的优势,因为作者认为更“丰富”的输入信息至少应该会产生同样的结果,而不是更糟的结果(有点ResNet的味道在)。这里“丰富”的意思就是我们让点云的feature不只只是[x , y , z,intensity],我们把图像语义分割的结果叠加到每一个点上,让[x , y , z,intensity]扩成[x , y , z,intensity, s0, s1, s2, s3](其中s0 s1 s2 s3代表图像语义分割的结果),然后再输入一些知名的3D目标检测网络中。
3.PointPainting 网络架构
由于PointPainting内容比较简单,所以我在这里就简单梳理一下如何从points -> points_painted(结合上图)。网络的输入是点云和图片,整个过程可以大致分为三个阶段:①首先利用一些图像语义分割网络对图像中各像素进行归类(给每个像素点标上属于背景、车、人等的概率) ②然后根据图像与点云之间的变换关系,将语义分割结果投影到点云上,就像是给点云上色一样(见上图) ③然后以这些上了色的点云为raw data在各种3D目标检测网络上进行物体识别。
4.实验

5.总结
本文提出了PointPainting,这是一种新的序列融合方法,它用基于图像的语义绘制激光雷达点云。PointPainting通过多个不同的激光雷达网络在KITTI和nuScenes挑战中产生了最先进的结果。PointPainting框架是灵活的,可以将任何分割网络的输出与任何激光雷达网络相结合。这些结果的强度和普遍适用性表明,PointPainting是融合图像和激光雷达信息进行3D物体检测的领先架构。
TransFusion: Robust LiDAR-Camera Fusion for 3D Object Detection with Transformers(CVPR2022)
1.多模态融合检测存在的问题
激光雷达和照相机是自动驾驶中三维目标检测的两个重要传感器。尽管LiDAR-Camera多模态融合方案在这一领域越来越流行,但是对于较差的图像条件(比如说光照条件很差),以及传感器之间配准的情况尚未得到充分研究。现有的方法很容易受到这些因素影响,主要是由于由校准矩阵建立的激光雷达点和图像像素之间的硬关联(hard association,即_利用标定矩阵来建立LiDAR点和image像素的关联)。
2.现有方法的缺陷
先有方法主要分为三类:result-level,proposal-level以及point-level。result-level:使用现成的2D检测器来得到3D proposals,然后使用PointNet来进行object定位,如:FPointNet,RoarNet。proposal-level:在region proposal执行融合(通过在shared proposals中应用RoIPool),如:MV3D,AVOD。point-level:基于校准矩阵的激光雷达点和图像像素之间的硬关联(hard association),通过point-wise concatenation,用segmentation scores或CNN特征来增加LiDAR特征。前面两种方法result-level和proposal-level的结果不理想,因为矩形感兴趣区域(RoI)通常包含大量的背景噪声。point-level效果较之前两者已经取得了令人满意的结果,但仍然存在两个问题:(1)结果手图片质量的直接影响;(2)直接将点云投影到image中会造成信息的损失(比如语义信息)并且受到LiDAR-camera之间校准质量的影响。
3.本文方法:TransFusion
TransFusion的结构如上图所示,(1)上面这个Decoder作用是从点云特征中获取initial bounding boxes,此时的Queries主要是Object Querirs;(2)下面这个Decoder..with SMCA利用attention机制自适应的判定图像中哪一部分的特征更加重要并值得被转移到点云中,促进object queries和有用的image信息;(3)Image Guidance:利用图像queries判断点云中哪一部分是困难样本。具体的过程为:(1)3D点云输入3D backbones获得BEV特征图 (2)初始化Object query按照下图左边的Transformer架构输出初始的边界框预测。初始化方法见3.2节 (3)上一步中的3D边界框预测投影到2D图像上,并将FFN之前的特征作为新的query features通过SMCA选择2D特征进行融合。(4)输出最终的BBOX (5)为了利用高分辨率的图像,提高对小物体检测的鲁棒性,增加了图像引导的Object query初始化。对步骤(2)进行增强。
4.Query Initialization
Query Initialization主要涉及两个部分,与之前不同的,主要有两个要求 (1)Input-dependent:提出了一种基于center heatmap的输入相关初始化策略,具体过程:定义一个 d 维的LiDAR BEV特征,,预测的class-specific(回归出所有类别)的heatmap,
,其中 X × Y 表示 BEV 特征图的尺寸,K 是类别的数量。然后将heatmap视为 X × Y × K 对象候选,并选择所有类别的前 N 个候选对象作为Initial query positions 和 query features。(2)Category-aware:与图像,BEV平面上的对象都是absolute scale的,在相同类别中具有较小的比例方差。为了能性更好地进行多类检测,通过为每个查询配备Category embedding,使对象查询具有Category-aware的能力。具体实现为:使用每个选定候选对象的类别(例如,属于第 k 个类别的
),我们将query特征与通过将one-hot category 线性投影到
的向量而产生的category embedding进行element-wise sum。
5.LiDAR-Camera Fusion
Image Feature Fetching(图像特征提取) 当一个对象只包含少量的激光雷达点时,point-level fusion的方法的只能获取相同数量的图像特征,浪费了高分辨率图像丰富的语义信息。为了缓解这个问题,直接采用了整个图像的特征 ,然后利用Transformer中的cross attention,以sparse-to-dense和自适应的方式进行特征融合。SMCA for Image Feature Fusion Multi-head attention是一种常用的进行信息交换和在两组输入之间建立soft association的机制,它已被广泛应用于特征匹配任务。为了降低hard association策略带来的对传感器校准和劣质图像特征的敏感性,利用cross-attention建立了激光雷达和图像之间的soft association,使网络能够自适应地确定应该从图像中获取的信息(在哪里的信息和什么样的信息)。具体采用的是Fast convergence of detr with spatially modulated co-attention中所提到的SMCA策略,利用heat map仅对project成2D特征的center附近的进行交叉注意力进行加权。
6.Image-Guided Query Initialization
通过以上模块,Trans-Fusion已经可以取得SOTA的效果了,为了进一步对小目标检测的鲁棒性,作者还提出 Image-Guided Query Initialization,对应的是Image Guidance。受到Predicting semantic map representations from images using pyramid occupancy networks启发,将multiview image特征沿 _H _轴折叠,然后将其作为attention mechanism的key-value,LiDAR BEV特征作为Query进行交叉注意力。
7.实验
nuScences上的结果:Waymo的结果对比:
8.总结
本文设计了一种有效且鲁棒的基于变换的激光雷达相机3D检测框架,具有软关联机制(soft-association mechanism),以自适应地确定应该从图像中获取的位置和信息。
LoGoNet: Towards Accurate 3D Object Detection with Local-to-Global Cross-Modal Fusion(CVPR2023)
1.概述
LoGoNet 输入为点云和其关联的多相机图像,输出为目标检测结果。其中,点云由空间坐标、特征和点数等信息组成;而图像经过 2D 检测器处理后,生成密集的语义图像特征。该网络包括三个主要的模块:全局融合(GoF)、局部融合(LoF)和特征动态聚合(FDA),用于实现点云和图像的局部到全局的跨模态特征融合。
2.全局融合与局部融合一般过程

3.全局融合模块
传统的全局融合方法通常使用体素中心来表示每个体素特征的位置,但这种方法忽略了每个体素内点的实际分布,质心动态融合模块 (Centroid Dynamic Fusion, CDF)使用体素内点的质心来表示非空体素特征的空间位置,并利用可变形交叉注意力模块自适应地融合点云特征与图像特征。具体来说,对于非空体素特征**F__V和图像特征F__I,首先计算每个体素内点的质心,并将其映射到图像平面得到参考点p__i,然后通过一组注意力头和学习的权重来自适应地融合点云特征和图像特征,最终得到融合特征F__V**∗,用于后续 proposal 的生成与精细化。这种融合方法充分考虑了点云特征的几何形状信息,能够更好地适应大规模点云。
4.局部融合模块
局部融合模块 (Local Fusion, LoF) 通过网格点动态融合(Grid point Dynamic Fusion, GDF)在 proposal 级别动态融合点云特征和图像特征,用于提供更多局部和细粒度的几何信息。对于每个边界框 proposal B__i,将其划分为u×u×u的规则体素网格G****j,其中j索引体素网格。然后使用位置信息编码 (Position Information Encoder, PIE)对每个体素网格特征**F__G__p**进行编码,生成每个边界框 proposal 的局部网格-ROI特征 **F__B__p。然后,使用 GDF 模块,将图像特征与局部 proposal 的编码网格 ROI 特征F__B__p自适应地融合起来。在融合过程中,使用交叉注意力机制将本地采样的图像特征和编码的局部 ROI 网格特征F__B__p**进行融合。最终,通过 FFN 对融合的局部网格特征进行处理,生成最终融合的 ROI-grid 特征 **F__B__l**。
5.特征动态聚合模块
图4. 特征动态聚合模块特征动态聚合模块 (Feature Dynamic Aggregation, FDA)用于建立不同网格点之间的自适应关系,从而增强特征信息。首先,通过 LoF、GoF 和 PIE 模块获得三种特征,即**F__B__p、F__B__l和F__B__g。这些特征相互独立,信息交互和聚合较少。然后,采用自注意力机制建立非空网格点特征之间的交互,通过标准 Transformer 编码器层和残差连接块** (Residual Connection Block, RCB)实现。最后,使用 FDA 模块生成的共享扁平化特征来优化边界框。这里也推荐「3D视觉工坊」新课程《面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)》。
6.损失函数
在网络训练过程中,图像分支的权重被冻结,只有 LiDAR 分支被训练。总的训练损失函数**L由三个部分组成:RPN 损失 _L****RPN、置信度预测损失 L__conf 和边界框回归损失 Lreg**_。其中,超参数 α 用于平衡不同的损失,本文实验中将其设置为1。
7.实验

LoGoNet在 Waymo 3D 检测挑战赛中取得了最好的结果,LoGoNet Ens实现了81.02 mAPH(L2)的检测性能。

在不使用测试时数据增强和模型集成的情况下,LoGoNet 也优于所有竞争方法,并且 LoGoNet 的多帧输入方法比单帧和多帧方法都更有效。

通过逐步增加不同的组件,模型性能都获得了进一步的提升。
8.总结
本文提出了一种新颖的多模态网络,称为 LoGoNet,采用局部到全局的跨模态特征融合,深度融合点云特征和图像特征,为精确检测提供更丰富的信息。在 WOD 和 KITTI 数据集上进行了大量实验,LoGoNet 超过了以前的方法,并在 Waymo 3D 检测排行榜上获得了第一名。结果表明,该框架具有很强的有效性和通用性。
参考:https://zhuanlan.zhihu.com/p/615167814
—END—高效学习3D视觉三部曲
第一步 加入行业交流群,保持技术的先进性
目前工坊已经建立了3D视觉方向多个社群,包括SLAM、工业3D视觉、自动驾驶方向,细分群包括:[工业方向]三维点云、结构光、机械臂、缺陷检测、三维测量、TOF、相机标定、综合群;[SLAM方向]多传感器融合、ORB-SLAM、激光SLAM、机器人导航、RTK|GPS|UWB等传感器交流群、SLAM综合讨论群;[自动驾驶方向]深度估计、Transformer、毫米波|激光雷达|视觉摄像头传感器讨论群、多传感器标定、自动驾驶综合群等。[三维重建方向]NeRF、colmap、OpenMVS等。除了这些,还有求职、硬件选型、视觉产品落地等交流群。大家可以添加小助理微信: dddvisiona,备注:加群+方向+学校|公司, 小助理会拉你入群。

第二步 加入知识星球,问题及时得到解答
针对3D视觉领域的视频课程(三维重建、三维点云、结构光、手眼标定、相机标定、激光/视觉SLAM、自动驾驶等)、源码分享、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答等进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业、项目对接为一体的铁杆粉丝聚集区,6000+星球成员为创造更好的AI世界共同进步,知识星球入口:「3D视觉从入门到精通」
学习3D视觉核心技术,扫描查看,3天内无条件退款
第三步 系统学习3D视觉,对模块知识体系,深刻理解并运行
如果大家对3D视觉某一个细分方向想系统学习[从理论、代码到实战],推荐3D视觉精品课程学习网址:www.3dcver.com
科研论文写作:
基础课程:
[1]面向三维视觉算法的C++重要模块精讲:从零基础入门到进阶
[2]面向三维视觉的Linux嵌入式系统教程[理论+代码+实战]
工业3D视觉方向课程:
[1](第二期)从零搭建一套结构光3D重建系统[理论+源码+实践]
SLAM方向课程:
[1]深度剖析面向机器人领域的3D激光SLAM技术原理、代码与实战
[1]彻底剖析激光-视觉-IMU-GPS融合SLAM算法:理论推导、代码讲解和实战
[2](第二期)彻底搞懂基于LOAM框架的3D激光SLAM:源码剖析到算法优化
[3]彻底搞懂视觉-惯性SLAM:VINS-Fusion原理精讲与源码剖析
[4]彻底剖析室内、室外激光SLAM关键算法和实战(cartographer+LOAM+LIO-SAM)
视觉三维重建
[1]彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进)
自动驾驶方向课程:
[1] 深度剖析面向自动驾驶领域的车载传感器空间同步(标定)
[2] 国内首个面向自动驾驶目标检测领域的Transformer原理与实战课程
[4]面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
[5]如何将深度学习模型部署到实际工程中?(分类+检测+分割)