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

news2024/11/27 10:13:44

前言

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

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

相关文章

VUE2+THREE.JS点击事件

THREE.JS点击事件 1.增加监听点击事件2.点击事件实现3.记得关闭页面时 销毁此监听事件 1.增加监听点击事件 renderer.domElement.addEventListener("click", this.onClick, false); 注:初始化render时监听 2.点击事件实现 onClick(event) {const raycaster new …

leetcode-142-环形链表(C语言实现)

题目: 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评…

药食同源的食物哪些适合冬季吃?

药食同源的食物是指在中医理论指导下,既是药物又是食物的天然植物和动物,具有营养和药效双重作用。在冬季,由于气候寒冷,人体需要更多的热量和营养来保持温暖和健康,因此药食同源的食物在冬季特别适合食用。以下是几种…

CSS伪类伪元素?:hover,::before,::after使用(举例)

文章目录 什么是CSS伪类?什么是伪元素?怎么用伪元素?可以做些什么?::before,在标签选择器之前添加内容,::after正好与之相反::before,在类选择器之前添加内容(:制作一个悬浮提示窗 参…

认识JVM 一个Java文件的JVM之旅

准备 我是一个java文件,如何实现我的功能呢?需要去JVM(Java Virtual Machine)这个地方旅行。 变身 我高高兴兴的来到JVM,想要开始JVM之旅,它确说:“现在的我还不能进去,需要做一次转换,生成c…

Ubuntu镜像与K8S冲突,容器持续Terminating

问题 记录一次软件冲突BUG: eclipse-temurin:11-jdk(底层Ubuntu 20.04.3 LTS)镜像创建的容器在K8S-1.25.5上无法正常terminating,造成资源浪费,甚至引发K8S资源CPU insufficient报错。具体表现 某些容器镜像在K8S上无…

20个Python源码项目下载

20个很不错的Python项目源码,其中包括适合毕业设计的项目。这些资源中涵盖了Django 3版本的项目: DjangoMysqlBulma实现的商场管理系统源码 PythonDjango实现基于人脸识别的门禁管理系统 PythonFlaskMySQL实现的学生培养计划管理系统 Python大熊猫主题人…

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

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

Linux基本指令(中篇)

目录 8.cp指令(重要) 9.mv指令(重要): 10.cat指令(适合查看小文件内容) 11.more指令(适合查看大文件内容) 12.less指令(重要) 13.head指令和…

SpringBoot 整合 Neo4j 实战(头歌)

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

【腾讯云云上实验室】个人对腾讯云向量数据库的体验心得

目录 前言Tencent Cloud VectorDB概念使用初体验腾讯云向量数据库的优势应用场景有哪些?未来展望番外篇:腾讯云向量数据库的设计核心结语 前言 还是那句话,不用多说想必大家都能猜到,现在技术圈最火的是什么?非人工智…

HyperBDR云容灾v4.10.1发布,划重点:支持UCloud云平台自动化容灾+新增可灵活定义的备份策略

版本更新 HyperBDR云容灾v4.10.1版本来啦! 此次更新为大家带来了多个新功能,下面让我们来看看具体是哪些吧~ 01 策略管理新功能: 多时间段限速功能: 更加灵活的多个时间段限速选择,可以在创建策略时为不同的时间段设…

JavaEE——简单认识CSS

文章目录 一、简单了解什么是 CSS二、CSS 选择器1.标签选择器2.类选择器3.ID 选择器4.后代选择器5.子选择器6.伪类选择器 三、字体属性1.设置字体家族2.设置字体大小3.设置字体粗细4.文字倾斜 四、文本属性1.文本对齐2.文本装饰3.文本缩进4.背景设置 五、圆角矩形六、CSS 盒子模…

【猜数字游戏】用wxPython实现:基本的游戏框架 + 简单的图形用户界面

【猜数字游戏】 写在最前面猜数字游戏 实现【猜数字游戏】安装wxPython全部代码代码解析1. 初始化界面2. 生成随机数3. 处理猜测4. 特殊功能5. 分数计算 游戏小程序呈现结语 写在最前面 看到了一个比较有意思的问题 https://ask.csdn.net/questions/8038039 猜数字游戏 在这…

人工智能_机器学习056_拉格朗日乘子法原理推导_公式由来详解_原理详解---人工智能工作笔记0096

https://blog.csdn.net/Soft_Po/article/details/118332454 这里有老师的一篇文章介绍拉格朗日乘子法的原理推导 结合老师的这篇文章我们来看一下详细的推导过程 可以看到上一节我们说,一个有条件的,函数,可以转换为一个,无条件的函数, 根据拉格朗日乘子法,可以创建出一个等…

3.C转python

1.int()默认是按照十进制来转换的 2.在python中没有字符 3.可以这样写 4.特例 这样写才对(要空语句即pass空语句来占位) 5.python中没有swicth语句 6.while循环例子 7.死循环有时不是Bug 8.for循环例子 其中的range()函数中的第三个常数是步长 例子 再一个例子 9.使用shif…

【Node.js】笔记整理4 - 版本管理工具nvm

写在最前:跟着视频学习只是为了在新手期快速入门。想要学习全面、进阶的知识,需要格外注重实战和官方技术文档,文档建议作为手册使用 系列文章 【Node.js】笔记整理 1 - 基础知识【Node.js】笔记整理 2 - 常用模块【Node.js】笔记整理 3 - n…

无限移动的风景 css3 动画

<style>*{margin:0;padding:0;/* box-sizing: border-box; */}ul{list-style: none;}#nav{width:900px;height:100px;border:2px solid rgb(70, 69, 69);margin:100px auto; overflow: hidden;}#nav ul{animation:moving 5s linear infinite;width:200%; /*怎么模拟动画…

python爬虫基础知识

使用python进行网络爬虫开发之前&#xff0c;我们要对什么是浏览器、什么HTML&#xff0c;HTML构成。请求URL的方法都有一个大概了解才能更清晰的了解如何进行数据爬取。 什么是浏览器&#xff1f; 网页浏览器&#xff0c;简称为浏览器,是一种用于检索并展示万维网信息资源的…

二进制求和

这篇文章会收录到 : 算法通关村第十三关-白银挑战数字与数学高频问题-CSDN博客 二进制求和 描述 : 给你两个二进制字符串 a 和 b &#xff0c;以二进制字符串的形式返回它们的和。 题目 : LeetCode 67.二进制求和 : 67. 二进制求和 分析 : 这个题也是用字符串来表示数据的…