BEVFusion A Simple and Robust LiDAR-Camera Fusion Framework 论文学习

news/2024/7/10 3:10:47 标签: 学习, 目标检测, 3d

论文地址:BEVFusion: A Simple and Robust LiDAR-Camera Fusion Framework 论文学习
Github 地址:BEVFusion: A Simple and Robust LiDAR-Camera Fusion Framework 论文学习

1. 解决了什么问题?

将相机和 LiDAR 融合已经成为 3D 检测任务事实上的标准方案,二者的特征可以互补。目前的方法依赖激光雷达点云作为 queries,然后再利用图像空间的特征。但人们发现,当激光雷达失灵时,这个底层假设会使当前的融合方案无法做预测。这就限制了算法在自动驾驶场景的部署。
视觉感知任务,如检测 3D 目标的边框,是 FSD 任务的重要方向。在车上感知系统所有的传感器中,激光雷达和相机是最重要的两个传感器,分别提供周遭环境的点云和图像特征。在早期的感知系统中,人们为每个传感器设计单独的深度模型,然后在后处理阶段融合各类信息。但由于图像缺乏深度信息,很难在纯图像上回归 3D 框。同样,当激光雷达没有接收到足够数量的点时,很难根据点云对目标做分类。
近来,人们设计了 LiDAR-相机融合算法,更好地利用多模态信息。这些算法主要包括:

  • 给定点云的若干个点、LiDAR 到世界变换矩阵、相机到世界的变换矩阵;
  • 将 LiDAR 点或候选框变换到相机坐标系,将它们作为 queries 来选取相应的图像特征。

这是目前 SOTA 3D BEV 感知的基本思路。
但人们忽视了一个底层假设,我们需要激光雷达点来生成图像 queries,目前的 LiDAR-相机融合方法依赖于 LiDAR 原始点云。在现实场景中,如果 LiDAR 输入丢失了,比如目标材质造成 LiDAR 点反射率很低,或者系统故障,或是因为硬件限制,LiDAR 无法看到 360 360 360度,那么现有的融合方案就不能输出有意义的结果。这就从根本上使这些工作无法实际应用。
如下图所示,LiDAR-相机融合方法大致可以分为:

  • 点级融合,将图像特征投影到原始点云,通过原始点云来查询图像特征,;
  • 特征级融合,先将 LiDAR 点或候选框映射到特征空间,然后 query 关联相机的特征,提取 RGB 信息,这是目前 3D 检测的 SOTA 方案。

在这里插入图片描述

2. 提出了什么方法?

本文认为,在 LiDAR-相机融合方案中,不管另一模态是否有效,单模态算法也应该正常工作,而两个模态一起工作时,能进一步提高感知准确率。于是,本文提出了一个简单但新颖的融合架构,BEVFusion,相机流不依赖于 LiDAR 数据的输入,从而弥补了之前方法的缺陷。BEVFusion 有两个独立的流,将相机和激光雷达的原始输入编码为同一个 BEV 空间的特征。然后设计了一个简单的模块来融合这些 BEV 特征,再将最终的特征输入预测 head。
该框架是通用的,可以在该框架中加入相机或激光雷达的单模态 BEV 模型。在相机流使用了 LSS,将多视角图像特征映射成 3D 自车坐标系特征,生成相机 BEV 特征。在 LiDAR 流,选择了三个主流模型,两个 voxel-based 和一个 pillar-based,将 LiDAR 特征编码到 BEV 空间。
此外,提出了一个新的数据增强技术,以 50 % 50\% 50%的概率随机丢弃目标框内的激光雷达点。
在这里插入图片描述

上图展示了 BEVFusion 架构。输入是点云和多视角图像,两个流分别提取特征,并转换到 BEV 空间。i) 将相机视角特征投影到 3D 自车坐标系,生成相机 BEV 特征;ii) 3D 主干网络从点云提取 LiDAR BEV 特征。然后,使用融合模块整合这两个特征。最终,使用检测 head 预测 3D 目标的值。蓝框是预测框,红圈表示 false positive 的预测。

2.1 相机流架构:从多视角图像到 BEV 空间

