Bevformer:通过时空变换从多摄像机图像学习鸟瞰图表示

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

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

论文背景

三维视觉感知任务,包括基于多摄像机图像的三维检测和地图分割,是自动驾驶系统中必不可少的任务。

1.利用相机
尽管基于激光雷达的方法取得了显著的进展,但相机也有其不可忽略的优势。
相机优势:除了部署成本低之外,与基于激光雷达的同类设备相比,摄像机在探测远距离物体和识别基于视觉的道路元素(如红绿灯、停车线)方面具有理想的优势。

自动驾驶中对周围场景的视觉感知可以从多个摄像头给出的二维线索中预测出三维 bounding box 或 semantic maps。
基于单目框架和跨相机后处理。 这种框架的缺点是,它单独处理不同的视图,不能跨摄像机捕捉信息,导致性能和效率低下。
作为单目框架的替代,一个更统一的框架是从多摄像机图像中提取BEV。
但是 3D 目标检测任务需要很强的BEV特征来支持精确的三维 bounding box 预测,而从二维平面生成BEV是不适定的。
此外,基于深度信息的BEV框架生成BEV特征对深度值或深度分布的准确性非常敏感。因此,基于BEV的方法的检测性能受到复合误差的影响,不准确的BEV特征会严重损害最终性能。

论文动机是设计一种不依赖深度信息,能够自适应学习BEV特征而不是严格依赖三维先验的BEV生成方法。 Transformer 通过注意力机制动态聚合有价值的特征,从概念上满足了需求。

2.利用时间信息
现有的最先进的多摄像机三维检测方法很少利用时间信息。自动驾驶面临的重大挑战是短时间内,场景中的物体变化迅速,因此简单地叠加交叉时间戳的BEV特征会带来额外的计算成本和干扰信息,这可能并不理想。
受递归神经网络的启发,论文利用BEV特征递归地传递过去到现在的时间信息,这与RNN模型的隐状态类似。

论文内容

论文提出了 BEVformer,能够有效地融合多视点摄像机的时空特征和历史Bev特征。
三个关键点:
1.通过注意力机制灵活融合时空特征的网格BEV查询;
2.空间交叉注意模块用于多摄像机图像空间特征的聚合;
3.时间自注意模块从历史特征中提取时间信息,有利于运动目标的速度估计和严重遮挡目标的检测,且计算开销可忽略不计。
利用 Bevformer 生成的统一特征,该模型可以与不同的任务特定头(如可变形 DETR 和 mask decoder)协作,进行端到端的 3D 目标检测和地图分割。

基于 transformer 的 2D 感知

DETR 使用一组对象查询直接由 cross-attention decoder 产生检测结果。 然而,DETR 的主要缺点是训练时间长。可变形DETR 通过提出的 deformable attention 来解决这个问题。与常规的全局注意不同的是,变形注意与局部感兴趣区域相互作用,仅对每个参考点附近的K个点进行采样,计算出注意结果,提高了训练效率,显著缩短了训练时间。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 ) (1) \tag 1DeformAttn(q,p,x)=\sum_{i=1}^{N_{head}}\mathcal W_i \sum_{j=1}^{N_{key}} \mathcal A_{ij} \cdot W_{i}^{'}x(p+\Delta p_{ij}) DeformAttn(q,p,x)=i=1NheadWij=1NkeyAijWix(p+Δpij)(1) 其中 q 、 p 、 x q、p、x qpx 分别表示查询、参考点和输入特征。 i i i 索引了注意头, N h e a d N_{head} Nhead 表示注意头的总数。 j j j 对采样的 key 进行索引, N k e y N_{key} Nkey 是每个头的总采样 key 数。 W i ∈ R C × ( C / H h e a d ) W_i \in \R^{C \times (C/H_{head})} WiRC×(C/Hhead) W i ′ × R ( C / H h e a d ) × C W_{i}^{'} \times \R^{(C/H_{head}) \times C} Wi×R(C/Hhead)×C 是可学习权重,其中 C C C 是特征维度。 A i , j ∈ [ 0 , 1 ] A_{i,j}\in [0,1] Ai,j[0,1]是预测的注意力权重, 并通过 ∑ j = 1 N k e y A i j = 1. \sum_{j=1}^{N_{key}}A_{ij}=1. j=1NkeyAij=1. Δ p i j ∈ R 2 \Delta p_{ij} \in \R^2 ΔpijR2是对参考点 p 的预测偏移量。 x ( p + Δ p i j ) x(p+\Delta p_{ij}) x(p+Δpij) 表示位置 p + Δ p i j p + \Delta p_{ij} p+Δpij 上的特征。

