【多传感器融合】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.mzph.cn/news/186884.shtml

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

相关文章

Google Chrome访问出现 NET::ERR_CERT_INVALID

Google Chrome访问出现 NET::ERR_CERT_INVALID然后访问不了当前网站,这个是由于证书失效了,临时解决方式是: 第一种方案: 在Chrome提示“您的连接不是私密连接”页面的空白区域点击一下,然后输入“thisisunsafe”(页…

人工智能 - 目标检测:发展历史、技术全解与实战

目录 一、早期方法:滑动窗口和特征提取滑动窗口机制工作原理 特征提取方法HOG(Histogram of Oriented Gradients)SIFT(Scale-Invariant Feature Transform) 二、深度学习的兴起:CNN在目标检测中的应用CNN的…

[c++]—string类___深度学习string标准库成员函数与非成员函数

要相信别人能做出来自己一定可以做出来,只不过是时间没到而已 目录 🚩string类对象capacity操作 💻reserve()保留 💻resize() 🚩string类对象元素访问操作 💻operator[]和at() 💻operator…

如何让嵌入式开发板使用主机的网络

配置网络 1.开发板配置 将开发板和主机用网线连接 安装 net-tools,使用 ifconfig 命令 或者使用 ip 命令 su root ip a 发现一个 eth0的网口 ip link set xxx up 有多个网口时可以用该命令启用某一个网口 vim /etc/netplan/00-installer-config.yaml写入以下…

HTML—列表、表格、表单

1、列表 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表 1.1 无序列表 作用:布局排列整齐的不需要规定顺序的区域 标签:ul 嵌套 li,ul 是无序列表,li 是列表条目 注意事项&#…

FPGA falsh相关知识总结

1.存储容量是128M/8 Mb16MB 2.有256个sector扇区*每个扇区64KB16MB 3.一页256Byte 4.页编程地址0256 5:在调试SPI时序的时候一定注意,miso和mosi两个管脚只要没发送数据就一定要悬空(处于高组态),不然指令会通过两…

【双向链表的实现】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 1. 双向链表的结构 2. 双向链表的实现 2.1 头文件 ——双向链表的创建及功能函数的定义 2.2 源文件 ——双向链表的功能函数的实现 2.3 源文件 ——双向链表功能的…

Jmeter测试移动接口性能 —— 压测

一般的公司都想知道自己产品的性能瓶颈和以及提升性能,以期大流量来了还撑得住。其实性能测试很难,难点在你不知道性能要达到怎样的需求。难点在于你没有实际的环境场景给你测试,总不能给线上环境你测试吧? 难点在于找性能瓶颈&a…

kafka C++实现消费者

文章目录 1 Kafka 消费者的逻辑2 Kafka 的C API2.1 RdKafka::Conf2.2 RdKafka::Event2.3 RdKafka::EventCb2.4 RdKafka::TopicPartition2.5 RdKafka::RebalanceCb2.6 RdKafka::Message2.7 RdKafka::KafkaConsumer(核心) 3 Kafka 消费者客户端开发3.1 必要…

Linux操作系统虚拟机安装(图文详解)

目录 前言 Linux系统介绍 虚拟机安装 1.安装步骤 2.破解激活步骤 3.创建Linux系统虚拟机 虚拟机的相关设置 1.基础设置 2.语言设置为中文 前言 今天我们开始学习Linux操作系统的安装虚拟机以及相关的Linux的环境配置,后面我还会继续发布Linux系统的相关基…

手机电脑同步的时间管理工具

有不少上班族会发现自己有太多的工作要完成,并且在工作中往往会浪费很多时间在无关紧要的事情上,而不是专注于真正重要的任务,因此没有足够的时间来完成所有任务。在这种情况下,我们可以使用时间管理软件来帮助自己优先考虑重要的…

IIS post .html页面报 405错误

IIS是不允许本地文件默认post请求的,windows10系统下的IIS(10.0版)默认也是不能 post请求\*.html或\*.json文件的 1 需要配置一下,配置如下: 2 双击处理程序映射,添加托管处理程序: 3 请求路径 …

es6 语法 解构 拼接 扩展运算 数组降为 symbol 迭代器 生成器 定时器 map 映射 对象字面量 私有属性 构造函数继承

es6 语法 解构 拼接 扩展运算 数组降为 symbol 迭代器 生成器 定时器 map 映射 对象字面量 私有属性 构造函数继承 promise async await 解构 // 解构var character {name:Brucezzz,pseudonym:Bruce,metadata:{age:32,gender:male,airbags: "说两句啊",airconditio…

springboot+jsp+java人才招聘网站4f21r

本基于springboot的人才招聘网站主要满足3种类型用户的需求,这3种类型用户分别为求职者、企业和管理员,他们分别实现的功能如下。 (1)求职者进入网站后可查看职位信息、企业信息以及职位新闻等,注册登录后可实现申请职…

在MySQL中如何存储一个IPv4地址?

在MySQL如何存储IPv4地址?这个在秋招面试的过程中被问到过,没有答上来,今天猛地想起了这个问题,做一下复盘。 一个IPv4地址是由32位二进制来表示的,用点分十进制表示可以划分为4部分,每部分占8位&#xff…

云时空社会化商业 ERP 系统 service SQL 注入漏洞复现

0x01 产品简介 时空云社会化商业ERP(简称时空云ERP) ,该产品采用JAVA语言和Oracle数据库, 融合用友软件的先进管理理念,汇集各医药企业特色管理需求,通过规范各个流通环节从而提高企业竞争力、降低人员成本…

『PyTorch学习笔记』分布式深度学习训练中的数据并行(DP/DDP) VS 模型并行

分布式深度学习训练中的数据并行(DP/DDP) VS 模型并行 文章目录 一. 介绍二. 并行数据加载2.1. 加载数据步骤2.2. PyTorch 1.0 中的数据加载器(Dataloader) 二. 数据并行2.1. DP(DataParallel)的基本原理2.1.1. 从流程上理解2.1.2. 从模式角度理解2.1.3. 从操作系统角度看2.1.…

11-22 SSM3

书城分页查询 使用mybatis分页插件: 请完成登陆注册 -> 跳转到首页 解决前端上架时间点击切换 以及侧边栏点击由背景颜色的改变 完成超链接的绑定点击时间 -> jquery $(document).ready(function() { // 初始化上架时间状态为 true(上架&…

简明指南:使用Kotlin和Fuel库构建JD.com爬虫

概述 爬虫,作为一种自动化从网络上抓取数据的程序,广泛应用于数据分析、信息提取以及竞争对手监控等领域。不同的实现方式和编程语言都能构建出高效的爬虫工具。在本文中,我们将深入介绍如何充分利用Kotlin和Fuel库,构建一个简单…

道路病害检测数据集RDD2022的标签映射关系【参考自官网给出的label_map.pbtxt文件,附查看代码】

TOC 结论 Label ID: 1, Label Name: D00 Label ID: 2, Label Name: D10 Label ID: 3, Label Name: D20 Label ID: 4, Label Name: D40链接地址 https://github.com/sekilab/RoadDamageDetector/ 查看代码 # 打开 label_map.pbtxt 文件 def read_label_map(file_path):label…