前言
BEVFusion其实有两篇,
【1】BEVFusion: A Simple and Robust LiDAR-Camera Fusion Framework. NeurIPS 2022 | 北大&阿里提出
【2】BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird’s-Eye View Representation 2022 | MIT提出
本文先分享阿里那篇,下面简单总结一下两篇论文。
BEVFusion: A Simple and Robust LiDAR-Camera Fusion Framework:
- 重点: 介绍了一个融合摄像头和激光雷达数据的框架,用于3D对象检测。其创新之处在于使摄像头流程不依赖激光雷达输入,解决了现有方法过度依赖激光雷达数据的局限性。
- 方法: BEVFusion框架使用两个独立流程来处理激光雷达和摄像头数据,然后在鸟瞰视图(BEV)层面进行融合。这种方法即使在激光雷达功能失常,或摄像头失常的情况下也保证了稳健性。
- 性能: 在nuScenes数据集上,BEVFusion在平均精度(mAP)方面相比现有方法如PointPillars和CenterPoint显示出显著的改进,证明了其在正常和鲁棒设置下的优越性。
BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird’s-Eye View Representation:
- 重点: 将传感器融合的概念扩展到多任务、多传感器框架,将激光雷达和摄像头数据统一到共享的鸟瞰视图(BEV)空间中。它不仅针对3D对象检测,还针对BEV地图分割。
- 统一表示和效率: 该论文介绍了一个保持几何结构和语义密度的统一BEV表示,并优化了BEV池化操作以提高视图转换过程的效率。
- 性能和应用: BEVFusion在nuScenes基准测试中展示了在3D对象检测和BEV地图分割方面的最佳性能。与其他方法相比,它在平均精度(mAP)和平均交并比(mIoU)上都有更高的表现,而且计算成本更低。该论文还强调了该框架在不同光照和天气条件下的稳健性。
所以先看阿里那篇,再看MIT那篇,会比较好理解。
一、BEVFusion 简介
名称:BEVFusion: A Simple and Robust LiDAR-Camera Fusion Framework. NeurIPS 2022 | 北大&阿里提出
简介:提出了一种新颖的融合框架,用于自动驾驶系统中的3D对象检测。
- 通过两个独立流程(一个针对摄像头数据,另一个针对激光雷达数据)加工数据,然后在BEV层面进行融合。
- 摄像头数据流程不依赖激光雷达输入,解决了现有方法在激光雷达故障时无法有效工作的问题。
设计理念:作者认为理想的激光雷达-摄像头融合框架应该是,即使缺少另一种模式,每个单一模态的模型也不应该失败,而两种模态的结合将进一步提高感知精度。为此,提出了一个简单但有效的框架,将激光雷达-摄像头融合依赖关系解耦。
效果:它有效地集成了现有的单模态BEV模型,通过优化摄像头和激光雷达数据的处理和融合,实现了在不同情景下的精确3D对象检测。
BEVFusion证明了在自动驾驶领域,通过独立处理并融合摄像头和激光雷达数据,可以显著提升3D对象检测的准确性和稳健性,尤其是在激光雷达可能出现故障的真实场景中。
论文地址:BEVFusion: A Simple and Robust LiDAR-Camera Fusion Framework
开源地址:https://github.com/ADLab-AutoDrive/BEVFusion
二、背景,当前问题,解决方案
背景:
当前在工业界普遍使用的是后融合,因为这种方案比较灵活,鲁棒性也更好,不同模态的输出的结果通过人工设计的算法和规则进行整合,不同模态在不同情况下会有不同的使用优先级,因此能够更好的处理单一传感器失效时对系统的影响。
但是后融合缺点也很多,
- 一是信息的利用不是很充分。
- 二是把系统链路变得更加复杂,链路越长,越容易出问题。
- 三是当规则越堆叠越多之后维护代价会很高。
学术界目前比较推崇的是前融合方案,能够更好的利用神经网络端到端的特性。
但是前融合的方案少有能够直接上车的,原因作者认为是目前的前融合方案鲁棒性达不到实际要求, 尤其是当雷达信号出现问题时,目前的前融合方案几乎都无法处理。
前融合当前问题:
作者对比了激光雷达相机融合方法的不同框架,分析之前框架的问题。
- a)点级融合机制,将图像特征投影到原始点云上;或点云投影到图像;然后进行特征提取。
- b)特征级融合机制,在每个视图的图像特征上投影点云特征;或每个视图的图像点上投影 点云特征。
- c) 作者提出了一种新颖而简单的框架,将摄像头网络与激光雷达输入分开的框架。
(a)将点云根据外参和相机内参投影到图,然后进行特征提取;或图像投影点云上,后面就可以通过常用的点云3D检测算法进行处理。
(b)先对雷达点云进行特征提取,然后将特征或者初始预测值按照外参和相机内参,将图像带你投影到点云中。或先图像提取的2D特征,然后将图像特征投影到点云特征中,再接上对应的任务头,目前MVXNet, TransFusion、DeepFusion属于这种类型的工作。
- 后者构成了3D检测领域的最先进方法,TransFusion使用激光雷达特征的边界框预测作为提议来查询图像特征,然后采用类Transformer架构将信息融合回激光雷达特征。
- DeepFusion将激光雷达特征投影到每个视图图像上作为查询,然后利用两种模态的交叉注意力。
前两种方案的有以下缺点:
- 校准问题:汽车在行驶过程中可能会遇到不平坦的路面或其他震动,这些都可能导致激光雷达和相机的外部参数发生变化(例如,它们相对于车辆的位置和方向)。这种变化会使得原本准确的点云和图像之间的对应关系出现偏差,进而影响融合数据的准确性。
- 相机噪声:多种因素可能导致相机噪声,例如镜头上的污渍、水珠或雾气会阻挡视线,降低图像质量。此外,技术故障如卡帧或摄像机完全损坏也会影响图像数据的完整性和可用性。
- 激光雷达噪声:激光雷达在某些情况下可能无法有效探测某些物体。例如,对于某些材料或颜色(如深色车辆),激光雷达的反射率可能非常低,导致返回的点云数据不完整。此外,由于设计或安装限制,某些激光雷达的视场(FOV)可能无法覆盖360度全景,这在特定车型中更为常见,可能导致数据盲区。
DeepFusion通过点云坐标去Query图像特性 ,一定程度兼容“校准问题”和“相机噪声问题”,如果激光雷达噪声导致的点云缺失,也不行了。
(c)BEVFusion框架首先采取独立处理雷达点云和图像,一分支提取点云特征预测3D信息,另一分支也会提取图像特征预测3D信息,再将两者特征投射到统一的BEV空间,在这个空间上进行融合。
在这种方法中,激光雷达和视觉没有了主次依赖关系,提供了类似于后期融合的灵活性:
- 单一模态可以独立完成任务,增加多种模态后,性能会显著提升。
- 如果某一模态缺失或产生噪声,也不会对整体结果造成破坏性影响。
三、模型框架
BEVFusion框架首先采取独立处理雷达点云和图像,如下图所示,分支1提取图像特征预测3D信息,分支2提取点云特征预测3D信息。
再将两者特征投射到统一的BEV空间,在这个空间上进行融合,得到融合分支。
BEVFusion作为一个通用框架,其点云分支和视觉分支都能采用多种不同的结构。
- 对于视觉分支,基于Lift-Splat-Shoot实现。
- 在点云分支,测试了基于体素(Voxel)和基于柱(Pillar)的编码方式。
- 在任务头部分,测试了基于锚点(Anchor-based)、无锚点(Anchor-free)以及TransFusion中使用的基于Transformer的头部结构。
- 融合分支,还改进了融合模块,以更有效地融合不同模态的信息。
3.1 视觉分支
流程思路(基于LSS):
- 步骤1:2D Backbone提取基础图像特征
- 步骤2:FPN+ADP,多尺度特征融合;这里做了一些改进。
- 步骤3:2D → 3D特征转换模块
- 步骤4:3D → BEV特征编码模块
- 输出:Camera BEV Features,加上检测任务头得到3D检测结果。
这里先简单将讲一下LSS的思路,是很经典的,很多BEV方法都是基于它实现的。
Lift-Splat-Shoot(LSS):它先从车辆周围的多个摄像头拍摄到的图像中估计出每个点的深度,然后把这些图像“提升”到3D空间中。接着,这些3D信息被放置到一个网格上,最后将这些信息“投射”到一个平面视图上,也就是我们说的鸟瞰视图(BEV)。
设计理念:
- 视觉分支流程:框架首先采用Lift-Splat-Shoot(LSS)方法作为起点,对原始图像进行深层特征的提取。由于LSS原本是为BEV语义分割设计的,因此对于3D检测,作者对LSS进行了适应性改造以提升性能。
- 图像编码器:这一部分负责将原始图像转换为包含丰富语义信息的深层特征。作者使用Dual-Swin-Tiny作为主干网络,而非LSS中的ResNet,以提高特征的代表性。并且,在主干网络上使用标准的特征金字塔网络(FPN)来利用多尺度分辨率的特征,并提出了一个简单的自适应模块(ADP)来优化上采样的特征。
- 视图投影模块:此模块的作用是将2D图像特征转换为3D自车坐标系中的特征,进而进行深度预测。
- BEV编码器模块:这一模块进一步处理体素特征,将其转换为BEV空间的特征。不同于LSS,该模块直接处理全分辨率的BEV特征,以保留空间信息。
补充:
视图投影模块将图像特征转换为3D自车坐标。BEV编码器模块进一步将体素特征编码到BEV空间特征,采用空间到通道(S2C)操作,通过重塑将4D张量转换为3D张量,以保留语义信息并降低成本。然后使用四个3×3卷积层逐渐减少通道维度,并提取高层语义信息。
FPN+ADP的结构如下,再特征金字塔网络,加入自适应模块。
在处理视图图像时,首先通过背部网络和FPN产生多尺度的特征图F2、F3、F4、F5,这些特征图具有不同的空间尺度。
随后,自适应模块使用上采样和平均池化操作,将所有尺度的特征图统一调整至相同的空间分辨率(H/4×W/4),并通过1×1卷积来整合这些特征。
这种方法能够有效地融合不同尺度的特征,从而为特定视图图像生成丰富的特征表示,有利于提高模型的性能和准确性。
2D → 3D特征转换模块
输入:多尺度融合特征。输出:3D伪体素特征。
- 步骤1:深度分布估计
- 步骤2:2D到3D投影计算
详细的后面再补充
3.2 点云分支
输入:原始点云。输出:LiDAR BEV Features,加上检测任务头得到3D检测结果。
流程思路:通过3D Backbone,处理原始点云数据,同时压缩到BEV空间,生成BEV特征。
激光雷达点云数据生成BEV特征,通常采用的方法是:
- 参数化体素化:将原始的激光雷达点云转换成体素(小立方体)形式,主要是为了降低数据在垂直(Z)方向上的复杂度。
- 稀疏3D卷积:在将点云数据转换为体素形式后,使用稀疏3D卷积网络来高效地从这些体素化数据中提取特征。
作者采用了三种流行的方法,PointPillars、CenterPoint 和 TransFusion 作为点云分支,以展示框架的泛化能力。
3.3 动态融合分支
输入:点云BEV特征 和 图像BEV特征。
输出:融合后的特征,加上检测任务头得到3D检测结果。
- 步骤1:按通道维度级联点云和图像BEV特征,再通过卷积网络提取级联后的特征。
- 步骤2:通过全局平均池化和卷积预测,实现对级联特征的自适应挑选。
动态融合模块设计,如下图所示:
编辑
将两种传感器生成的BEV特征首先通过通道连接起来,然后应用一个简单的通道注意力机制来强调重要的特征。这里用到的技术包括:
- 静态融合(fstatic):通过3×3卷积层将摄像头和激光雷达的特征进行空间和通道上的静态融合。
- 动态适应(fadaptive):引入了一个类似Squeeze-and-Excitation的注意力机制。这个机制通过对融合后的特征进行全局平均池化,然后应用线性变换和sigmoid函数,动态地调整每个通道的重要性。
四、实验结果与效果展示
BEVFusion的泛化能力,做了不同模态消融实验。 作者在 nuScenes 验证集上验证了融合框架的有效性。
多模态的可行性,橙色框表示该范围内物体点云信息被丢弃,但BEVFusion可以通过camera分支恢复。
BEVFusion融合的效果更好:
作者使用 TransFusion-L 作为 LiDAR 流,并在表 2 中展示了 nuScenes 测试集上的结果。
在没有任何测试时间增加或模型集成的情况下,我们的 BEVFusion 超越了所有以前的 LiDAR-相机融合方法,并达到了最佳状态 - 与 TransFusion 的 68.9% mAP 相比,具有 69.2% mAP 的最先进性能。
作者还展示了BEVFusion方法在两种设置(激光雷达和相机故障)上相对于所有以前的基线方法的鲁棒性。
小结
BEVFusion框架使用两个独立流程来处理激光雷达和摄像头数据,然后在鸟瞰视图(BEV)层面进行融合。这种方法即使在激光雷达功能失常,或摄像头失常的情况下也保证了稳健性。
BEVFusion框架首先采取独立处理雷达点云和图像,一分支提取点云特征预测3D信息,另一分支也会提取图像特征预测3D信息,再将两者特征投射到统一的BEV空间,在这个空间上进行融合。
在这种方法中,激光雷达和视觉没有了主次依赖关系,提供了类似于后期融合的灵活性:
- 单一模态可以独立完成任务,增加多种模态后,性能会显著提升。
- 如果某一模态缺失或产生噪声,也不会对整体结果造成破坏性影响。
通过实验证明了:框架针对各种相机和激光雷达故障,具有强大鲁棒性和泛化能力。在自动驾驶领域,通过独立处理并融合摄像头和激光雷达数据,可以显著提升3D对象检测的准确性和稳健性,尤其是在激光雷达可能出现故障的真实场景中。
分享完成~