BEVFormer治好了我的精神内耗

BEVFormer详解 BEVFormer 是将Transformer架构的自注意机制与BEV视图中3D检测结合起来的一种纯视觉目标检测方案。对于纯视觉的BEV检测方案,其中的重中之重就是如何将2D的图像特征映射到3D空间的BEV栅格,既然是映射关系,那就有前行投影和反向查询两种机制。前向投影是基于深度估计的方法,参考基于深度估计的BEV视图转换方法,典型代表为LSS。反向查询方法思路为先将BEV栅格在Z方向上进行lift提升,然后再映射到图像特征图上进行特征查询。BEVFormer 就是基于这种机制进行2D图像特征到3D空间的B 阅读详情

BEVFormer治好了我的精神内耗

来源:https://zhuanlan.zhihu.com/p/564295059

文章链接:BEVFormer: Learning Bird’s-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers

代码:https://github.com/zhiqi-li/BEV

开局第一张图

**来句题外话:**其实我个人来说,我特喜欢把网络模型结构放在文章开头的写法,这种写法很符合我阅读论文的习惯 ,我习惯带着思考和自己的初步理解逐渐探索的过程,这会极大的激发我的阅读兴趣!

BEVFormer的工作流程

上面这张图展示了BEVFormer的两大核心任务:**mutil-camera(多视角相机)**和 bird- eye-view(鸟瞰图)。BEVFormer利用了Transformer强大的特征提取能力以及Timestamp结构的时序特征的查询映射能力,在时间维度和空间维度对两个模态的特征信息进行聚合,增强整体感知系统的检测效果。

那我们在开始读文章的时候先仔细的分析一下这张图

BEV Queries部分:根据字面意思推断应该是用于查询得到BEV图上的特征信息,那用什么怎么查询呢?是Transformer中的QKV吗?

Temporal Attention部分:根据字面意思推断是一个时序注意力机制,是提取出不同的时序下鸟瞰图的特征变化信息吗?

Spatial Attention部分:这个部分其实明显了,将多个视角的空间特征信息融合,因为多视角本来就是一个空间问题,所以使用空间注意力很正常,但是怎么使用这个空间注意力呢?然后这个空间注意力长啥样子呢?我们也还不知道。

所以让我们带着问题继续往下读这篇文章!

工作的Motivation

众所周知一个摄像头也就是几百或者几千,我八个摄像头也不过是万元内的价格,但是我部署一个激光雷达,最低也要3-5万美金。由于LiDAR设备的价格是真的高,业界一直都有想法希望通过低成本的相机方案去完成自动驾驶汽车的感知任务,降低整体感知方案的成本,但是很显然一直没有一套很好的方案可以打败LiDAR呢?

那相机除了够便宜之外,与基于激光雷达的方案相比,RGB视觉也能发挥很大的优势,比如在(红绿灯、停车线等)的场景中就有很大优势。

所以为啥之前的相机方案不行?其实之前方法的核心问题是没有能做到:让相机更精准的描述3D空间信息,合理的完成空间三维重建、完成认知决策和协同感知。

其实大家应该都不多不少有听说过,或者学习过赛车手都驾驭不了的Tesla(特斯拉)的纯视觉自动驾驶感知方案吧。那么我们为什么不尝试一下加入和优化这套纯视觉的BEV方案呢?

介绍

最简单的方式就是单一的处理每一个视角的信息,最后再进行后处理融合,但是这样就会使得这几个相机彼此没有参与其中,信息没有办法有效的交互,而且整体显得很笨拙也不美观。

受特斯拉的启发,我们发现了可以使用TransFormer来建模多视角摄像头的输入到BEV的输出这么一种映射关系。又因为我们的多视角摄像头是没有办法采集到深度信息的,所以BEV方法和LiDAR方法的GAP就在这里了,所以我们应该怎么去解决这个问题?

1、利用深度估计将信息处理成伪点云

2、根据预测的heatmap回归位置信息

3、利用深度信息训练一个backbone使得这个backbone更加适应3D任务

4、回避depth,将任务放在BEV视角下进行

**本文章就是这样第四种思路进行设计的,**此前的一些三维物体检测的工作很大程度会依赖于深度分布和深度值信息对检测任务的支持。但是从2D图像中生成的BEV是不稳定的,如果按照依赖深度信息和深度分布的LiDAR方法进行显然是不适合的。所以我们可以尝试回避Depth的信息,通过自适应的方式,利用Self-attention动态聚合有价值的特征完成我们的需求。

