论文链接:[2205.13542] BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird's-Eye View Representation (arxiv.org)
代码链接:BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird's-Eye View Representation (github.com)
摘要
多传感器融合对于精确可靠的自动驾驶系统至关重要。最近的方法是基于点级融合:用相机功能增强LiDAR点云。然而,相机到激光雷达的投影抛弃了相机特征的语义密度,阻碍了这种方法的有效性,特别是对于面向语义的任务(如3D场景分割)。在本文中,我们使用BEVFusion打破了这种根深蒂固的惯例,BEVFusion是一种高效且通用的多任务多传感器融合框架。它统一了共享鸟瞰(BEV)表示空间中的多模态特征,很好地保留了几何信息和语义信息。为了实现这一目标,我们通过优化的BEV池来诊断并解除视图转换中的关键效率瓶颈,将延迟降低了40倍以上。BEVFusion基本上是任务不可知的,几乎不需要任何架构更改就能无缝支持不同的3D感知任务。在nuScenes上建立了新的技术水平,在三维目标检测上mAP和NDS提高1.3%,在BEV地图分割上mIoU提高13.6%,计算成本降低1.9倍。
一、前言
自动驾驶系统配备了各种传感器。例如,Waymo的自动驾驶汽车有29个摄像头,6个雷达和5个激光雷达。不同的传感器提供互补的信号:例如,相机捕获丰富的语义信息,激光雷达提供准确的空间信息,而雷达提供即时速度估计。因此,多传感器融合对于准确可靠的感知具有重要意义。
来自不同传感器的数据以完全不同的方式表示:例如,摄像机以透视视图捕获数据,激光雷达以3D视图捕获数据。为了解决这种视图差异,我们必须找到一种适合多任务多模态特征融合的统一表示。由于在2D感知方面取得了巨大的成功,自然的想法是将激光雷达点云投射到相机上,并使用2D cnn处理RGB-D数据。然而,这种激光雷达到相机的投影引入了严重的几何失真(见图1a),这使得它在面向几何的任务中效果较差,例如3D物体识别。
最近的传感器融合方法遵循另一个方向。他们用语义标签、CNN特征或二维图像中的虚拟点来增强LiDAR点云,然后应用现有的基于激光雷达的三维包围盒预测检测器。尽管这些点级融合方法在大规模检测基准测试中表现出了出色的性能,但在面向语义的任务(如BEV地图分割)上几乎不起作用[37,39,22,70]。这是因为相机到激光雷达的投影在语义上是有损耗的(见图1b):对于一个典型的32束激光雷达扫描仪,只有5%的相机特征将匹配到一个激光雷达点,而所有其他特征将被丢弃。对于稀疏的激光雷达(或成像雷达)来说,这种密度差异将变得更加严重。
在本文中,他们提出了BEVFusion来统一共享鸟瞰(BEV)表示空间中的多模态特征,用于任务不确定学习。他们保持了几何结构和语义密度(见图1c),自然支持大多数3D感知任务(因为它们的输出空间可以自然地在BEV中捕获)。在将所有特征转换为BEV的过程中,他们发现了视图转换中的主要效率瓶颈:即,仅BEV池化操作就占用了模型运行时的80%以上。然后,他们提出了一个具有预计算和缩短间隔的专用内核来消除这个瓶颈,实现了超过40倍的加速。最后,他们应用全卷积BEV编码器融合统一的BEV特征,并添加一些任务特定的头部来支持不同的目标任务。
BEVFusion在nuScenes基准上设置了新的最先进的性能。在3D物体检测方面,它在所有解决方案中排名第一。BEVFusion在BEV地图分割方面展示了更显著的改进。在现有融合方法难以实现的情况下,其mIoU比只有摄像头的模型提高了6%,比只有lidar的模型提高了13.6%。BEVFusion是高效的,以1.9倍的计算成本提供所有这些结果。
BEVFusion打破了长期以来认为点级融合是多传感器融合的最佳解决方案的观点。简单也是它的关键优势。他们希望这项工作将为未来的传感器融合研究提供一个简单而强大的基线,并激励研究人员重新思考通用多任务多传感器融合的设计和范式。
二、方法
BEVFusion专注于多传感器融合(即多视角摄像机和激光雷达),用于多任务3D感知(即检测和分割)。他们在图2中提供了框架的概述。给定不同的感官输入,他们首先应用模式特定编码器来提取它们的特征。他们将多模态特征转换为统一的BEV表示,同时保留几何和语义信息。他们识别了视图转换的效率瓶颈,并通过预计算和间隔缩减来加速BEV池化。然后,他们将基于卷积的BEV编码器应用于统一的BEV特征,以缓解不同特征之间的局部错位。最后,他们添加了一些特定于任务的头来支持不同的3D任务。
2.1 统一表示
不同的视图中可以存在不同的特征。例如,相机特征在透视视图中,而激光雷达/雷达特征通常在3D/鸟瞰视图中。即使是相机功能,每个功能都有不同的视角(即前、后、左、右)。这个视图差异使得特征融合变得困难,因为不同特征张量中的相同元素可能对应完全不同的空间位置(在这种情况下,naïve elementwise特征融合将不起作用)。因此,找到一个共享的表示是至关重要的,这样(1)所有传感器特征都可以很容易地转换为它而不丢失信息,(2)它适合于不同类型的任务。
相机。在RGB-D数据的激励下,一种选择是将LiDAR点云投影到相机平面上,并渲染2.5D稀疏深度。然而,这种转换在几何上是有损的。深度图上的两个邻居在3D空间中可以彼此远离。这使得相机视图对于专注于物体/场景几何的任务(如3D物体检测)的效果较差。
激光雷达。大多数最先进的传感器融合方法用相应的摄像机特征(例如语义标签、CNN特征或虚拟点)装饰LiDAR点。然而,这种摄像头到激光雷达的投影在语义上是有损耗的。相机和激光雷达功能的密度有很大的不同,导致只有不到5%的相机功能与激光雷达点匹配(对于32通道激光雷达扫描仪)。放弃相机特征的语义密度严重损害了模型在面向语义任务(如BEV地图分割)上的性能。类似的缺点也适用于潜在空间中的最新融合方法(例如,对象查询)。
鸟瞰图。采用鸟瞰图(BEV)作为融合的统一表示。这个视图对几乎所有的感知任务都是友好的,因为输出空间也是在BEV中。更重要的是,向BEV的转换同时保持几何结构(来自激光雷达特征)和语义密度(来自相机特征)。一方面,LiDAR- bev投影将稀疏的LiDAR特征沿高度维度平坦化,从而不会在图1a中产生几何失真。另一方面,相机到BEV投影将每个相机特征像素投射回3D空间中的射线(下一节将详细介绍),这可能导致图1c中密集的BEV特征映射,其中保留了来自相机的完整语义信息。
2.2 高效的摄像头到BEV的转换
摄像头到BEV的转换不是简单的,因为与每个摄像头特征像素相关的深度本质上是模糊的。根据LSS和BEVDet,他们明确地预测了每个像素的离散深度分布。然后,他们将每个特征像素沿摄像机射线分散到D个离散点,并根据相应的深度概率重新缩放相关特征(图3a)。这将生成一个大小为N HW D的相机特征点云,其中N是相机的数量,(H, W)是相机特征映射的大小。该三维特征点云沿x、y轴进行量化,步长为r(例如0.4m)。他们使用BEV池化操作来聚集每个r × r BEV网格中的所有特征,并沿z轴将特征平坦化。
虽然简单,但BEV池化的效率和速度惊人地低,在RTX 3090 GPU上需要超过500毫秒(而他们模型的其余部分只需要大约100毫秒)。这是因为摄像特征点云非常大:对于典型的工作负载,每帧可能生成大约200万个点,比激光雷达特征点云的密度大两个数量级。为了克服这一效率瓶颈,他们提出了通过预计算和间隔缩短来优化BEV池。
预先计算。BEV池化的第一步是将摄像机特征点云中的每个点与BEV网格关联。与LiDAR点云不同,相机特征点云的坐标是固定的(只要相机的intrinsic和extrinsics保持不变,这通常是在适当校准后的情况下)。在此基础上,他们预先计算每个点的3D坐标和BEV网格索引。他们还根据网格索引对所有点进行排序,并记录每个点的排名。在推理过程中,他们只需要根据预先计算的秩对所有特征点进行重新排序。这种缓存机制可以将网格关联的延迟从17ms减少到4ms。
间隔的减少。网格关联后,同一BEV网格内的所有点在张量表示中都是连续的。BEV池化的下一步是通过一些对称函数(例如,均值、最大值和和)聚合每个BEV网格中的特征。如图3b所示,现有实现首先计算所有点的前缀和,然后减去索引变化边界处的值。然而,前缀和操作需要GPU上的树约简,并产生许多未使用的部分和(因为他们只需要边界上的那些值),这两者都是低效的。为了加速特征聚合,他们实现了一个专门的GPU内核,它直接在BEV网格上并行:他们为每个网格分配一个GPU线程,计算它的间隔和并将结果写回来。该内核消除了输出之间的依赖关系(因此不需要多级树约化),并避免将部分和写入DRAM,将特征聚合的延迟从500ms减少到2ms(图3c)。
其他。通过优化的BEV池化,相机到BEV的转换速度提高了40倍:延迟从超过500ms减少到12ms(仅占他们模型端到端运行时间的10%),并且在不同的特征分辨率上都能很好地伸缩(图3d)。这是在共享BEV表示中统一多模态感官特征的关键使能器。我们同时进行的两项工作也确定了仅在相机的3D检测中的效率瓶颈。他们通过假设均匀的深度分布或截断每个BEV网格中的点来近似视图转换器。相比之下,他们的技术是精确的,没有任何近似,同时仍然更快。
2.3 全卷积融合
将所有的感官特征转换为共享的BEV表示,他们可以很容易地用一个元素操作符(如拼接)将它们融合在一起。尽管在同一空间中,由于视图转换器的深度不准确,LiDAR BEV特征和相机BEV特征仍然会在一定程度上出现空间错位。为此,他们应用了一个基于卷积的BEV编码器(带有一些剩余块)来补偿这种局部失调。他们的方法可能从更精确的深度估计中受益(例如,用地面真实深度监视视图转换器),他们将其留给未来的工作。
2.4 多任务头
他们将多个特定于任务的头应用到融合BEV特征图中。他们的方法适用于大多数3D感知任务。他们展示了两个例子:三维物体检测和BEV地图分割。
检测。他们使用特定于类的中心热图头来预测所有对象的中心位置,并使用一些回归头来估计对象的大小、旋转和速度。我们建议读者参考之前的3D检测论文[1,67,68]了解更多细节。
分割。不同的地图类别可能会重叠(例如,人行横道是可驾驶空间的子集)。因此,他们将这个问题表述为多个二进制语义分割,每个类一个。他们遵循CVT,用标准focal loss来训练分割头。
版权归原作者 SeaShawnChan 所有, 如有侵权,请联系我们删除。