BEVFormer 论文笔记

论文阅读】BEVFormer BEVFormer,利用时间自注意力和空间交叉注意力对BEV query进行处理,输出场景的BEV特征 阅读详情

参考代码:BEVFormer
paper:BEVFormer: Learning Bird’s-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers

1. 概述

导读:这篇文章介绍了一种基于transformer的bev特征提取算法,在该算法中包含了对空间域和时间域信息的融合,对应的模块便是spatial cross-attention和temporal self-attention,这样便可以高效感知车辆周围环境以及利用前后帧信息处理遮挡情况。通过建立3d bev grid在spatial和temporal维度的信息索引,文章构建了一种适合多任务的bev特征提取方法。

在文章的bev特征提取方案中需要解决的是bev grid(3D)在多视图图像中的空间索引,以及当前帧bev特征与之前帧中bev特征的关联,也就是下图中展示的spatial和temporal维度信息如何去索引:
在这里插入图片描述
对于spatial维度上的特征索引,可以通过3D bev grid中的点从3D到2D的投影获得reference points,之后在reference points的基础上添加具有偏移属性deformable attention操作去感知local区域的特征。对于temporal维度上的索引,可以通过类似RNN的机制实现序列关联。

2. 方法设计

2.1 整体pipeline

文章的整体pipeline见下图所示:
在这里插入图片描述
根据上图文章的方法可以划分为如下几个步骤:

  • 1)通过CNN网络抽取多视图特征,更大的backbone带来更好的性能;
  • 2)通过堆叠多层的temporal self-attention和spatial cross-attention(transformer layer)实现3d bev grid的特征索引构建对应bev特征;
  • 3)在上述得到的bev特征的基础上添加多任务头,实现多任务预测;

2.2 spatial cross-attention

在进行spatial cross-attention之前需要计算预先定义好的3d bev特征在输入多视图特征的位置,这些位置被称之为reference points。其计算是根据3d空间到2d空间的投影实现的,具体的映射过程可以参考:

# projects/mmdet3d_plugin/bevformer/modules/encoder.py#L90
def point_sampling(self, reference_points, pc_range,  img_metas):
    ...

