锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

BEVFusion: A Simple and Robust LiDAR-CameraFusion Framework 细读

时间:2022-11-07 21:30:00 zc01029950传感器

BEVFusion这个名字有撞车

两篇关于自动驾驶的文章都是这个简称

  • BEVFusion: Multi-Task Multi-Sensor Fusion with Uni?ed Bird’s-Eye View Representation mit-han-lab/bevfusion: BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird's-Eye View Representation (github.com)

    主要从模型加速的方向进行优化,暂时没有仔细阅读,主要解读第二篇。BEVFusion: A Simple and Robust LiDAR-Camera Fusion Framework ADLab-AutoDrive/BEVFusion: Offical PyTorch implementation of "BEVFusion: A Simple and Robust LiDAR-Camera Fusion Framework" (github.com) 本文主要从工业落地的角度出发,提出解决鲁棒性问题。

另一个有趣的是,从github粗看应该都用了。mmdet3d的框架

在右侧的A Simple and Robust LiDAR-Camera Fusion Framework中,似乎2d还使用了检测mmdet框架。感觉这两个代码的阅读应该比较友好(希望是这样...)

一些背景:

感知模块(如3D BBox检测,3D语义分割)一直是自动驾驶系统中最重要的环节之一。为了实现足够的安全冗余,激光雷达、摄像头、毫米波雷达等多种传感器通常集成在车辆上。这些传感器具有不同的特性,可以起到很好的互补作用。在面向L在4的自动驾驶系统中,激光雷达(以下简称雷达)和摄像头(通常称为视觉)将发挥更重要的作用,因此两者的集成算法在学术和工业上一直是一个非常受欢迎的研究领域。

通常,雷达和视觉的融合策略分为三种类型:决策层融合(通常称为后融合),决策 特征融合(中间层融合),特征融合(前融合),后融合是基于雷达的模型输出的最终结果,如3D BBox, 以及视觉检测器输出的结果,如2D BBox, 集成滤波算法;中间层融合将一个模态输出的最终结果投影到另一个模态的深度学习特征层,然后利用后续的集成网络进行信息集成;前融合直接在两种模式下Raw Data或者整合深度模型的特征层,然后利用神经网络直接输出最终结果。这里有一篇详细的文章;

当然,这些融合策略各有优缺点,但后融合在行业中得到了广泛的应用,因为该方案更灵活,鲁棒性更好。不同模式的输出结果通过人工设计算法和规则进行集成。不同的模式在不同的情况下会有不同的优先级,因此可以更好地处理单个传感器故障对系统的影响。然而,后集成也有许多缺点。首先,信息的使用不是很充分。第二,系统链路变得更加复杂。链路越长,问题就越容易出现。第三,当规则堆积越多时,维护成本就越高。目前学术界推崇的是前融合方案,可以更好地利用神经网络端到端的特点。但前融合方案很少能直接上车,因为我们认为目前的前融合方案鲁棒性不能满足实际要求, 特别是当雷达信号出现问题时,目前的前融合方案几乎无法处理。

在实际环境在实际环境中面临:

1)雷达和相机的外参不允许 由于校准问题或车辆运行过程中的颠簸和抖动,致外参不准确,导致点云和图像直接投影的偏差

2)相机噪声 比如镜头脏了,卡帧了,甚至相机损坏了, 点云投影在图像上找不到相应的特征或得到错误的特征

3)雷达噪声 除了污垢堵塞问题;对于一些低反应物体,雷达本身的特性导致返回点缺失,我们在实际场景中发现,雨天黑色车辆反射点很少,如图2所示;此外,对于一些车型,如国内新销售的威莱ET7.它的激光雷达FOV它只覆盖一个有限的角度;

