论文链接:https://arxiv.org/pdf/2203.17270v1.pdf
代码链接:https://github.com/zhiqi-li/BEVFormer
1. 摘要(Abstract)
3D视觉感知任务,包括基于多摄像头图像的3D检测和地图分割,对于自动驾驶系统至关重要。在这项工作中,我们提出了一个名为BEVFormer
的新框架,该框架通过时空变换学习统一的Bev特征表达,以支持多个自主驾驶感知任务。简而言之,BEVFormer通过预定义的网格状BEV查询,将时间和空间进行交互,从而挖掘空间和时间信息。为了聚合空间信息,我们设计了一个空间交叉注意( spatial cross-attention
),每个BEV查询都从摄像机视图的感兴趣区域提取空间特征。对于时间信息,我们提出了一种时间自我注意( temporal self-attentio
),以反复融合历史BEV信息。我们的方法在nuScenes test set
数据集上,NDS评估值指标达到了SOTA : 56.9%
,比之前基于激光雷达的SOTA方法性能高9个点。我们进一步表明,BEVFormer显著提高了低能见度条件下目标速度估计和调用的精度。
2. 引言(Introduction)
2.1. 之前的方法
在自动驾驶中,对周围场景的视觉感知预计将根据多个摄像头提供的2D线索预测3D Bounding boxes或语义图。最直接的解决方案是基于单目框架和跨摄像头后处理。该框架的缺点是,它单独处理不同的视图,无法跨摄像头捕获信息,导致性能和效率低下。
作为单目框架的替代方案,更统一的框架是从多摄像机图像中提取整体表示。鸟瞰视图(BEV)是一种常用的周围场景表示,因为它清楚地显示了物体的位置和规模,并且适合于各种自主驾驶任务,如感知和规划。尽管之前的地图分割方法(《Fiery: Future instance prediction in bird’s-eye view from surround monocular cameras》、《 Encoding images from arbitrary camera rigs byimplicitly unprojecting to 3d》)证明了BEV的有效性[32,18,29],但基于BEV的方法在3D对象检测方面没有显示出比其他范式显著的优势。其根本原因是,3D目标检测任务需要强大的BEV特征来支持准确的3D边界框预测,但从2D平面生成BEV是不适定的。生成BEV特征的流行BEV框架基于深度信息《Categorical depth distribution networkfor monocular 3d object detection》),但该范例对深度值或深度分布的准确性敏感。因此,基于BEV的方法的检测性能会受到复合误差的影响(《Detr3d: 3d objectdetection from multi-view images via 3d-to-2d queries》),不准确的BEV特征会严重影响最终性能。因此,我们设计了一种不依赖深度信息的BEV生成方法,可以自适应地学习BEV特征,而不是严格依赖3D先验知识。Transformer使用注意力机制动态聚合有价值的功能,在概念上满足了我们的需求。
使用BEV功能执行感知任务的另一个动机是,BEV是连接时间和空间空间的理想桥梁。对于人类视觉感知系统来说,时间信息在推断物体的运动状态和识别遮挡物体方面起着至关重要的作用,许多视觉领域(《3d object detection from images for autonomousdriving: A survey》)的工作已经证明了使用视频数据的有效性。然而,现有的最先进的多摄像机3D检测方法很少挖掘时间信息。重要的挑战是,自动驾驶对时间至关重要,场景中的物体变化迅速,因此简单地叠加交叉时间间隔的BEV特征会带来额外的计算成本和干扰信息,这可能并不理想。受递归神经网络(RNN)的启发,我们利用BEV特征反复地从过去到现在传递时间信息,这与RNN模型的隐藏状态具有相同的思想。
2.2. 我们的方法
我们的BEVFormer包含三个关键设计:
- 1.网格形状的BEV查询(
grid-shaped BEV queries
),通过注意机制灵活地融合空间和时间特征 - 2.空间交叉注意模块(
patial cross-attention module
),从多摄像头图像中聚合空间特征 - 3.时间自注意模块(
temporal self-attention modul
),从历史BEV特征中提取时间信息,这有利于运动对象的速度估计和严重遮挡对象的检测,同时带来的计算开销可以忽略不计
3. 相关工作(Related Work)
3.1. 基于 Transformer的2D目标检测
DETR使用一组对象查询直接通过交叉关注解码器生成检测结果。然而,DETR的主要缺点是训练时间长。Deformabl通过提出变形注意力来解决这个问题。与普通的全局注意索引不同,变形注意与局部感兴趣区域相互作用,只对每个参考点附近的点进行采样并计算注意结果,从而提高了效率,显著缩短了训练时间。可变形注意机制的计算方法如下:
- 其中 q q q、 p p p、 x x x:分别表示query、参考点和输入特征,
- i i i:attention head编号, N h e a d N_{head} Nhead代表全部attention head的数量
- j j j:sampled key编号
- N k e y N_{key} Nkey:每个head的整个sampled key
- W i 、 W i ‘ W_i、W^`_i Wi、Wi‘:可学习的权重
- C C C:特征维度
- A i j A_{ij} Aij:[0,1],被 ∑ j = 1 N k e y A i j = 1 displaystylesum_{j=1}^{N_{key}}A_{ij}=1 j=1∑NkeyAij=1标准化后的预测特征权重
- Δ p i j varDelta p_{ij} Δpij:参考点p的预测偏置offset
- x ( p + Δ p i j ) x(p+varDelta p_{ij}) x(p+Δpij):经过双线性插值的点 p + Δ p i j p+varDelta p_{ij} p+Δpij处的特征
- 在这项工作中,我们将可变形注意力(
deformable attention
)扩展到3D感知任务中,以有效地聚合空间和时间信息
3.2. 基于相机的3D感知
-
对于3D目标检测任务,早期的方法类似于2D检测方法,通常基于2D边界框预测3D边界框。FCOS3d(《Fcos3d: Fully convolutional one-stage monocular 3d objectdetection》)采用先进的2D探测器FCOS,直接预测每个对象的3D边界框。DETR3D在2D图像中投影可学习的3D查询,然后采样相应的特征,进行端到端3D边界框预测,无需NMS后处理。
-
另一个解决方案是将图像特征转换为BEV特征,并从自顶向下的视图预测3D边界框。方法利用深度估计(《Pseudo-lidarfrom visual depth estimation: Bridging the gap in 3d object detection for autonomous driving》)或分类深度分布(《 Categorical depth distribution networkfor monocular 3d object detection》)中的深度信息将图像特征转换为BEV特征。OFT(《Orthographic feature transform for monocular 3d objectdetection》)和ImVoxelNet(《Imvoxelnet: Image to voxels projectionfor monocular and multi-view general-purpose 3d object detection》)将预定义的体素投影到图像特征上,以生成场景的体素表示
-
实际上,从多摄像机特征生成BEV特征在地图分割任务中得到了更广泛的研究。一种简单的方法是通过逆透视映射(IPM)将透视图转换为BEVTH(《Structured bird’s-eye-view traffic sceneunderstanding from onboard images》)。此外,Lift Splat(《 Encoding images from arbitrary camera rigs byimplicitly unprojecting to 3d》)根据深度分布生成BEVfeatures。方法(《Cross-view semantic segmentation forsensing surroundings》等)利用多层感知器学习从透视图到BEV的翻译。PYVA(《Projecting your view attentively:Monocular road scene layout estimation via cross-view transformation》)提出了一种将前视图单目图像转换为BEV的交叉视图变换器,但由于全局注意机制的计算成本,这种模式不适合融合多摄像头功能
-
除了空间信息,以前的文章也考虑了时间信息,叠加BEV特性限制了固定时间内可用的时间信息,并带来额外的计算成本。在这项工作中,提出的时空变换器通过同时考虑空间和时间线索来生成当前时间的BEV特征,并且通过RNN方式从之前的BEV特征中获取时间信息,这只带来很少的计算成本。
(a) BEVFormer的编码层包含网格状的BEV查询、时间自我注意和空间交叉注意。(b) 在空间交叉注意中,每个BEV查询只与感兴趣区域的图像特征交互。(c) 在时间自注意力中,每个BEV查询都与两个功能交互:当前时间戳的BEV查询和前一个时间戳的BEV功能
-
在推理阶段,在时间戳t,把多摄像头图像喂给backbone网络(ResNet-101),获得不同摄像头视野的特征 F t = [ F t i ] i = 1 N v i e w F_t = [F^i_t]^{N_{view}}_{i=1} Ft=[Fti]i=1Nview, F t i F^i_t Fti是第i个视野的特征, N v i e w N_{view} Nview是所有视野的数量
-
与此同时,提取前一个时间戳t-1的BEV特征 B t − 1 B_{t-1} Bt−1
-
在每一个encoder层,首先时间自注意模块(
temporal self-attention modul
)通过BEV queries Q去查询前一个时间戳t-1的BEV特征 B t − 1 B_{t-1} Bt−1时间信息。然后,BEV queries Q通过空间交叉注意模块(patial cross-attention module
从多摄像头特征 F t F_t Ft中查询空间特征。 -
经过前馈网络 (Attention is all you need),encoder层输出细化的BEV特征,作为下一个encoder层的输入,经过6个叠加的encoder层后得到统一的BEV特征
-
之后接3D bounding box和语义图预测头
3.3. Spatial Cross-Attention
由于多摄像头3D感知的输入规模很大,普通多摄像头注意力的计算成本非常高。因此,我们开发了基于 deformable attention(《Deformable detr: Deformable transformers forend-to-end object detection》)的空间交叉注意模块,这是一种资源高效的注意层,其中每个BEV查询仅与摄像机视图中的感兴趣区域交互。然而,可变形注意力最初是为2D感知设计的,所以3D场景需要进行一些调整
如图2(b)所示,我们首先将BEV平面上的每个query提升到柱状查询(《Pointpillars: Fast encoders forobject detection from point clouds》),从柱状查询中提取Sample
N
r
e
f
N_{ref}
Nref 3D参考点,然后将这些点投影到2D视图。对于一个BEV query,投影的2D点只能落在某些视图上。在这里,我们把可以把落点视图看做
V
h
i
t
V_{hit}
Vhit。然后,我们将这些2D点视为Query
Q
p
Q_p
Qp的参考点,并在这些参考点周围的落点视图
V
h
i
t
V_{hit}
Vhit中采样特征。最后,我们将采样特征的加权和作为空间交叉注意的输出。空间交叉注意(SCA)的过程可以表述为:
- i i i:第 i i i个摄像机视图
- j j j:第 j j j个参考点
- N r e f N_{ref} Nref:每个BEV query的参考点总数
- F t i F^i_t Fti:第 i i i个相机视图,
- 对于每个BEV query Q p Q_p Qp,我们都用一个poject 函数 P ( p , i , r ) P(p,i,r) P(p,i,r)去的得到 第 i i i个视图的第 j j j个参考点
然后,我们考虑怎么从投影函数P中获取视图图像上的参考点。首先计算对应query
Q
p
Q_p
Qp(在Q上的
p
=
(
x
,
y
)
p=(x,y)
p=(x,y))的真实世界坐标
(
x
‘
,
y
‘
)
(x^`,y^`)
(x‘,y‘):
- H、W:BEV query的空间形状
- s:BEV的网格分辨率尺度
- ( x ‘ , y ‘ ) (x^`,y^`) (x‘,y‘):是以无人车为原点的坐标
在3D空间中,位于
(
x
‘
,
y
‘
)
(x^`,y^`)
(x‘,y‘)的目标在z轴上的高度为z′的。所以我们预先定义了一组anchor高度
[
F
j
‘
]
j
=
1
N
r
e
f
[F^`_j]^{N_{ref}}_{j=1}
[Fj‘]j=1Nref,以确保我们能够捕捉到出现在不同高度的线索。
通过这种方式,对于每个查询
Q
p
Q_p
Qp,我们获得一个三维参考点
(
x
′
,
y
′
,
z
′
j
)
j
=
1
N
r
e
f
(x′,y′,z′_j) ^{N_{ref}}_{j=1}
(x′,y′,z′j)j=1Nref。最后,我们通过摄像机的投影矩阵将3D参考点投影到不同的图像视图中,该矩阵可以写成