因为该架构可以融合任意的相机流,作者采用了 LSS 算法。LSS 原本用于 BEV 语义分割任务,而非 3D 检测。作者发现直接使用 LSS 效果并不好,因此将 LSS 架构做了适配,提升其表现。在上图(top) 部分,作者展示了相机流的细节,image-view encoder 将原始图像编码为深度特征,view projector 模块将这些特征变换到 3D 自车坐标系,然后 BEV encoder 将这些特征转换到 BEV 空间。

Image-view encoder

将输入图像编码为语义丰富的深度特征,包括一个提取特征的 2D 主干和多尺度表征目标的 neck。LSS 使用了 ResNet 作为主干,本文则使用的是 Dual-Swin-Tiny 作为主干,它提取的特征更具表征性。然后使用标准的 FPN 提取多尺度分辨率特征。为了更好地对齐这些特征,首先提出了特征自适应模块(ADP)来优化上采样特征。对每个上采样特征使用自适应平均池化和 1 × 1 1\times 1 1×1卷积,然后 concat 操作。

View projector module

图像特征仍在 2D 图像坐标系,作者设计了一个 view projector 模块将图像特征变换到 3D 自车坐标系。使用2D$\rightarrow$3D 视角投影,构建相机 BEV 特征。该 view projector 将图像视角特征作为输入,以分类的方式密集地预测深度信息。然后根据相机外参和预测的图像深度值,可以得到图像视角的特征,在预定义的点云中做渲染,得到一个 pseudo voxel V ∈ R X × Y × Z × C V\in \mathbb{R}^{X\times Y\times Z\times C} VRX×Y×Z×C

BEV encoder module

为了进一步将 voxel 特征 V ∈ R X × Y × Z × C V\in \mathbb{R}^{X\times Y\times Z\times C} VRX×Y×Z×C编码到 BEV 空间特征 F Camera ∈ R X × Y × C C a m e r a \mathbf{F}_{\text{Camera}}\in \mathbb{R}^{X\times Y\times C_{Camera}} FCameraRX×Y×CCamera,作者设计了一个简单的编码模块。作者没有采用池化操作或步长为 2 2 2的 3D 卷积来压缩 z z z维度,而是使用了空间到通道(S2C)操作,通过 reshpe 将 V V V从 4D 张量变换为 3D 张量 V ∈ R X × Y × ( Z C ) V\in \mathbb{R}^{X\times Y\times (ZC)} VRX×Y×(ZC),保留语义信息、降低计算成本。然后使用四个 3 × 3 3\times 3 3×3卷积,逐步降低通道维度为 C Camera C_\text{Camera} CCamera,提取高层级语义信息。LSS 对低分辨率特征做下采样,提取高层级特征,而本文方法则直接在全分辨率相机 BEV 特征上操作,保留了空间信息。

2.2 LiDAR 流架构:从点云到 BEV 空间

该架构可以使用任意的将 LiDAR 点云变换为 BEV 特征的网络, F LiDAR ∈ R X × Y × C LiDAR \mathbf{F}_{\text{LiDAR}}\in\mathbb{R}^{X\times Y\times C_\text{LiDAR}} FLiDARRX×Y×CLiDAR,作为 LiDAR 流使用。常用的方法是对原始点云学习参数化的 voxel,降低 z z z维度,利用由稀疏 3D 卷积组成的网络高效地产生 BEV 空间的特征。作者采用了三个主流算法,PointPillars、CenterPoint 和 TransFusion 作为 LiDAR 流的算法,证明本文架构具有足够的泛化能力。

2.3 动态融合模块

