【多传感器融合】BEVFusion: 激光雷达和视觉融合框架 NeurIPS 2022

前言

BEVFusion其实有两篇,

【1】BEVFusion: A Simple and Robust LiDAR-Camera Fusion Framework. NeurIPS 2022 | 北大&阿里提出

【2】BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird’s-Eye View Representation 2022 | MIT提出

本文先分享阿里那篇,下面简单总结一下两篇论文。

BEVFusion: A Simple and Robust LiDAR-Camera Fusion Framework:

  • 重点: 介绍了一个融合摄像头和激光雷达数据的框架,用于3D对象检测。其创新之处在于使摄像头流程不依赖激光雷达输入,解决了现有方法过度依赖激光雷达数据的局限性。
  • 方法: BEVFusion框架使用两个独立流程来处理激光雷达和摄像头数据然后在鸟瞰视图(BEV)层面进行融合。这种方法即使在激光雷达功能失常,或摄像头失常的情况下也保证了稳健性。
  • 性能: 在nuScenes数据集上,BEVFusion在平均精度(mAP)方面相比现有方法如PointPillars和CenterPoint显示出显著的改进,证明了其在正常和鲁棒设置下的优越性。

BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird’s-Eye View Representation:

  • 重点: 将传感器融合的概念扩展到多任务多传感器框架,将激光雷达和摄像头数据统一到共享的鸟瞰视图(BEV)空间中。它不仅针对3D对象检测,还针对BEV地图分割
  • 统一表示和效率: 该论文介绍了一个保持几何结构和语义密度的统一BEV表示,并优化了BEV池化操作以提高视图转换过程的效率。
  • 性能和应用: BEVFusion在nuScenes基准测试中展示了在3D对象检测和BEV地图分割方面的最佳性能。与其他方法相比,它在平均精度(mAP)和平均交并比(mIoU)上都有更高的表现,而且计算成本更低。该论文还强调了该框架在不同光照和天气条件下的稳健性。

所以先看阿里那篇,再看MIT那篇,会比较好理解。

目录

前言

一、BEVFusion 简介

二、背景,当前问题,解决方案

三、模型框架

3.1 视觉分支

3.2 点云分支

3.3 动态融合分支

四、实验结果与效果展示


一、BEVFusion 简介

名称:BEVFusion: A Simple and Robust LiDAR-Camera Fusion Framework. NeurIPS 2022 | 北大&阿里提出

简介:提出了一种新颖的融合框架,用于自动驾驶系统中的3D对象检测。

  • 通过两个独立流程一个针对摄像头数据另一个针对激光雷达数据加工数据然后在BEV层面进行融合
  • 摄像头数据流程不依赖激光雷达输入,解决了现有方法在激光雷达故障时无法有效工作的问题。

设计理念:作者认为理想的激光雷达-摄像头融合框架应该是,即使缺少另一种模式,每个单一模态的模型也不应该失败,而两种模态的结合将进一步提高感知精度。为此,提出了一个简单但有效的框架,将激光雷达-摄像头融合依赖关系解耦。 

效果:它有效地集成了现有的单模态BEV模型,通过优化摄像头和激光雷达数据的处理和融合,实现了在不同情景下的精确3D对象检测。

BEVFusion证明了在自动驾驶领域,通过独立处理并融合摄像头和激光雷达数据,可以显著提升3D对象检测的准确性和稳健性,尤其是在激光雷达可能出现故障的真实场景中。

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

开源地址:https://github.com/ADLab-AutoDrive/BEVFusion

二、背景,当前问题,解决方案

背景:

当前在工业界普遍使用的是后融合,因为这种方案比较灵活鲁棒性也更好,不同模态的输出的结果通过人工设计的算法和规则进行整合,不同模态在不同情况下会有不同的使用优先级,因此能够更好的处理单一传感器失效时对系统的影响。

但是后融合缺点也很多,

  • 一是信息的利用不是很充分。
  • 二是把系统链路变得更加复杂,链路越长,越容易出问题。
  • 三是当规则越堆叠越多之后维护代价会很高。

学术界目前比较推崇的是前融合方案,能够更好的利用神经网络端到端的特性。

但是前融合的方案少有能够直接上车的,原因作者认为是目前的前融合方案鲁棒性达不到实际要求, 尤其是当雷达信号出现问题时,目前的前融合方案几乎都无法处理。

前融合当前问题:

