点击下方卡片,关注“自动驾驶之心”公众号
ADAS巨卷干货,即可获取
作者:LiteAI (源:知乎)编辑:CV_Autobot
https://www.zhihu.com/question/521842610/answer/2509883257
多传感器融合对于准确可靠的自动驾驶系统至关重要。最近的方法是基于点级融合:用相机特征增强激光雷达点云。然而,相机到激光雷达的投影丢失了相机特征的语义密度,阻碍了这种方法的有效性,特别是对于面向语义的任务(例如 3D 场景分割)。在本文中,我们使用 BEVFusion 打破了这种根深蒂固的惯例,是一种高效且通用的多任务多传感器融合框架。它统一了共享鸟瞰图(BEV)表示空间中的多模态特征,很好地保留了几何和语义信息。为了实现这一点,我们通过优化的 BEV 池化来诊断和提升视图转换中的关键效率瓶颈,将延迟减少 40 倍以上。BEVFusion 基本上与任务无关,并且无缝支持不同的 3D 感知任务,几乎没有架构变化。它建立了 nuScenes 的最新技术,在 3D 目标检测上实现了 1.3% mAP 和 NDS增加,在 BEV 地图分割上实现了 13.6% mIoU增加,计算成本降低了 1.9 倍。
1 BEVFusion
BEVFusion 专注于多传感器融合(即多视图相机和激光雷达),用于多任务 3D 感知(即检测和分割)。图 2 概述了我们的框架。给定不同感知输入,我们首先应用特定模态的编码器来提取它们的特征。我们将多模态特征转换为统一的 BEV 表示,同时保留几何和语义信息。我们确定了视图转换的效率瓶颈,并通过预先计算和间隔缩减来加速 BEV 池化。然后,我们将基于卷积的 BEV 编码器应用于统一的 BEV 特征,以减轻不同特征之间的局部错位。最后,我们附加了一些特定任务的头来支持不同的 3D 任务。
图2 BEVFusion框架。1.1 统一表示
不同的特征可以存在于不同的视图中。例如,相机特征在透视图中,而激光雷达/雷达特征通常在 3D/鸟瞰图中。即使对于相机特征,它们中的每一个都有不同的视角(即前、后、左、右)。这种视图差异使得特征融合变得困难,因为不同特征张量中的相同元素可能对应于完全不同的空间位置(在这种情况下,简单的元素特征融合将不起作用)。因此,找到一个共享表示是至关重要的,这样(1)所有传感器特征都可以很容易地转换,而不会丢失信息,以及(2)它适用于不同类型的任务。
To Camera
受 RGB-D 数据的启发,一种选择是将激光雷达点云投影到相机平面并渲染 2.5D 稀疏深度。但是,这种转换在几何上是有损的。深度图上的两个邻居在 3D 空间中可以彼此远离。这使得相机视图对于专注于目标/场景几何的任务(例如 3D 目标检测)效果较差。
To LiDAR
大多数SOTA传感器融合方法用相应的相机特征(例如语义标签、CNN 特征或虚拟点)来装饰激光雷达点。然而,这种相机到激光雷达的投影在语义上是有损的。摄像头和激光雷达特征具有截然不同的密度,导致只有不到 5% 的摄像头特征与激光雷达点匹配(对于 32 通道激光雷达扫描仪)。放弃相机特征的语义密度会严重损害模型在面向语义的任务(例如 BEV 地图分割)上的性能。类似的缺点也适用于最新的潜在空间中的融合方法(例如目标查询)。
To Bird's-Eye View
我们采用鸟瞰图(BEV)作为融合的统一表示。这种观点对几乎所有感知任务都很友好,因为输出空间也在 BEV 中。更重要的是,向 BEV 的转换保留了几何结构(来自激光雷达特征)和语义密度(来自相机特征)。一方面,激光雷达到 BEV 投影使稀疏的激光雷达特征沿高度维度变平,因此不会在图 1a 中产生几何失真。另一方面,相机到 BEV 投影将每个相机特征像素投射回 3D 空间中的一条射线(在下一节中详细介绍),这可以导致图 1c 中的密集 BEV 特征图保留完整的语义信息相机。
1.2 高效的相机到BEV转换
相机到 BEV 的转换并非微不足道,因为与每个相机特征像素相关的深度本质上是不明确的。在 LSS 之后,我们明确地预测每个像素的离散深度分布。然后,我们将每个特征像素沿相机光线分散到 D 个离散点中,并通过其相应的深度概率重新缩放相关特征(图 3a)。这会生成一个大小为 NHWD 的相机特征点云,其中 N 是相机的数量,(H,W) 是相机特征图的大小。这种 3D 特征点云沿 x、y 轴量化,步长为 r(例如0.4m)。我们使用 BEV 池化操作来聚合每个 r × r BEV 网格内的所有特征,并沿 z 轴展平特征。
图3 相机到BEV转换虽然简单,但 BEV 池化出人意料地低效且缓慢,在 RTX 3090 GPU 上耗时超过 500 毫秒(而我们模型的其余部分只需要大约 100 毫秒)。这是因为相机特征点云非常大:对于典型的工作负载,每帧可能会生成大约 200 万个点,比激光雷达特征点云密集两个数量级。为了消除这个效率瓶颈,我们建议通过预先计算和间隔缩减来优化 BEV 池化。
预先计算
BEV 池化的第一步是将相机特征点云中的每个点与一个 BEV 网格相关联。与激光雷达点云不同的是,相机特征点云的坐标是固定的(只要相机的内参和外参保持不变,通常是经过适当校准后的情况)。受此启发,我们预先计算了每个点的 3D 坐标和 BEV 网格索引。我们还根据网格索引对所有点进行排序并记录每个点的排名。在推理过程中,我们只需要根据预先计算的等级对所有特征点进行重新排序。这种缓存机制可以将网格关联的延迟从 17ms 降低到 4ms。
间隔缩减
网格关联后,同一 BEV 网格内的所有点在张量表示中将是连续的。BEV 池化的下一步是通过一些对称函数(例如均值、最大值和总和)聚合每个 BEV 网格内的特征。如图 3b 所示,现有方法实现首先计算所有点的前缀和,然后减去索引变化的边界处的值。然而,前缀和运算需要在 GPU 上进行树缩减,并产生许多未使用的部分和(因为我们只需要边界上的那些值),这两者都是低效的。为了加速特征聚合,我们实现了一个直接在 BEV 网格上并行化的专用 GPU 内核:我们为每个网格分配一个 GPU 线程,计算其间隔总和并将结果写回。该内核消除了输出之间的依赖关系(因此不需要多级树缩减)并避免将部分和写入 DRAM,将特征聚合的延迟从 500 毫秒减少到 2 毫秒(图 3c)。
Takeaways
使用我们优化的 BEV 池化,相机到 BEV 的转换速度提高了 40 倍:延迟从超过 500 毫秒减少到 12 毫秒(仅占我们模型端到端运行时间的 10%),并且可以很好地跨不同的特征分辨率进行扩展(图3d)。这是在共享 BEV 表示中统一多模态感知特征的关键推动因素。我们的两个同时进行的工作也确定了仅使用相机的 3D 检测中的效率瓶颈。他们通过假设均匀的深度分布或截断每个 BEV 网格内的点来近似视图Transformer。相比之下,我们的技术是精确的,没有任何近似,同时仍然更快。
1.3 全卷积融合
将所有感知特征转换为共享的 BEV 表示后,我们可以轻松地将它们与元素运算符(例如concat)融合在一起。尽管在同一个空间中,由于视图转换器中的深度不准确,激光雷达 BEV 特征和相机 BEV 特征仍然可能在一定程度上在空间上错位。为此,我们应用了基于卷积的 BEV 编码器(带有一些残差块)来补偿这种局部失准。我们的方法可能会受益于更准确的深度估计(例如,监督具有真实深度的视图Transformer),我们将其留给未来的工作。
1.4 多任务头
我们将多个特定任务的头应用于融合的 BEV 特征图。我们的方法适用于大多数 3D 感知任务。我们展示了两个示例:3D 目标检测和 BEV 地图分割。
检测
我们使用特定类别的中心热图头来预测所有目标的中心位置,并使用一些回归头来估计目标大小、旋转和速度。我们向读者推荐以前的 3D 检测论文 [62, 63] 以了解更多详细信息。
分割
不同的地图类别可能重叠(例如人行横道是可驾驶空间的子集)。因此,我们将此问题表述为多个二元语义分割,每个类别一个。我们按照 CVT 用标准 focal loss 训练分割头。
2 实验
我们评估 BEVFusion 在 3D 目标检测和 BEV 地图分割上的相机-激光雷达 融合,涵盖面向几何和语义的任务。我们的框架可以轻松扩展以支持其他类型的传感器(例如雷达和基于事件的相机)和其他 3D 感知任务(例如 3D 目标跟踪和运动预测)。
模型。我们使用 Swin-T 作为我们的图像骨干,并使用 VoxelNet 作为我们的激光雷达骨干。我们应用 FPN 来融合多尺度相机特征,以生成 1/8 输入大小的特征图。我们将相机图像下采样到 256×704,并以 0.075m(用于检测)和 0.1m(用于分割)对激光雷达点云进行体素化。由于检测和分割任务需要具有不同空间范围和大小的 BEV 特征图,我们在每个特定任务的头部之前应用带有双线性插值的网格采样,以在不同的 BEV 特征图之间进行显式转换。
训练。与冻结相机编码器的现有方法不同,我们以端到端的方式训练整个模型。我们同时应用图像和激光雷达数据增强以防止过拟合。使用权重衰减为 10e−2 的 AdamW 进行优化。
数据集。我们在 nuScenes 上评估我们的方法,这是一个在 CC BY-NC-SA 4.0 许可下发布的大型户外数据集。它具有多种标注以支持各种任务(例如 3D 目标检测/跟踪和 BEV 地图分割)。40157 个带注释的样本中的每一个都包含 6 个具有 360 度 FoV 和 32 光束激光雷达扫描的单目相机图像。
2.1 3D目标检测
我们首先在以几何为中心的 3D 目标检测基准上进行实验,其中 BEVFusion 以更低的计算成本和测量的延迟实现了卓越的性能。BEVFusion与现有SOTA方法在nuScenes数据集上的结果如表1所示。
表1 BEVFusion与SOTA 3D目标检测方法在nuScenes的对比结果2.2 BEV地图分割
我们进一步将 BEVFusion 与SOTA 3D 感知模型在以语义为中心的 BEV 地图分割任务上进行比较,其中 BEVFusion 实现了更大的性能提升。BEV地图分割结果如表2所示。
表2 BEVFusion与SOTA多传感器融合方法 在nuScenes数据集和地图分割任务上的对比结果3 分析
我们对 BEVFusion 在不同情况下对单模态模型和SOTA多模态模型进行了深入分析。
天气和光照的分析结果如表3所示。
表3 BEVFusion在不同光照和天气条件下鲁棒性很好目标大小和距离分析结果如图5(a)和(b)所示。稀疏激光雷达如图5(c)所示。
图5 BEVFusion持续超过单模态和多模态检测器多任务学习的结果如表5所示。
表5 联合检测和分割训练。消融实验如表4所示。
表4 消融实验。【自动驾驶之心】全栈技术交流群
自动驾驶之心是国内首个自动驾驶开发者社区,聚焦目标检测、语义分割、关键点检测、车道线、目标跟踪、3D感知、多传感器融合、SLAM、高精地图、规划控制、AI模型部署落地等方向;
加入我们:自动驾驶之心技术交流群汇总!
自动驾驶之心【知识星球】
想要了解更多自动驾驶感知(分类、检测、分割、关键点、车道线、3D感知、多传感器融合、目标跟踪)、自动驾驶定位建图(SLAM、高精地图)、自动驾驶规划控制、领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这里汇聚行业和学术界大佬,前沿技术方向尽在掌握中,期待交流!
整理不易,请点赞和在看