为了从相机( F Camera ∈ R X × Y × C C a m e r a \mathbf{F}_{\text{Camera}}\in \mathbb{R}^{X\times Y\times C_{Camera}} FCameraRX×Y×CCamera)和 LiDAR 传感器( F LiDAR ∈ R X × Y × C LiDAR \mathbf{F}_{\text{LiDAR}}\in\mathbb{R}^{X\times Y\times C_\text{LiDAR}} FLiDARRX×Y×CLiDAR)有效地融合 BEV 特征,作者提出了一个动态融合模块。给定相同空间维度下的两个特征,可以将二者 concat 起来,用可学习的静态权重来融合它们。受到 Squeeze-and-Excitation 机制启发,作者使用了一个简单的通道注意力机制,选择重要的融合特征。该融合模块可以表示为:
F fused = f adaptive ( f static ( [ F Camera , F LiDAR ] ) ) \mathbf{F}_{\text{fused}}=\mathcal{f}_\text{adaptive}(\mathcal{f}_\text{static}([\mathbf{F}_\text{Camera}, \mathbf{F}_\text{LiDAR}])) Ffused=fadaptive(fstatic([FCamera,FLiDAR]))
[ ⋅ , ⋅ ] [\cdot,\cdot] [,]表示通道维度的 concat 操作。 f static \mathcal{f}_\text{static} fstatic表示由 3 × 3 3\times 3 3×3卷积层实现的静态通道和空间融合函数,将 concat 后特征的通道维度降低为 C LiDAR C_\text{LiDAR} CLiDAR。有了输入特征 F ∈ R X × Y × C LiDAR \mathbf{F}\in\mathbb{R}^{X\times Y\times C_\text{LiDAR}} FRX×Y×CLiDAR f adaptive \mathcal{f}_\text{adaptive} fadaptive可以表示为:
f adaptive ( F ) = σ ( W f avg ( F ) ) ⋅ F \mathcal{f}_\text{adaptive}(\mathbf{F})=\sigma(\mathbf{W}f_\text{avg}(\mathbf{F}))\cdot \mathbf{F} fadaptive(F)=σ(Wfavg(F))F
其中, W \mathbf{W} W表示线性变换矩阵(如 1 × 1 1\times 1 1×1卷积), f avg \mathcal{f}_\text{avg} favg表示全局平均池化, σ \sigma σ表示 Sigmoid 函数。
3d75fa17.png#pic_center" alt="在这里插入图片描述" width="500" />

2.4 检测 Head

最终的特征都在 BEV 空间,我们可以利用流行的检测 head 模块。这进一步证明了本架构的泛化性。作者采用了三种检测 head,anchor-based、anchor-free 和 transform-based。

2.5 自适应模块

下图展示了在 FPN 上自适应模块的结构。自适应模块用在 FPN 之上。每个视角的图像的输入形状是 H × W × 3 H\times W\times 3 H×W×3,主干和 FPN 输出多尺度特征 F 2 , F 3 , F 4 , F 5 F_2,F_3,F_4,F_5 F2,F3,F4,F5,形状分别是 H / 4 × W / 4 × C H/4\times W/4\times C H/4×W/4×C H / 8 × W / 8 × C H/8\times W/8\times C H/8×W/8×C H / 16 × W / 16 × C H/16\times W/16\times C H/16×W/16×C H / 32 × W / 32 × C H/32\times W/32\times C H/32×W/32×C。自适应模块对该特征做上采样,使用 torch.nn.Upsample \text{torch.nn.Upsample} torch.nn.Upsample torch.nn.AdaptiveAvgPool2d \text{torch.nn.AdaptiveAvgPool2d} torch.nn.AdaptiveAvgPool2d操作和 1 × 1 1\times 1 1×1卷积层,得到形状为 H / 4 × W / 4 × C H/4\times W/4\times C H/4×W/4×C的特征图。然后,将采样特征 concate 到一起,使用 1 × 1 1\times 1 1×1卷积得到 H / 4 × W / 4 × C H/4\times W/4\times C H/4×W/4×C形状的该视角的特征图。
在这里插入图片描述

2.6 消融实验

Components for camera stream

在下表,作者验证了相机流中每个组成的贡献。在基线模型中,多视角图像编码器采用 ResNet50 和 FPN,BEV 编码器延续了 LSS,使用的是 ResNet18,检测 head 为 PointPillars,只取得了 13.9 % 13.9\% 13.9%mAP 和 24.5 % 24.5\% 24.5%NDS。
通过下表,可以有多个发现:

  • 将 ResNet18 BEV 编码器替换为本文简单的 BEV 编码模块,mAP 和 NDS 分别提升了 4 % 4\% 4% 2.5 % 2.5\% 2.5%
  • 在 FPN 中加入自适应特征对齐模块可以提升检测效果 0.1 % 0.1\% 0.1%
  • 使用更大的 2D 主干 Dual-Swin-Tiny 可提升 4.9 % 4.9\% 4.9% mAP 和 4 % 4\% 4% NDS。
    搭配了 PointPillars 下相机流最终取得了 22.9 % 22.9\% 22.9%mAP 和 31.1 % 31.1\% 31.1%NDS。
    3d973cfc46a0.png#pic_center" alt="在这里插入图片描述" width="350" />

