[论文阅读]BEVFusion

BEVFusion

BEVFusion: A Simple and Robust LiDAR-Camera Fusion Framework
BEVFusion:简单而强大的激光雷达相机融合框架
论文网址:BEVFusion
论文代码:BEVFusion

简读论文

BEVFusion
论文背景:激光雷达和摄像头是自动驾驶系统中常用的两种传感器。如何有效地融合它们的特征表示,提高3D物体检测的性能,是一个重要的研究问题。本文方法:本文提出了一种简单而有效的激光雷达-摄像头融合框架BEVFusion。主要思想是:1. 设计两个独立的子网络,分别处理激光雷达点云和摄像头图像,将它们转换为鸟瞰图(BEV)特征表示。2. 在BEV空间中融合两个模态的特征表示。3. 通过一个检测头将融合特征转换为3D边界框预测。关键创新:1. 提出了一种新的融合框架,将激光雷达和摄像头处理解耦,不依赖于激光雷达输入。这提高了系统的鲁棒性。2. 在BEV空间中融合特征,可以保留空间信息。3. 实验证明,在正常训练和鲁棒性训练下,BEVFusion均优于当前最先进水平。(下次有时间我会讲解代码)

摘要

融合相机和 LiDAR 信息已成为 3D 目标检测任务的事实上的标准。当前的方法依赖于激光雷达传感器的点云来生成图像特征的查询。然而,人们发现,这一基本假设使得当前的融合框架在激光雷达出现故障时无法产生任何预测,无论是轻微还是严重。这从根本上限制了现实自动驾驶场景的部署能力。相比之下,本文提出了一种令人惊讶的简单而新颖的融合框架,称为 BEVFusion,其摄像头流不依赖于 LiDAR 数据的输入,从而解决了以前方法的缺点。本文的实验表明,BEVFusion超越了正常训练环境下最先进的方法。在模拟各种 LiDAR 故障的鲁棒性训练设置下,BEVFusion明显超越了最先进的方法 15.7% 至 28.9% mAP。据本文所知,BEVFusion是第一个处理现实 LiDAR 故障的框架,并且可以部署到现实场景中,而无需任何后处理程序。

引言

基于视觉的感知任务,例如检测 3D 空间中的边界框,一直是全自动驾驶任务的一个关键方面 。在传统视觉车载感知系统的所有传感器中,激光雷达和摄像头通常是最关键的两个传感器,它们提供周围世界的精确点云和图像特征。在感知系统的早期阶段,人们为每个传感器设计单独的深度模型,并通过后处理方法融合信息。请注意,人们发现鸟瞰图(BEV)已成为自动驾驶场景事实上的标准,因为一般来说,汽车无法飞行。然而,由于缺乏深度信息,通常很难在纯图像输入上回归 3D 边界框,同样,当 LiDAR 没有接收到足够的点时,很难对点云上的对象进行分类。
最近,人们设计了激光雷达相机融合深度网络,以更好地利用两种模式的信息。具体来说,大部分工作可以概括如下:i)给定LiDAR点云中的一个或几个点,LiDAR到世界的变换矩阵和基本矩阵(相机到世界); ii)人们将LiDAR点、或提议转换到相机世界中并将它们用作查询,以选择相应的图像特征。这些工作构成了 3D BEV 感知的最先进方法。
在这里插入图片描述
然而,人们忽视的一个基本假设是,由于需要从 LiDAR 点生成图像查询,当前的 LiDAR-相机融合方法本质上依赖于 LiDAR 传感器的原始点云,如图 1 所示。现实世界中,人们发现如果LiDAR传感器输入缺失,例如由于物体纹理、内部数据传输的系统故障而导致LiDAR点反射率较低,甚至由于硬件限制LiDAR传感器的视场角无法达到360度,当前的融合方法无法产生有意义的结果。这从根本上阻碍了这一工作在现实自动驾驶系统中的适用性。
本文认为,激光雷达-相机融合的理想框架应该是,无论另一种模态是否存在,单一模态的每个模型都不应失败,而同时拥有两种模态将进一步提高感知准确性。为此,本文提出了一个令人惊讶的简单而有效的框架,它消除了当前方法对 LiDAR-相机融合的依赖性,称为 BEVFusion。具体来说,如图 1 © 所示,本文的框架有两个独立的流,将来自相机和 LiDAR 传感器的原始输入编码为同一 BEV 空间内的特征。然后,本文设计一个简单的模块来在这两个流之后融合这些 BEV 级特征,以便最终特征可以传递到现代任务预测头架构中 。
由于本文的框架是通用方法,因此可以将当前用于相机和 LiDAR 的单模态 BEV 模型纳入本文的框架中。本文适度采用 Lift-Splat-Shoot 作为相机流,它将多视图图像特征投影到 3D 汽车坐标特征上,以生成相机 BEV 特征。同样,对于 LiDAR 流,本文选择三种流行的模型,两种基于体素的模型和一种基于pillar的模型 ,将 LiDAR 特征编码到 BEV 空间中。
在 nuScenes 数据集上,BEVFusion显示出很强的泛化能力。在相同的训练设置下,BEVFusion 将 PointPillars 和 CenterPoint 的平均精度 (mAP) 分别提高了 18.4% 和 7.1%,并且与 TransFusion 的 68.9% mAP 相比,实现了 69.2% mAP 的卓越性能,这被认为是最先进的。在以 0.5 的概率将 LiDAR 点随机丢弃在对象边界框内的鲁棒设置下,本文提出了一种新颖的增强技术,表明BEVFusion显着超越了所有基线 15.7% ~28.9% mAP,并证明了本文的方法。
本文的贡献可以总结如下:i)本文发现了当前 LiDAR-相机融合方法的一个被忽视的局限性,即 LiDAR 输入的依赖性; ii)本文提出了一个简单而新颖的框架,将激光雷达相机模态分解为两个独立的流,可以推广到多种现代架构; iii)本文在正常和鲁棒设置下都超越了最先进的融合方法。