在上述的代码中除了计算每个3d bev grid到多视图特征的投影,还会通过这些投影操作(记为 P ( p , i , j ) \mathcal{P}(p,i,j) P(p,i,j))预先计算出可能投影到的位置(文章将这些通过相机参数匹配上的点称之为 V h i t \mathcal{V}_{hit} Vhit,其可能在多个视图上),从而得到一个掩膜mask,该mask就可以在多视图特征中排除一些无关的区域,从而加快运算速度。那么对于当前3d bev grid的索引 Q p Q_p Qp其在多视图特征下的计算可以描述为:
S C A ( Q p , F t ) = 1 V h i t ∑ i ∈ V h i t ∑ j = 1 N r e f D e f o r m A t t n ( Q p , P ( p , i , j ) , F t i ) SCA(Q_p,F_t)=\frac{1}{\mathcal{V}_{hit}}\sum_{i\in \mathcal{V}_{hit}}\sum_{j=1}^{N_{ref}}DeformAttn(Q_p,\mathcal{P}(p,i,j),F_t^i) SCA(Qp,Ft)=Vhit1iVhitj=1NrefDeformAttn(Qp,P(p,i,j),Fti)
其中的deformable attention的计算过程描述为:
D e f o r m A t t n ( q , p , x ) = ∑ i = 1 N h e a d W i ∑ j = 1 N k e y A i j ⋅ W i ′ x ( p + Δ p i , j ) DeformAttn(q,p,x)=\sum_{i=1}^{N_{head}}\mathcal{W}_i\sum_{j=1}^{N_{key}}\mathcal{A}_{ij}\cdot \mathcal{W}_i^{'}x(p+\Delta_{p_{i,j}}) DeformAttn(q,p,x)=i=1NheadWij=1NkeyAijWix(p+Δpi,j)
这里需要注意的是 Δ p i , j \Delta_{p_{i,j}} Δpi,j是通过在query的基础上预测得到的:

# projects/mmdet3d_plugin/bevformer/modules/spatial_cross_attention.py#L342
sampling_offsets = self.sampling_offsets(query).view(
    bs, num_query, self.num_heads, self.num_levels, self.num_points, 2)
    ...
sampling_locations = reference_points + sampling_offsets

2.3 temporal self-attention

在上述的spatial cross-attention过程中解决了时空关联,而仅仅依靠时空关联是无法处理一些遮挡情况的case的,这就需要引入前后帧的信息。在这里也是通过transformer的形式进行计算得到的,其计算可以描述为:
T S A ( Q p , { Q , B t − 1 ′ } ) = ∑ V ∈ { Q , B t − 1 ′ } D e f o r m A t t n ( Q p , p , V ) TSA(Q_p,\{Q,B_{t-1}^{'}\})=\sum_{V\in\{Q,B_{t-1}^{'}\}}DeformAttn(Q_p,p,V) TSA(Qp,{Q,Bt1})=V{Q,Bt1}DeformAttn(Qp,p,V)
需要注意的是这里deformable attention的偏移是由前一帧的bev特征和当前帧的query确定的,而在初始的时候前一帧bev特征与query相等:

# projects/mmdet3d_plugin/bevformer/modules/temporal_self_attention.py#L191
query = torch.cat([value[:bs], query], -1)
...
sampling_offsets = self.sampling_offsets(query)

2.4 消融实验

上述中的attention操作都是基于deformable的local属性,该attention操作和global和point属性的attention操作在新能上的比较:
在这里插入图片描述
不同bev grid的参数设置和transformer layers对耗时和性能的影响:
在这里插入图片描述

3. 实验结果

3D检测任务的性能比较:
在这里插入图片描述
3D检测任务和map分割的性能比较:
在这里插入图片描述

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

相关推荐

BEVFormer论文笔记(详细版)

这是一篇BEVFormer论文阅读笔记。3D视觉感知任务对于自动驾驶系统至关重要,为此作者提出了BEVFormerBEVFormer使用时空学习统一的BEV表示以支持多个自主驾驶感知任务。BEVFormer通过预定义的网格形状的BEV queries与空间和时间进行交互,从而利用空间和时间信息。为聚合空间信息,作者设计了一个空间交叉注意力,即每个BEV从摄相机视图中的感兴趣区域中提取空间特征。由于该模型结合了时序信息,所以对于速度估计和被遮挡物体的识别问题都有很大改善,性能远超其他基于相机的模型。

weixin_62497890的博客 4593

bevformer详解(3): 逐行代码讲解

在这篇文章中,我们将从BEVFormer算法代码入手,深入探究BEV转换的流程。BEVFormer是一种基于Transformer的BEV转换模型,其核心思想是利用自注意力机制和交叉注意力机制,从,并通过Object Query与BEV特征的交互,完成3D目标检测和地图分割等任务。https://developer.baidu.com/article/details/3224715bevformer的网络结构由三部分组成, 模型结构所示,其中的是部分,对于的是的结构,对于部分,沿用的中的decoder部分,

@bangbang的博客 3640

BEVFormer论文速读

组织方式nuScenes: 分散式。图像、点云是独立文件,通过 JSON 元数据关联。优点是灵活,可以只加载需要的传感器数据。Waymo: 整合式。所有数据都在一个.tfrecord文件中。优点是数据管理简单,IO效率高,但文件体积巨大。数据访问nuScenes: 需要读取多个 JSON 文件来构建场景,然后根据文件名加载对应的图像和点云。Waymo: 只需读取一个.tfrecord文件并按帧(Frame)迭代解析即可获取所有信息。

frostmelody 全网同名,大家多多关注呀~ 持续分享优质内容! 1127

bevformer paper阅读

回顾视觉感知,1. 简单方法,各个相机,2D做感知,然后进行后处理,融合和变换到3D。2. 多相机BEV的方法,从下而上,预估图像深度,投影2D feature到3D上,然后用3D的方法。本文的方法,3. 不依赖深度,直接利用transformer的attention机制,获取bev的feature map。4. 在BEV上,更好融合空间和时间上的特征,甚至多传感器。

huang_victor的博客 326

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

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

CV_Autobot的博客 4956

BEVFormer论文阅读笔记

本文提出了BEVFormer,可以通过预定义的grid形式(bev)的query在时间和空间上做交互来实现最大化信息利用。空间上的交互即bev的query利用空间交叉注意力和不同的摄像头的对应区域的特征做交互,时间上的交互即利用bev的query利用时间自注意力上和之前此位置的的bev特征做交互。在nuscences上NDS达到56.9,和pointpillar还有一定差距,但效果已经非常好了。

qq_42575422的博客 832

[Algorithm] BEVformer 源码细节学习&&ubuntu20.04下的环境配置&&目标跑起开源代码&&论文学习笔记

之前学习了机器学习基础,神经网络基础,pytorch和Transformer基础,学习了几个demo并设计了一个demo任务,现在开始正式研究BEV相关内容。计划从源码和先跑起来入手,随后分模块逐步学习。期间分享自己的困惑,有趣高效的语法现象也会做一些研究。笔者手头已经收集了一些教程、论文,并且也有一起学习的小伙伴。很开心开启这段新的旅程!

HerrQQ 8486

BEVFormer论文详细解读

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

AI人工智能的海洋 8274

BEVFormer论文解读

相比于雷达点云,相机部署成本低,能够识别远距离物体与基于视觉的路面元素如交通灯等。相比于单目框架,BEV视图提供了对整体场景的表示,并且能很好地反映物体的尺度与位置信息。此外,BEV空间能够作为一个理想的中介来联系时空间,时间信息能够帮助我们推理物体的运动状态以及识别被遮挡的物体,而在自动驾驶任务中,物体变化速度快且实时性要求高,简单堆叠多帧BEV特征不是最优的。

butterflies_的博客 1067

BEVFormer论文总结

BEVFormer证明了利用多相机输入的时空信息可以显著提高视觉感知模型的性能。BEVFormer所展示的优势,如更准确的速度估计和在低可见物体上更高的召回率,对于构建更好和更安全的自动驾驶系统至关重要。

m0_60273616的博客 1367

BEVformer论文模块解读

这部分注意力机制的作用是结合历史BEV特征特征,从而加入时序信息。具体来讲,一般来讲输入的参数为序列长度为3,意思是当前帧为第三帧,我们得计算前两帧的历史BEV和当前帧的BEV queries的attention。这里注意一点第一帧是没有历史帧的,所以第一帧和自身做自注意力计算。上图就是大致的计算过程。值得注意的点是:①由于车在不断运动,因此每一帧的BEV其实是不一样的,所以在进行attention计算之前,必须对前两帧的BEV利用can_bus里面传感器的运动信息进行对齐;

weixin_46872424的博客 1521

BEVFormer 论文阅读

强的backbone依然是涨点的关键Local-attention要不global attention的效果要更好,global attention更加耗时,性能也不太好时序信息的必要,能够有效的提高速度上的指标不建议多任务头,多任务头在3D目标检测表现ok,但是在BEV map的语义分割中性能还是较差。6. 提问Q1:其实纯视觉到底还能走多远?能不能真正的和LiDAR的效果做到一个大差不差的一个性能。

人无远虑,必有近忧 1786

BEVFormerBEVFormer-v2论文解读

BEVFormerBEVFormer v2

gui_hai的博客 3381

BEVFormer详细复现方案

BEV与Transformer结合的开山之作,自动驾驶感知入门必学!

Srlua的博客 2405

BEVFormer 代码运行笔记

本文介绍了BEVFormer的环境配置和数据准备流程。首先通过git克隆项目代码,然后使用conda创建Python 3.8环境并安装必要的依赖库,包括特定版本的PyTorch、MMCV、MMDetection和MMSegmentation等。接着详细说明了从NuScenes官网下载Mini和全量数据集的方法,以及数据解压和目录组织的步骤。最后提供了训练和评测命令,包括修改配置文件、启动8卡分布式训练和测试的示例。整个过程涵盖了从环境搭建到模型训练评估的完整流程,并附有参考文档链接。

人无远虑,必有近忧 1988

BEVFormer 论文学习

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

calvinpaean的博客 1961

BEVFormer详解

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

MAX的专栏 4690

BEV感知---BevFormer详解

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

qq_44799766的博客 1万+
上一篇: 《Cross-view Transformers for real-time Map-view Semantic Segmentation》论文笔记
下一篇: 《RCLane:Relay Chain Prediction for Lane Detection》论文笔记
m_buddy
m_buddy 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄11年 2354粉丝 · 551原创
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值