作者对比了激光雷达相机融合方法的不同框架,分析之前框架的问题。

  • a)点级融合机制,将图像特征投影到原始点云上;或点云投影到图像;然后进行特征提取。
  • b)特征级融合机制,在每个视图的图像特征上投影点云特征;或每个视图的图像点上投影 点云特征。
  • c)  作者提出了一种新颖而简单的框架,将摄像头网络与激光雷达输入分开的框架。

(a)将点云根据外参和相机内参投影到图,然后进行特征提取;或图像投影点云上,后面就可以通过常用的点云3D检测算法进行处理。

(b)先对雷达点云进行特征提取,然后将特征或者初始预测值按照外参和相机内参,将图像带你投影到点云中。或先图像提取的2D特征,然后将图像特征投影到点云特征中,再接上对应的任务头,目前MVXNet, TransFusion、DeepFusion属于这种类型的工作。

  • 后者构成了3D检测领域的最先进方法,TransFusion使用激光雷达特征的边界框预测作为提议来查询图像特征,然后采用类Transformer架构将信息融合回激光雷达特征。
  • DeepFusion将激光雷达特征投影到每个视图图像上作为查询,然后利用两种模态的交叉注意力。

 前两种方案的有以下缺点:

  1. 校准问题:汽车在行驶过程中可能会遇到不平坦的路面或其他震动,这些都可能导致激光雷达和相机的外部参数发生变化(例如,它们相对于车辆的位置和方向)。这种变化会使得原本准确的点云和图像之间的对应关系出现偏差,进而影响融合数据的准确性。

  2. 相机噪声:多种因素可能导致相机噪声,例如镜头上的污渍、水珠或雾气会阻挡视线,降低图像质量。此外,技术故障如卡帧或摄像机完全损坏也会影响图像数据的完整性和可用性。

  3. 激光雷达噪声:激光雷达在某些情况下可能无法有效探测某些物体。例如,对于某些材料或颜色(如深色车辆),激光雷达的反射率可能非常低,导致返回的点云数据不完整。此外,由于设计或安装限制,某些激光雷达的视场(FOV)可能无法覆盖360度全景,这在特定车型中更为常见,可能导致数据盲区。

DeepFusion通过点云坐标去Query图像特性 ,一定程度兼容“校准问题”和“相机噪声问题”,如果激光雷达噪声导致的点云缺失,也不行了。

(c)BEVFusion框架首先采取独立处理雷达点云和图像,一分支提取点云特征预测3D信息,另一分支也会提取图像特征预测3D信息,再将两者特征投射到统一的BEV空间,在这个空间上进行融合。

在这种方法中,激光雷达和视觉没有了主次依赖关系,提供了类似于后期融合的灵活性:

  • 单一模态可以独立完成任务,增加多种模态后,性能会显著提升。
  • 如果某一模态缺失或产生噪声,也不会对整体结果造成破坏性影响。

三、模型框架

BEVFusion框架首先采取独立处理雷达点云和图像,如下图所示,分支1提取图像特征预测3D信息分支2提取点云特征预测3D信息

再将两者特征投射到统一的BEV空间,在这个空间上进行融合,得到融合分支

BEVFusion作为一个通用框架,其点云分支和视觉分支都能采用多种不同的结构。

  • 对于视觉分支,基于Lift-Splat-Shoot实现。
  • 在点云分支,测试了基于体素(Voxel)和基于柱(Pillar)的编码方式。
  • 在任务头部分,测试了基于锚点(Anchor-based)、无锚点(Anchor-free)以及TransFusion中使用的基于Transformer的头部结构。
  • 融合分支,还改进了融合模块,以更有效地融合不同模态的信息。

3.1 视觉分支

流程思路(基于LSS):

  • 步骤1:2D Backbone提取基础图像特征
  • 步骤2:FPN+ADP,多尺度特征融合;这里做了一些改进。
  • 步骤3:2D → 3D特征转换模块
  • 步骤4:3D → BEV特征编码模块
  • 输出:Camera BEV Features,加上检测任务头得到3D检测结果。

这里先简单将讲一下LSS的思路,是很经典的,很多BEV方法都是基于它实现的。

Lift-Splat-Shoot(LSS):它先从车辆周围的多个摄像头拍摄到的图像中估计出每个点的深度然后把这些图像“提升”到3D空间中。接着,这些3D信息被放置到一个网格上最后将这些信息“投射”到一个平面视图上,也就是我们说的鸟瞰视图(BEV)。 