对于问题1)和2),一些方法已经提供一些兼容能力,比如DeepFusion[7],但问题3)雷达噪声引起的点云缺失无能为力。因为这种方法需要点云坐标Query图像特征,一旦点云缺失,所有手段都无法进行。所以我们提出了BEVFusion与以往的方法不同,雷达点云的处理和图像的处理是独立的。它使用神经网络编码并投射到统一BEV空间,然后两者在BEV整合空间。在这种情况下,雷达和视觉没有主次依赖,可以实现近似后融合的灵活性:单一模式可以独立完成任务。当增加各种模式时,性能将大大提高,但当缺乏或产生噪声时,不会对整体产生破坏性结果。

摘要:

现有的方法主要依赖于来自现有的方法lidar点云作为传感器queries,利用图像空间中的特征。

但对于这些方案,如果lidar如果出现故障,整个框架无法预测,从根本上限制了实际自动驾驶场景的部署能力。

引言

在感知系统的早期阶段,人们为每个传感器设计了一个单独的深度模型[35、36、56、15、51],并通过后处理将信息[30]集成。 请注意,人们发现鸟瞰图 (BEV) 一般来说,汽车不能飞行已经成为自动驾驶场景的事实标准 [19、22、37、15、52、31] 然而,由于缺乏深度信息,在纯图像输入中通常很难回归 3D 边界框,同样,当 LiDAR 没有接收到足够的点时,也很难对点云上的对象进行分类。

最近,人们设计的雷达-相机集成网络可以更好地利用这两种模式的信息。大部分工作可总结如下:

  1. 给一个或多个liadar点云,点云到世界坐标系的转换矩阵,相机到世界坐标系的本质矩阵。

  2. 转换lidar点击或候选框到相机坐标系,然后将其用作queries选择相应的图像特征。

然而,这些方法严重依赖于点云的原始数据(需要从lidar点生成图像queries),然而在 在真实场景中,lidar由于各种原因,数据会丢失(例如) lidar点反射率低、物体纹理、数据传输故障、视野有限等。),导致当前的集成方法在实际工作中无法达到预期的效果。

作者认为,lidar 应满足相机融合的理想框架:

  • 无论是否存在其他模态,单个模态的每个模型都不应该失败。

  • 当有两个模态数据时,可以进一步提高感知的准确性。

因此,作者设计了下图中的集成框架。BEVFusion来自相机和未来的两个独立流lidar原始输入代码是相同的BEV空间

对比不同点云-图像集成框架

因为它是一个通用的集成框架,相机流和lidar可自由选择流动方法。在作者的测试过程中,选择 Lift-Splat-Shoot [32] 作为相机流,它将多视图图像特征投影到 3D ego-car 生成相机的坐标特征 BEV 特征;对于 LiDAR 作者选择了三种流行模型,两种基于体素的模型和一种基于柱子的模型 [56,1,19] 将 LiDAR 特征编码到 BEV 空间中。在 nuScenes 在数据集中,这个简单的框架显示出很强的泛化能力。

相关工作