相关工作

在这里,本文根据输入模式对 3D 检测方法进行了广泛的分类。
Camera-only. : 在自动驾驶领域,由于 KITTI 基准,近年来仅通过摄像头输入检测 3D 物体已得到广泛研究。由于 KITTI 中只有一个前置摄像头,因此大多数方法都是为了解决单目 3D 检测而开发的。随着具有更多传感器的自动驾驶数据集的发展,例如 nuScenes和 Waymo ,存在开发以多视图图像作为输入的方法的趋势,并且发现这些方法显着优于单目方法。然而,体素处理往往伴随着高计算量。
与常见的自动驾驶数据集一样,Lift-Splat-Shoot (LSS) 使用深度估计网络来提取多视角图像的隐含深度信息,并将相机特征图转换为 3D Ego-car 坐标。方法[Categorical depth distribution network for monocular 3d object detection, Bevdet, M2bev]也受到LSS的启发,并参考LiDAR进行深度预测的监督。类似的想法也可以在 BEVDet 中找到,这是多视图 3D 目标检测中最先进的方法。 MonoDistill 和 LiGA Stereo 通过将 LiDAR 信息统一到相机分支来提高性能。
LiDAR-only. : LiDAR 方法最初根据其特征模态分为两类:i)直接在原始 LiDAR 点云上运行的基于点的方法 ; ii)将原始点云转换为欧几里德特征空间,例如3D体素和特征柱。最近,人们开始在单个模型中利用这两种特征模式来提高表示能力 。另一项工作是利用鸟瞰平面的优势 。
LiDAR-camera fusion. : 由于 LiDAR 和相机产生的特征通常包含互补信息,因此人们开始开发可以在两种模式上联合优化的方法,并很快成为 3D 检测的事实上的标准。如图 1 所示,这些方法根据其融合机制可以分为两类,(a)点级融合,其中通过原始 LiDAR 点查询图像特征,然后将它们连接回作为附加点特征 ; (b) 特征级融合,首先将 LiDAR 点投影到特征空间或生成建议,查询关联的相机特征,然后连接回特征空间。后者构成了 3D 检测中最先进的方法,具体来说,TransFusion 使用 LiDAR 特征的边界框预测作为查询图像特征的建议,然后采用类似 Transformer 的架构来融合信息回到激光雷达功能。类似地,DeepFusion 将 LiDAR 特征投影到每个视图图像上作为查询,然后利用两种模式的交叉注意力。
当前融合机制的一个被忽视的假设是它们严重依赖激光雷达点云,事实上,如果激光雷达输入​​丢失,这些方法将不可避免地失败。这将阻碍此类算法在现实环境中的部署。相比之下, BEVFusion 是一个令人惊讶的简单而有效的融合框架,它通过将相机分支与 LiDAR 点云分离,从根本上克服了这个问题,如图 1© 所示。此外,并行工作 [Feature pyramid networks for object detection, Deepinteraction] 也解决了这个问题,并提出了有效的 LiDAR 相机 3D 感知模型。
Other modalities. : 还有其他工作可以利用其他模式,例如通过特征图串联来融合相机雷达。虽然很有趣,但这些方法超出了本文的工作范围。尽管一项并行工作[Futr3d]旨在将多模态信息融合在单个网络中,但其设计仅限于一个特定的检测头,而本文的框架可以推广到任意架构。