设计理念:

  1. 视觉分流程:框架首先采用Lift-Splat-Shoot(LSS)方法作为起点,对原始图像进行深层特征的提取。由于LSS原本是为BEV语义分割设计的,因此对于3D检测,作者对LSS进行了适应性改造以提升性能。

  2. 图像编码器:这一部分负责将原始图像转换为包含丰富语义信息的深层特征。作者使用Dual-Swin-Tiny作为主干网络,而非LSS中的ResNet,以提高特征的代表性。并且,在主干网络上使用标准的特征金字塔网络(FPN)来利用多尺度分辨率的特征,并提出了一个简单的自适应模块(ADP)来优化上采样的特征。

  3. 视图投影模块:此模块的作用是将2D图像特征转换为3D自车坐标系中的特征,进而进行深度预测。

  4. BEV编码器模块:这一模块进一步处理体素特征,将其转换为BEV空间的特征。不同于LSS,该模块直接处理全分辨率的BEV特征,以保留空间信息。

补充:

视图投影模块将图像特征转换为3D自车坐标。BEV编码器模块进一步将体素特征编码到BEV空间特征,采用空间到通道(S2C)操作,通过重塑将4D张量转换为3D张量,以保留语义信息并降低成本。然后使用四个3×3卷积层逐渐减少通道维度,并提取高层语义信息。 

FPN+ADP的结构如下,再特征金字塔网络,加入自适应模块。

在处理视图图像时,首先通过背部网络和FPN产生多尺度的特征图F2、F3、F4、F5,这些特征图具有不同的空间尺度。

随后,自适应模块使用上采样和平均池化操作,将所有尺度的特征图统一调整至相同的空间分辨率(H/4×W/4),并通过1×1卷积来整合这些特征。

这种方法能够有效地融合不同尺度的特征,从而为特定视图图像生成丰富的特征表示,有利于提高模型的性能和准确性。

2D → 3D特征转换模块

输入:多尺度融合特征。输出:3D伪体素特征。

  • 步骤1:深度分布估计
  • 步骤2:2D到3D投影计算

详细的后面再补充

3.2 点云分支

输入:原始点云。输出:LiDAR BEV Features,加上检测任务头得到3D检测结果。

流程思路:通过3D Backbone,处理原始点云数据,同时压缩到BEV空间,生成BEV特征。

激光雷达点云数据生成BEV特征,通常采用的方法是:

  1. 参数化体素化:将原始的激光雷达点云转换成体素(小立方体)形式,主要是为了降低数据在垂直(Z)方向上的复杂度。

  2. 稀疏3D卷积:在将点云数据转换为体素形式后,使用稀疏3D卷积网络来高效地从这些体素化数据中提取特征。

作者采用了三种流行的方法,PointPillars、CenterPoint 和 TransFusion 作为点云分支,以展示框架的泛化能力。

3.3 动态融合分支

输入:点云BEV特征 和 图像BEV特征。

输出:融合后的特征,加上检测任务头得到3D检测结果。

  • 步骤1:按通道维度级联点云和图像BEV特征,再通过卷积网络提取级联后的特征。
  • 步骤2:通过全局平均池化和卷积预测实现对级联特征的自适应挑选

动态融合模块设计,如下图所示:

将两种传感器生成的BEV特征首先通过通道连接起来,然后应用一个简单的通道注意力机制来强调重要的特征。这里用到的技术包括:

  1. 静态融合(fstatic):通过3×3卷积层将摄像头和激光雷达的特征进行空间和通道上的静态融合。

  2. 动态适应(fadaptive):引入了一个类似Squeeze-and-Excitation的注意力机制。这个机制通过对融合后的特征进行全局平均池化,然后应用线性变换和sigmoid函数,动态地调整每个通道的重要性。

四、实验结果与效果展示

BEVFusion的泛化能力,做了不同模态消融实验。 作者在 nuScenes 验证集上验证了融合框架的有效性。

多模态的可行性,橙色框表示该范围内物体点云信息被丢弃,但BEVFusion可以通过camera分支恢复。

BEVFusion融合的效果更好:

作者使用 TransFusion-L 作为 LiDAR 流,并在表 2 中展示了 nuScenes 测试集上的结果。

在没有任何测试时间增加或模型集成的情况下,我们的 BEVFusion 超越了所有以前的 LiDAR-相机融合方法,并达到了最佳状态 - 与 TransFusion 的 68.9% mAP 相比,具有 69.2% mAP 的最先进性能。

