Efficient and Robust 2D-to-BEV Representation Learning via Geometry-guided Kernel Transformer
通过几何引导的核变换器实现高效且鲁棒的2D到BEV表示学习(2206)
Abstract
从环视摄像头学习鸟瞰图(BEV)表示对于自动驾驶至关重要。在这项工作中,我们提出了一种新颖的2D到BEV表示学习机制——几何引导的核变换器(Geometry-guided Kernel Transformer,简称GKT)。GKT利用几何先验来指导变换器关注区分度较高的区域,并展开核特征以生成BEV表示。为了实现快速推理,我们进一步引入了查找表(LUT)索引方法,以在运行时摆脱对相机校准参数的依赖。GKT可以在3090 GPU上以72.3 FPS的速度运行,在2080ti GPU上以45.6 FPS的速度运行,并且对相机偏差和预定义的BEV高度具有鲁棒性。GKT在nuScenes验证集上实现了最先进的实时分割结果,即38.0 mIoU(在0.5米分辨率下100m×100m的感知范围)。鉴于其效率、效果和鲁棒性,GKT在自动驾驶场景中具有重要的实际价值,特别是在需要实时运行的系统中。代码和模型将在以下链接提供:https://github.com/hustvl/GKT。
索引术语—自动驾驶,三维感知,鸟瞰图,鲁棒性,查找表索引。
1 INTRODUCTION
基于鸟瞰图(BEV)表示的环视感知是自动驾驶中的一个前沿范式。对于多视图摄像系统来说,如何将2D图像表示转换为BEV表示是一个挑战性的问题。根据是否显式利用几何信息进行特征转换,先前的方法可以分为两类,即基于几何的逐点转换和无几何全局转换。
基于几何的逐点转换。如 图1(a) 所示,逐点转换方法[1]、[2]、[3]、[4]、[5]、[6]利用相机的校准参数(内在和外在参数)来确定2D位置和BEV网格之间的对应关系(一对一或一对多)。有了这种对应关系,2D特征被投影到3D空间并形成BEV表示。
然而,逐点转换过于依赖校准参数。对于一个运行中的自动驾驶系统来说,由于复杂的外部环境,摄像头在运行时可能会偏离校准位置,这使得2D到BEV的对应关系变得不稳定,并将系统误差引入到BEV表示中。此外,逐点转换通常需要复杂的和耗时的2D-3D映射操作,例如,预测像素上的深度概率分布、沿着射线将像素特征广播到BEV空间,以及关于相机参数的高精度计算。这些操作效率低下,难以优化,限制了实时应用的实现。
无几何全局转换。全局转换方法[7]考虑了图像和BEV之间的全面相关性。如 图1(b) 所示,多视图图像特征被展平,每个BEV网格与所有图像像素互动。全局转换不依赖于2D到BEV投影中的几何先验。因此,它对摄像头的偏差不敏感。
图1:(a) 基于几何的逐点转换利用相机的校准参数(内在参数和外参数)来确定2D位置和BEV网格之间的对应关系(一对一或一对多)。(b) 无几何全局转换考虑了图像和BEV之间的全面相关性。每个BEV网格与所有图像像素互动。
但是,这也带来了问题。1) 全局转换的计算预算与图像像素数量成正比。分辨率和效率之间存在尖锐的矛盾。2) 没有几何先验作为指导,模型必须从所有视图中全局挖掘区分信息,这使得收敛更加困难。
在这项工作中,针对高效且鲁棒的BEV表示学习,我们提出了一种新的2D到BEV转换机制,命名为几何引导的核变换器(简称GKT)。在粗略的相机参数下,我们大致将BEV位置投影得到多视图和多尺度特征图中的先验2D位置。然后,我们在先验位置周围展开
K
h
×
K
w
K_h×K_w
Kh×Kw 的核特征,并使BEV查询与相应的展开特征互动以生成BEV表示。此外,我们引入了查找表(LUT)索引,以在运行时摆脱相机参数的依赖。
感觉是结合了两种方法,计算更快,同时又对摄像头的标定误差不那么敏感
GKT在运行时具有高鲁棒性。与逐点转换相比,GKT仅将相机参数作为指导,而不是过度依赖它们。当相机发生偏移时,相应的核区域也会发生偏移,但仍然可以覆盖目标。变换器是排列不变的,核区域的注意力权重会根据偏移动态生成。因此,GKT始终能够聚焦于目标,不受相机偏移的影响。
GKT具有高效率。通过提出的 LUT 索引,在运行时我们摆脱了逐点转换所需的2D-3D映射操作,使前向过程紧凑且快速。与全局转换相比,GKT只关注几何引导的核区域,避免了全局互动。GKT需要的计算量更少,并且收敛速度更快。
因此,GKT在逐点转换和全局转换之间取得了很好的平衡,实现了高效且鲁棒的2D到BEV表示学习。我们在nuScenes地图视图分割上验证了GKT。GKT表现出极高的效率,运行速度在3090 GPU上为72.3 FPS,在2080ti GPU上为45.6 FPS,比所有现有方法都快得多。GKT达到了38.0 mIoU的成绩,在所有实时方法中处于领先地位。我们将在不久的将来将GKT扩展到其他基于BEV的任务。
2 METHOD
2.1 Geometry-guided Kernel Transformer
所提出的GKT框架在 图2 中展示。共享的CNN骨干网络从环视图像
I
=
{
I
v
}
I = \{I_v\}
I={Iv} 中提取多尺度多视图特征
F
img
=
{
F
v
s
}
F_{\text{img}} = \{F_v^s\}
Fimg={Fvs}。BEV空间被均匀划分成网格。每个BEV网格对应一个 3D 坐标
P
i
=
(
x
i
,
y
i
,
z
)
P_i = (x_i, y_i, z)
Pi=(xi,yi,z) 和一个可学习的查询嵌入
q
i
q_i
qi。
z
z
z 是BEV平面的预设高度,所有查询共享此高度。GKT对
z
z
z 的值不敏感,这在第3.5节进一步讨论。
图2:GKT的说明。上部分:利用几何信息引导变换器关注多视图图像中的先验区域。下部分:我们展开先验区域的核特征,并使它们与BEV查询互动以生成BEV表示。
我们利用几何先验来指导变换器关注区分度较高的区域。借助相机参数,我们大致将每个BEV网格
P
i
P_i
Pi 投影到一组浮点2D像素坐标
{
Q
i
s
v
}
\{Q^{sv}_i\}
{Qisv}(针对不同视图和尺度),然后将它们四舍五入到整数坐标
{
Q
ˉ
i
s
v
}
\{\bar{Q}^{sv}_i\}
{Qˉisv},即:
我们在先验位置
{
Q
ˉ
s
v
i
}
\{\bar{Q}_{sv}^i\}
{Qˉsvi} 周围展开
K
h
×
K
w
K_h \times K_w
Kh×Kw 大小的核区域。值得注意的是,如果核区域超出了图像边界,超出部分将被设置为零。每个BEV查询
q
i
q_i
qi 与相应的展开核特征
F
F
F 进行互动,其中
F
F
F 的形状为
R
N
view
×
N
scale
×
C
×
K
h
×
K
w
\mathbb{R}^{N_{\text{view}} \times N_{\text{scale}} \times C \times K_h \times K_w}
RNview×Nscale×C×Kh×Kw,并生成BEV表示。可以在BEV表示上执行各种任务(例如,检测、分割、运动规划)的头部操作。
2.2 Robustness to Camera Deviation
对于一个运行中的自动驾驶系统,外部环境是复杂的。摄像头会偏离其校准位置。GKT对摄像头的偏差具有鲁棒性。为了验证这一点,我们模拟了真实场景中摄像头的偏差。具体来说,我们将偏差分解为旋转偏差
R
devi
R_{\text{devi}}
Rdevi 和平移偏差
T
devi
T_{\text{devi}}
Tdevi,并向所有
x
,
y
,
z
x,y,z
x,y,z 维度添加随机噪声。
平移偏差
T
devi
T_{\text{devi}}
Tdevi 的公式为:
旋转偏差
R
devi
R_{\text{devi}}
Rdevi 的公式为:
Δ
x
,
Δ
y
,
Δ
z
,
θ
x
,
θ
y
,
θ
z
\Delta x, \Delta y, \Delta z, \theta_x, \theta_y, \theta_z
Δx,Δy,Δz,θx,θy,θz 都是服从正态分布的随机变量。即,
θ
x
,
θ
y
,
θ
z
\theta_x, \theta_y, \theta_z
θx,θy,θz 分别对应于相对于相机坐标系的
x
、
y
、
z
x、y、z
x、y、z 轴的旋转噪声,而
Δ
x
,
Δ
y
,
Δ
z
\Delta x, \Delta y, \Delta z
Δx,Δy,Δz 对应于相对于相机坐标系的
x
、
y
、
z
x、y、z
x、y、z 轴的平移噪声。
我们向所有x、y、z维度和所有摄像头添加随机噪声。引入偏差噪声后,方程1变为:
关于相机偏差的实验在第3.4节中展示。GKT对偏差具有鲁棒性。当相机发生偏移时,先验区域会随之移动,但仍然可以覆盖目标。而且,方程1中的四舍五入操作具有抗噪声特性。当相机参数轻微变化时,坐标值经过四舍五入后保持不变。此外,变换器是排列不变的,核区域的注意力权重会根据偏差动态调整。
2.3 BEV-to-2D LUT Indexing
我们进一步引入了BEV到2D的查找表(LUT)索引来加速GKT。每个BEV网格的核区域是固定的,可以离线预计算。在运行之前,我们构建一个查找表(LUT),它缓存了BEV查询的索引和图像像素的索引之间的对应关系。在运行时,我们从LUT中获取每个BEV查询对应的像素索引,并通过索引高效地提取核特征。
2.4 Configuration of Kernel
对于GKT来说,核的配置是灵活的。我们可以调整核的大小来平衡接受域和计算成本之间的关系。核的布局也是可行的(例如,交叉形状的核、膨胀核等)。由于采用了LUT索引来获取核特征,GKT的效率不会受到核布局的影响。
3 EXPERIMENTS
在本节中,我们主要在nuScenes地图视图分割任务上评估所提出的GKT,并进行广泛的实验来探究GKT,包括其收敛速度和对相机偏差的鲁棒性。
3.1 Dataset
nuScenes数据集[8]包含1,000个驾驶序列,分别用于训练、验证和测试的序列数量为700、150和150。每个序列持续时间接近20秒,并且每帧包含围绕自车周围的6个视图图像。我们在训练和验证过程中将6个摄像头图像调整为224×480的尺寸。所有模型都在nuScenes训练集上进行训练,并在验证集上进行评估。
3.2 Implementation Details
我们采用CVT[7]作为BEV地图视图分割的基本实现。按照[7]的做法,我们将图像输入到一个EfficientNet-B4[9]中以提取多尺度图像特征。我们随机初始化一个 25×25 的BEV特征图作为查询,并采用所提出的GKT将图像特征转换为BEV特征。然后,我们使用三个带有上采样层的卷积块来将BEV特征上采样到200×200,以进行地图视图分割。
所有模型都在4个NVIDIA GPU上进行训练,每个GPU上4个样本。我们采用[7]中的训练计划,并使用AdamW优化器对GKT进行训练,共进行30k次迭代,训练时间接近3小时。按照[7]的做法,我们采用两种评估设置,即设置1和设置2,分别在100m×50m的感知范围和0.25m分辨率以及100m×100m的感知范围和0.5m分辨率下评估分割结果。除非另有说明,我们采用设置2作为默认评估设置。
3.3 Main Results
在 表1 中,我们比较了GKT与其他基于BEV的方法在两种评估设置下的车辆地图视图分割上的表现。具体来说,我们采用 1×7的卷积 来捕获水平上下文,然后应用一个高效的 7×1核进行2D到BEV转换。FIERY[1]和BEVFormer[3]实现了高性能,但耗时较多,远离实时应用。GKT可以在2080Ti上以45.6 FPS的速度运行,对于设置1有41.4 mIoU,对于设置2有38.0 mIoU,实现了所有现有实时方法中最高的效率和性能。
表1:在nuScenes上的车辆地图视图分割。FPS是在2080Ti GPU上测量的,除了∗表示在V100上测量的。
+
+
+ 表示我们复现的结果,这些结果高于原始论文中报告的数值。
3.4 Robustness to Camera Deviation
为了验证鲁棒性,我们遍历验证集(包含6019个样本)并为每个样本随机生成噪声。我们分别添加不同程度的平移和旋转偏差。注意,我们向所有摄像头和所有坐标添加噪声,且噪声服从正态分布。在某些样本中存在非常大的偏差,这会很大程度上影响性能。如 表2 和 表3 所示,当
Δ
x
,
Δ
y
,
Δ
z
\Delta x, \Delta y, \Delta z
Δx,Δy,Δz 的标准差为0.5米或
θ
x
,
θ
y
,
θ
z
\theta_x, \theta_y, \theta_z
θx,θy,θz 的标准差为0.02弧度时,GKT仍然保持了可比的性能。
表2:对相机平移偏差的鲁棒性。度量指标是mIoU。
σ
1
\sigma_1
σ1 是
Δ
x
,
Δ
y
,
Δ
z
\Delta x, \Delta y, \Delta z
Δx,Δy,Δz的标准差。
表3:对相机旋转偏差的鲁棒性。度量指标是mIoU。
σ
2
\sigma_2
σ2 是
θ
x
,
θ
y
,
θ
z
\theta_x, \theta_y, \theta_z
θx,θy,θz的标准差。
我们观察到 5×5 的核比 3×3 的核对偏差更鲁棒。这证明了更大的核尺寸对应更强的鲁棒性。而且,7×3的核比5×5的核对偏差更鲁棒。7(
k
h
k_h
kh)对应于3D空间的垂直维度。对于每个BEV网格,x、y是固定的,但 z 是预设的。在垂直维度上存在更多的不确定性。因此,采用更大的
k
h
k_h
kh 是更好的。
3.5 Robustness to BEV Height
在 表4 中,我们对BEV平面的预设高度 z 进行了消融研究。当z从 -1.0变化到2.0时,性能的波动很小(小于0.4 mIoU)。预设的高度 z 影响BEV到2D的投影。但是GKT只需要粗略的投影,因此对 z 的值非常不敏感。实验证明了GKT的鲁棒性。
表4:对BEV平面预设高度 z 的鲁棒性。度量指标是mIoU。GKT的性能波动很小。
3.6 Convergence Speed
图3 比较了GKT和CVT[7]之间的收敛速度。我们评估了不同训练计划下的模型,即从1周期到8周期的训练计划。基于几何先验,所提出的GKT比CVT实现了更快的收敛速度,并且仅用1周期训练就获得了更好的结果。
图3:收敛速度的比较。我们用不同的训练计划训练GKT和CVT[7]。对于仅1周期的训练计划,mIoU的差距非常明显。GKT的收敛速度远快于CVT[7]。
3.7 Implementation of GKT
所提出的2D到BEV转换可以以不同的方式实现。
- Im2col:我们首先采用im2col操作将图像特征展开成列格式。每一列对应一个核区域。然后我们为每个BEV查询选择相应的列。Im2col操作直接简单,但会导致较大的内存消耗。
- Grid Sample:我们采用grid_sample操作来采样核区域内所有像素的特征,并将它们连接在一起。
- LUT索引:为了进一步加速转换的推理,我们预计算BEV网格索引和图像像素索引之间的对应关系,然后构建一个查找表。
表5 比较了不同实现方式(核大小为3×3)的推理速度(FPS)。如预期,LUT索引实现了最佳的推理速度。
表5:不同实现方式的比较。我们采用了所提出的GKT的不同实现方式,并在一块NVIDIA 2080Ti上评估了推理速度。
4 RELATED WORK
4.1 BEV Representation Learning
鸟瞰图(Bird’s Eye View)在自动驾驶中是一种有前景的表示方式。最近的研究工作探讨了如何将图像表示转换为BEV表示。Lift-Splat[2]、FIERY[1]和BEVDet[6]通过预测像素上的深度概率分布,并使用已知的相机内参和外参,将相机特征提升到3D空间。OFT[4]提出了正交特征变换。BEVFormer[3]预测BEV锚点的高度偏移,然后使用相机参数固定2D到3D的对应关系。PON[5]沿垂直维度压缩图像特征,然后采用密集的变换层沿深度轴扩展特征。上述方法都需要精确校准的相机参数来进行2D到3D的转换。不同于这些方法,CVT[7]通过一系列交叉注意力层全局聚合所有图像特征中的信息,生成BEV表示,而没有显式采用参数。GKT对相机参数也具有鲁棒性,但通过利用几何先验实现了更好的效率。
4.2 Perception and Planning based on BEV
先前的研究工作基于鸟瞰图(Bird’s Eye View)表示进行感知和规划。FIERY [1]在鸟瞰图中预测时间一致的未来实例分割和运动。[2]、[5]基于BEV进行地图分割。[4]、[6]采用BEV表示进行3D目标检测。BEVFormer [3]在BEV特征图上构建检测和分割头,用于多任务学习。GKT提供了鲁棒的BEV表示,各种感知和规划任务可以基于GKT进行。
5 CONCLUSION
我们提出了GKT用于2D到BEV表示学习。GKT具有高效率和鲁棒性,这两者对于实时运行系统至关重要,尤其是对于自动驾驶系统。我们在地图视图分割任务上验证了GKT。在不久的将来,我们将把它扩展到其他基于BEV的任务,如检测和运动规划。