BEVFormer 论文阅读

论文链接

BEVFormer

  • BEVFormer,这是一个将Transformer和时间结构应用于自动驾驶的范式,用于从多相机输入中生成鸟瞰(BEV)特征
  • 利用查询来查找空间/时间,并相应地聚合时空信息,从而为感知任务提供更强的表示

0. Abstract

  • BEVFormer,通过时空转换器学习统一的BEV表示,以支持多个自动驾驶感知任务
  • 过预定义的网格状BEV查询与空间和时间空间相互作用,以利用空间和时间信息
  • 为了聚合空间信息,设计了空间交叉注意力,每个BEV查询从不同摄像机视图中提取感兴趣区域的空间特征
  • 对于时间信息,提出了时间自注意力,以循环地融合历史BEV信息

1. Abstract

  • 相比于基于激光雷达的对应方法,摄像头拥有能够检测远距离物体和识别基于视觉的道路元素(例如,交通信号灯、停车线)的优势
  • 基于单目框架和跨摄像头后处理的方法性能和效率较低
  • 作为单目框架的替代方案,更统一的框架是从多摄像头图像中提取整体表示
    • 鸟瞰图(BEV)是周围场景的常用表示,清楚地呈现了物体的位置和规模
    • BEV 是连接时空空间的理想桥梁,利用 BEV 特征循环传递从过去到现在的时间信息,与 RNN 异曲同工
  • BEVFormer 包含三个关键设计
    • 网格状 BEV 查询,通过注意力机制灵活地融合空间和时间特征
    • 空间交叉注意力模块,聚合来自多个维度的空间特征
    • 时间自注意力模块,用于从历史 BEV 特征中提取时间信息

该模型可以与不同的特定任务头,进行端到端 3D 对象检测和地图分割

本文的主要贡献

  • 提出了 BEVFormer,**一种时空转换器编码器,**可将多摄像机和/或时间戳输入投射到 BEV 表示中。凭借统一的 BEV 特征,可以同时支持多个自动驾驶感知任务,包括 3D 检测和地图分割
  • 设计了可学习的 BEV 查询以及空间交叉注意层和时间自注意层,分别从跨摄像机查找空间特征和从历史 BEV 查找时间特征,然后将它们聚合成统一的 BEV 特征
  • 在多个具有挑战性的基准上评估了所提出的 BEVFormer。始终实现了改进的性能

2. Related Work

2.1 Transformer-based 2D perception

  • DETR 使用一组对象查询直接由交叉注意力解码器生成检测结果,但训练时间长
  • Deformable DETR 可变形注意力与局部感兴趣区域交互,仅对每个参考点附近的 K 个点进行采样并计算注意力结果,效率很高并显着缩短了训练时间

2.2 Camera-based 3D Perception

经典方案

  • 基于 2D 边界框预测 3D 边界框
  • 将图像特征转换为 BEV 特征,并从自上而下的视图预测 3D 边界框
  • 利用深度估计或分类深度分布中的深度信息将图像特征转换为 BEV 特征

**多相机生成 BEV **

  • 通过逆透视映射 (IPM) 将透视图转换为 BEV
  • 根据深度分布生成 BEV 特征
  • 通过堆叠来自多个时间戳的BEV特征来考虑时间信息

3. BEVFormer

提出了一种新的基于 Transformer 的 BEV 生成框架,它可以通过注意力机制有效聚合来自多视图相机的时空特征和历史 BEV 特征

3.1 Overall Architecture

  • BEVFormer 有 6 个编码器层,每个编码器层都遵循 Transformer 的传统结构

  • 除此之外有三种定制设计,即 BEV 查询、空间交叉注意力和时间自注意力

    • BEV 查询:网格状的可学习参数,旨在通过注意机制从多摄像机视图查询 BEV 空间中的特征

    • 空间交叉注意力和时间自注意力:与 BEV 查询一起使用的注意力层,用于根据 BEV 查询查找和聚合多摄像机图像中的空间特征以及历史 BEV 中的时间特征

在这里插入图片描述