论文中将 deformable attention 拓展到三维感知任务,以有效地聚合空间和时间信息。

基于相机的 3D 感知

对于 3D 目标检测任务,早期的方法类似于二维检测方法,通常是在二维包围盒的基础上预测三维 bounding box。
将多摄像机图像特征转换为鸟瞰(BEV)特征,可以为各种自动驾驶感知任务提供统一的周围环境表示。
一种简单的方法是通过逆透视映射(IPM)将透视图转换为BEV。
此外,Lift-Splat 基于深度分布生成BEV特征。 也有多种方法利用多层感知器学习从透视图到BEV的平移。
Pyva 提出了一种将前视单目图像转换为BEV的交叉视图 transformer,但由于全局注意力机制的计算代价,这种范式不适用于融合多摄像机特征。
除空间信息外,前人的工作有些还考虑了从多个时间戳中叠加BEV特征的时间信息。
叠加BEV特征约束了固定时间范围内的可用时间信息,带来了额外的计算开销。
论文文提出的时空 transformer 通过同时考虑空间和时间线索生成当前时间的BEV特征,而时间信息是通过 RNN 方法从之前的BEV特征中获取的,其计算开销很小。

BEVFormer

在这里插入图片描述

总体结构

Bevformer 有 6 个编码器层,每个编码器层都遵循传统的 transformers 结构,除了三个定制的设计,即 BEV 查询、空间交叉注意和时间自注意层。

具体地说,BEV查询是网格状的可学习参数,它旨在通过注意力机制从多摄像机视图查询BEV空间中的特征。 空间交叉注意和时间自注意是一种处理BEV查询的注意层,用于根据BEV查询从多摄像机图像中查找和聚集空间特征以及从历史BEV中查找和聚集时间特征。

在推断过程中,在时间戳 t t t 处,将多个摄像机图像馈送到 backbone,并获得不同摄像机视图的特征 F t = { F t i } i = 1 N v i e w F_t=\{F_t^i \}_{i=1}^{N_{view}} Ft={Fti}i=1Nview,其中fi t是第i个视图的特征, N v i e w N_{view} Nview是摄像机视图的总数。 同时,在之前的时间戳 t − 1 t-1 t1 处保留了BEV特征 B t − 1 B_{t-1} Bt1

在每个编码层中,首先使用 BEV 查询 Q,通过时间自注意从先前的 BEV 特征 B t − 1 B_{t−1} Bt1 中查询时间信息。然后利用 BEV 查询Q 通过空间交叉注意从多摄像机特征 F t F_t Ft 中查询空间信息。

在前馈网络之后,编码器层输出精炼的BEV特征,这是下一个编码器层的输入。 经过6个堆叠编码器层后,生成当前时间戳 t t t 处的统一BEV特征 B t B_t Bt。 以BEV特征 B t B_t Bt 为输入,通过三维检测头和地图分割头预测三维 bounding box 和语义地图等感知结果。

BEV 查询

预先定义了一组网格状的可学习参数 Q ∈ R H × W × C Q∈\R^{H×W×C} QRH×W×C 作为 Bevformer 的查询, 式中 H , W H,W H,W 为 BEV 平面的空间形状。其中,位于 Q Q Q p = ( x , y ) p = (x, y) p=(x,y) 处的查询 Q p ∈ R 1 × C Q_p∈\R^{1×C} QpR1×C 负责 BEV 平面中相应的网格单元区域。BEV 平面上的每个网格单元对应于真实世界中 s s s 米的大小。BEV特征中心默认对应 ego 车的位置。在BEV查询 Q 输入到 BEVFormer 之前添加了可学习的 positional embedding。

空间 Corss-Attention

