【多传感器融合】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.mfbz.cn/a/206018.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Constraintlayout

goneMargin 约束的View隐藏时的margin 约束链风格 chainStyle 权重 bias 设置宽高比 w,h 百分比 GuideLine 基线 上下的间距 Group 指定一系列View进行绑定进行操作 通过init加载 然后setIds进行绑定 然后通过group进行操作 Layer 设置动画 Barrier Flow

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

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

【模电】放大电路的性能指标

放大电路的性能指标 放大倍数输入电阻输出电阻通频带非线性失真系数最大不失真输出电压最大输出功率与效率 下图所示为放大电路的示意图。 对于信号而言,任何一个放大电路均可看成一个两端口网络。左边为输入端口,当内阻为 R s R\tiny s Rs的正弦波信号…

【Java 并发编程】进程线程、lock、设计模式、线程池...

博主:_LJaXi Or 東方幻想郷 专栏: Java | 从入门到入坟 Java 并发编程 并发编程多线程的入门类和接口线程组和线程优先级线程的状态及主要转化方法线程间的通信重排序和 happens-beforevolatilesynchronized 与锁CAS 与原子操作AQS计划任务Stream 并行计…

uc_09_创建新进程 exec() system()

1 什么是创建新进程(夺舍) 在前面文章中,我们学习了fork()函数用来创建子进程。 子进程是父进程的副本,复制父进程除代码段以外的其他数据,代码段数据和父进程共享。 子进程的PID与父进程不同: 而创建新进程则不同。 与fork()不同…

TZOJ 1387 人见人爱A+B

答案&#xff1a; #include <stdio.h> void time(int ah, int am, int as, int bh, int bm, int bs, int* sum_h, int* sum_m, int* sum_s) //不需要返回值所以定义void函数&#xff0c;前面6个为输入&#xff0c;然后用指针存给后面三个 {*sum_s (as bs) % 60; …

达梦数据库安装(DM8)新版 windows11下安装及超详细使用教程

达梦数据库安装&#xff08;DM8&#xff09;新版 windows11下安装及超详细使用教程 新电脑安装重新写了一下 注意看一下踩坑部分 文章目录 1.DM 数据库安装1.1 windows11安装前准备1.1.0 安装环境要求1.1.1 检查系统信息1.1.2 检查系统内存1.1.3 检查存储空间 1.2 官网下载免…

11 款顶级的免费 iPhone 数据恢复软件

iPhone 拥有巨大的存储容量。您可以在 iPhone 设备上存储图像、文档和视频等数据。有时&#xff0c;您的 iPhone 会发生许多意外事件&#xff0c;例如意外删除&#xff0c;从而导致数据丢失。这里有 11 个最好的免费 iPhone 数据恢复软件&#xff0c;您可以免费下载&#xff0c…

Android Bitmap裁剪/压缩/缩放到限定的最大宽高值,Kotlin

Android Bitmap裁剪/压缩/缩放到限定的最大宽高值&#xff0c;Kotlin private fun cropImage(image: Bitmap): Bitmap {val maxWidth 1024 //假设宽度最大值1024val maxHeight 1024 //假设高度最大值1024val width image.widthval height image.heightif (width < maxWi…

架构的模式

文章目录 &#x1f50a;博主介绍&#x1f964;本文内容&#x1f4e2;文章总结&#x1f4e5;博主目标 &#x1f50a;博主介绍 &#x1f31f;我是廖志伟&#xff0c;一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华大学出版社签约作…

一起学docker系列之十五深入了解 Docker Network:构建容器间通信的桥梁

目录 1 前言2 什么是 Docker Network3 Docker Network 的不同模式3.1 桥接模式&#xff08;Bridge&#xff09;3.2 Host 模式3.3 无网络模式&#xff08;None&#xff09;3.4 容器模式&#xff08;Container&#xff09; 4 Docker Network 命令及用法4.1 docker network ls4.2 …

开关电源基础而又硬核的知识

1.什么是Power Supply? Power Supply是一种提供电力能源的设备&#xff0c;它可以将一种电力能源形式转换成另外一种电力能源形式&#xff0c;并能对其进行控制和调节。 根据转换的形式分类&#xff1a;AC/DC、DC/DC、DC/AC、AC/AC 根据转换的方法分类&#xff1a;线性电源、…

Git分支批量清理利器:自定义命令行插件实战

说在前面 不知道大家平时工作的时候会不会需要经常新建git分支来开发新需求呢&#xff1f;在我这边工作的时候&#xff0c;需求都是以issue的形式来进行开发&#xff0c;每个issue新建一个关联的分支来进行开发&#xff0c;这样可以通过issue看到一个需求完整的开发记录&#x…

STM32F407-14.3.7-01PWM输入模式

PWM 输入模式 此模式是输入捕获模式的一个特例。其实现步骤与输入捕获模式基本相同&#xff0c;仅存在以下不同之处&#xff1a; 例如&#xff0c;可通过以下步骤对应用于 TI1① 的 PWM 的周期&#xff08;位于 TIMx_CCR1⑨ 寄存器中&#xff09;和占空 比&#xff08;位于 …

【投稿优惠|检索稳定】2023年信息系统和工程与数字化经济国际会议(ICISEDE 2023)

2024年信息系统和工程与数字化经济国际会议(ICISEDE 2024) 2024 International Conference on Information Systems and Engineering and the Digital Economy(ICISEDE 2024) [会议简介] 2024 年信息系统和工程与数字化经济国际会议(ICISEDE 2024)将于 2024 年 1 月 20 日在厦门…

⭐ Unity + ARKIT ARFace脸部追踪

相比之前的图像物体检测&#xff0c;这脸部检测实现起来会更加的简单。 &#xff08;1&#xff09;首先我们先在场景中的物体上添加一个AR Face Mananger组件&#xff1a; &#xff08;2&#xff09;以上組件的 Face Prefab所代表的就是脸部的模型也就是覆盖在脸部上面的投影模…

vue3+element-plus+vue-cropper实现裁剪图片上传

1.vue3element-plusvue-cropper实现裁剪图片 element-UI官网element-plus官网vue-croppervue3使用vue-cropper安装&#xff1a;npm install vue-croppernext 2.vue-cropper插件&#xff1a; <vue-cropper :img"option.img" /><script setup>import {reac…

numpy知识库:深入理解numpy.resize函数和数组的resize方法

前言 numpy中的resize函数顾名思义&#xff0c;可以用于调整数组的大小。但具体如何调整&#xff1f;数组形状变了&#xff0c;意味着数组中的元素个数发生了变化(增加或减少)&#xff0c;如何确定resize后的新数组中每个元素的数值呢&#xff1f;本次博文就来探讨并试图回答这…

二进制求和

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

Docker 使用心得

创建一个docker 镜像&#xff0c;相关运行代码&#xff0c;放在docker镜像文件同级&#xff0c; pm2 不能与 docker一起使用&#xff08;&#xff09; # node 服务docker FROM node:10.16.3LABEL author"sj"RUN mkdir -p /var/nodeCOPY ./node /var/nodeWORKDIR /va…
最新文章