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

news2024/11/20 4:24:10

论文地址: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 函数。
在这里插入图片描述

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。
    在这里插入图片描述

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.coloradmin.cn/o/502342.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MySQL】数据库的增删改查二:CURD

目录 ​ 需要知道 🌟一、增加数据 🌈1、语法 🌈2、单行数据,全列插入 🌈3、多行数据,全列插入 🌟二、查询数据 🌈1、全列查询 🌈2、指定列查询 &#…

Nacos集群部署配置Nginx负载均衡

Nacos集群部署配置Nginx负载均衡 1|新建nacos文件夹 mkdir nacos 新建文件夹 cd nacos 进入文件夹2|下载Nacos安装包(前提是云服务器,有网。也可以在windows下载好再上传) wget https://github.com/alibaba/nacos/releases/download/2…

新品发布 | 12通道CAN FD转USB接口卡全新上市!

新品发布 ON 05.05 TC1018是同星智能开发的一款12路CAN FD总线转USB接口卡,配合我们的TSMaster软件可以监控、分析和仿真CAN FD总线数据。广泛应用于汽车、工业、特种机械和其他行业,用于CAN总线测试与分析、UDS诊断和ECU刷写等方面。 TC1018-产品简介…

weka3.8.6的安装与使用

目录 背景 一、安装 二、使用explorer 1. 介绍 2.打开自带的数据集(Preprocess) 1.打开步骤 2.查看属性和数据编辑 3.classify 4.Cluster 5.Associate 6.Select attributes 7.Visualize 待补充 背景 Weka的全名是怀卡托智能分析环境(Waikato Environme…

进程调度/页面置换/磁盘调度算法

进程调度算法 进程调度算法也称 CPU 调度算法,毕竟进程是由 CPU 调度的。 当 CPU 空闲时,操作系统就选择内存中的某个「就绪状态」的进程,并给其分配 CPU。 什么时候会发生 CPU 调度呢?通常有以下情况: 当进程从运…

AIGC:【LLM(二)】——LangChain:由LLMs驱动的应用开发框架

文章目录 一.背景介绍二.LangChain简介2.1 常见应用场景 三.LangChain特点3.1 优点3.2 不足 四.LangChain功能4.1 基础功能4.2 功能模块4.2.1 LLM和Prompts4.2.2 Chain4.2.3 Agent4.2.4 Memory4.2.5 Embedding4.2.6 Models4.2.7 Indexes 五.实战案例5.1 背景需求5.2 数据准备5.…

抖音seo矩阵系统源码是什么?

抖音SEO矩阵系统源码是一款功能强大的营销工具,能够帮助用户进行抖音视频的SEO优化,使其在抖音平台上获得更高的曝光度和流量。该系统结合了SEO的相关算法和技巧,提供了完整的优化方案,可帮助用户提高视频的曝光率、获得更多的点赞…

阻塞队列原理及Java实现

目录 1.阻塞队列 1.举例:包饺子 1.通过多线程来实现 2.通过阻塞队列来实现 2.消息队列 1.解耦 2.削峰填谷 用消息队列来解决 3.异步操作 3.实现一个阻塞队列 使用循环数组 4.实现生产者和消费者模型 完整代码 5.虚假唤醒 1.概念及原因 2.解决方法 1…

关于GD32替换STM32(pin to pin)搭载rt-thread操作系统,需要注意的问题总结

1、SystemInit()函数 该函数位于启动文件中的Reset_Handler中(具体实现在GD32位于system_gd32f4xx.c,STM32位于system_stm32f4xx.c中,几乎所有的文件,你只要把gd换成st就能找到对应的文件),gd的叫startup_gd32Fxxx.s,…

4.HIVE函数

1.hive函数 1.1 空值替换 两个输入:nvl(col,default_num) : 如果colum不为null,返回col.否则返回default_num 多个输入:coalesce(col1, col2, col3, ....) :从左到右找第一个不为null的值 例如:求所有员工的平均薪…

【操作系统】总结

依旧是小林coding 的内容 存储架构 现代 CPU 都是多核心的,线程可能在不同 CPU 核心来回切换执行,这对 CPU Cache 不是有利的,虽然 L3 Cache 是多核心之间共享的,但是 L1 和 L2 Cache 都是每个核心独有的,如果一个线…

VMWare安装windows7虚拟机提示Operating System not found

前提:下载windows7 Gost并创建虚拟机,启动报错:Operating System not found 解决办法 用微PE工具制作iso系统,对虚拟机进行分区 下载地址:https://www.wepe.com.cn/ 制作方法,双击安装程序,选…

最困难的也是最简单的,做好这两点不盈利天理难容

投资者应该时刻记住,在外汇交易中复杂的方法并不总是最好的。Forexclub发现交易中最困难的是正确识别进场点和出场点。 从技术上来说,进入交易是非常容易的,你只需要点击一个按钮,你就在那里交易。但是你会从中获利吗?没人能回答…

【Linux Network】网络编程套接字(代码练习)—UDP

目录 1. 常用接口 2. C/S 回声模拟 3. C/S myshell 的制作 Linux网络编程✨ 1. 常用接口 socket:创建套接字: // 创建 socket 文件描述符 int socket(int domain, int type, int protocol); 返回值: 套接字创建成功返回一个文件描述符 &…

GAMMA电源维修直流高压电源模块RR300-1P

美国GAMMA高压电源维修参数(RR分离式): 输入:220VAC 或 380VAC(视型号而定) 输出电压:550KV,功率:0-10KW或定制 纹波率0.01 ;稳定度0.01/1H 控制部分19英…

(只需两步)让ChatGPT帮你制作出漂亮的PPT

目录 第一步:生成 PPT 代码 第二步:将代码转化为 PPT 还在为制作PPT而烦恼吗? 让ChatGPT来帮您! 本篇文章介绍如何利用ChatGPT一键生成PPT文字和样式,省时省力又专业! (真的只需两步&#xf…

案例实践|云智慧ITSM产品在利星行汽车的运维实践

ITSM(信息技术服务管理)是一种以客户为中心的方法,旨在提高信息技术的效率和效果。在传统零售行业,ITSM可以帮助连锁零售企业提升客户服务水平,通过IT服务台提供快速响应和解决客户的问题和需求。同时, ITS…

PSP - 配置 AlphaFold2 的高效运行环境

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/130560538 AlphaFold2 是由 DeepMind 开发,可以根据蛋白质的氨基酸序列预测其三维结构,准确度经常可以与实验相媲美。DeepMind 和 EMBL 的欧洲生物信息学研…

最新的Ubuntu20安装配置Nagios教程

首先声明,盗帖可耻,我发现有人把我文章复制到百度文库,并设置vip下载,直接照搬别人的还牟利,恶心!!! 目录 一、简介 二、安装配置 1、安装Nagios以及相关插件 a、安装Nagios核心…

Blender渲染动画太慢怎么办?用云渲染啊!

1995 年,荷兰开发者 Ton Roosendaal 开发了三维制作软件 Blender ,这是一款功能强大的 3D 创建工具,用于创建 3D 图形、交互式 3D 应用程序、视频游戏、虚拟现实视频和动画。它自 2002 年以来一直作为开源软件提供,可在 macOS、Li…