作者在这里写的是 3.不同的输入模式D检测方法。

  • 单独camera(感觉作者在这里写的有点问题,pointpillar为啥放到camera里面了) 由于KITTI只有单目,所以大多数研究方法都用于解决单目3D目标检测。随着nuScenes和Wayme随着这些新数据集的发展,一些方法开始以多视图图像作为输入进行处理,优于单目图像。 与常见的自动驾驶数据集一样,物体通常在平坦的地面上移动,PointPillars [19] 建议将 3D 特征映射到鸟瞰图 2D 减少计算费用的空间。它很快成为该领域的事实标准 [37, 19, 15, 52, 31, 22]。 Lift-SplatShoot (LSS) [32] 利用深度估计网络提取多视角图像的隐含深度信息,并将相机特征图转换为 3D Ego-car 坐标。方法 [37, 15, 52] 也受到 LSS [32] 并参考 LiDAR 进行深度预测的监督。也可以有类似的想法 BEVDet [15, 14] 这是多视图 3D 最先进的对象检测方法。 MonoDistill [6] 和 LiGA Stereo [11] 通过将 LiDAR 将信息统一到相机分支,以提高性能。

  • 单独lidar LiDAR 根据其特点模式,该方法最初分为两类:i)直接在原始 LiDAR 基于点云行的基于点的方法 [36、35、34、40、55、21] ii) 将原始点云转换为欧几里特征空间,如 3D 体素 [61],特征柱 [19、50、56] 和距离图像 [9、43]。最近,人们开始在单个模型中使用这两种特征模式来增加表达能力[39]。另一项工作是利用鸟瞰相机感知的鸟瞰图[19、9、43]。

  • lidar-camera fusion 由于激光雷达和相机的特点通常包含互补信息,人们开始在两种模式下开发联合优化的方法,并迅速成为 3D 事实标准的检测。如图 1 根据其融合机制,这些方法可分为两类,(a) 点级融合,其中一个是原始的 LiDAR 点击查询图像特征,然后将其连接回附加特征 [16, 41、45、57]; (b) 特征级融合,先将 LiAR 点投影到特征空间 [58] 或生成提案 [1],查询相关的相机特征,然后连接回特征空间 [23]。后者构成了 3D 检测中最先进的方法,具体来说,TransFusion [1] 使用 LiDAR 特征的边界框预测作为查询图像特征的提议,然后采用类似 Transformer 的架构来融合信息回到 LiDAR 功能。同样,DeepFusion [20] 将每个视图图像上的 LiDAR 特征投影为查询,然后利用交叉注意力来处理两种模式。 当前融合机制的一个被忽视的假设是它们严重依赖 LiDAR 点云,事实上,如果缺少 LiDAR 输入,这些方法将不可避免地失败。这将阻碍此类算法在现实环境中的部署。相比之下,我们的 BEVFusion 是一个非常简单但有效的融合框架,它通过将相机分支从 LiDAR 点云中分离出来,从根本上克服了这个问题,如图 1(c) 所示。

  • others

还有其他工作可以利用其他模式,例如通过特征图连接融合相机雷达 [3, 17, 29, 28]。虽然很有趣,但这些 方法超出了我们的工作范围。尽管一项并行工作 [5] 旨在在单个网络中融合多模态信息,但其设计仅限于一个特 定的检测头 [51],而我们的框架可以推广到任意架构。

BEVFusion: A General Framework for LiDAR-Camera Fusion

