BEVFormer论文总结

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

BEVFormer:利用时空变换从多相机图像中学习鸟瞰表示

研究团队:南京大学、上海AI实验室、香港大学

代码地址:https://github.com/zhiqi-li/BEVFormer

一、研究背景

  • 三维空间感知对于自动驾驶、机器人等各种应用至关重要。尽管基于LiDAR的方法取得了显著进展,但基于相机的方法近年来引起了广泛关注。除了部署成本低外,与基于LiDAR的相机相比,相机在探测远距离物体和识别基于视觉的道路要素(例如交通信号灯、停车线等)方面具有理想的优势。

  • 自动驾驶中对周围场景的视觉感知有望从多个摄像头给出的2D线索中预测3D边界框或语义地图。最直接的解决方案是基于单目框架和跨摄像头后处理。该框架的缺点是单独处理不同的视图,无法跨摄像头捕获信息,导致较低的性能和效率。

  • 作为单目框架的替代,一个更加统一的框架是从多相机图像中提取整体表示鸟瞰图( BEV )清晰地呈现了物体的位置和尺度,适用于各种自动驾驶任务,如感知和规划,是一种常用的周围场景表示方法

  • 虽然以往的地图分割方法证明了BEV的有效性,但是基于BEV的方法在三维目标检测上并没有表现出比其他范式显著的优势。其根本原因是3D目标检测任务需要较强的BEV特征来支持准确的3D边界框预测,而从2D平面生成BEV是不适定的。目前流行的BEV框架基于深度信息生成BEV特征,但该范式对深度值的准确性或深度分布敏感。因此,基于BEV的方法的检测性能会受到复合误差的影响,不准确的BEV特征会严重影响最终的性能。

二、研究思路

  • 因此,本文旨在设计一种不依赖深度信息且能自适应学习BEV特征的BEV生成方法,而不是严格依赖3D先验。Transformer利用注意力机制动态聚合有价值的特征,从概念上满足了需求。

  • 使用BEV特征执行感知任务的另一个动机是BEV是连接时间和空间的理想桥梁。对于人类视觉感知系统而言,时间信息在推断物体运动状态和识别被遮挡物体方面起着至关重要的作用,视觉领域的许多工作已经证明了使用视频数据的有效性。

  • 然而,现有的先进多相机三维检测方法很少利用**时间信息。**显著的挑战是,自动驾驶是时间关键的,场景中的物体变化迅速,因此简单地堆叠跨时间戳的BEV特征会带来额外的计算成本和干扰信息,这可能并不理想。受循环神经网络( Recurrent Neural Networks,RNNs )的启发,本文利用BEV特征循环地传递从过去到现在的时间信息,这与RNN模型的隐藏状态具有相同的思路。

  • 为此本文提出了一种基于transformer的鸟瞰( BEV )编码器,称为BEVFormer,它可以有效地聚合来自多视角相机的时空特征和历史BEV特征。由BEVFormer生成的BEV特征可以同时支持3D目标检测和地图分割等多个3D感知任务,对于自动驾驶系统具有重要价值。如图1所示,BEVFormer包含三个关键设计,分别是( 1 )网格状的BEV查询,通过注意力机制灵活地融合空间和时间特征;( 2 )空间交叉注意力模块,从多相机图像中聚合空间特征;( 3 )时间自注意力模块,从历史BEV特征中提取时间信息,这有利于运动物体的速度估计和严重遮挡物体的检测,同时带来可忽略的计算开销。利用BEVFormer生成的统一特征,该模型可以与Deformable DETR、掩码解码器等不同任务特定的头协作,进行端到端的三维目标检测和地图分割。

在这里插入图片描述

  • 图1:自动驾驶范式BEVFormer