Dynamic fusion module

为了体现本文融合策略的优势,作者在三个不同的 3D 检测器上做了实验:PointPillars、CenterPoint、TransFusion。如下表,使用简单的 Channel & Spatial Fusion,BEVFusion 极大地提升了 PointPillars 的 LiDAR 流(mAP 35.1 % → 51.6 % 35.1\%\rightarrow 51.6\% 35.1%51.6%)、CenterPoint(mAP 57.1 % → 63.0 % 57.1\%\rightarrow 63.0\% 57.1%63.0%)、TransFusion(mAP 64.9 % → 67.3 % 64.9\%\rightarrow 67.3\% 64.9%67.3%)。当使用了自适应特征选取后,PointPillars、CenterPoint 和 TransFusion 分别又提升了 1.9 % , 1.2 % , 0.6 % 1.9\%, 1.2\%, 0.6\% 1.9%,1.2%,0.6%。这些结果证明了融合相机和 LiDAR BEV 特征的必要性,以及本文 dynamic fusion module 选取重要的融合特征的有效性。
在这里插入图片描述


http://www.niftyadmin.cn/n/311106.html

相关文章

001+limou+MySQL的基础命令

0.前言 您好,这里是limou3434的一篇个人博文,感兴趣的话您也可以看看我的其他文章。本博文是借鉴于李小威前辈所著的书籍《SQL 基础教程》所成的博文笔记,这本书真的很适合新手学习数据库相关的内容。本次我想给您带来的是关于MySQL的一些基…

TCP通道和共享链路通道

推送SDK为了适应不同的场景和需求,对于一些对消息及时性、可靠性、自定义性要求高的应用,如即时通讯、社交、游戏等,可能更倾向于使用TCP通道,对于一些对消息节省流量、耗电量、兼容性要求高的应用,如新闻、天气、股票…

有没有免费的云渲染平台?

有没有免费的云渲染平台?相信很多人在找云渲染平台的时候都会先网上查找下有没有免费的平台可以使用,而且也确实看到很多云渲染平台写着“免费渲染”,所以这免费是真的免费还是只是一个噱头呢?下面,由前沿的 云渲染平台…

基于Android的运动跑步社交平台app

需求信息: 一.管理员的功能需求: 1、用户信息:管理用户的注册信息; 2、社区分享:对用户发布的信息进行维护; 二.Android客户端的功能需求: 1、注册登录:通过注册的信息进行登录 2、计步信息:用户…

景区剧本杀开发方案

景区剧本杀软件发展趋势包括以下几个方面: 个性化定制:随着用户需求的不断增加,景区剧本杀软件将更加注重个性化定制,满足不同用户的需求。 跨平台支持:景区剧本杀软件将逐渐实现跨平台支持,比如在…

Linux网络——Shell编程之快捷命令

Linux网络——Shell编程之快捷命令 一、快捷排序 — sort 命令二、快捷去重 — uniq 命令三、快捷替换 — tr 命令四、快速裁剪 — cut 命令五、文件拆分 — split 命令六、文件合并 —paste 命令七、变量扫描器 — eval 命令 一、快捷排序 — sort 命令 sort命令用于以行为单位…

软考A计划-重点考点-专题九(数据结构知识)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

web前端入门-HTML

目录 前言 网页的主要组成部分 HTML与CSS 什么是HTML, 什么是CSS HTML快速入门 HTML中的标签特点 图像标签img 常见属性: h标签 水平分页线标签 CSS引入方式 CSS选择器 元素选择器 id选择器 类选择器 超链接 前言 所谓的web开发就是值我们在网页上看…