对于人类视觉感知系统,时序信息在推断物体的运动状态和识别遮挡物体方面起着至关重要的作用,视频领域的工作也很好的证明了这一点。但是加入时序信息的话也要考虑在自动驾驶场景运用,如果只是简单的交叉叠加时序信息的话,会引入许多额外的干扰信息(两个不同时序下的其他环境的变化引入的干扰信息)的同时,更增加了额外的计算成本。所以文章也采用了RNN的方式对不同的时间进行一个循环的迭代过程。

文章的主要贡献就是

实现了一个利用率时序、空间信息建模出端到端的BEV生成器。通过这个BEV特征信息的统一可以更好的支持三维检测和地图分割任务。其实后续也可以有更多的任务加入其中!

BEVFormer设计了Spatial Cross Attention模块提取出多视角图中感兴趣的区域空间信息进行重建。然后通过Temporal self-Attention模块对历史的时序信息进行融合,通过这两个模块得到的空间和时序信息进行有效的聚合。

BEVFormer在nuScenes测试集上实现了56.9%的NDS,比以前的最佳检测方法DETR3D高9个点**(56.9%vs.47.9%)**。对于地图分割任务,我们还实现了最先进的性能,在最具挑战性的车道分割上比Lift Splat高出5个多点

结构讲解

BEVFormer的总体架构

其实上图这个是最开始结构图的详解版本,那么我们下面主要分析以下三个核心结构Spatial Cross-Attention、Temporal Self-Attention、BEV Queries

BEV Queries

如图所示文章中建立了H×W×C的空间作为BEVFormer的查询网格,在将BEV queries 输入到BEVFormer之前,先将可学习的位置编码添加到BEV queries Q集合空间中,然后开始学习并更新BEV queries的值。

BEV queries为空间网格的可学习参数,用来捕获自动驾驶汽车的BEV特征。

每个位于(x,y)位置的query都负责表征对应的最小位置

通过对Spatial和temporal信息的轮番查询,生成BEV特征图。

Spatial Cross-Attention

步骤1:在(x,y)的位置上不同的高度采集pillar的点。

步骤2:可以根据pillar点的3D参数投影到各个2D平面上。

对于一个BEV query,投影的2D点只能落在某些视图上,而其他视图不会被击中,在这里我们把被击中的视图称为hit视图

步骤3:在hit视图的区域位置中采样特征信息

步骤4:我们通过带权重的方式将这些特征信息进行一个融合

上图会更加直观的体会到Spatial Cross-Attention整个完整步骤流程,其中Out of image就是投影到整个视野以外,那么这个点就不会参与到查询的工作中来。

Temporal Self-Attention

步骤1:通过ego-motion(帧间运动)将历史帧和当前帧映射到网格图对应于真实世界的位置,将两个历史的BEV特征信息进行对齐。

步骤2:通过Self-attention同时采样过去帧和当前帧的信息

步骤3:采样完成后通过一个加权的方式将特征加权当前的BEV视角,得到一个更加鲁棒的特征图

步骤4:通过一个RNN的方法做3-4次通过一种迭代的方式查询历史的当前特征,还能做做一个持续的融合。

优势和结果

多任务学习:3D目标检测和地图语义分割

**可迁移性:**常用的2D检测头也可以很好通过很小的修改迁移到3D检测头上面去。

BEVFormer在nuScenes测试集上实现了56.9%的NDS,比以前的最佳检测方法DETR3D高9个点**(56.9%vs.47.9%)**。对于地图分割任务,我们还实现了最先进的性能,在最具挑战性的车道分割上比Lift Splat高出5个多点

56.9vs47.9

28.0vs22.0

消融实验总结

1、强的backbone依然是涨点的关键

2、Local-attention要不global attention的效果要更好,global attention更加耗时,性能也不太好

3、时序信息的必要,能够有效的提高速度上的指标

4、不建议多任务头,多任务头在3D目标检测表现ok,但是在BEV map的语义分割中性能还是较差。

提问

Q1:其实纯视觉到底还能走多远?能不能真正的和LiDAR的效果做到一个大差不差的一个性能

Q2:打不过就加入,那么我们的多模态的方案到底怎么做才会让视觉与LiDAR的融合更加的优雅

Q3:对于BEV的部署要求,BEV能不能更友好的支持部署的要求!

我看完文章之后其实看完了这篇文章之后,会对第二个问题更加有共鸣,我们能不能让不同模态的融合方式更加优雅,在语义信息以及空间信息上对两个模态做更好的一个融合,更高效的信息补充。

对于融合的方式,我们常见的有下面几种

但是我们多用的融合方式通常是Early-fusion和Late-fusion