三、主要贡献

  • 提出了BEVFormer,一个时空transformer编码器,它将多相机和/或时间戳输入到BEV表示中。利用统一的BEV特征,模型可以同时支持多个自动驾驶感知任务,包括3D检测和地图分割。

  • 设计了可学习的BEV查询以及空间交叉注意力层时间自注意力层,分别从跨摄像头中查找空间特征和从历史BEV中查找时间特征,然后将它们聚合为统一的BEV特征

    • 为了聚合空间信息,设计了空间交叉注意力,每个BEV查询从相机视图中提取感兴趣区域的空间特征。

    • 对于时间信息,提出时间自注意力来循环融合历史BEV信息。

  • 在多个具有挑战性的基准测试集上评估了所提出的BEVFormer,包括nuScenes和Waymo。

四、研究内容

1.总体架构

在这里插入图片描述

如图2所示,BEVFormer有6个编码器层,每个编码器层都遵循传统的transformer结构,除了三个定制的设计,即BEV查询、空间交叉注意力和时间自注意力。

  • BEV查询是一种网格状的可学习参数,旨在通过注意力机制从多相机视图中查询BEV空间中的特征。

  • 空间交叉注意力和时间自注意力是处理BEV查询的注意力层,用于根据BEV查询查找和聚合来自多相机图像的空间特征和来自历史BEV的时间特征。

在推理过程中,在时间戳t,将多相机图像馈送到骨干网(例如ResNet - 101 ),得到不同相机视图的特征 F t = { F i t } i = 1 N v i e w F_t ={ \{ F_i^t \} }_{i=1}^{N_view} Ft={Fit}i=1Nview ,其中 F i t F_i^t Fit 是第i个视图的特征, N v i e w N_{view} Nview 是相机视图的总数。同时,在前一时刻t - 1保留了BEV特征Bt - 1。

  • 在每个编码器层,首先使用BEV查询Q通过时间自注意力从先验BEV特征Bt - 1中查询时间信息。

  • 然后利用BEV查询Q通过空间交叉注意力从多相机特征Ft中查询空间信息。

  • 经过前馈网络后,编码器层输出细化后的BEV特征,作为下一个编码器层的输入。经过6层编码器堆叠,生成当前时间戳t的统一BEV特征Bt。以BEV特征Bt作为输入,3D检测头和地图分割头预测3D边界框和语义地图等感知结果。

2.BEV查询

  • 预定义了一组网格状的可学习参数 Q ∈ R H × W × C Q∈R^{H × W × C} QRH×W×C 作为BEVFormer的查询,其中H,W为BEV平面的空间形状。

    • 具体而言,位于p = ( x , y)处的查询 Q p ∈ R 1 × C Q_p∈R^{1 × C} QpR1×C 负责BEV平面中对应的网格单元区域。BEV平面中的每个网格单元对应一个s米的真实世界尺寸。

    • BEV特征的中心默认情况下与本车的位置相对应。按照通常的做法,在将BEV查询Q输入到BEVFormer之前,添加了可学习的位置嵌入positonnal embedding。

3.空间交叉注意力

  • 由于多相机3D感知(包含Nview相机视图)的输入规模较大,传统多头注意力的计算成本极高。因此,本文开发了基于可变形注意力的空间交叉注意力,这是一个资源高效的注意力层,其中每个BEV查询Qp只与它的感兴趣区域进行跨相机视图的交互。然而,可变形注意力最初是为2D感知而设计的,因此对于3D场景需要进行一些调整。
    在这里插入图片描述

  • 如图2(b)所示,首先将BEV平面上的每个查询提升为一个柱状查询,从柱状中采样 N r e f N_{ref} Nref 个3D参考点,然后将这些点投影到2D视图

  • 对于一个BEV查询,投影的2D点只能落在某些视图上,其他视图不被击中。在这里,将命中视图称为 V h i t V_{hit} Vhit 。然后,将这些2D点视为查询 Q p Q_p Qp 的参考点,并从这些参考点周围的命中视图 V h i t V_{hit} Vhit 中采样特征

  • 最后,对采样的特征进行加权求和作为空间交叉注意力的输出。空间交叉注意力( SCA )的过程可以表示为:
    在这里插入图片描述

    i为相机视图索引,j为参考点索引,** N r e f N_{ref} Nref为每次BEV查询的总参考点。 F t i F^i_t Fti 为第i个相机视图的特征。对于每个BEV查询 Q p Q_p Qp,使用投影函数P( p , i , j)**得到第i个视图图像上的第j个参考点。

  • 接下来介绍如何从投影函数P中获取视图图像上的参考点。首先计算查询Qp位于Q的p = ( x , y)处对应的真实世界位置( x′, y′)
    在这里插入图片描述

    其中H,W为BEV查询的空间形状,s为BEV网格的分辨率大小,( x′, y′)为以自车位置为原点的坐标。在三维空间中,位于( x′, y′)的物体会出现在z轴上z′的高度处。因此预先定义了一组锚点高度 { z ′ j } = 1 N r e f \{ z′_j \} ^{Nref}_{ = 1} {zj}=1Nref *,*确保能够捕获出现在不同高度的线索。这样,对于每个查询Qp,得到一个3D参考点的支柱 ( x ′ , y ′ , z ′ j ) j = 1 N r e f ( x′, y′, z′_j)^{Nref}_{j = 1} (x,y,zj)j=1Nref 。最后,通过相机的投影矩阵将3D参考点投影到不同的图像视图,可以写为:
    在这里插入图片描述

    这里,P( p , i , j)是从第j个3D点( x′, y′, z′j)投影到第i个视图的2D点, T i ∈ R 3 × 4 T_i∈R^{3 × 4} TiR3×4 是第i个相机的已知投影矩阵。