在这里插入图片描述
首先将 BEV 平面上的每个查询提升为 pillar-like query,从柱子上取样 N r e f N_{ref} Nref 3D参考点,然后将这些点投影到 2D 视图上。对于一个BEV查询,投影的2D点只能落在某些视图上,其他视图不会被 hit。 在这里,将 hit 视图称为 V h i t \mathcal V_{hit} Vhit。之后,将这些2D点作为查询 Q p Q_p Qp 的参考点,并围绕这些参考点对命中视图 V h i t \mathcal V_{hit} Vhit 的特征进行采样。 最后,对采样的特征进行加权和,作为空间 Corss-Attention 的输出。 空间 Corss-Attention (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 ) , (2) \tag 2 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),(2)其中, i i i 索引相机视图, j j j 索引参考点, N r e f N_{ref} Nref 是每个 BEV 查询的总参考点。 F t i F_t^i Fti 是第 i i i 个相机视图的特性。对于每个BEV查询 Q p Q_p Qp,我们使用投影函数 P ( p , i , j ) \mathcal P(p, i, j) P(p,i,j) 来获得第 i i i 个视图图像上的第 j j j 个参考点。

从投影函数 P \mathcal P P 中获取视图图像上的参考点,首先计算真实世界的位置 ( x ′ , y ′ ) (x^{'},y^{'}) (x,y),对应于位于 Q Q Q p = ( x , y ) p =(x, y) p=(x,y) 处的查询 Q p Q_p Qp x ′ = ( x − W 2 ) × s ; y ′ = ( y − H 2 ) × s , (3) \tag 3 x^{'} = (x- \frac{W}{2}) \times s; \space y^{'}=(y-\frac{H}{2}) \times s, x=(x2W)×s; y=(y2H)×s,(3) H H H W W W 是 BEV 查询的空间形状, s s s 是BEV网格的分辨率大小, ( x ′ , y ′ ) (x^{'},y^{'}) (x,y) 是以 ego 车的位置为原点的坐标。

在三维空间中,位于 ( x ′ , y ′ ) (x^{'},y^{'}) (x,y) 处的目标将出现在z轴的高度 z ′ z^{'} z 上。 因此,预先定义了一组锚点高度 { z j ′ } N j = 1 N r e f \{ z_j^{'}\} N_{j=1}^{N_{ref}} {zj}Nj=1Nref,以确保我们能够捕捉到出现在不同高度的 clues. 这样,对于每个查询 Q p Q_p Qp,我们得到一个3D参考点柱 ( x ′ , y ′ , z j ′ ) N j = 1 N r e f (x^{'},y^{'}, z_j^{'}) N_{j=1}^{N_{ref}} (x,y,zj)Nj=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 ′ 1 ] T (4) \tag4\mathcal P(p,i,j) = (x_{ij},y_{ij}) \\ where \space z_{ij}\cdot [x_{ij} \space y_{ij} \space 1]^T=T_i \cdot[x^{'}\space y^{'} \space z^{'} \space 1]^T P(p,i,j)=(xij,yij)where zij[xij yij 1]T=Ti[x y z 1]T(4) P ( p , i , j ) \mathcal P(p,i,j) P(p,i,j)是从第 j j j 个3D点 ( x ′ , y ′ , z j ′ ) (x^{'},y^{'}, z_j^{'}) (x,y,zj) 投影的第 i i i 个视图上的 2D 点。 T I ∈ R 3 × 4 T_I \in \R^{3 \times 4} TIR3×4 是第 i i i 个摄像机的已知投影矩阵.

时间 Self-Attention

除了空间信息外,时间信息也是视觉系统理解周围环境的关键。
例如,在没有时间 clues 的情况下,从静态图像中推断运动物体的速度或检测高度遮挡的物体是很难的。 为了解决这个问题,论文设计了时间 Self-Attention,它可以通过结合历史BEV特征来表示当前环境。

给定当前时间戳 t t t 处的 BEV 查询 Q Q Q 和时间戳 t − 1 t-1 t1 处保留的历史 BEV 特征 B t − 1 B_{t-1} Bt1,首先根据 ego-motion 将 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。然而,从时间 t − 1 t-1 t1 t t t,可移动目标在现实世界中以各种偏移量移动。
难点就是在在不同时间的BEV特征之间构造相同对象的精确关联,因此,论文通过时间 Self-Attention (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 ) (5) \tag 5 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)(5)其中, Q p Q_p Qp 表示位于 p = ( x , y ) p=(x,y) p=(x,y) 的 BEV 查询。 另外,不同于 vanilla deformable attention, 通过 Q Q Q B t − 1 ′ B_{t-1}^{'} Bt1的串联来预测时间 Self-Attention 的偏移量 Δ p Δp Δp。 需要注意的是,对于每个序列的第一个样本,时间Self-Attention 将退化为没有时间信息的 Self-Attention ,其中用重复的BEV查询 { Q , Q } \{Q,Q\} {Q,Q} 代替BEV特征 { Q , B t − 1 ′ } \{Q,B_{t-1}^{'}\} {Q,Bt1}