我们最直接,最方便的思路就是把不同模态的信息concatenate,然后一次性输入到模型当中,最后得到一个输出。

BEVFusion就采用的是这种方案,将多视角图与LiDAR投影到BEV视角下直接的通道叠加做一个效果出来

把整体的决策和融合交给黑箱,这显然是最简单,但是我认为也是最不负责任的做法。因为这压根没有办法针对不同模型的特征信息进行优化,我们只能把希望寄托在Encoder的特征学习能力足够强大,可以学习到自身的特征,和彼此之间的联系,但是如果两个模态信息并非强相关,也并非都是强模态,这样一定会带来的强模态抢占弱模态的事情发生。如果发生抢占,可能会在两个模态上识别效果很差。

我个人也其实不太喜欢后融合,如果后处理融合的话,两个模态的信息交互其实非常的不充分,也很难从里面学习到两个模态之间的联系信息,这样的做法其实是吃力不讨好的。

所以我个人来说会更偏向于做特征融合的方法,但是特征融合的方法会带来一个问题是,我们要怎么关联这两个模态,以及我们要怎么有效的处理两个模态特征之间的GAP,这是我们需要去直面解决的问题。但是特征融合会让我们更加直观的体会到模态融合的过程,相比前融合会更加的保护彼此的特征,相比后融合,会让两个模态的信息有更加丰富的参与感,更加细节化的特征交流和融合。

【项目推荐】

面向小白的顶会论文核心代码库:https://github.com/xmu-xiaoma666/External-Attention-pytorch

面向小白的YOLO目标检测库:https://github.com/iscyy/yoloair

面向小白的顶刊顶会的论文解析:https://github.com/xmu-xiaoma666/FightingCV-Paper-Reading

【CV论文精读】【BEV感知】BEVFormer:通过时空Transformer学习多摄像机图像的鸟瞰图表示 3D视觉感知任务,包括基于多摄像头图像的3D检测和地图分割,对于自动驾驶系统至关重要。在这项工作中,我们提出了一个称为BEVFormer的新框架,它通过时空Transformer学习统一的BEV表示,以支持多个自动驾驶感知任务。简而言之,BEVFormer通过预定义的网格形状的BEV queries与空间和时间进行交互,从而利用空间和时间信息。为了聚集空间信息,我们设计了空间交叉注意力,每个BEV query从跨摄像机视图的感兴趣区域中提取空间特征。 阅读详情

相关推荐

BEVFormer --- 来自于Deformable DETR

说到BEVFormer就不得不说到Deformable DETR,因为BEVFormer中的deformable attention来自于Deformable DETR,而说到Deformable DETR就不得不说到DETR,因为Deformable DETR中利用transformer完成图像目标检测的思路来自DETR,所以,这篇博客介绍的顺序是DETR→Deformable DETR→BEVFormer。

qq_45783225的博客 1930

BEVFormer论文详细解读

1.相当于我们在上帝视角下重构了一个特征空间,空间的大小我们自己定义 2.特征空间相当于一个网格,网格的间隔也可以自己定义,对应精度也会有差异 3.在特征空间中,我们可以以全局的视角来进行预测,特征都给你了,咋用你来定 4.难点:既想做的细致,还想节约计算成本,怎么办?BevFormer它来了

AI人工智能的海洋 8329

【BEV】BEVFormer总结

【BEV】BEVFormer总结

m0_51579041的博客 2171

BEV专栏(一)从BEVFormer深入探究BEV流程(上篇)

本文提出了一种基于Transformer和时间结构的Bird's-Eye-View(BEV)编码器,称为BEVFormer。该编码器可以有效地聚合来自多视角摄像机和历史BEV特征的时空特征。

CV技术指南(微信公众号) 2335

保姆级教程:用Kvaser DB Editor从零创建你的第一个DBC文件(附CAN信号属性详解)

本文提供了一份详细的Kvaser DB Editor教程,指导用户从零开始创建DBC文件,并深入解析CAN信号属性的关键设置。通过步骤清晰的安装指南、信号属性配置详解和实用技巧,帮助工程师和学生快速掌握CAN总线通信的核心工具,提升工作效率。

weixin_27076351的博客 246

【C++】POCO学习总结(六):线程、线程池、同步

Poco::RunnableAdapter继承自Poco::Runnable,在Poco::RunnableAdapter构造函数中指定了类和方法;Poco::ThreadLocal是线程局部变量,也叫线程局部存储,意思是模版ThreadLocal中填充的变量属于当前线程,该变量对其他线程而言是隔离的,也就是说该变量是当前线程独有的变量。

郭老二 5098