4.时间自注意力

  • 除了空间信息,时间信息对于视觉系统理解周围环境也是至关重要的。例如,在没有时间线索的情况下,从静态图像中推断运动物体的速度或检测高度遮挡的物体是具有挑战性的。为了解决这个问题,本文设计了时间自注意力,它可以通过结合历史BEV特征来表示当前环境。

  • 鉴于BEV查询Q在当前时间戳t和历史BEV特征Bt - 1保存在时间戳t - 1,首先根据自运动将Bt - 1对齐到Q,以使相同网格上的特征对应于相同的现实位置。这里,我们将对齐后的BEV特征Bt - 1记为B′t - 1。然而,从时间t - 1到t,可移动物体以各种偏移量在现实世界中运动。在不同时间的BEV特征之间构造相同对象的精确关联是具有挑战性的。

  • 因此,本文通过时间自注意力( TSA )层对特征之间的这种时间连接进行建模,该层可以写成如下形式:
    在这里插入图片描述

  • 其中Qp表示位于p = ( x , y)的BEV查询。此外,与传统可变形注意力不同,时间自注意力中的偏移量∆p通过QB′t - 1的级联来预测。特别地,对于每个序列的第一个样本,时序自注意力将退化为一个没有时序信息的自注意力,这里我们将BEV特征{ Q,B′t-1 }替换为重复的BEV查询{ Q,Q }。

  • 相比于在[ 18、38、6]中简单地堆叠BEV,本文的时间自注意力可以更有效地建模长时间依赖。BEVFormer从以前的BEV特征中提取时态信息,而不是多个堆叠的BEV特征,因此需要更少的计算成本和更少的干扰信息。

5.BEV特征的应用

  • 由于BEV特征Bt∈RH × W × C是一个通用的2D特征图,可以用于各种自动驾驶感知任务,因此可以在2D感知方法的基础上稍作修改开发3D目标检测和地图分割任务头。

  • 对于3D目标检测,本文基于2D检测器Deformable DETR设计了一个端到端的3D检测头。这些改进包括使用单尺度BEV特征Bt作为解码器的输入,预测3D边界框和速度而不是2D边界框,以及仅使用L1损失来监督3D边界框回归。有了检测头,我们的模型可以端到端的预测3D边界框和速度,而不需要NMS后处理。

  • 对于地图分割,我们基于二维分割方法展示全景SegFormer 设计了一个地图分割头。由于基于BEV的地图分割与常见的语义分割基本相同,我们利用[ 22 ]的掩码解码器和固定类别的查询来针对每个语义类别,包括包括汽车、车辆、道路(可行驶区域)和车道。

五、实验

