本文提出了一种高效的多摄像头到鸟瞰图 (BEV) 视图转换方法,用于 3D 感知,称为 MatrixVT。现有的视图转换器要么转换效率低下,要么依赖于特定于设备的操作符,阻碍了 BEV 模型的广泛应用。相比之下,我们的方法仅使用卷积和矩阵乘法 (MatMul) 即可有效地生成 BEV 特征。具体而言,我们建议将 BEV 特征描述为图像特征的 MatMul 和稀疏特征传输矩阵 (FTM)。然后引入一个 Prime Ex 提取模块来压缩图像特征的维度并降低 FTM 的稀疏性。此外,我们提出了环和射线分解来用两个矩阵替换 FTM,并重新制定我们的管道以进一步减少计算。与现有方法相比,MatrixVT 具有更快的速度和更少的内存占用,同时仍然易于部署。在 nuScenes 基准上进行的大量实验表明,我们的方法效率很高,但在对象检测和地图分割任务中获得了与 SOTA 方法相当的结果。
1. Introduction
鸟瞰视图 (BEV) [18, 21, 24] 中以视觉为中心的 3D 感知最近引起了广泛关注。
除了出色的性能外,BEV 中紧凑而统一的特征表示还有助于直接进行特征融合 [5, 11, 13, 29],并使各种下游任务(例如,物体检测 [6, 10, 11]、地图分割 [18, 30]、运动规划等)能够轻松应用于其上。
视图变换 (VT) 是将多摄像机特征转换为 BEV 的关键组件,在以前的工作中已经对其进行了大量研究 [6, 10, 11, 16, 18, 21,
22, 24]。现有的 VT 方法可分为基于几何的 [10, 14, 18–20, 30] 和基于学习的方法 [11, 16, 21]。在这两类中,基于几何的方法由于使用了几何约束而表现出优异的性能。Lift-Splat [18] 作为一种代表性的基于几何的 VT,预测每个像素的分类深度分布,并根据预测的深度将相应的特征“提升”到 3D 空间中。然后将这些特征向量聚集到参考 BEV 平面(即“splat”)上的预定义网格中,以形成 BEV 特征(图 1,上图)。基于 Lift-Splat 的 VT 显示出产生高质量 BEV 特征的巨大潜力,在 nuScenes 基准 [2] 上的物体检测 [5,10] 和地图分割任务中取得了卓越的表现。
图 1. Lift-Splat 的流程(上)和我们提出的 MatrixVT(下)。我们在 VT 之前压缩图像特征以减少内存占用和计算量。请注意,MatrixVT 中仅采用标准运算符。
尽管 Lift-Splat 类 VT [10] 非常有效,但仍存在两个问题。首先,“splat”操作并非普遍适用。现有的“splat”实现要么依赖于效率极低的“cumsum 技巧”[6, 18],要么依赖于只能在特定设备上使用的定制运算符 [10],这增加了应用 BEV 感知的成本。其次,“提升”的多视图图像特征的大小非常大,成为 BEV 模型的内存瓶颈。这两个问题导致 BEV 方法在训练和推理阶段都负担沉重。因此,现有视图转换器的缺点限制了自动驾驶技术的广泛应用
在本文中,我们提出了一种新颖的 VT 方法 MatrixVT 来解决上述问题。MatrixVT 的提出是基于 VT 可以被视为特征传输过程这一事实。在这种情况下,BEV 特征可以被视为“提升”特征与传输矩阵(即特征传输矩阵 (FTM))之间的 MatMul。因此,我们将 Lift-Splat VT 推广为纯数学形式并消除了专门的运算符。
然而,使用 FTM 进行变换是一种退化——3D 空间和 BEV 网格之间的映射极其稀疏,导致 FTM 规模庞大且效率低下。先前的研究 [10, 19] 寻求定制运算符,成功避免了这种稀疏性。在本文中,我们认为稀疏映射问题还有其他解决方案。首先,我们提出了 Prime Extraction。受图像高度(垂直)维度在自动驾驶中信息量较少的观察启发(参见第 3.2 节),我们在 VT 之前沿此维度压缩图像特征。其次,我们采用矩阵分解来降低 FTM 的稀疏性。提出的 Ring & Ray Decomposition 将 FTM 正交分解为两个独立的矩阵,每个矩阵都编码自我中心极坐标的距离和方向。这种分解还使我们能够将管道重新表述为数学上等价但更高效的管道(图 1,下图)。这两种技术将 VT 期间的内存占用和计算量减少了数百倍,使 MatrixVT 比现有方法更高效。
所提出的 MatrixVT 继承了 Lift-Splat [18] 范式的优点,同时内存效率更高、速度更快。大量实验结果表明,MatrixVT 比以前的方法 [6, 10] 快 2 到 8 倍,并且在不同设置中节省高达 97% 的内存占用。同时,使用 MatrixVT 的感知模型在 nuScenes [2] 验证集上实现了 46.6% 的 mAP 和 56.2% 的 NDS 用于物体检测,以及 46.2% 的 mIoU 用于车辆分割,这与最先进的性能 [10] 相当。我们总结出我们的主要贡献如下:
• 我们提出了一种新的多摄像头到 BEV 转换描述——使用特征传输矩阵 (FTM),这是一种更通用的表示。
• 为了解决稀疏映射问题,我们提出了the Ring & Ray Decomposition
,使用 FTM 大幅提升 VT。
• 大量实验表明,MatrixVT 在 nuScenes 对象检测和地图分割任务上的性能与最先进的方法相当,同时更高效且普遍适用。
2. Related Works
2.1. Visual 3D Perception
3D 物体和场景的感知在自动驾驶和机器人技术中起着关键作用,因此如今越来越受到关注。基于摄像头的感知 [6,11,12,26,
27] 是各种场景中最常用的方法,因为它成本低、可访问性高。与 2D 感知(物体检测 [25]、语义分割 [23] 等)相比,3D 感知需要对深度信息进行额外的预测,这是一个自然不适定的问题 [22]。
现有的研究要么显式地预测深度信息,要么隐式地预测深度信息。FCOS3D [27] 只是扩展了经典 2D 物体检测器 [25] 的结构,使用由 LiDAR 数据监督的额外子网显式预测像素深度。CaDDN [19] 建议将深度预测作为分类任务而不是回归任务,并将图像特征投射到鸟瞰 (BEV) 空间中,以实现检测和深度预测的统一建模。BEVDepth 和后续研究 [9、10、29] 提出了几种增强深度预测的技术,这些研究由于深度精确而取得了出色的性能。同时,PON [21] 和 BirdGAN [24] 等方法使用纯神经网络将图像特征转换为 BEV 空间,使用分割或检测监督隐式学习物体深度。目前,由于 LiDAR 数据和深度建模的监督,显式学习深度的方法比隐式方法表现出更好的性能。在本文中,我们使用与 BEVDepth 相同的 DepthNet 来实现高性能。
2.2. Perception in Bird’s-Eye-View
BEV 的概念首先被提出用于处理 LiDAR 点云 [7, 31–33],并被发现可有效融合多视图图像特征。基于视觉的 BEV 范式的核心组件是视图变换。
OFT [22] 首先提出使用相机参数将图像特征从透视视图映射到 BEV。该方法将参考点从 BEV 网格投影到图像平面,并将相应的特征采样回 BEV 网格。在此之后,BEVFormer [11] 提出使用可变形交叉注意力来采样参考点周围的特征。这些方法无法区分投影到图像平面上相同位置的 BEV 网格,因此性能不如基于深度的方法。
基于深度的方法以 LSS [18] 和 CaDDN [19] 为代表,预测每个像素的分类深度,然后通过对相应深度进行逐像素外积,将特定像素上提取的图像特征投影到 3D 空间中。然后使用卷积 [19]、Pillar Pooling [6, 18] 或 Voxel Pooling [10] 将投影的高维张量“折叠”到 BEV 参考平面。基于 Lift-Splat 的方法 [6,9,10,18] 在下游任务中表现出色,但引入了两个额外的问题。首先,图像特征的中间表示很大且效率低下,使得这些方法的训练和应用变得困难。其次,Pillar Pooling [18] 引入了随机内存访问,速度慢且对设备要求高(在通用设备上极其缓慢)。在本文中,我们提出了一种新的基于深度的视图变换来克服这些问题,同时保留了生成高质量 BEV 特征的能力。
3. MatrixVT
我们的 MatrixVT 是基于深度 VT 范式的简单视图变换器。在第 3.1 节中,我们首先重新审视现有的 Lift-Splat 变换 [10,18],并引入特征传输矩阵 (FTM) 的概念以及稀疏映射问题。然后,介绍了解决稀疏映射问题的技术,即素数提取(第 3.2 节)和环与射线分解(第 3.3 节)。在第 3.4 节中,我们将利用上述技术的新型 VT 方法称为 MatrixVT,并详细说明其整体流程。
为了清楚起见,我们使用普通字体(例如 F )表示张量,罗马字体表示矩阵(例如 M ),粗体字体(例如 v )表示向量。此外,A · B 表示矩阵乘法 (MatMul),A B 表示 Hadamard 积,a ⊗ b 表示外积。
3.1. Background
Lift-Splat 类方法利用伪 LiDAR [28] 和基于 LiDAR 的 BEV 方法 [7, 33] 的思想进行视图变换。图像特征被“提升”到 3D 空间并像点云一样进行处理。我们将 Nc 定义为特定场景的摄像机数量;
N
d
N_d
Nd 为深度箱的数量;
H
I
H_I
HI和
W
I
W_I
WI 为图像特征的高度和宽度;
H
B
H_B
HB 和
W
B
W_B
WB 为 BEV 特征的高度和宽度(即 BEV 网格的形状);C 为特征通道的数量。因此,让多视图图像特征为
F
∈
R
N
c
×
H
I
×
W
I
×
C
F ∈ R^{N_c ×H_I ×W_I ×C}
F∈RNc×HI×WI×C;分类深度为
D
∈
R
N
c
×
H
I
×
W
I
×
D
D ∈ R^{Nc ×HI ×WI ×D}
D∈RNc×HI×WI×D;BEV 特征为
F
B
E
V
∈
R
H
B
×
W
B
×
C
F_{BEV} ∈ R^{H_B ×W_B ×C}
FBEV∈RHB×WB×C(初始化为零)。 Lift-Splat
VT 首先通过与 D 进行逐像素外积,将 F “提升”到 3D 空间,得到高维中间张量
F
i
n
t
e
r
∈
R
N
c
×
H
I
×
W
I
×
N
d
×
C
F_{inter} ∈ R^{N_c ×H_I ×W_I ×N_d ×C}
Finter∈RNc×HI×WI×Nd×C 。
F i n t e r = { F i n t e r h , w } H I , W I = { F h , w . ( D h , w ) T } H I , W I (1) F_{inter}= \{F_{inter}^{h,w}\}_{H_I,W_I} = \{F^{h,w}.(D^{h,w})^T \}_{H_I,W_I } \tag 1 Finter={Finterh,w}HI,WI={Fh,w.(Dh,w)T}HI,WI(1)
中间张量可以视为 N c × H I × W I × N d N_c × H_I × W_I × N_d Nc×HI×WI×Nd 个特征向量,每个向量对应一个几何坐标。然后使用类似 Pillar Pooling [18] 的运算符进行“splat”操作,在此过程中,每个特征向量根据几何坐标加总到 BEV 网格(见图 2)。
我们发现“splat”操作是中间张量和 BEV 网格之间的固定映射。因此,我们使用特征传输矩阵 M F T ∈ R ( H B × W B ) × ( N c × H I × W I × N d ) MFT ∈ R^{(H_B ×W_B )×(N_c ×H_I ×W_I ×N_d )} MFT∈R(HB×WB)×(Nc×HI×WI×Nd) 来描述此映射。FTM 可以严格等于 LSS [18] 中的 Pillar Pooling,也可以编码不同的采样规则(即高斯采样)。FTM 使用矩阵乘法 (MatMul) 实现特征传输:
F B E V = M F T . F i n t e r F_{BEV} = M_{FT}.F_{inter} FBEV=MFT.Finter
其中 F i n t e r ∈ R ( N c × H I × W I × N d ) × C F_{inter} ∈ R^{(N_c ×H_I ×W_I ×N_d )×C} Finter∈R(Nc×HI×WI×Nd)×C 是矩阵形式的“提升”特征 Finter, F B E V ∈ R ( H B × W B ) × C F_{BEV} ∈ R^{(H_B ×W_B )×C} FBEV∈R(HB×WB)×C 是矩阵形式的 BEV 特征 F B E V F_{BEV} FBEV。
用 FTM 替换“splat”操作消除了对定制运算符的需求。然而,3D 空间和 BEV 网格之间的稀疏映射会导致大量且高度稀疏的 FTM,损害基于矩阵的 VT 的效率。为了解决没有定制运算符的稀疏映射问题,我们提出了两种技术来降低 FTM 的稀疏性并加快转换速度。
3.2. Prime Extraction for Autonomous Driving
高维中间张量是导致 Lift-Splat 类 VT 映射稀疏、效率低下的主要原因。降低稀疏性的一个直观方法是减小 Finter 的大小。因此,我们提出了 Prime Extraction——一种用于自动驾驶和其他存在信息冗余场景的压缩技术。
图 3. 垂直和水平维度上的响应强度。对于自动驾驶,宽度维度上的响应方差高于高度维度。
图 4. Prime Extraction 模块。类别深度由 Prime Depth Attention 引导减少,而图像特征则由 Prime Feature Extractor (PFE) 减少,后者由 MaxPooling 和卷积组成,用于细化。
如图 4 所示,Prime Extraction 模块预测由图像特征引导的每个方向(张量的一列)的 Prime Depth Attention。它将 Prime Depth 生成为类别深度分布的加权和。同时,Prime Feature 由 Prime Feature Extractor (PFE) 获得,它由位置嵌入、逐列最大池化和用于细化的卷积组成。通过将 Prime Extraction 应用于基于矩阵的 VT,我们成功地将 FTM 减少到 M F T ′ ∈ R ( H B × W B ) × ( N c × W I × N d ) M^{'}_{FT} ∈ R(H_B ×W_B )×(N_c ×W_I ×N_d ) MFT′∈R(HB×WB)×(Nc×WI×Nd),这比原始矩阵小 H_I 倍。使用 Prime Feature 和 Prime Depth 生成 BEV 特征的流程如图 5(黄色框)所示。
提取主要特征的动机是观察结果:图像特征的高度维度具有比宽度维度更低的响应方差。这一观察结果表明,该维度包含的信息少于宽度维度。因此,我们建议在高度维度上压缩图像特征。以前的研究也利用了降低图像特征的高度维度 [1,21],但我们首先建议压缩图像特征和相应的深度以提升 VT。
在第 4.4 节中,我们将展示提取的 Prime Feature 和 Prime Depth 有效地保留了原始特征中的宝贵信息,并产生了与原始特征同样高质量的 BEV 特征。此外,Prime Extraction 技术可以单独应用于现有的 Lift-Splat 类 VT,以在几乎不影响性能的情况下提高其效率。
3.3. “Ring and Ray” Decomposition
通过矩阵分解可以进一步降低 FTM 的稀疏性。为此,我们提出了“Ring & Ray”分解。在不失一般性的情况下,我们可以将 N c N_c Nc 设置为 1,并将 M F T ′ M^{'}_{FT} MFT′ 视为张量 M F T ′ M^{'}_{FT} MFT′ 。在这种情况下, M F T ′ M^{'}_{FT} MFT′的形状将是 H B × W B × W I × N d H_B × W_B × W_I × N_d HB×WB×WI×Nd 。我们注意到,其大小为 WI 的维度可以看作是极坐标中的方向,因为图像特征的每一列都代表特定方向的信息。同样,大小为 N d N_d Nd 的维度可以看作是极坐标中的距离。换句话说,特定 BEV 网格所需的图像特征可以通过方向和距离来定位。因此,我们建议将 M F T ′ M^{'}_{FT} MFT′ 正交分解为两个独立的矩阵,每个矩阵都编码方向或距离信息。具体来说,我们使用环矩阵 M R i n g ∈ R N d × ( H B × W B ) M_{Ring} ∈ R^{N_d ×(H_B ×W_B )} MRing∈RNd×(HB×WB) 来编码距离信息,使用射线矩阵 M R a y ∈ R W I × ( H B × W B ) M_{Ray} ∈ R^{W_I ×(H_B ×W_B )} MRay∈RWI×(HB×WB) 来编码方向信息(伪代码见附录 1.1)。环和射线分解有效地减少了静态参数的大小。预定义参数的数量(FTM 的大小)从 W I × N d × H B × W B W_I × N_d × H_B × W_B WI×Nd×HB×WB 减少到 ( W I + N d ) × H B × W B (W_I + N_d ) × H_B × W_B (WI+Nd)×HB×WB ,通常减少了 30 到 50 倍。
然后我们展示如何将这两个矩阵用于 VT。给定 Prime Feature 和 Prime Depth,我们首先像 Lift-Splat 中一样对它们进行逐像素外积,以获得“提升特征”
F
i
n
t
e
r
∈
R
W
I
×
N
d
×
C
F_{inter} ∈ R^{W_I ×N_d ×C}
Finter∈RWI×Nd×C 。
Finter = {Finter
}WI = {F w ⊗ (D w )T }WI
F i n t e r = { F i n t e r w } W I = { F w ⊗ ( D w ) T } W I (3) F_{inter} = \{F^w_{inter}\}_{W_I} = \{\mathbf F^w ⊗(\mathbf D^w)^T\}_{W_I} \tag 3 Finter={Finterw}WI={Fw⊗(Dw)T}WI(3)
图 5. 使用矩阵进行视图变换。我们首先从图像中提取特征并预测每个像素的分类深度。获得的特征和深度被发送到 Prime Extraction 模块进行压缩。利用压缩的 Prime Feature 和 Prime Depth,我们使用 Prime Depth 将 1D Prime Feature “提升”到 2D 空间。然后通过 MatMul 和 FTM 或分解的 Ring & Ray 矩阵将“提升的特征”转换为 BEV 特征。
然后,如图 5 所示,我们不再使用 M0FT 直接将其转换为 BEV 特征(黄色框),而是转置 Finter,将其视为矩阵 Finter ∈ RNd ×(WI ×C),并在 Ring Matrix 和 Finter 之间进行 MatMul 以获得中间特征。然后通过与 Ray Matrix 进行 Hadamard 乘积来掩盖中间特征,并在 WI 维度上求和以获得 BEV 特征。(图 5,蓝色框,省略求和)。
F
i
n
t
e
r
∗
=
M
R
a
y
⊙
(
M
R
i
n
g
.
F
i
n
t
e
r
)
(4)
F^*_{inter} = M_{Ray} \odot (\mathbf M_{Ring}. \mathbf F_{inter}) \tag 4
Finter∗=MRay⊙(MRing.Finter)(4)
F
B
E
V
=
∑
w
F
i
n
t
e
r
∗
w
(5)
F_{BEV} = \sum_w F_{inter}^{*w} \tag 5
FBEV=w∑Finter∗w(5)
其中 F i n t e r ∈ R W I × C × H B × W B F_{inter} ∈ R^{W_I ×C×H_B ×W_B} Finter∈RWI×C×HB×WB 是张量形式的 F i n t e r ∗ F^{∗}_{inter} Finter∗。
然而,这种分解不会减少 VT 期间的 FLOPs,而是引入了图 5 中的中间特征(蓝色),其大小巨大且取决于特征通道 C。为了减少 VT 期间的计算和内存占用,我们将等式 3 和等式 5 结合起来,并以数学等效形式重写它们(有关证明,请参阅附录 1.2):
F B E V = ( M R a y ⊙ ( R R i n g . D ) ) . F I F_{BEV} = (M_{Ray} \odot (R_{Ring} .D)).F_I FBEV=(MRay⊙(RRing.D)).FI
通过这种重构,我们将 VT 期间的计算量从
2
×
W
I
×
C
×
N
d
×
H
B
×
W
B
2×W_I ×C×N_d ×H_B ×W_B
2×WI×C×Nd×HB×WBFLOPs 减少到
2
(
C
+
N
d
+
1
)
×
W
I
×
H
B
×
W
B
2(C+N_d +1) × W_I × H_B × W_B
2(C+Nd+1)×WI×HB×WB FLOPs;内存占用也从
W
I
×
N
d
×
H
B
×
W
B
W_I × N_d × H_B × W_B
WI×Nd×HB×WB 减少到
(
W
I
+
N
d
)
×
H
B
×
W
B
(W_I + N_d ) × H_B × W_B
(WI+Nd)×HB×WB 。在常见设置(C = 80、Nd = 112、WI =44)下,Ring & Ray
分解将计算量减少了 46 倍,并节省了 96% 的内存占用。
3.4. Overall Pipeline
利用上述技术,我们将使用 FTM 的计算和内存占用减少了数百倍,使得使用 FTM 的 VT 不仅可行而且高效。给定特定场景的多视图图像,我们得出 MatrixVT 的整体流程如下:
- 我们首先使用图像主干从每幅图像中提取图像特征。
- 然后,采用深度预测器预测每个特征像素的分类深度分布以获得深度预测。
- 之后,我们将每个图像特征和相应的深度发送到 Prime Extraction 模块,获得 Prime Feature 和 Prime Depth,即压缩后的特征和深度。
- 最后,利用 Prime Feature、Prime Depth 和预定义的 Ring & Ray Matrices,我们使用公式 6(另见下图 1)获得 BEV 特征。
4. Experiments
在本节中,我们将在 nuScenes 基准测试 [2] 上比较 MatrixVT 和其他现有 VT 方法的性能、延迟和内存占用。
4.1. Implementation Details
我们基于 BEVDepth [10] 进行实验,BEVDepth 是 nuScenes 基准上当前最先进的检测器。为了公平地比较性能和效率,我们根据他们的论文重新实现了 BEVDepth。除非另有说明,我们使用在 DD3D [17] 上预训练的 ResNet-50 [3] 和 VoVNet2-99 [8] 作为图像主干,使用 SECOND FPN [31] 作为图像颈部和 BEV 颈部。输入图像采用与 [10] 相同的预处理和数据增强。对于低输入分辨率,我们使用 BEV 特征大小 128×128,对于高分辨率检测,我们使用 256×256。分割实验使用 200×200 BEV 分辨率,如 LSS [18] 中所述。我们使用 DepthNet [10] 预测 nuScenes 中从 2m 到 58m 的分类深度,采用统一的 112 划分。在训练过程中,采用 CBGS [34] 和模型 EMA。由于 MatrixVT 的收敛速度比其他方法慢一点,但不超过 30 个时期,因此训练模型以使其收敛。
4.2. Comparison of Performances
4.2.1 Object Detection
表 1. 在 nuScenes 验证集上进行对象检测的实验结果。“MF”表示多帧融合。
表 2. 在 nuScenes 验证集上进行 BEV 分割的实验结果。我们通过在 BEV 特征上放置分割头来实现 BEVDepth 上的地图分割。
我们在多种设置下进行实验,以评估表 1 中的 MatrixVT 的性能。我们首先采用 ResNet 系列作为主干,而不应用多帧融合。MatrixVT 使用 ResNet-50 和 ResNet-101 实现了 33.6% 和 49.7% 的 mAP,与 BEVDepth [10] 相当,并且远远超过其他方法。然后,我们通过将主干替换为在外部数据上预先训练的 V2-99 [8] 并应用多帧融合来测试 MatrixVT 的上限。在此设置下,MatrixVT 实现了 46.6% 的 mAP 和 56.2% 的 NDS,这也与 BEVDepth 相当。
4.2.2 Method Map Segmentation
我们还对地图分割任务进行了实验,以验证 MatrixVT 生成的 BEV 特征的质量。为此,我们只需在 BEV 特征上放置一个类似 U-Net 的 [23] 分割头。为了公平比较,我们将相同的头放在 BEVDepth 的 BEV 特征上进行实验,结果在表 2 中报告为“BEVDepth-Seg”。值得注意的是,以前的工作在不同的设置(不同的分辨率、头部结构等)下实现了最佳分割性能;因此,我们报告了每种方法的最高性能。从表 2 可以看出,MatrixVT 的地图分割性能在所有三个子任务上都超过了大多数现有方法,并且与我们的基线 BEVDepth 相当。
4.3. Efficient Transformation
我们从速度和内存消耗两个维度比较了视图变换的效率。请注意,我们测量视图变换器的延迟和内存占用(使用 fp32),因为这些指标受骨干和头部设计的影响。我们将 CPU 视为代表性的通用设备,其中自定义运算符不可用。为了公平比较,我们测量并比较了其他两个 Lift-Splat 类视图变换器。LS-BEVDet 是 BEVDet 中使用的加速变换(使用默认参数);LS-BEVDepth 使用 BEVDepth [10] 中提出的 CUDA [15] 运算符,该运算符在 CPU 和其他平台上不可用。为了展示不同方法的特点,我们定义了六种转换设置,即 S1∼S6,它们在图像特征大小、BEV 特征大小和与模型性能密切相关的特征通道方面有所不同。
图 6. MatrixVT 和 Lift-Splat 的两个实现的延迟(左、中)和中间参数数量(右),S1∼S6 表示由图像特征大小(C × HI × WI )到 BEV 特征大小(C × HB × WB )表示的转换设置。请注意,在 CUDA 上,LS-BEVDet 在 S5 和 S6 下引发内存不足错误。如果没有 CUDA 平台,则无法使用 LS-BEVDepth。
如图 6 所示,所提出的 MatrixVT 显著提高了 CPU 上的转换速度,比 LS-BEVDet [6] 快 4 到 8 倍。在 CUDA 平台 [15] 上,自定义运算符可以实现更快的转换,但在大多数设置下,MatrixVT 的速度仍然比 LS-BEVDepth 快得多。此外,我们计算了 VT 期间中间变量的数量,作为额外内存占用的指标。对于 MatrixVT,这些变量包括环矩阵、射线矩阵和中间矩阵;对于 Lift-Splat,中间变量包括中间张量和预定义的 BEV 网格。如图 6(右)所示,MatrixVT 消耗的内存比 LS-BEVDepth 少 2 到 15 倍,比 LS-BEVDet 少 40 到 80 倍。
4.4. Effectiveness of Prime Extraction
在本节中,我们通过性能比较和可视化来验证 Prime Extraction 的有效性。
4.4.1 Effects on Performance
表 3. 使用 Prime Extraction 对 BEVDepth 的影响。报告的内存消耗是视图转换 (VT) 期间 Py-Torch 上的最大内存使用量。
如第 3.2 节所述,我们认为特征和相应的深度可以在几乎没有信息丢失的情况下进行压缩。因此,我们单独将 Prime Extraction 应用于 BEVDepth [10] 以验证其有效性。具体来说,我们在常见的 Lift-Splat 之前压缩图像特征和深度。如表 3 所示,使用 Prime Extraction 的 BEVDepth 在 Res-50 上实现了 41.1% 的 NDS,在 VovNetv2-99 [8] 上实现了 56.1% 的 NDS,这与未压缩的基线相当。因此,我们认为 Prime Extraction 有效地保留了原始特征中的关键信息。
4.4.2 Prime Information in Object Detection
然后,我们通过可视化深入研究 Prime Extraction 的机制。图 7 显示了 Prime Extraction 模块的输入和输出。可以看出,Prime Extraction 模块针对不同的任务进行训练,关注不同的信息。物体检测中的 Prime Depth Attention 关注前景物体。因此,Prime Depth 保留了物体的深度,而忽略了背景的深度。此外,从第二列中的黄色汽车可以看出,它被三个行人遮挡。Prime Extraction 有效地区分了不同深度的这些物体。
表 3 显示了采用 Prime Extraction 对 BEVDepth [10] 的影响。我们对 Prime Feature 和 Prime Depth 进行逐像素外积,然后对获得的张量应用 Voxel Pooling [10]。改进版的 BEVDepth 节省了约 28% 的内存消耗,同时提供了相当的性能。
4.4.3 Prime Information in Map Segmentation
对于地图分割任务,我们以车道分割为例——Prime Extraction 模块专注于与此任务密切相关的车道和道路。然而,由于目标类别的面积范围很广,覆盖了几个深度箱,Prime Depth 的分布在目标区域中是均匀的(见图 7,第 3 和第 4 列)。观察表明,Prime Extraction 生成了一种适合地图分割任务的新形式的深度分布。由于 Prime Depth 相当均匀,因此相同的特征可以投影到多个深度箱中,因为它们由同一类别占用。
图 7. 深度预测、Prime Depth Attention 和 Prime Depth 用于对象检测和车道分割任务。分类深度预测使用具有最大概率的距离来表示,而 Prime Depth 则通过原始概率值来表示。
4.5. Extraction of Prime Feature
在 PFE 中,我们建议使用最大池化,然后进行几个 1D 卷积来减少和细化图像特征。在减少之前,每个像素的坐标都作为位置嵌入嵌入到特征中。我们进行实验来验证每种设计的贡献。
表 4. MatrixVT 使用不同特征减少方法的性能。“Refine”表示精炼卷积,“Pos.Emb.”表示使用前视位置嵌入。
最大池化的一种可能替代方案是 [19] 和 [21] 中的 CollapseConv,它将高度维度合并到通道维度中,并通过线性投影减少合并的通道。然而,CollapseConv 的设计带来了一些缺点。例如,合并后的维度大小为 C × H,这很高并且需要额外的内存传输。为了解决这些问题,我们建议在 Prime Extraction 中使用最大池化来减少图像特征。表 4 显示,使用最大池化的减少在消除这些缺点的同时实现了比 CollapseConv 更好的性能。我们还进行了实验来证明这种方法的有效
我们还进行了实验来展示表 4 中精简子网后的有效性。结果表明,精简子网在将精简后的特征适应 BEV 空间方面起着至关重要的作用,如果没有它,性能将下降 0.9% mAP。最后,表 4 中的实验结果表明,位置嵌入带来了 0.4% mAP 的提升,这也是可取的。
5. Conclusion
本文提出了一种从多摄像机到鸟瞰视图的视图变换 (VT) 新范式。所提出的方法 MatrixVT 将 VT 概括为特征传输矩阵。然后,我们提出了 Prime Extraction,它消除了变换过程中的冗余,以及 Ring & Ray Decomposition,它简化并促进了变换。虽然在 GPU 等专用设备和 CPU 等通用设备上都更快、更高效,但我们在 nuScenes 基准上进行的大量实验表明,MatrixVT 提供的性能与最先进的方法相当。