宵夜杂谈:BEVFormer治好了我的精神内耗!

作者|战斗系牧师编辑|汽车人原文链接:https://zhuanlan.zhihu.com/p/539925138点击下方卡片,关注“自动驾驶之心”公众号ADAS巨卷干货,即可获取论文:https://arxiv.org/abs/2203.17270代码:https://github.com/zhiqi-li/BEVFormerBEVFormer开放麦:htt...

CV_Autobot的博客 1305

想学嵌入式但没开发板?试试这个免费的STM32虚拟仿真平台(含LVGL界面教程)

本文介绍如何利用免费的STM32虚拟仿真平台学习嵌入式开发,特别适合预算有限或零硬件基础的学习者。通过详细的LVGL界面开发教程,展示虚拟仿真在嵌入式学习中的高效性和实用性,涵盖环境搭建、代码实现到实机迁移的全流程,助力快速掌握嵌入式开发核心技能。

weixin_29266647的博客 306

BEVFormer笔记

里面使用的注意力机制是SE模块,SE的注意力机制的作用在通道上的,图中看到的不同颜色的权重其实是表示不同注意力的权重,通过对通道数值的重新加权,网络会自适应的关注或忽略某些部分的特征,假定颜色比较深的区域是权重比较大的地方,通过加权后,权重比较大的地方的特征会自适应的得到加强。对于高度,这里一个点对应4个query(图中红色点),这4个点分别去遍历所有视角的特征,最后再做一个整合(可能这一步是没必要的,只需要1个query就好),类似于多头注意力机制,非要说在不同高度做的聚合也可以。1、是一个重构空间。

qq_42250207的博客 2609

Cisco Firepower FMCv修改管理Ip方法

Cisco Firepower FMCv修改管理Ip方法

funnycoffee123的博客 1091

国产PLC实战:用汇川Easy320搞定TCP通信,手把手教你网口转串口控制设备

本文详细解析了如何使用汇川Easy320 PLC实现TCP通信与串口控制,解决工业自动化中设备间通信协议差异问题。通过实战案例和代码示例,展示了Easy320在协议转换、数据解析和串口转发中的高效应用,帮助工程师快速掌握网口转串口控制技术。

weixin_31774841的博客 497

[BEV] 学习笔记之BEVFormer(一)

BEVFormer

Rex大居 5827

STM32MP157+AD7606BSTZ四通道IEPE传感器采集方案实战(附完整电路图)

本文详细介绍了基于STM32MP157和AD7606BSTZ的四通道IEPE传感器采集方案,涵盖硬件电路设计、软件驱动开发及系统性能优化。通过精确的恒流源设计和同步采样技术,实现高精度振动信号采集,适用于工业振动监测等应用场景。

weixin_42713608的博客 700

【BevFormer】介绍和笔记

【BevFormer】介绍和笔记

Aaron_zzc的博客 2159

DOORS需求管理实战:从汽车设计案例看模块化需求拆分技巧

本文通过一个汽车设计实战案例,深入解析了如何利用DOORS进行模块化需求拆分与管理。从捕获原始用户需求到精炼为可追踪的系统需求,再到按子系统(如自动驾驶)进行模块化拆分,文章详细展示了构建需求骨架、建立可追溯性以及实施变更控制的完整流程,帮助团队在复杂系统工程中实现从混沌到秩序的高效协同。

ww90123的博客 242

基于DSIFT多尺度图像融合的MATLAB代码

多尺度图像融合是一种常用的图像处理技术,它可以将具有不同尺度和空间频率特征的图像融合成一幅更具信息丰富度和视觉效果的图像。DSIFT算法是一种基于SIFT算法的改进版本,它在提取图像特征时采用了密集采样的方法,能够有效地提取图像的局部特征。多尺度图像融合基于DSIFT算法的思想,通过在不同尺度下提取图像的DSIFT特征,并将这些特征进行融合,得到最终的融合图像。然后,通过DSIFT算法提取了两幅图像的特征。通过运行上述代码,我们可以在MATLAB中实现基于DSIFT多尺度图像融合的算法,并观察到融合结果。

IELLQUI9的博客 180

技术精讲 | BEVFormer,通过一个时空Transformer学习BEV表征

BEVFormer是最近两年内BEV模型研究很有标志性的工作,引导了基于Transformer架构的一系列BEV模型的探索研究,对自动驾驶BEV感知系统的量产落地有积极的意义。

SYNKROTRON的博客 2048

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

BEVFormer:基于Transformer的自动驾驶BEV纯视觉感知