BEVFusion

BEVFusion
如图 2 所示,详细介绍了本文提出的用于 3D 目标检测的框架 BEVFusion。由于基本贡献是将相机网络与 LiDAR 功能分离,因此首先介绍相机和 LiDAR 流的详细架构,然后提出一个动态融合模块来合并这些模式的功能。

相机流架构:从多视图图像到 BEV 空间

由于本文的框架能够合并任何相机流,因此从一种流行的方法开始,即 Lift-Splat-Shoot (LSS) 。由于LSS最初是为BEV语义分割而不是3D检测而提出的,本文发现直接使用LSS架构性能较差,因此适度调整LSS以提高性能。在图 2(顶部)中,详细介绍了相机流的设计,包括将原始图像编码为深层特征的图像视图编码器、将这些特征转换为 3D ego-car坐标的视图投影仪模块以及将这些特征转换为 3D ego-car坐标的编码器。最后将特征编码到鸟瞰(BEV)空间中。
Image-view Encoder.(图像视图编码器) : 旨在将输入图像编码为语义信息丰富的深层特征。它由用于基本特征提取的 2D 主干和用于尺度变量对象表示的颈部模块组成。与LSS使用卷积神经网络ResNet作为主干网络不同,本文使用更具代表性的Dual-Swin-Tiny作为主干网络。继LSS之后,本文在主干网之上使用标准特征金字塔网络(FPN)来利用多尺度分辨率的特征。为了更好地对齐这些特征,首先提出一个简单的特征自适应模块(ADP)来细化上采样的特征。具体来说,在连接之前对每个上采样特征应用自适应平均池化和 1 × 1 卷积。

adp_list = []
for i in range(self.num_outs):if i==0:resize = nn.AdaptiveAvgPool2d(self.target_size)else:resize = nn.Upsample(size = self.target_size, mode='bilinear', align_corners=True)adp = nn.Sequential(resize,ConvModule(self.out_channels,self.out_channels,1,padding=0,conv_cfg=fuse_conv_cfg,norm_cfg=norm_cfg,act_cfg=act_cfg,inplace=False),)adp_list.append(adp)
self.adp = nn.ModuleList(adp_list)

View Projector Module.(投影模块):由于图像特征仍然是 2D 图像坐标,本文设计了一个视图投影仪模块将它们转换为 3D efo-car坐标。本文应用LSS中提出的2D→3D视图投影来构建Camera BEV特征。所采用的视图投影仪以图像视图特征为输入,通过分类方式密集地预测深度。然后,根据相机外在参数和预测的图像深度,可以导出要在预定义点云中渲染的图像视图特征,并获得伪体素 V ∈ RX×Y×Z×C。
BEV Encoder Module.(BEV 编码器模块):为了进一步将体素特征 V ∈ RX×Y×Z×C 编码到 BEV 空间特征(FCamera ∈ RX×Y×CCamera )中,设计了一个简单的编码器模块。本文没有应用池化操作或堆叠步长为 2 的 3D 卷积来压缩 z 维度,而是采用空间到通道 (S2C) 操作通过重塑将 V 从 4D 张量转换为 3D 张量 V ∈ RX×Y×(ZC)保留语义信息并降低成本。然后,使用四个 3×3 卷积层逐渐减少 CCamera 的通道维度并提取高级语义信息。与基于下采样低分辨率特征提取高级特征的 LSS 不同,本文的编码器直接处理全分辨率相机 BEV 特征以保留空间信息。

LiDAR 流架构:从点云到 BEV 空间

类似地,本文的框架可以合并任何将 LiDAR 点转换为 BEV 特征的网络,FLiDAR ∈ RX×Y×CLiDAR ,作为本文的 LiDAR 流。一种常见的方法是学习原始点的参数化体素化以减少 Z 维度,然后利用由稀疏 3D 卷积组成的网络来有效地生成 BEV 空间中的特征。在实践中,采用三种流行的方法:PointPillars 、CenterPoint 和 TransFusion 作为 LiDAR 流来展示本文框架的泛化能力。