与简单地将BEV叠加相比,时间 Self-Attention 可以更有效地模拟长时间依赖。 Bevformer 从先前的BEV特征中提取时间信息,而不是多个叠加的 BEV 特征,因此所需的计算量和所受的干扰信息较少。

BEV特征的应用

由于BEV特征 B t ∈ R H × W × C Bt \in R^{H×W×C} BtRH×W×C 是一个通用的二维特征图,可以用于各种自动驾驶感知任务,因此可以在二维感知方法的基础上进行小的修改,开发出 3D 目标检测和地图分割任务头。

总结

论文提出了Bevformer来从多点输入生成鸟瞰特征。 Bevformer可以有效地聚合空间和时间信息,生成强大的BEV特征,同时支持三维检测和地图分割任务。利用多点输入的时空信息可以显著提高视觉感知模型的性能。
但是,基于摄像机的方法在效果和效率上与基于激光雷达的方法还有很大的差距, 从二维信息准确地推断三维位置仍然是基于摄像机的方法的一个长期挑战。

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

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

相关文章

深度解析BERT:从理论到Pytorch实战

本文从BERT的基本概念和架构开始,详细讲解了其预训练和微调机制,并通过Python和PyTorch代码示例展示了如何在实际应用中使用这一模型。我们探讨了BERT的核心特点,包括其强大的注意力机制和与其他Transformer架构的差异。 关注TechLead&#x…

未来智造:珠三角引领人工智能产业集群

原创 | 文 BFT机器人 产业集群是指产业或产业群体在地理位置上集聚的现象,产业集群的研究对拉动区域经济发展,提高区域产业竞争力具有重要意义。 从我国人工智能产业集群形成及区域布局来看,我国人工智能产业发展主要集聚在京津冀、长三角、…

echarts图表静态数据 象形柱形图、折线图、日历饼图、饼状图四种实现

标题 页面全部代码 <template><div class"data-serve"><div class"side"><div class"side-inner"><router-link class"side-btn" to"/camer/pushInfo"><i class"el-icon-picture&q…

51单片机(普中HC6800-EM3 V3.0)实验例程软件分析 电位器AD实验