作者还展示了BEVFusion方法在两种设置(激光雷达和相机故障)上相对于所有以前的基线方法的鲁棒性。

小结

BEVFusion框架使用两个独立流程来处理激光雷达和摄像头数据然后在鸟瞰视图(BEV)层面进行融合。这种方法即使在激光雷达功能失常,或摄像头失常的情况下也保证了稳健性。

BEVFusion框架首先采取独立处理雷达点云和图像,一分支提取点云特征预测3D信息,另一分支也会提取图像特征预测3D信息,再将两者特征投射到统一的BEV空间,在这个空间上进行融合。

在这种方法中,激光雷达和视觉没有了主次依赖关系,提供了类似于后期融合的灵活性:

  • 单一模态可以独立完成任务,增加多种模态后,性能会显著提升。
  • 如果某一模态缺失或产生噪声,也不会对整体结果造成破坏性影响。 

通过实验证明了:框架针对各种相机和激光雷达故障,具有强大鲁棒性和泛化能力。在自动驾驶领域,通过独立处理并融合摄像头和激光雷达数据,可以显著提升3D对象检测的准确性和稳健性,尤其是在激光雷达可能出现故障的真实场景中。

 分享完成~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/206950.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flutter桌面应用开发之毛玻璃效果

目录 效果实现方案依赖库支持平台实现步骤注意事项话题扩展 毛玻璃效果:毛玻璃效果是一种模糊化的视觉效果,常用于图像处理和界面设计中。它可以通过在图像或界面元素上应用高斯模糊来实现。使用毛玻璃效果可以增加图像或界面元素的柔和感,同…

Word 小知识之 docx 和 doc 的区别

下面我们从4个方面为大家总结了有关于docx和doc的区别,一起来看一看: 1. 文件格式 doc和docx的区别中较大的区别就是文件格式不同,一个是二进制一个为XML格式。doc:是早期的Word文档格式,采用二进制文件格式。这种…

Android Studio Giraffe版本遇到的问题

背景 上周固态硬盘挂了,恢复数据之后,重新换了新的固态安装了Win11系统,之前安装的是Android Studio 4.x的版本,这次也是趁着新的系统安装新的Android开发工具。 版本如下: 但是打开以前的Android旧项目时&#xff…

Windows本地搭建Emby媒体库服务器并实现远程访问「内网穿透」

文章目录 1.前言2. Emby网站搭建2.1. Emby下载和安装2.2 Emby网页测试 3. 本地网页发布3.1 注册并安装cpolar内网穿透3.2 Cpolar云端设置3.3 Cpolar内网穿透本地设置 4.公网访问测试5.结语 1.前言 在现代五花八门的网络应用场景中,观看视频绝对是主力应用场景之一&…

【长文干货】Python可视化教程

文章目录 数据介绍Matplotlib散点图折线图柱形图直方图 Seaborn散点图折线图柱形图直方图 Bokeh散点图折线条形图交互式 Plotly基本组合优化:定制化下拉菜单 总结 数据介绍 在这个小费数据集中,我们记录了20世纪90年代初期餐厅顾客在两个半月内给出的小…

C#学习-9课时

P11 IF判断(上) P11 IF判断(中 ) bool→true or false; 为:变量赋值 为:等于(判断) !为:≠ 优先级:大于 using System; using System.Collections.Generic; using System.Linq; using System.Text; usin…

上手 Promethus - 开源监控、报警工具包

名词解释 Promethus 是什么 开源的【系统监控和警报】工具包 专注于: 1)可靠的实时监控 2)收集时间序列数据 3)提供强大的查询语言(PromQL),用于分析这些数据 功能: 1&#xff0…

第三方实验室LIMS管理系统源码,asp.net LIMS源码

LIMS实验室信息管理系统源码 LIMS系统的功能根据实验室的规模和任务而有所不同,其系统主要功能包括:系统维护、基础数据编码管理,样品管理、数据管理、报告管理、报表打印、实验材料管理、设备管理等。它可以取代传统的手工管理模式而给检测实验室带来巨…

[跑代码]BK-SDM: A Lightweight, Fast, and Cheap Version of Stable Diffusion

Installation(下载代码-装环境) conda create -n bk-sdm python3.8 conda activate bk-sdm git clone https://github.com/Nota-NetsPresso/BK-SDM.git cd BK-SDM pip install -r requirements.txt Note on the torch versions weve used torch 1.13.1 for MS-COCO evaluation…

