经典阅读:BEVFusion
前言
项目地址:【1】BEVFusion: A Simple and Robust LiDAR-Camera Fusion Framework. NeurIPS 2022 | 北大&阿里提出
BEVFusion: A Simple and Robust LiDAR-Camera Fusion Framework
参考:【多传感器融合】BEVFusion: 激光雷达和视觉融合框架
背景相关
当前在工业界普遍使用的是后融合,因为这种方案比较灵活,鲁棒性也更好,不同模态的输出的结果通过人工设计的算法和规则进行整合,不同模态在不同情况下会有不同的使用优先级,因此能够更好的处理单一传感器失效时对系统的影响。
但是后融合缺点也很多:
一是信息的利用不是很充分。
二是把系统链路变得更加复杂,链路越长,越容易出问题。
三是当规则越堆叠越多之后维护代价会很高。
学术界目前比较推崇的是前融合方案,能够更好的利用神经网络端到端的特性。
但是前融合的方案少有能够直接上车的,原因作者认为是目前的前融合方案鲁棒性达不到实际要求, 尤其是当雷达信号出现问题时,目前的前融合方案几乎都无法处理。
前融合当前问题:
作者对比了激光雷达相机融合方法的不同框架,分析之前框架的问题。
a)点级融合机制,将图像特征投影到原始点云上;或点云投影到图像;然后进行特征提取。将点云根据外参和相机内参投影到图,然后进行特征提取;或图像投影点云上,后面就可以通过常用的点云3D检测算法进行处理。
b)特征级融合机制,在每个视图的图像特征上投影点云特征;或每个视图的图像点上投影 点云特征。先对雷达点云进行特征提取,然后将特征或者初始预测值按照外参和相机内参,将图像带你投影到点云中。或先图像提取的2D特征,然后将图像特征投影到点云特征中,再接上对应的任务头,目前MVXNet, TransFusion、DeepFusion属于这种类型的工作。
这两种方案有以下问题:(我归类为数据匹配干扰+噪声问题)
校准问题:汽车在行驶过程中可能会遇到不平坦的路面或其他震动,这些都可能导致激光雷达和相机的外部参数发生变化(例如,它们相对于车辆的位置和方向)。这种变化会使得原本准确的点云和图像之间的对应关系出现偏差,进而影响融合数据的准确性。
相机噪声:多种因素可能导致相机噪声,例如镜头上的污渍、水珠或雾气会阻挡视线,降低图像质量。此外,技术故障如卡帧或摄像机完全损坏也会影响图像数据的完整性和可用性。
激光雷达噪声:激光雷达在某些情况下可能无法有效探测某些物体。例如,对于某些材料或颜色(如深色车辆),激光雷达的反射率可能非常低,导致返回的点云数据不完整。此外,由于设计或安装限制,某些激光雷达的视场(FOV)可能无法覆盖360度全景,这在特定车型中更为常见,可能导致数据盲区。
其中DeepFusion通过点云坐标去Query图像特性 ,一定程度兼容“校准问题”和“相机噪声问题”
c) 作者提出了一种新颖而简单的框架,将摄像头网络与激光雷达输入分开的框架。一分支提取点云特征预测3D信息,另一分支也会提取图像特征预测3D信息,再将两者特征投射到统一的BEV空间,在这个空间上进行融合。
在这种方法中,激光雷达和视觉没有了主次依赖关系,提供了类似于后期融合的灵活性。
方法论
框架:
视觉分支
相关论文:Lift, Splat, Shoot: Encoding Images From Arbitrary Camera Rigs by Implicitly Unprojecting to 3D
解析:LSS (Lift, Splat, Shoot) 论文+源码万字长文解析
基于Lift-Splat-Shoot实现——一种用于自动驾驶感知的算法,由NVIDIA提出。它通过将多视角相机图像转换为3D空间中的特征表示来实现从2D图像到BEV(Bird's Eye View,鸟瞰图)的转换。具体来说,Lift-Splat-Shoot算法包含三个关键步骤:
Lift:提升,即从每个相机的2D图像中提取特征,并为每个特征点估计深度,然后通过相机内参将这些特征点映射到3D空间中,形成一个3D特征点云。这个过程中,每个像素点会映射到3D空间中的多个点,每个点携带特征向量,这些点构成了一个截锥体形状的图像特征点云。
Splat:拍扁,即将所有相机的3D特征点云通过相机外参转换到自车坐标系,并忽略高度信息,自上而下投影到BEV坐标系下,形成BEV特征图。如果多个点投影到同一个BEV栅格,这些点的特征向量会被累加起来,形成该栅格的特征向量。
Shoot:射入,是指在BEV特征图上进行运动规划,通过将模板轨迹投影到网络输出的BEV cost map中,实现可解释的端到端运动规划。
Lift-Splat-Shoot算法在目标分割、地图分割等任务上取得了优于基线方法和之前工作的结果,因为它能够有效融合多视角相机信息,并生成统一的BEV表示,适用于自动驾驶中的感知和规划任务。