BEVFusion
BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird’s-Eye View Representation
基于统一BEV特征的多任务多传感器融合
论文网址:BEVFusion
代码:BEVFusion
简读论文
BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird’s-Eye View Representation:
- 问题背景和动机
多传感器融合对于精确可靠的自动驾驶系统至关重要。近期的方法基于点级融合:将摄像头特征增强到激光雷达点云中。但是,摄像头到激光雷达的投影会丢弃摄像头特征的语义密度,这限制了这种方法的有效性,尤其是对于语义定向任务(如3D场景分割)。
本文提出了BEVFusion,一个高效通用的多任务多传感器融合框架。它在共享鸟瞰图表示空间中统一多模态特征,很好地保留了几何和语义信息。 - 技术创新
(1) 提出在共享鸟瞰图表示空间进行传感器融合,同时保留摄像头特征的语义密度和激光雷达特征的几何结构。
(2) 发现视角转换中的BEV pooling是效率瓶颈,并通过预计算和区间约简进行了40倍以上的加速。
(3) 提出基于卷积的BEV编码器来融合统一的BEV特征,减轻不同特征之间的局部错位。
(4) 支持不同的3D感知任务,如目标检测和BEV分割,几乎无需改变模型架构。 - 实验结果
在nuScenes数据集上,BEVFusion实现了最先进的3D目标检测性能,mAP和NDS分别提高了1.3%和13.6%,计算量降低1.9倍。
在BEV分割任务上,相比仅用摄像头的方法提高了6% mIoU,相比仅用激光雷达的方法提高了13.6% mIoU。 - 意义和局限
BEVFusion打破了长期以来点级融合是多传感器感知的最佳方案的观念。它为通用的多任务多传感器融合提供了一个简单但强大的基准。
当前的局限是多任务联合训练性能下降,更精确的深度估计也是一个未被充分探索的方向。
总体来说,该论文在多任务多传感器融合方面做出了重要的技术创新和实验突破,为未来的研究提供了一个很好的参考和基础。
BEVFusion网络
BEVFusion网络的前向传播过程可以总结如下几个关键步骤:
1.单模态编码器
对相机图像和激光雷达点云分别使用CNN进行编码,提取语义特征。
2.视角转换
将相机特征图通过视角转换模块转换到BEV空间,同时转换激光雷达特征。
图像特征转换到BEV空间:
1.输入的是图像的多通道特征图。
2.每个像素点都会根据视角转换模块预测的深度分布,被映射到多个不同深度的点上。
3.比如对于一个像素A,它的深度分布有4个离散值d1,d2,d3,d4,对应概率p1,p2,p3,p4。
4.那么这个像素A会被映射到4个点,位置分别为cam_pos + d1cam_dir、cam_pos + d2cam_dir 等。
5.这4个点带有的特征值分别是 原始像素A的值乘以对应的概率p1~p4。
6.对所有的像素都进行这样的映射,生成一个带有特征的稀疏3D点云。
7.把这些3D点根据位置映射到BEV网格中,用一个对称函数(如求平均)聚合每个格子内的特征。
点云特征转换到BEV空间
1.将激光雷达的原始3D点云用体素网格(Voxel)进行离散化,每个体素包含了落在内部点云的特征。
2.将3D体素格栅投影到2D平面,转换到鸟瞰图(BEV)表示。
3.在投影时,将高度(Z方向)上的不同体素特征压缩聚合,生成2D的BEV特征图。
4.通常会进行多尺度的处理,生成不同分辨率的BEV特征图。
3.BEV特征融合
在BEV空间,将两个模态的特征进行拼接。
4.BEV编码器
使用卷积网络进一步编码融合的BEV特征,生成统一的BEV特征表示。
5.多任务头
最后根据不同的感知任务,在BEV特征上使用专用的头进行检测或分割。
其中,视角转换是关键步骤,用于解决不同模态特征的视角不一致问题。
视频转换模块
视角转换模块的具体工作流程如下:
1.输入是原始的RGB图像,会先通过一个卷积网络提取语义特征。
2.然后经过几个卷积块进一步提取图像的上下文信息。这些卷积块可以是普通的2D卷积,也可以是更复杂的模块如注意力机制等。
3.Finally, predict per-pixel depth distribution through a convolutional head. 每个像素会预测一个深度分布,表示该像素可能对应的深度范围。
4.这个模块是可训练的,通过给不同物体打上深度标签,可以训练模块学习预测正确的深度分布。
5.在训练过程中,视角转换模块的参数会跟随整个模型端到端更新。
6.在转换到BEV时,会读取视角转换模块预测的每像素深度分布,并据此进行转换。
BEV编码器用于融合不同模态的BEV特征。
最后应用可微分的多任务头支持端到端的学习。
整个网络形成一个通用的多模态多任务感知框架,可以支持检测、分割等不同3D感知任务。
视角转换模块(View Transformer)来预测每个像素在各个深度的概率
1.视角转换模块会针对每个像素,预测出一个深度分布,是个一维向量,长度为离散深度个数D。
2.这个向量经过softmax归一化,就可以表示该像素在各个深度的概率。
3.视角转换模块中的卷积网络通过学习,会逐步优化这些深度概率的预测,使其逼近真实值。
4.模型训练时,有来自激光雷达的BEV特征作为监督信号,可以纠正视角转换模块预测的深度分布。
5.推理时直接使用预测的深度概率,进行像素到BEV空间的转换。
摘要
多传感器融合对于准确可靠的自动驾驶系统至关重要。最近的方法基于Point-level融合:用相机特征增强激光雷达点云。然而,相机到激光雷达的投影抛弃了相机特征的语义密度,阻碍了此类方法的有效性,特别是面向语义的任务(例如3D场景分割)。在本文中,通过BEVFusion打破了这一惯例,BEVFusion是一种高效且通用的多任务多传感器融合框架。它将多模态特征统一在共享鸟瞰图(BEV)表示空间中,很好的保留了几何和语义信息。本文通过优化的BEV Pooling来诊断并解决视图转换中的关键效率瓶颈,将延迟减少了40倍以上。BEVFusion几乎无需进行框架修改就可以支持不同的3D感知任务。
引言
自动驾驶系统配备了多种传感器。例如,Waymo的自动驾驶车辆有29个摄像头,6个雷达和5个激光雷达。不同的传感器提供互补的信息,例如:摄像头捕捉丰富的语义信息,激光雷达提供准确的空间信息,而雷达提供即时速度估计。因此,多传感器融合对于准确可靠的感知具有重要意义。
来自不同传感器的数据以根本不同的方式表示:例如,相机以特定视角捕获数据,而激光雷达以 3D 视角捕获数据。为了解决这种观点差异,必须找到适合多任务多模态特征融合的统一表示。由于 2D 感知取得了巨大成功,自然的想法是将 LiDAR 点云投影到相机上,并使用 2D CNN 处理 RGB-D 数据。然而,这种 LiDAR 到相机的投影引入了严重的几何失真,这使得它对于面向几何的任务(例如 3D 物体识别)效果较差。
最近的传感器融合方法遵循另一个方向。他们使用语义标签 [ PointPainting-2020]、CNN 特征 [PointAugmenting-2021, DeepFusion-2022] 或 2D 图像中的虚拟点 [Multimodal Virtual Point 3D Detection-2021] 来增强 LiDAR 点云,然后应用现有的基于 LiDAR 的检测器来预测 3D 边界框。尽管它们在大规模检测基准上表现出了卓越的性能,但这些point-level融合方法几乎不适用于面向语义的任务,例如 BEV 场景分割 [ Cross-View Semantic Segmentation for Sensing Surroundings-2020, Lift, Splat, Shoot-2020,HDMapNet-2022, Cross-View Transformers for Real-Time Map-View Semantic Segmentation-2022]。这是因为相机到 LiDAR 的投影在语义上是有损的:对于典型的 32 光束 LiDAR 扫描仪,只有 5% 的相机特征将与 LiDAR 点匹配,而所有其他特征将被丢弃。对于稀疏的激光雷达(或成像雷达)来说,这种密度差异将变得更加巨大。
本文提出 BEVFusion 在共享鸟瞰图(BEV)表示空间中统一多模态特征,以实现与任务无关的学习。保持几何结构和语义密度并自然支持大多数3D感知任务(因为它们的输出空间可以在BEV中自然捕获)。在将所有特征转换为 BEV 时,本文发现了视图转换中的主要效率瓶颈:即,仅 BEV 池化操作就占用了模型运行时间的 80% 以上。然后,本文提出了一种具有预计算和间隔缩减功能的专用内核来消除这一瓶颈,实现了超过 40 倍的加速。最后,应用全卷积 BEV 编码器来融合统一的 BEV 特征,并附加一些特定于任务的头来支持不同的目标任务。
BEVFusion 打破了长期以来认为点级融合是多传感器融合最佳解决方案的理念。
相关工作
LiDAR-Based 3D Perception. 研究人员设计了单级 3D 物体检测器 [VoxelNet、PointPillars、SECOND、3DSSD],使用 PointNets 或 SparseConvNet 提取点云特征,并在 BEV 空间中执行检测。后来 [Center-Based 3D Object Detection and Tracking-2021] 和其他 [Object as Hotspots-2020, Offboard 3D Object Detection from Point Cloud Sequences-2021, RangeDet-2021, PolarStream-2021, Object DGCNN-2021] 探索了无锚 3D 对象检测。另一项研究 [PointRCNN,Fast Point R-CNN-2019, From Points to Parts-2020, PV-RCNN, PV-RCNN++, LiDAR R-CNN] 侧重于两阶段目标检测,它将 RCNN 网络添加到现有的单阶段目标检测器中。还有专门用于 3D 语义分割的类似 U-Net 的模型 ,这是离线高精地图构建的一项重要任务。
Camera-Based 3D Perception. 由于 LiDAR 传感器成本高昂,研究人员在仅使用摄像头的 3D 感知上投入了大量精力。 FCOS3D [2021] 使用额外的 3D 回归分支扩展了图像检测器 [FCOS-2019],随后在深度建模方面进行了改进 [Probabilistic and Geometric Depth-2021, EPro-PnP-2022]。 DETR3D [2021]、PETR [2022] 和 GraphDETR3D [2022] 设计了基于 DETR [Deformable DETR-2021, Anchor DETR-2022] 的检测头,在 3D 空间中具有可学习的对象查询,而不是在透视图中执行对象检测。受基于 LiDAR 的探测器设计的启发,另一种仅使用相机的 3D 感知模型使用视图转换器将相机特征从透视图显式转换为鸟瞰图 [ Cross-View Semantic Segmentation for Sensing Surroundings-2020, Orthographic Feature Transform for Monocular 3D Object Detection-2019, Predicting Semantic Map Representations from Images using Pyramid Occupancy Networks-2020, Lift, Splat, Shoot-2020]。 BEVDet [2021] 和 M2BEV [2022] 有效地将 LSS Lift, Splat, Shoot-2020] 和 OFT [2019] 扩展到 3D 物体检测,在发布时实现了最先进的性能。 CaDDN [2021] 为视图转换器添加了显式深度估计监督。 BEVDet4D [2022]、BEVFormer [2022] 和 PETRv2 [2022] 利用多摄像机 3D 对象检测中的时序线索,实现了比单帧方法的显着改进。 BEVFormer [2022]、CVT [2022] 和 Ego3RT [2022] 也研究使用多头注意力来执行视图变换。
Multi-Sensor Fusion. 最近,多传感器融合引起了 3D 检测界越来越多的兴趣。现有的方法可以分为提议级和点级融合方法。 MV3D 在 3D 中创建对象提议并将提议投影到图像以提取 RoI 特征。 F-PointNet [2018]、F-ConvNet [2019] 和 CenterFusion [2021] 都将图像提议提升为 3D 截锥体。最近,FUTR3D [2022] 和 TransFusion [2022] 在 3D 空间中定义了对象查询,并将图像特征融合到这些建议中。提议级融合方法以对象为中心,不能简单地推广到 BEV 场景分割等其他任务。另一方面,point-level融合方法通常将图像语义特征绘制到前景 LiDAR 点上,并对修饰后的点云输入执行基于 LiDAR 的检测。因此,它们都是以对象为中心和以几何为中心的。在所有这些方法中,PointPainting [2020]、PointAugmenting [2021]、MVP [2021]、FusionPainting [2021]、AutoAlign [2022] 和 FocalSparseCNN [2022] 是(LiDAR)输入级融合,而 Deep Continuous Fusion [2018]和 DeepFusion [2022] 是特征级融合。
Multi-Task Learning. 多任务学习在计算机视觉社区中得到了充分的研究。研究人员研究了联合执行目标检测和实例分割 [Faster RCNN, Cascade R-CNN],并扩展到姿势估计和人与目标交互 [Mask R-CNN]。一些并行工作包括 M2BEV [2022]、BEVFormer [2022] 和 BVerse [2022] 联合执行 3D 中的目标检测和 BEV 分割。上述方法均未考虑多传感器融合。 MMF [2019] 同时使用相机和 LiDAR 输入进行深度补全和目标检测,但仍然以对象为中心,不适用于 BEV 地图分割。
与所有现有方法相比,BEVFusion 在共享 BEV 空间中执行传感器融合,并平等对待前景和背景、几何和语义信息。 BEVFusion 是一个通用的多任务多传感器感知框架。
BEVFusion
BEVFusion 专注于多传感器融合(即多视图相机和 LiDAR),以实现多任务 3D 感知(即检测和分割)。下图中概述了本文的框架。给定不同的感官输入,首先应用特定于模态的编码器来提取它们的特征。将多模态特征转换为统一的 BEV 表示,保留几何和语义信息。本文确定了视图转换的效率瓶颈,并通过预计算和间隔减少来加速 BEV 池化。然后,将基于卷积的 BEV 编码器应用于统一的 BEV 特征,以减轻不同特征之间的局部错位。最后,附加一些特定于任务的头来支持不同的 3D 任务。
Unified Representation
统一特征表示
不同的特征可以存在于不同的视图中。例如,相机特征位于透视图中,而 LiDAR/雷达功能通常位于 3D/鸟瞰视图中。即使对于相机特征,它们中的每一个都有不同的视角(即前、后、左、右)。这种视图差异使得特征融合变得困难,因为不同特征张量中的相同元素可能对应于完全不同的空间位置(并且朴素的元素特征融合在这种情况下将不起作用)。因此,找到一种共享表示至关重要,这样(1)所有传感器特征都可以轻松转换为它而不会丢失信息,(2)它适用于不同类型的任务。
To Camera. 受 RGB-D 数据的启发,一种选择是将 LiDAR 点云投影到相机平面并渲染 2.5D 稀疏深度。然而,这种转换在几何上是有损失的。深度图上的两个邻居在 3D 空间中可以彼此远离。这使得相机视图对于专注于对象/场景几何形状的任务(例如 3D 目标检测)效率较低。
To LiDAR. 大多数最先进的传感器融合方法 [PointPainting-2020, Multimodal Virtual Point 3D Detection-2021, DeepFusion-2022 用相应的相机特征(例如语义标签、CNN 特征或虚拟点)来装饰 LiDAR 点。然而,这种相机到激光雷达的投影在语义上是有损失的。相机和 LiDAR 特征的密度截然不同,导致只有不到 5% 的相机特征与 LiDAR 点匹配(对于 32 通道 LiDAR 扫描仪)。放弃相机特征的语义密度会严重损害模型在面向语义的任务(例如 BEV 场景分割)上的性能。类似的缺点也存在于潜在空间中最新的融合方法(例如,目标查询)[FUTR3D-2022, TransFusion-2022]。
To Bird’s-Eye View. 本文采用鸟瞰图(BEV)作为融合的统一表示。该视图对几乎所有感知任务都很友好,因为输出空间也在 BEV 中。更重要的是,向 BEV 的转换保留了几何结构(来自 LiDAR 特征)和语义密度(来自相机特征)。一方面,LiDAR 到 BEV 的投影使稀疏 LiDAR 特征沿高度维度变平,因此不会产生几何失真。另一方面,相机到 BEV 的投影将每个相机特征像素投射回 3D 空间中的一条光线(下一节将详细介绍),这可以产生密集 BEV 特征图。
高效的相机到 BEV 转换
相机到 BEV 的转换并非易事,因为与每个相机特征像素相关的深度本质上是不明确的。遵循 LSS [2020] 和 BEVDet [2021, BEVDet4D-2022],明确预测每个像素的离散深度分布。然后,将每个特征像素沿相机光线分散成 D 个离散点,并通过相应的深度概率重新缩放相关特征(图 a)。这会生成大小为 NHWD 的相机特征点云,其中 N 是相机数量,(H,W) 是相机特征图大小。这种 3D 特征点云沿 x、y 轴以步长 r(例如 0.4m)进行量化。使用 BEV 池化操作来聚合每个 r × r BEV 网格内的所有特征,并沿 z 轴展平特征。
虽然简单,但 BEV 池化的效率低下且缓慢。这是因为相机特征点云非常大。为了解决这个效率瓶颈,建议通过预计算和间隔减少来优化 BEV 池化。
Precomputation. BEV池化的第一步是将相机特征点云中的每个点与BEV网格相关联。与LiDAR点云不同,相机特征点云的坐标是固定的(只要相机内参和外参保持不变,这通常是经过适当校准后的情况)。受此启发,预先计算每个点的 3D 坐标和 BEV 网格索引。还根据网格索引对所有点进行排序并记录每个点的排名。在推理过程中,只需要根据预先计算的排名对所有特征点重新排序。这种缓存机制可以将网格关联的延迟从17ms减少到4ms。
Interval Reduction. 网格关联后,同一 BEV 网格内的所有点在张量表示中将是连续的。 BEV 池化的下一步是通过一些对称函数(例如平均值、最大值和总和)聚合每个 BEV 网格内的特征。如图b 所示,现有实现 [Lift, Splat, Shoot-2020] 首先计算所有点的前缀和,然后减去索引变化的边界处的值。然而,前缀和运算需要 GPU 上的树缩减并产生许多未使用的部分和(因为只需要边界上的这些值),这两者效率都很低。为了加速特征聚合,本文实现了一个专门的 GPU 内核,它直接在 BEV 网格上并行化:为每个网格分配一个 GPU 线程,计算其间隔总和并将结果写回。该内核消除了输出之间的依赖性(因此不需要多级树缩减),并避免将部分和写入 DRAM,从而将特征聚合的延迟从 500ms 减少到 2ms。
Takeaways. 通过优化的 BEV 池化,相机到 BEV 的转换速度提高了 40 倍:延迟从 500 毫秒以上减少到 12 毫秒(仅是本文模型端到端运行时间的 10%),并且可以在不同的特征分辨率之间很好地扩展。这是在共享 BEV 表示中统一多模态感感知特征的关键推动因素。本文的两项并行工作也发现了仅相机 3D 检测中的效率瓶颈。他们通过假设均匀的深度分布或截断每个 BEV 网格内的点来近似视图变换器。相比之下,本文的技术是精确的,没有任何近似,同时仍然更快。
全卷积融合
将所有感知特征转换为共享 BEV 表示后,可以轻松地将它们用元素运算符(例如串联)融合在一起。尽管在同一空间中,由于视图变换器中的深度不准确,LiDAR BEV 特征和相机 BEV 特征仍然可能在一定程度上在空间上错位。为此,本文应用基于卷积的 BEV 编码器(带有一些残差块)来补偿这种局部未对准。本文的方法可能会受益于更准确的深度估计(例如,使用地面实况深度监督视图变换器)。
Multi-Task Heads
本文将多个特定于任务的头应用于融合的 BEV 特征图。方法适用于大多数 3D 感知任务。展示了两个示例:3D 目标检测和 BEV 场景分割。
Detection. 使用特定于类的中心热图头来预测所有对象的中心位置,并使用一些回归头来估计对象的大小、旋转和速度。建议读者参考之前的 3D 检测论文 [TransFusion-2022, Center-Based 3D Object Detection and Tracking-2021, Multimodal Virtual Point 3D Detection-2021] 以了解更多详细信息。
Segmentation. 不同的场景类别可能会重叠(例如,人行横道是可行驶空间的子集)。因此,将这个问题表述为多个二元语义分割,每个类别一个。按照 CVT [2022] 来训练具有标准focal loss的分割头 [2017]。文章来源:https://www.toymoban.com/news/detail-734468.html
结论
推出了 BEVFusion,这是一种用于多任务多传感器 3D 感知的高效通用框架。 BEVFusion 将相机和 LiDAR 功能统一在共享 BEV 空间中,完全保留几何和语义信息。为了实现这一目标,将相机到 BEV 的转换速度加快了 40 倍以上。 BEVFusion 打破了point-level融合是多传感器感知系统黄金选择的长期惯例。 BEVFusion 在 3D 检测和 BEV 场景分割任务上实现了最先进的性能,与现有解决方案相比,计算量减少了 1.5-1.9 倍,测得的加速速度提高了 1.3-1.6 倍。希望 BEVFusion 能够作为一个简单但强大的基线来激发未来多任务多传感器融合的研究。
局限性 目前,BEVFusion 在联合多任务训练中仍然存在性能下降,尚未释放多任务设置中更大推理加速的潜力。更准确的深度估计也是本文中尚未探索的方向,它有可能进一步提高 BEVFusion 的性能。
Societal Impacts. 高效、准确的多传感器感知对于自动驾驶汽车的安全至关重要。 BEVFusion 将最先进的多传感器融合模型的计算成本降低了一半,并在小而远的物体以及雨天和夜间条件下实现了大幅精度提高。它为安全、稳健的自动驾驶铺平了道路。文章来源地址https://www.toymoban.com/news/detail-734468.html
到了这里,关于[论文阅读]BEVFusion——基于统一BEV特征的多任务多传感器融合的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!