Xilinx Zynq-7000系列FPGA实现视频拼接显示,提供两套工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐FPGA图像处理方案FPGA视频拼接叠加融合方案推荐 3、设计思路详解Video Mixer介绍 4、工程代码1:2路视频拼接 HDMI 输出PL 端 FPGA 逻辑设计PS 端 SDK 软件设计 5、工程代码2:4路视频拼接 HDMI 输出PL 端 FPGA 逻辑设…

maven 基础

maven常用命令 clean &#xff1a;清理 compile&#xff1a;编译 test&#xff1a;测试 package&#xff1a;打包 install&#xff1a;安装 maven坐标书写规范 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</ar…

Javaweb之Vue组件库Element案例的详细解析

4.4.3.3 顶部标题 对于顶部&#xff0c;我们需要实现的效果如下图所示&#xff1a; 所以我们需要修改顶部的文本内容&#xff0c;并且提供背景色的css样式&#xff0c;具体代码如下&#xff1a; <el-header style"font-size:40px;background-color: rgb(238, 241, 24…

【腾讯云 HAI域探秘】借助高性能应用HAI——我也能使用【stable diffusion】制作高级视频封面了

目录 高性能应用服务HAI_GPU云服务器的申请与服务创建 官网地址&#xff1a;高性能应用服务HAI_GPU云服务器_腾讯云 通过高性能应用服务HAI——创建【stable diffusion】 WebUI效果&#xff1a; 服务器后台效果&#xff1a; stable-diffusion服务测试 启动接口服务 配置…

模拟算法【3】——1419.数青蛙

文章目录 &#x1f365;1. 题目&#x1f96e;2. 算法原理&#x1f361;3. 代码实现 &#x1f365;1. 题目 题目链接&#xff1a;1419. 数青蛙 - 力扣&#xff08;LeetCode&#xff09; 给你一个字符串 croakOfFrogs&#xff0c;它表示不同青蛙发出的蛙鸣声&#xff08;字符串 &…

17. Python 数据库操作之MySQL和SQLite实例

目录 1. 简介2. 使用PyMySQL2. 使用SQLite 1. 简介 数据库种类繁多&#xff0c;每种数据库的对外接口实现各不相同&#xff0c;为了方便对数据库进行统一的操作&#xff0c;大部分编程语言都提供了标准化的数据库接口&#xff0c;用户不需要了解每种数据的接口实现细节&#x…

Docker篇之docker部署harbor仓库

一、首先需要安装docker step1&#xff1a;安装docker #1、安装yun源 yum install -y yum-utils #2、配置yum源 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 如果上面源不稳定的话&#xff0c;更换为下列的aliyun源 yu…

SpringBoot 整合 Neo4j 实战(头歌)

文章目录 第1关&#xff1a;认识 Spring DATA Neo4J任务描述相关知识Spring DATA Neo4J - 简介Spring JDBC / Spring ORM 模块的缺点&#xff1a;Spring 数据模块的优点&#xff1a;Spring 数据模块功能&#xff1a;Spring DATA Neo4j 模块的附加功能&#xff1a; Spring DATA …

Modbus RTU协议及modbus库函数使用

一、与Modbus TCP的区别 在一般工业场景使用modbus RTU的场景还是更多一些&#xff0c;modbus RTU基于串行协议进行收发数据&#xff0c;包括RS232/485等工业总线协议。 与modbus TCP不同的是RTU没有报文头MBAP字段&#xff0c;但是在尾部增加了两个CRC检验字节&#xff08;CRC…

【Web】UUCTF 2022 新生赛 个人复现

目录 ①websign ②ez_rce ③ez_upload ④ez_unser ⑤ezsql ⑥ezpop ⑦funmd5 ⑧phonecode ⑨ezrce ①websign 右键打不开&#xff0c;直接抓包发包看源码 ②ez_rce “反引号” 在PHP中会被当作SHELL命令执行 ?codeprintf(l\s /); ?codeprintf(ta\c /ffffffffffl…

特征变换1

编译工具&#xff1a;PyCharm 有些编译工具不用写print可以直接将数据打印出来&#xff0c;pycharm需要写print才会打印出来。 概念 1.特征类型 特征的类型&#xff1a;“离散型”和“连续型” 机器学习算法对特征的类型是有要求的&#xff0c;不是任意类型的特征都可以随意…