Dynamic fusion module(动态融合模块)

为了有效融合来自相机(FCamera ® RX×Y×CCamera )和LiDAR(FLiDAR ® RX×Y×CLiDAR )传感器的BEV特征,本文在图3中提出了一个动态融合模块。给定相同空间维度下的两个特征,一个直观的想法是将它们连接起来并将它们与可学习的静态权重融合。受Squeeze-and-Excitation mechanism的启发,本文应用一个简单的通道注意模块来选择重要的融合特征。本文的融合模块可以表述为:
在这里插入图片描述
其中[·,·]表示沿通道维度的串联操作。 fstatic 是一个静态通道和空间融合函数,由 3×3 卷积层实现,用于减少 CLiDAR 中连接特征的通道维度。对于输入特征 F ∈ RX×Y×CLiDAR ,fadaptive 的公式为:
在这里插入图片描述
其中 W 表示线性变换矩阵(例如 1x1 卷积),favg 表示全局平均池化,σ 表示 sigmoid 函数。

Detection head

由于本文框架的最终功能是在 BEV 空间中,因此可以利用早期作品中流行的检测头模块。这进一步证明了本文框架的泛化能力。本质上,将本文的框架与三种流行的检测头类别进行比较:基于锚点的、基于无锚点的和基于变换的。

结论

在本文中,介绍了 BEVFusion,这是一种非常简单但独特的 LiDAR-相机融合框架,它消除了先前方法对 LiDAR-相机融合的依赖性。本文的框架包含两个独立的流,将原始相机和 LiDAR 传感器输入编码为同一 BEV 空间中的特征,然后是一个简单的模块来融合这些特征,以便它们可以传递到现代任务预测头架构中。大量的实验证明了我们的框架针对各种相机和激光雷达故障的强大鲁棒性和泛化能力。本文希望本文的工作能够激发对自动驾驶任务的强大多模态融合的进一步研究。

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

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

相关文章

UE Http笔记

c参考链接 UE4 开发如何使用 Http 请求_wx61ae2f5191643的技术博客_51CTO博客 虚幻引擎:UEC如何对JSON文件进行读写?-CSDN博客 UE4 HTTP使用 官方免费插件 VaRest 在代码插件创建的VaRest - 虚幻引擎商城 UE5在蓝图中使用Varest插件Get,Post两种常见请求方式…

webpack学习-3.管理输出