1.数据集

  • nuScenes数据集:包含1000个场景,每个场景的时长约为20s,关键样本的标注频率为2Hz。每个样本由6个相机的RGB图像组成,具有360 °的水平视场。对于检测任务,共有来自10个类别的1.4 M标注的3D边界框。

  • Waymo公开数据集:包含798个训练序列和202个验证序列的大规模自动驾驶数据集。

2.实验设置

  • baseline。为了消除任务头的影响,并公平地比较其他BEV生成方法,我们使用VPN和Lift - Splat来替换BEVFormer,并保持任务头和其他设置相同。我们还在不使用历史BEV特征的情况下,通过将时间自注意力调整为传统自注意力,将BEVFormer调整为静态模型BEVFormer - S。

3.实验结果

  • 3D目标检测结果

    • 表1和表2报告了关于nuScenes测试和val分解的主要结果。在公平的训练策略和可比较的模型规模下,本文方法在val集( 51.7 % NDS vs . 42.5 % NDS)上比先前最好的方法DETR3D高出9.2个点。

    • 以往基于相机的方法几乎无法估计速度,而我们的方法证明了时间信息在多相机检测的速度估计中起着至关重要的作用。在测试集上,BEVFormer的平均平均速度误差( mean Average Velocity Error,mAVE )为0.378 m / s,远远优于其他基于相机的方法,接近基于LiDAR的。
      在这里插入图片描述在这里插入图片描述

  • 多任务感知结果

    • 同时使用检测和分割头训练我们的模型,以验证模型对多个任务的学习能力,结果如表4所示。

    • 在相同设置下比较不同的BEV编码器时,除了道路分割结果与BEVFormer - S相当外,BEVFormer在所有任务上都取得了更高的性能。例如,在联合训练的情况下,BEVFormer在检测任务( 52.0 % NDS v.s. 41.0 % NDS)上比Lift - Splat * 高出11.0点,在车道分割( 23.9 % v.s. 18.3 %)上比Lift - Splat *高出5.6点。与单独训练任务相比,多任务学习通过共享更多的模块,节省了计算成本,减少了推理时间,包括主干和BEV编码器。

    • 在本文中BEV编码器生成的BEV特征可以很好地适应不同的任务,并且多任务头的模型训练在检测任务和车辆分割上表现更好。然而,对于道路和车道分割,联合训练的模型表现不如单独训练的模型,这是多任务学习中一种常见的现象,称为负迁移。

  • 消融研究

    • 空间交叉注意的有效性。

      • 为了验证空间交叉注意力的效果,使用BEVFormer - S进行消融实验排除时间信息的干扰,结果如表5。

      在这里插入图片描述

      • 默认的空间交叉注意力是基于可变形注意力的。为了进行比较,我们还构建了另外两种具有不同注意力机制的基线:( 1 )使用全局注意力替换可变形注意力;( 2 )使得每个查询只与其参考点进行交互,而不与周围的局部区域进行交互。为了进行更广泛的比较,我们还将BEVFormer替换为VPN 和Lift - Spalt提出的BEV生成方法。观察到在可比较的模型规模下,可变形注意力显著优于其他注意力机制。全局注意力消耗过多GPU内存,点交互感受野有限。稀疏注意力由于与先验确定的感兴趣区域进行交互,平衡感受野和GPU消耗,获得了更好的性能。
    • 时间自注意力的有效性。

      • 由表1和表4可以观察到,在相同的设置下,BEVFormer比BEVFormer - S有显著的改进,特别是在具有挑战性的检测任务上。时间信息的作用主要体现在以下几个方面:( 1 )时间信息的引入极大地提升了速度估计的精度;( 2 )利用时间信息预测目标的位置和朝向更加准确;( 3 )由于时间信息包含过去物体的线索,我们在严重遮挡的物体上获得了更高的召回率,如图3所示。
        在这里插入图片描述

      • 不同遮挡率子集的检测结果。根据{ 0 ~ 40 %,40 ~ 60 %,60 ~ 80 %,80 ~ 100 % }的可见性将nu Scenes val集合划分为4个子集。( a ):受时间信息的增强,BEVFormer在所有子集上都有较高的召回率,尤其是在能见度最低的子集上( 0 ~ 40 % )。( b )、( d )、( e ):时间信息有利于平移、定向和速度精度。( c )和( f ):不同方法之间的尺度和属性误差差距最小。时间信息并不能帮助对象的尺度预测。

      • 为了评估BEVFormer在不同遮挡程度物体上的表现,我们根据nuScenes提供的官方可见性标签将nuScenes的验证集划分为4个子集。在每个子集中,我们还计算了匹配时中心距离阈值为2米的所有类别的平均召回率。所有方法的预测框最大数量都是300,以公平地比较召回率。在只有0 - 40 %的对象可见的子集上,BEVFormer的平均召回率优于BEVFormer - S和DETR3D,超过6.0 %。

    • 模型规模和延迟。

    • 在这里插入图片描述

      • 在表6中比较了不同配置的性能和延迟,从是否使用多尺度视图特征BEV查询的形状层数3个方面对BEVFormer的尺度进行消融,以验证性能和推理延迟之间的权衡。

      • 可以观察到在BEVFormer中使用一个编码器层的配置C达到了50.1 %的NDS,并将BEVFormer的延迟从原来的130ms降低到了25ms。配置D具有单尺度视图特征、较小的BEV尺寸和仅有1个编码器层,虽然与默认配置相比损失了3.9个点,但在推理过程中仅消耗了7ms。然而,然而,由于多视角图像输入,限制效率的瓶颈在于主干网,高效的自动驾驶主干网值得深入研究。总体而言,我们的架构能够适应不同的模型规模,并能够灵活地权衡性能和效率。

  • 可视化

  • 在这里插入图片描述

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

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