3.2 BEV Queries

  • 预先定义一组网格状的可学习参数 Q ∈ R H × W × C Q ∈ \mathbb{R}^{H×W×C} QRH×W×C 作为 BEVFormer 的查询,其中 H、W 是 BEV 平面的空间形状
  • 位于 Q 的 p = ( x , y ) p = (x, y) p=(x,y) 处的查询 Q p ∈ R 1 × C Q_p ∈ \mathbb{R}^{1×C} QpR1×C 负责 BEV 平面中相应的网格单元区域
  • BEV 平面中的每个网格单元对应于现实世界的 s 米大小。默认情况下,BEV 功能的中心对应于本车的位置
  • 将 BEV 查询 Q 输入到 BEVFormer 之前将可学习的位置嵌入添加到其中

3.3 Spatial Cross-Attention

  • 多摄像头的 3D 感知输入规模大,故开发了基于可变形注意力的空间交叉注意力

  • 每个 BEV 查询 Q p Q_p Qp 仅与其跨摄像机视图的感兴趣区域交互

    • 首先将 BEV 平面上的每个查询提升为类似柱子的查询,从柱子中采样 Nref 3D 参考点,然后将这些点投影到 2D 视图。投影的2D点只能落在某些视图上,而其他视图不会命中

    • 将点击视图称为 Vhit。将这些 2D 点视为查询 Q p Q_p Qp 的参考点,并从这些参考点周围的命中视图 Vhit 中采样特征

    • 对采样特征进行加权求和,作为空间交叉注意力(SCA)的输出
      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 ) (Eq.2) SCA(Q_p, F_t) = \frac{1}{|V_{hit}|} \underset{i∈Vhit}∑ \sum\limits^{N_{ref}}_{j=1} DeformAttn(Q_p, \mathcal{P}(p,i,j), F^i_t ) \tag{Eq.2} SCA(Qp,Ft)=Vhit1iVhitj=1NrefDeformAttn(Qp,P(p,i,j),Fti)(Eq.2)
      其中 i 索引相机视图,j 索引参考点,Nref 是每个 BEV 查询的总参考点。 F t i F_t^i Fti 是第 i 个摄像机视图的特征。对于每个 BEV 查询 Q p Q_p Qp,我们使用投影函数 P ( p , i , j ) \mathcal{P}(p,i,j) P(p,i,j) 来获取第 i 个视图图像上的第 j 个参考点

      对于投影函数:

      • 首先计算与位于 Q 的 p = ( x , y ) p=(x,y) p=(x,y) 处的查询 Q p Q_p Qp 对应的现实世界位置 ( x ′ , y ′ ) (x',y') (x,y)
        x ′ = ( x − W 2 ) × s ; y ′ = ( y − H 2 ) × s (Eq.3) x'=(x-\frac{W}{2})\times s;\ \ \ \ y'=(y-\frac{H}{2})\times s \ \tag{Eq.3} x=(x2W)×s;    y=(y2H)×s (Eq.3)
        H,W是BEV查询的空间形状,s 是BEV网格的分辨率大小, ( x ′ , y ′ ) (x',y') (xy) 是本车位置为原点的坐标

      • 预先定义了一组锚点高度 { z j ′ } j = 1 N r e f \{z'_j\}^{N_{ref}}_{j=1} {zj}j=1Nref,以确保我们能够捕获出现在不同高度的线索。这样,对于每个查询 Q p Q_p Qp,我们获得了3D参考点 ( x ′ , y ′ , z j ′ ) j = 1 N r e f (x',y',z'_j)^{N_{ref}}_{j=1} (x,y,zj)j=1Nref 的支柱
        P ( p , i , j ) = ( x i j , y i j ) , w h e r e z i j ⋅ [ x i j y i j 1 ] T = T i ⋅ [ x ′ y ′ z j ′ 1 ] T \begin{align} \mathcal{P}(p,i,j)&=(x_{ij},y_{ij}), \\ where\ \ z_{ij} \cdot [x_{ij}\ \ y_{ij}\ \ 1]^T &= T_i\cdot[x'\ \ y'\ \ z'_j\ \ 1]^T \tag{Eq.4} \end{align} P(p,i,j)where  zij[xij  yij  1]T=(xij,yij),=Ti[x  y  zj  1]T(Eq.4)

3.4 Temporal Self-Attention

  • 给定当前时间戳 t t t 处的 BEV 查询 Q Q Q 和时间戳 t − 1 t−1 t1 处保留的历史 BEV 特征 B t − 1 B_{t−1} Bt1

  • 首先根据自我运动将 B t − 1 B_{t−1} Bt1 Q Q Q 对齐,以使同一网格处的特征对应于相同的现实世界位置

  • 将对齐的历史 BEV 特征 B t − 1 B_{t−1} Bt1 表示为 B t − 1 ′ B'_{t−1} Bt1

  • 时间自注意力(TSA)层对特征之间的时间联系进行建模
    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}\}) = \underset{V ∈\{Q,B'_{t−1}\}}{\sum} DeformAttn(Q_p,p,V), TSA(Qp,{Q,Bt1})=V{Q,Bt1}DeformAttn(Qp,p,V),

    • Q p Q_p Qp 表示位于 p = ( x , y ) p = (x, y) p=(x,y) 处的 BEV 查询
    • 时间自注意力中的偏移量 Δ p Δp Δp 是通过 Q Q Q B t − 1 ′ B'_{t−1} Bt1 的串联来预测的
    • 对于每个序列的第一个样本,时间自注意力将退化为没有时间信息的自注意力,用重复的 BEV 查询 { Q , Q } \{Q,Q\} {Q,Q} 替换 BEV 特征 { Q , B t − 1 ′ } \{Q,B'_{t−1}\} {Q,Bt1}
  • 时间自注意力可以更有效地建模长时间依赖性

  • BEVFormer 从之前的 BEV 特征中提取时间信息,而不是多个堆叠 BEV 特征,因此需要更少的计算成本并受到更少的干扰信息

3.5 Applications of BEV Features

3D 目标检测

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

地图分割

  • 基于 2D 分割方法 Panoptic SegFormer 设计了一个地图分割头
  • 基于BEV的地图分割与常见的语义分割基本相同

3.6 Implementation Details

训练阶段

  • 对于时间戳 t 的每个样本,从过去 2 秒的连续序列中随机采样另外 3 个样本,将这四个样本的时间戳记为 t−3、t−2、t−1 和 t
  • 循环生成 BEV 特征 { B t − 3 , B t − 2 , B t − 1 } \{B_{t−3}, B_{t−2}, B_{t−1}\} {Bt3,Bt2,Bt1},并且此阶段不需要梯度
  • 对于时间戳 t−3 的第一个样本,没有先前的 BEV 特征,并且时间自注意力退化为自注意力
  • 模型基于多相机输入和先验BEV特征 B t − 1 B_{t−1} Bt1 生成BEV特征 B t B_t Bt,使得 B t B_t Bt包含跨越四个样本的时间和空间线索
  • 最后,我们将 BEV 特征 B t B_t Bt 输入到检测和分割头中并计算相应的损失函数

推理阶段

  • 在推理阶段,按时间顺序评估视频序列的每一帧
  • 前一个时间戳的BEV特征被保存并用于下一个时间戳

4. Experiments

数据集

  • nuScenes Dataset
  • Waymo Open Dataset

4.1 Experimental Settings

  • 两种主干:从 FCOS3D 检查点初始化的 ResNet101-DCN 和从 DD3D 检查点初始化的VoVnet-99
  • 利用 FPN 的输出多尺度特征,大小为 1/16、1/32、1/64,维度为 C = 256
  • 对于nuScenes上的实验,BEV查询的默认大小为200×200,X轴和Y轴的感知范围为[−51.2m,51.2m],BEV网格的分辨率s的大小为0.512m
  • 用 24 个时期训练模型,学习率为 2 × 1 0 − 4 2×10^{−4} 2×104
  • 对于 Waymo 上的实验,BEV查询的默认空间形状为300×220,X轴的感知范围为[−35.0m,75.0m] Y 轴为 [−75.0m, 75.0m]。每个网格的分辨率 s 的大小为0.5m

Baseline

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

4.2 3D Object Detection Results

4.3 Multi-tasks Perception Results

4.4 Ablation Study

空间交叉注意力的有效性

在可比较的模型规模下,可变形注意力明显优于其他注意力机制。全局注意力消耗过多的GPU内存,点交互的感受野有限。稀疏注意力可以实现更好的性能,因为它与先验确定的感兴趣区域交互,平衡感受野和 GPU 消耗

时间自注意力的有效性

时间信息的作用主要有以下几个方面:

  • 时间信息的引入极大地有利于速度估计的准确性;
  • 利用时间信息,预测物体的位置和方向更加准确;
  • 由于时间信息包含过去的对象线索,我们在严重遮挡的对象上获得了更高的召回率

模型规模和延迟

从三个方面消除了 BEVFormer 的尺度,包括是否使用多尺度视图特征、BEV 查询的形状和层数,以验证性能和推理延迟之间的权衡

4.5 Visualization Results

5. Discussion and Conclusion

  • 提出了 BEVFormer 从多摄像头输入生成鸟瞰图特征。 BEVFormer 可以有效聚合空间和时间信息并生成强大的 BEV 功能,同时支持 3D 检测和地图分割任务。

局限性:基于相机的方法在效果和效率上与基于激光雷达的方法仍然存在一定的差距。从 2D 信息准确推断 3D 位置仍然是基于相机的方法的长期挑战

更广泛的影响:BEVFormer 所展示的优势,例如更准确的速度估计和对低可见度物体的更高召回率,对于构建更好、更安全的自动驾驶系统及其他系统至关重要

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

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

相关文章

c++之json的创建,解析,增加,删除

c之json的创建,解析,增加,删除 1.存储方式,类型2.宏3.创建,保存json4.解析5.删除6.修改 1.存储方式,类型 typedef struct cJSON { struct cJSON *next,prev; / next是获取下一个元素数据,prev是获取前一个元素数据 */ struct cJSON child…

13.利用辗转相除法求两个整数的最大公约数和最小公倍数。如96,36

文章目录 前言一、题目描述 二、题目分析 三、解题 前言 本系列为循环结构编程题,点滴成长,一起逆袭。 一、题目描述 利用辗转相除法求两个整数的最大公约数和最小公倍数,如96,36 二、题目分析 最小公倍数(输入的两个数之积)除(它们的最大公约数) 三…

C++——友元函数

如下是一个日期类&#xff1a; class Date { public:Date(int year 2023, int month 10, int day 1){_year year;_month month;_day day;if (_month < 1 || month > 12 || _day < 1 || _day > GetMonthDay(_year, _month)){cout << "日期不规范&…

一篇博客读懂单链表——Single-List

目录 一、初识单链表 单链表是如何构造的&#xff1a; 单链表如何解决顺序表中的问题&#xff1a; 二、单链表的初始定义 三、尾插和头插 3.1 新建结点CreateNode 3.2 打印SLTPrint 3.3 尾插SLTPushBack 3.4 头插SLTPushFront 四、尾删和头删 4.1 尾删SLTPopBack…

hub.docker访问不了的问题(一步解决)

暂时我也不清楚&#xff0c;但是下面这个网址可以用(可以先用着)Docker Hub Container Image Library | App Containerization (axlinux.top)https://hub.axlinux.top/

Maya 2024 for Mac(3D建模软件)

Maya 2024是一款三维计算机图形软件&#xff0c;具有强大的建模、动画、渲染、特效等功能&#xff0c;广泛应用于影视、游戏、广告等行业。以下是Maya 2024软件的主要功能介绍&#xff1a; 建模&#xff1a;Maya 2024具有强大的建模工具&#xff0c;包括多边形建模、曲面建模、…

【工程实践】Docker使用记录

前言 服务上线经常需要将服务搬到指定的服务器上&#xff0c;经常需要用到docker&#xff0c;记录工作中使用过dcoker指令。 1.写Dockerfile 1.1 全新镜像 FROM nvidia/cuda:11.7.1-devel-ubuntu22.04ENV WORKDIR/data/Qwen-14B-Chat WORKDIR $WORKDIR ADD . $WORKDIR/RUN ap…

洗地机是智商税吗?洗地机有没有必要买?2023洗地机推荐

传统的扫地拖地方式不仅时间长&#xff0c;被毛孩子和萌娃制造的顽固污渍更是让人头痛不已&#xff0c;高效又有效的地面清洁方式成了我们最大的诉求。目前洗地机受到青睐&#xff0c;异常火爆&#xff0c;也成为一众清洁扫地的选择之一&#xff0c;那洗地机到底是不是智商税呢…

C语言从入门到精通之【printf和scanf函数】

printf()是输出函数&#xff0c;scanf()是输入函数&#xff0c;但是它们的工作原理几乎相同。两个函数都使用格式字符串和参数列表。 printf()函数的格式 printf( 格式字符串, 待打印项1, 待打印项2,…);待打印项1、待打印项2等都是要打印的项。它们可以是变量、常量&#xff…

业务出海之服务器探秘

这几年随着国内互联网市场的逐渐饱和&#xff0c;越来越多的公司加入到出海的行列&#xff0c;很多领域都取得了很不错的成就。虽然出海可以获得更加广阔的市场&#xff0c;但也需要面对很多之前在国内可能没有重视的一些问题。集中在海外服务器的选择维度上就有很大的变化。例…

使用validator实现枚举类型校验

使用validator实现枚举类型校验 前言&#xff1a; 在前端调用后端接口传递参数的过程中&#xff0c;我们往往需要对前端传递过来的参数进行校验&#xff0c;比如说我们此时需要对用户的状态进行更新&#xff0c;而用户的状态只有正常和已删除&#xff0c;并且是在代码中通过枚…

【华为云IaaS基础三件套之----计算ECS、网络EIP、存储EVS】

MD[华为云IaaS基础三件套----计算、网络、存储] 华为云IaaS基础三件套之----计算ECS、网络EIP、存储EVS 说明: 这里只是简单从计算/网络/存储&#xff0c;进行介绍&#xff0c;阐明云上对于云下的优势&#xff1b;因ECS是三者综合&#xff0c;故最后说明。 1.网络----弹性公…

Day02_《MySQL索引与性能优化》

文章目录 一、SQL执行顺序二、索引简介1、关于索引2、索引的类型Btree 索引Btree 索引 三、Explain简介四、Explain 详解1、id2、select_type3、table4、type5、possible_keys6、key7、key_len8、ref9、rows10、Extra11、小案例 五、索引优化1、单表索引优化2、两表索引优化3、…

安装 Lua 的 HTTP 库

首先&#xff0c;你需要安装 Lua 的 HTTP 库。可以使用 LuaRocks 来安装。以下是安装命令&#xff1a; luarocks install http然后&#xff0c;你可以使用以下代码来爬取网页内容&#xff1a; local http require http-- 设置代理信息 http.set_proxy(jshk.com.cn)-- 网页UR…

灵活运用Vue指令:探究v-if和v-for的使用技巧和注意事项

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 ⭐ 专栏简介 &#x1f4d8; 文章引言 一、作…

为什么打开idea时,没有启动页面,如何解决?

更新idea2021.2后&#xff0c;当双击idea打开时&#xff0c;发现没有启动界面&#xff0c;直接进入IDEA界面&#xff0c;中间等待时间&#xff0c;让人误以为没有打开idea成功&#xff0c;使得多次点击idea图标。 解决方案就是 在idea界面菜单栏中找到帮助&#xff08;Help)&a…

全域全自主建设,亚信科技AntDB数据库助力广电5G业务上线运行

自2019年6月&#xff0c;中国广电成功获得5G牌照以来&#xff0c;迅速推进网络建设目标&#xff0c;成为5G网络覆盖广、应用场景多、用户体验出色的第四大运营商。其依托全球独有的700MHz频谱资源&#xff0c;具备覆盖能力强、容量足、速率高的优势。通过不断深化和中国移动的共…

Gempy 实现地理位置3D模型的展示以及导出

1. 首先安装python gempy 包 pip install gempy python 版本 3.10 这个很重要,版本不同可能会报错 2. gdal 可能会报错, 一下地址根据python版本下载,然后移入到python解释器环境中, Script文件中,然后cmd ,pip install 文件名安装即可 Releases cgohlke/geospatial-wheels …

μC/OS-II---计时器管理2(os_tmr.c)

目录 获取计时器的名字获取计时器到期前剩余的时间查看计时器的状态 计时器是倒计时器&#xff0c;当计数器达到零时执行某个动作。用户通过回调函数提供这个动作。回调函数是用户声明的函数&#xff0c;在计时器到期时被调用。在回调函数中绝对不能进行阻塞调用&#xff08;例…

《008.SpringBoot之教务系统》【界面简洁功能简单】

《008.SpringBoot之教务系统》【界面简洁功能简单】 项目简介 [1]本系统涉及到的技术主要如下&#xff1a; 推荐环境配置&#xff1a;DEA jdk1.8 Maven MySQL 前后端分离; 后台&#xff1a;SpringBootMybatis; 前台&#xff1a;JSPBootStrap; [2]功能模块展示&#xff1a; 管…