webpack学习-3.管理输出 1.简单练手2.设置 HtmlWebpackPlugin3.清理 /dist 文件夹4.manifest5.总结 1.简单练手 官网的第一个预先准备,是多入口的。 const path require(path);module.exports {entry: {index: ./src/index.js,print: ./src/print.js,},output: …

axios调接口传参特殊字符丢失的问题(encodeURI 和 encodeURIComponent)

1、axios调接口特殊字符丢失的问题 项目开发过程中遇到一个接口传参,参数带特殊字符,axios调接口特殊字符丢失的问题 例如接口: get/user/detail/{name} name是个参数直接调接口的时候拼到接口上,get/user/detail/test123#$%&am…

华为配置Smart Link负载分担示例

Smart Link基本概念 Smart Link通过两个端口相互配合工作来实现功能。这样的一对端口组成了一个Smart Link组。为了区别一个Smart Link组中的两个端口,我们将其中的一个叫做主端口,另一个叫做从端口。同时我们利用Flush报文、Smart Link实例和控制VLAN等…

Matlab 点云曲线探测(算法不稳定,仅用于学习)

文章目录 一、简介二、实现代码三、实现效果参考文献一、简介 这是一个很有趣的曲线探测的方法,不过我没有复现出论文中那样的效果,可能是理解有误,但这个算法仍然是很有意思,故这里也对其进行记录。 按照论文中的思路,首先我们需要通过一种线性强度图来计算确定每个点的法…

Java网络编程,使用UDP实现TCP(一), 基本实现三次握手

简介: 首先我们需要知道TCP传输和UDP传输的区别,UDP相当于只管发送不管对方是否接收到了,而TCP相当于打电话,需要进行3次握手,4次挥手,所以我们就需要在应用层上做一些功能添加,如:…

Bounding boxes augmentation for object detection

Different annotations formats Bounding boxes are rectangles that mark objects on an image. There are multiple formats of bounding boxes annotations. Each format uses its specific representation of bouning boxes coordinates 每种格式都使用其特定的边界框坐标…

案例060:基于微信小程序考试系统

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

01-SDV软件定义汽车思考

前言: 随着汽车产业“新四化”(电动化、网联化、智能化、共享化)的加速推动,智能汽车已成为各国科技发展战略重点,在社会数字化转型的浪潮下逐渐形成跨领域协作、多技术融合的汽车产业新赛道。 软件定义汽车已成为行业趋势与共识&#xff…

class037 二叉树高频题目-下-不含树型dp【算法】

class037 二叉树高频题目-下-不含树型dp【算法】 code1 236. 二叉树的最近公共祖先 // 普通二叉树上寻找两个节点的最近公共祖先 // 测试链接 : https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/ package class037;// 普通二叉树上寻找两个节点的最近…

HashMap系列-resize

1.resize public class HashMap<K,V> extends AbstractMap<K,V>implements Map<K,V>, Cloneable, Serializable {final Node<K,V>[] resize() {Node<K,V>[] oldTab table;int oldCap (oldTab null) ? 0 : oldTab.length; //老的数组容量in…

RabbitMQ学习二

RabbitMQ学习二 发送者的可靠性生产者连接重试机制生产者确认机制开启生产者确认定义ReturnCallback定义confirmCallback MQ的可靠性交换机和队列持久化消息持久化LazyQueue控制台配置Lazy模式代码配置Lazy模式 消费者的可靠性失败重试机制失败处理策略业务幂等性唯一消息ID业务…

AI人工智能在电子商务领域的运用

电子商务领域和个性化新时代的 AI 随着整个社会追求便利性&#xff0c;并且逐渐从传统的实体零售模式转向网购模式&#xff0c;在线零售商必须改变与客户的互动方式。为每个客户提供个性化购物体验的理念一直都存在&#xff0c;但是现在我们正式进入了个性化新时代。这是一个包…

Docker网络原理及Cgroup硬件资源占用控制

docker的网络模式 获取容器的进程号 docker inspect -f {{.State.Pid}} 容器id/容器名 docker初始状态下有三种默认的网络模式 &#xff0c;bridg&#xff08;桥接&#xff09;&#xff0c;host&#xff08;主机&#xff09;&#xff0c;none&#xff08;无网络设置&#xff…

【flink番外篇】1、flink的23种常用算子介绍及详细示例(2)- keyby、reduce和Aggregations

Flink 系列文章 1、Flink 专栏等系列综合文章链接 文章目录 Flink 系列文章一、Flink的23种算子说明及示例6、KeyBy7、Reduce8、Aggregations 本文主要介绍Flink 的3种常用的operator&#xff08;keyby、reduce和Aggregations&#xff09;及以具体可运行示例进行说明. 如果需要…

【vtkWidgetRepresentation】第五期 vtkLineRepresentation

很高兴在雪易的CSDN遇见你 内容同步更新在公众号“VTK忠粉” 【vtkWidgetRepresentation】第五期 一条直线的交互 前言 本文分享vtkLineRepresentation&#xff0c;希望对各位小伙伴有所帮助&#xff01; 感谢各位小伙伴的点赞关注&#xff0c;小易会继续努力分享&#xf…

Presto:基于内存的OLAP查询引擎

PrestoSQL查询引擎 1、Presto概述1.1、Presto背景1.2、什么是Presto1.3、Presto的特性2、Presto架构2.1、Presto的两类服务器2.2、Presto基本概念2.3、Presto数据模型3、Presto查询过程3.1、Presto执行原理3.2、Presto与Hive3.3、Presto与Impala3.4、PrestoDB与PrestoSQL4、Pre…

Libavutil详解:理论与实战

文章目录 前言一、Libavutil 简介二、AVLog 测试1、示例源码2、运行结果 三、AVDictionary 测试1、示例源码2、运行结果 四、ParseUtil 测试1、示例源码2、运行结果 前言 libavutil 是一个实用库&#xff0c;用于辅助多媒体编程&#xff0c;本文记录 libavutil 库学习及 demo 例…

智能优化算法应用:基于战争策略算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于战争策略算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于战争策略算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.战争策略算法4.实验参数设定5.算法结果6.参考…

对比两阶段提交,三阶段协议有哪些改进?

本文我们来讨论两阶段提交和三阶段提交协议的过程以及应用。 在分布式系统中&#xff0c;各个节点之间在物理上相互独立&#xff0c;通过网络进行沟通和协调。在关系型数据库中&#xff0c;由于存在事务机制&#xff0c;可以保证每个独立节点上的数据操作满足 ACID。但是&…