两个输入流单独处理,转换为BEV空间

  1. Camera stream architecture: From multi-view images to BEV space

    由于我们的框架能够合并任何相机流,我们从一种流行的方法开始,Lift-Splat-Shoot (LSS) [33]。由于 LSS 最初是针对 BEV 语义分割而不是 3D 检测提出的,我们发现直接使用 LSS 架构的性能较差,因此我们适度调整 LSS 以提高性能(消融研究见第 4.5 节)。在图 2(顶部)中,我们详细介绍了相机流的设计,其中包括将原始图像编码为深度特征的 imageview 编码器、将这些特征转换为 3D ego-car 坐标的视图投影仪模块和编码器最后将特征编码到鸟瞰图(BEV)空间中。

    • Image-view Encoder

      旨在将输入图像编码为语义信息丰富的深度特征。它由一个用于基本特征提取的 2D 主干和一个用于尺度变量对象表示的颈部模块组成。与使用卷积神经网络 ResNet [12] 作为主干网络的 LSS [32] 不同,我们使用更具代表性的一种,Dual-Swin-Tiny [24] 作为主干网络。在[32]之后,我们在主干之上使用标准特征金字塔网络(FPN)[25]来利用多尺度分辨率的特征。为了更好地对齐这些特征,我们首先提出了一个简单的特征自适应模块(ADP)来细化上采样的特征。具体来说,我们在连接之前对每个上采样特征应用自适应平均池和 1×1 卷积。见附录二。 A.1 为详细的模块架构。

    • View Projector Module

      由于图像特征仍处于 2D 图像坐标中,我们设计了一个视图投影模块将它们转换为 3D ego-car 坐标。我们应用 [32] 中提出的 2D → 3D 视图投影来构建相机 BEV 特征。所采用的视图投影仪以图像视图特征为输入,通过分类的方式对深度进行密集预测。然后根据相机外部参数和预测的图像深度,我们可以导出图像视图特征以在预定义的点云中进行渲染,并获得伪体素 V ∈ RX×Y×Z×C。

    • BEV Encoder Module

      为了进一步将体素特征 V ∈ RX×Y×Z×C 编码为 BEV 空间特征(FCamera ∈ RX×Y×CCamera ),我们设计了一个简单的编码器模块。我们没有应用池化操作或以步长 2 堆叠 3D 卷积来压缩 z 维度,而是采用空间到通道(S2C)操作 [52] 通过重塑将 V 从 4D 张量转换为 3D 张量 V ∈ RX×Y×(ZC)保留语义信息并降低成本。然后我们使用四个 3×3 卷积层逐渐将通道维度减小到 CCamera 中并提取高级语义信息。与基于下采样低分辨率特征提取高级特征的 LSS [32] 不同,我们的编码器直接处理全分辨率相机 BEV 特征以保留空间信息。

  2. LiDAR stream architecture: From point clouds to BEV space

    同样,我们的框架可以合并任何将 LiDAR 点转换为 BEV 特征的网络,FLiDAR ∈ RX×Y×CLiDAR,作为我们的 LiDAR 流。一种常见的方法是学习原始点的参数化体素化 [61] 以减少 Z 维,然后利用由稀疏 3D 卷积 [54] 组成的网络在 BEV 空间中有效地产生特征。在实践中,我们采用三种流行的方法,PointPillars [19]、CenterPoint [56] 和 TransFusion [1] 作为我们的 LiDAR 流,以展示我们框架的泛化能力。

  3. Dynamic fusion module

    为了有效融合来自两个相机(FCamera ∈ RX×Y×CCamera(FLiDAR ∈ RX×Y×CLiDAR )和 LiDAR )传感器的 BEV 特征,我们在图 3 中提出了一个动态融合模块。给定相同空间维度下的两个特征,一个直观的想法是将它们连接起来,并将它们与可学习的静态权重融合。受 Squeeze-and-Excitation 机制 [13] 的启发,我们应用一个简单的通道注意模块来选择重要的融合特征。我们的融合模块可以表述为:

  4. Detection head

    由于我们框架的最后一个功能是在 BEV 空间中,我们可以利用早期作品中流行的检测头模块。这进一步证明了我们框架的泛化能力。本质上,我们在三个流行的检测头类别之上比较我们的框架,基于锚的[19]、基于无锚的[56]和基于变换的

Experiments

作者使用的nuScenes数据集。每帧包含六个带有周围视图的摄像头和一个来自 LiDAR 的点云。 10 个类有多达 140 万个带注释的 3D 边界框。我们使用 nuScenes 检测分数(NDS)和平均精度(mAP)作为评估指标。

我们使用开源的 MMDetection3D [7] 在 PyTorch 中实现我们的网络。我们使用 Dual-Swin-Tiny [24] 作为图像视图编码器的 2D bakbone 进行 BEVFusion。 PointPillars [19]、CenterPoint [56] 和 TransFusion-L [1] 被选为我们的 LiDAR 流和 3D 检测头。我们将图像尺寸设置为 448 × 800,体素尺寸遵循 LiDAR 流 [19, 56, 1] 的官方设置。我们的训练包括两个阶段:i)我们首先分别使用多视图图像输入和 LiDAR 点云输入来训练 LiDAR 流和相机流。具体来说,我们在 MMDetection3D [7] 中按照 LiDAR 官方设置训练两个流; ii) 然后我们训练 BEVFusion 的另外 9 个 epoch,这些 epoch 继承了两个训练流的权重。请注意,当涉及多视图图像输入时,不应用数据增强(即翻转、旋转或 CBGS [63])。在测试期间,我们遵循 MMDetection3D [7] 中仅 LiDAR 检测器 [19, 56, 1] 的设置,无需任何额外的后处理。

参考链接

BEVFusion: 一个通用且鲁棒的激光雷达和视觉融合框架 - 知乎 (zhihu.com)

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章