一、直接上代码 /************************************************************************************** * 电位器AD实验 * 实现现象&#xff1a;下载程序后数码管后4位显示电位器检测的AD值&#xff0c;范围是0-4095&#xff0c;一般达不到最…

使用wkhtmltoimage实现生成长图分享

需求 用户可以选择以长图的形式分享本网页 方法 wkhtmltopdf wkhtmltopdf url filewkhtmltoimage url file java Runtime.getRuntime().exec() 下载 直接去官网下载对应的版本&#xff1a;官网 命令行使用WK > wkhtmltopdf https://www.nowcoder.com /opt/project/…

ExpressLRS开源代码之工程结构

ExpressLRS开源代码之工程结构 1. 源由2. 工程3. 开发环境安装4. pio命令5. ExpressLRS配置6. 硬件认证过程7. 参考资料 1. 源由 ExpressLRS开源代码基于Arduino框架设计&#xff0c;在所支持的硬件环境下&#xff0c;提供900/2400发射机和接收机硬件方案。 该设计提供了一个…

docker 安装xxljob

1. 安装mysql镜像 2.初始化xxljob的数据库和表 一、初始化db:https://codechina.csdn.net/mirrors/xuxueli/xxl-job/-/blob/2.3.1/doc/db/tables_xxl_job.sql 对脚本进行修改&#xff0c;添加ROW_FORMATDYNAMIC 安装xxljob 镜像 docker pull xuxueli/xxl-job-admin:2.3.1 …

警告:Provides transitive vulnerable dependency maven:org.yaml:snakeyaml:1.30

1. 警告 SpringBoot 的 validation 依赖包含有易受攻击的依赖 snakeyaml。 警告信息如下&#xff1a; Provides transitive vulnerable dependency maven:org.yaml:snakeyaml:1.30 意思是&#xff1a;提供了可传递的易受攻击依赖 maven:org.yaml:snakeyaml:1.30 2. 警告示例 …

盖子的c++小课堂——第二十二讲:2维dp

前言 大家好&#xff0c;我又来更新了&#xff0c;今天终于有时间了aaaaaaaa 破500粉了&#xff0c;我太高兴了哈哈哈哈哈哈&#xff08;别看IP地址&#xff0c;我去北京旅游回来了&#xff0c;他没改回来&#xff09;&#xff0c;然后我马上就成为创作者一年了&#xff0c;希…

基于Java+SpringBoot+Vue前后端分离农商对接系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

Android样本Repack重打包检测思路

1. 什么是Android样本重打包&#xff0c;为什么要检测重打包 &#xff08;1&#xff09;apk是zip&#xff0c;很容易做repack &#xff08;2&#xff09;repack后&#xff0c;被抄袭&#xff0c;redirect ad&#xff0c;或者插入malicious payloads &#xff08;3&#xff09;…

传输层—TCP原理详解

目录 前言 1.TCP协议 2.TCP协议段格式 3.如何解包如何分用 4.网络协议栈和文件的关系 5.如何理解TCP报头 6.TCP的特点 7.TCP字段 7.1 16位窗口大小 7.2标志位 8.超时重传 9.连接管理机制 10.滑动窗口 11.拥塞控制 12.延迟应答 13.捎带应答 14.理解TCP的面向字…

使用LightPicture开源搭建私人图床:详细教程及远程访问配置方法

文章目录 1.前言2. Lightpicture网站搭建2.1. Lightpicture下载和安装2.2. Lightpicture网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 现在的手机越来越先进&#xff0c;功能也越来越多&#xff0c;而手机…

计算机网络-谢希任第八版学习笔记总结

一.计算机网络概述 21世纪三个特点 数字化 信息化 智能化&#xff0c;其中主要是围绕智能化。 网络的常见分类&#xff1a; 电话网络 有线电视网络 计算机网络 互联网&#xff1a;Internet 由数量极大的计算机网络相连接 特点&#xff1a; 共享性 连通性 互联网&…

【python爬虫】中央气象局预报—静态网页图像爬取练习

静态网页爬取练习 中央气象局预报简介前期准备步骤Python爬取每日预报结果—以降水为例 中央气象局预报简介 中央气象台是中国气象局&#xff08;中央气象台&#xff09;发布的七天降水预报页面。这个页面提供了未来一周内各地区的降水预报情况&#xff0c;帮助人们了解即将到来…

项目介绍:《Online ChatRoom》网页聊天室 — Spring Boot、MyBatis、MySQL和WebSocket的奇妙融合

在当今数字化社会&#xff0c;即时通讯已成为人们生活中不可或缺的一部分。为了满足这一需求&#xff0c;我开发了一个名为"WeTalk"的聊天室项目&#xff0c;该项目基于Spring Boot、MyBatis、MySQL和WebSocket技术&#xff0c;为用户提供了一个实时交流的平台。在本…

神经网络与卷积神经网络

全连接神经网络 概念及应用场景 全连接神经网络是一种深度学习模型&#xff0c;也被称为多层感知机&#xff08;MLP&#xff09;。它由多个神经元组成的层级结构&#xff0c;每个神经元都与前一层的所有神经元相连&#xff0c;它们之间的连接权重是可训练的。每个神经元都计算…

机器连接和边缘计算

以一种高效、可扩展的方式进行连接和边缘计算的结合&#xff0c;解决了在工业物联网应用中的机器数据集成问题。 一 边缘计算 边缘计算描述了由中央平台管理的数据分散式处理&#xff0c;它对于工业物联网而言非常重要。在许多应用程序中&#xff0c;由于数据量非常大&#xf…

用ChatGPT做一个Chrome扩展 | 京东云技术团队

用ChatGPT做了个Chrome Extension 最近科技圈儿最火的话题莫过于ChatGPT了。 最近又发布了GPT-4&#xff0c;发布会上的Demo着实吸睛。 笔记本上手画个网页原型&#xff0c;直接生成网页。网友直呼&#xff1a;前端失业了&#xff01; 但我觉着啊&#xff0c;真就外行看热闹…

docker-compose 部署nacos 整合 postgresql 为DB

标题docker-compose 部署nacos 整合 postgresql 为DB 前提&#xff1a; 已经安装好postgresql数据库 先创建好一个数据库 nacos&#xff0c;执行以下sql: /** Copyright 1999-2018 Alibaba Group Holding Ltd.** Licensed under the Apache License, Version 2.0 (the "…