相关文章

(补)算法刷题Day24: BM61 矩阵最长递增路径

题目链接 思路 方法一:dfs暴力回溯 使用原始used数组4个方向遍历框架 , 全局添加一个最大值判断最大的路径长度。 方法二:加上dp数组记忆的优雅回溯 抛弃掉used数组,使用dp数组来记忆遍历过的节点的最长递增路径长度。每遍历到已…

目标检测-R-CNN

R-CNN在2014年被提出,算法流程可以概括如下: 候选区域生成:利用选择性搜索(selective search)方法找出图片中可能存在目标的候选区域(region proposal) CNN网络提取特征:对候选区域进行特征提取(可以使用AlexNet、VGG等网络) 目…

Sigrity SystemSI仿真分析教程文件路径

为了方便读者能够快速上手和学会Sigrity SystemSI 的功能,将Sigrity SystemSI仿真分析教程专栏所有文章对应的实例文件上传至以下路径 https://download.csdn.net/download/weixin_54787054/90171488?spm1001.2014.3001.5503

harmony UI组件学习(1)

Image 图片组件 string格式,通常用来加载网络图片,需要申请网络访问权限:ohos.permission.INTERNET Image(https://xxx.png) PixelMap格式,可以加载像素图,常用在图片编辑中 Image(pixelMapobject) Resource格式,加…

【Linux进程】进程间通信(共享内存、消息队列、信号量)

目录 前言 1. System V IPC 2. 共享内存 系统调用接口 shmget ftok shmat shmdt shmctl 共享内存的读写 共享内存的描述对象 3. 消息队列 msgget msgsnd msgctl 消息队列描述对象 4. 信号量 系统调用接口 semget semctl 信号量描述对象 5. 系统层面IPC资源 6.…

模型 八角行为分析法(行为激发)

系列文章 分享 模型,了解更多👉 模型_思维模型目录。激发行为的八大心理驱动力模型。 1 八角行为分析法的应用 1.1 支付宝蚂蚁森林 支付宝的蚂蚁森林是一个旨在鼓励用户参与环保活动的产品。用户通过日常的低碳行为(如步行、线上支付等&…

【数据结构练习题】链表与LinkedList

顺序表与链表LinkedList 选择题链表面试题1. 删除链表中等于给定值 val 的所有节点。2. 反转一个单链表。3. 给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。4. 输入一个链表,输出该链…

网安瞭望台第16期

国内外要闻 Apache Struts 文件上传漏洞(CVE - 2024 - 53677) 近日,Apache Struts 被发现存在文件上传漏洞(CVE - 2024 - 53677),安恒 CERT 评级为 2 级,CVSS3.1 评分为 8.1。 漏洞危害&#x…

基于python使用UDP协议对飞秋进行通讯—DDOS

基于飞秋的信息传输 声明:笔记的只是方便各位师傅学习知识,以下代码、网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。 老规矩,封面在文末! 飞秋介绍 (…

JAVA:组合模式(Composite Pattern)的技术指南

1、简述 组合模式(Composite Pattern)是一种结构型设计模式,旨在将对象组合成树形结构以表示“部分-整体”的层次结构。它使客户端对单个对象和组合对象的使用具有一致性。 设计模式样例:https://gitee.com/lhdxhl/design-pattern-example.git 2、什么是组合模式 组合模式…

LeetCode:222.完全二叉树节点的数量

跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:222.完全二叉树节点的数量 给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二…

MaxKB基于大语言模型和 RAG的开源知识库问答系统的快速部署教程

1 部署要求 1.1 服务器配置 部署服务器要求: 操作系统:Ubuntu 22.04 / CentOS 7.6 64 位系统CPU/内存:4C/8GB 以上磁盘空间:100GB 1.2 端口要求 在线部署MaxKB需要开通的访问端口说明如下: 端口作用说明22SSH安装…

基于指纹图像的数据隐藏和提取matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a 3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频&#xff09…

kubeadm一键部署K8S 集群架构

kubeadm一键部署K8S 集群架构(centos7) https://www.k8src.cn/ https://kubernetes.io/zh-cn/docs/home/ https://blog.csdn.net/m0_58709145/article/details/140128179 https://blog.csdn.net/jiaqijiaqi666/article/details/129745828 Kubeadm init报错[ERROR CRI]: contai…

直流电机驱动电路分享(HIP4082)

一、原理图分享 注意:M2_INA、M2_INB可直接接3.3V电平信号。 二、芯片介绍 1、HIP4082 HIP4082是一款高频驱动器,专为半桥和全桥应用而设计。它具有四个高/低侧驱动输出,可以提供高达100V的驱动电压。HIP4082还具有逻辑级输入和反馈输入&a…

企业版 YashanDB 23.2.4 分布式集群 数据库一主二备集群安装部署指南

一、概述 1.1 文档目标 本部分旨在为技术人员提供崖山数据库企业版 23.2 在 CentOS 7 x86_64 操作系统上进行安装部署操作的全面且清晰的指引。通过对系统架构、集群拓扑和部署需求的精确阐述,使读者能够在安装过程开始前形成系统的概念架构,为后续的详…

性能】JDK和Jmeter的安装与配置

一、JDK环境配置 1. 下载JDK 官网下载地址:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html 选择对应系统的安装包,下载后安装,安装中记录JDK安装的地址,之后一直点击下一…

Mysql之YUM安装时GPG 密钥报错问题处理

一、背景说明 使用YUM安装mysql5.7的时候报错,报错信息提示未安装公钥。博主查看/etc/yum.repos.d/mysql-community.repo配置文件中关于公钥的配置,确实启用了公钥验证,博主再排查过程中还是走了一些弯路,最终顺利解决了&#xff…

启动报错java.lang.NoClassDefFoundError: ch/qos/logback/core/status/WarnStatus

报错信息图片 日志: Exception in thread "Quartz Scheduler [scheduler]" java.lang.NoClassDefFoundError: ch/qos/logback/core/status/WarnStatus先说我自己遇到的问题,我们项目在web设置了自定义的log输出路径,多了一个 / 去…

Elasticsearch-分词器详解

什么是分词器 1、分词器介绍 对文本进行分析处理的一种手段,基本处理逻辑为按照预先制定的分词规则,把原始文档分割成若干更小粒度的词项,粒度大小取决于分词器规则。 常用的中文分词器有ik按照切词的粒度粗细又分为:ik_max_word和ik_smart&…