作者 | 李志琦单位 | 南京大学/上海人工智能实验室研究方向 | 基于注意力机制的视觉感知BEVFormer 很荣幸参与到最近这波 BEV 感知的研究浪潮中,我们从开源社区中受益良多,也希望尽我们所能为社区做出我们自己的贡献,希望未来与社区一道共同构建更加安全可靠的自动驾驶感知系统。引言TL; DR:本文提出了一套基于 Transformer 和时序模型在鸟瞰图视角下优...

Paper weekly 1万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

BEVFusion、BEVFormer方法总结

这样可以避免相机到激光雷达的投影造成的特征密度损失,提高融合的效果。如Figure 1所示,目标是查询自车前方黑色线框处目标信息,方法主要包括两部分:一,基于空间交叉注意力机制对多不同视角摄像头图像特征的查询;BEVFormer原理是通过利用多视角相机图像生成BEV特征并进行3D目标检测的方法,该方法使用了一个基于变换器的编码器和一个基于残差连接的多层感知机编码器,其中通过空间交叉注意力模块实现不同视角摄像头的特征提取,通过时间自注意力模块实现历史特征和当前时刻特征相关性信息的提取。

3262

BEVFormer和BEVFormer-v2论文解读

BEVFormer和BEVFormer v2

gui_hai的博客 3401

BEVFormer 论文学习

3D 视觉感知任务,包括基于多相机图像的 3D 目标检测和分割,对于自动驾驶系统非常重要。与基于 LiDAR 的方法相比,基于相机图像的方法能够检测到更远距离的目标,识别交通信号灯、交通标识等信息。有一些方法使用单目画面,然后进行跨相机的后处理操作;这类方法的缺点就是各图像是分开处理的,无法取得跨相机的画面信息,因而效果和效率都比较差。与单目方法相比,BEV 是表示周围环境的常用方法,它能清晰呈现目标的位置和大小,适合自动驾驶感知和规划任务。

calvinpaean的博客 2004

BEV感知---BevFormer详解

论文名字其中关键词是Spatiotemporal 时空的 , 分开即 spatia 空间的l ,temporal 时间的。可见本论文在BEV感知上引入了时间和空间的因素。相比之前的BEV算法来说,这是比较有创新的一点。具体的,下图所示,上面的分支进行空间特征(多视角图像特征)注意力(spatial cross-attention)。下面的分支进行时间特征注意力(temporal self-attention),可以看到作者这里把前一时刻(t-1时刻)的BEV特征当作是时间特征。

qq_44799766的博客 1万+

BEVFormer模型技术解析与代码实现

其中时序注意力机制主要利用当前帧的bev query与历史帧的bev feature(其实就是历史时刻的bev query)计算attention,而空间注意力机制是bev query和此前提取到的img feature map计算attention。BEV Queries 的初始化,一般是采用torch 内置的nn.Embedding进行随机初始化,随后训练后会固定到满足数据分布bias的值,在部署推理阶段bev query的值是定值,随着model ckpt一起加载。

shyr_sheyu的博客 2031

BEVFromer源码解读 | 从多相机图像中学习BEV表达

作者|Young 编辑| 半杯茶的小酒杯点击下方卡片,关注“自动驾驶之心”公众号ADAS巨卷干货,即可获取点击进入→自动驾驶之心【BEV感知】技术交流群后台回复【3D检测综述】获取最新基于点云/BEV/图像的3D检测综述!“论文: https://arxiv.org/pdf/2203.17270.pdf代码链接: https://github.com/fundamentalvision/B...

CV_Autobot的博客 4963

代季峰对话张祥雨 | 自动驾驶感知新时代!新一代环视感知算法BEVFormer有哪些优势...

导读:Elon Musk说过,“人类不是超人,也不是蝙蝠侠,不能够眼放激光,也不装有雷达,但是通过眼睛捕捉到的图像,人类依旧可以构建出对周围世界的3D空间理解能力,从而很好地掌握驾驶这项能力。”想要真正实现自动驾驶,让汽车具备像人类司机一样的感知能力最为关键。在去年的特斯拉 AI Day上,Karparthy展示了基于Transformer的BEV(Bird's eye ...

BAAIBeijing的博客 2604

【BEV-former简读】

paper:git:三个部分: back-bone(ResNet-101), spatial cross-attention module, temporal self-attention module。

MaxeeoveCR的博客 1848
上一篇: TIP | 自动化所谭铁牛院士团队提出用带注意力机制的图神经网络GARN,多个数据集上SOTA!
下一篇: 大佬是如何从头写一篇顶级论文的?
FightingCV
博客等级 码龄9年 154粉丝 105原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值