MatrixVT: Efficient Multi-Camera to BEV Transformation for 3D Perception

news2024/11/24 16:51:37

本文提出了一种高效的多摄像头到鸟瞰图 (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} FRNc×HI×WI×C;分类深度为 D ∈ R N c × H I × W I × D D ∈ R^{Nc ×HI ×WI ×D} DRNc×HI×WI×D;BEV 特征为 F B E V ∈ R H B × W B × C F_{BEV} ∈ R^{H_B ×W_B ×C} FBEVRHB×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} FinterRNc×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 )} MFTR(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} FinterR(Nc×HI×WI×Nd)×C 是矩阵形式的“提升”特征 Finter, F B E V ∈ R ( H B × W B ) × C F_{BEV} ∈ R^{(H_B ×W_B )×C} FBEVR(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 ) MFTR(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 )} MRingRNd×(HB×WB) 来编码距离信息,使用射线矩阵 M R a y ∈ R W I × ( H B × W B ) M_{Ray} ∈ R^{W_I ×(H_B ×W_B )} MRayRWI×(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} FinterRWI×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=wFinterw(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} FinterRWI×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 的整体流程如下:

  1. 我们首先使用图像主干从每幅图像中提取图像特征。
  2. 然后,采用深度预测器预测每个特征像素的分类深度分布以获得深度预测。
  3. 之后,我们将每个图像特征和相应的深度发送到 Prime Extraction 模块,获得 Prime Feature 和 Prime Depth,即压缩后的特征和深度。
  4. 最后,利用 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 提供的性能与最先进的方法相当。

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

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

相关文章

QT-空窗口主窗口对话框

1. QMainWindow QMainWindow 用来创建主窗口 主窗口包含: 标题栏(Window title)、菜单栏(MenuBar)、工具栏(ToolBar)、状态栏(StatusBar)、停靠部件(DockWid…

你真的了解ChatGPT吗?深度解读Chat GPT背后的数据风险

随着人工智能技术的快速发展,像ChatGPT这样的语言模型已经成为了我们生活和工作的得力助手。从撰写文章、回答问题到辅助编程,ChatGPT正逐渐改变着人们与科技互动的方式。然而,随着AI的广泛应用,数据安全也成为了不可忽视的重要议…

Maven 父子模块的 pom.xml 文件编写

今天在写课内的实验作业的时候&#xff0c;三个内容要使用的依赖是一样的&#xff0c;于是想使用父子模块来玩玩。 父模块 pom.xml 书写 打包方式 <packaging>pom</packaging> 聚合子模块 <!-- 聚合子模块 --> <modules><module>../one</…

双十一即将来临,希喂、有哈、安德迈宠物空气净化器攻略赶快收好

国庆长假结束&#xff0c;也就告别了今年最后一个法定节假日。不过&#xff0c;随之而来的就是购物狂欢节双十一&#xff01;想想还有点小激动&#xff0c;这是我工作以来第一个双十一。以前在大学靠生活费根本买不了什么&#xff0c;现在工作了有点小钱&#xff0c;准备大买特…

全网都在找的Python生成器竟然在这里!简单几步,让你的代码更简洁、更高效!

博客主页&#xff1a;长风清留扬-CSDN博客系列专栏&#xff1a;Python基础专栏每天更新大数据相关方面的技术&#xff0c;分享自己的实战工作经验和学习总结&#xff0c;尽量帮助大家解决更多问题和学习更多新知识&#xff0c;欢迎评论区分享自己的看法感谢大家点赞&#x1f44…

【漏洞复现】网动统一通信平台/网动统一通信平台ActiveUC存在任意文件下载

》》》产品描述《《《 网动统一通信平台是采用统一的通信界面&#xff0c;将VoIP电话系统、电子邮件等多种沟通方式融合的企业IT平台。 》》》漏洞描述《《《 网动统一通信平台是采用统一的通信界面&#xff0c;将VoIP电话系统、电子邮件等多种沟通方式融合的企业IT平台。网动统…

OXO:一款针对Orchestration框架的安全扫描引擎

关于OXO OXO是一款针对Orchestration框架的安全扫描引擎&#xff0c;该工具可以帮助广大研究人员检测Orchestration安全问题&#xff0c;并执行网络侦查、 枚举和指纹识别等操作。 值得一提的是&#xff0c;OXO还提供了数十种其他的协同工具&#xff0c;包括网络扫描代理&…

js拼接html代码在线工具

具体请前往&#xff1a;在线Html转Js--将Html代码转成javascript动态拼接代码并保持原有格式

【基础篇】一个键值数据库包含什么?

背景 今天&#xff0c;在构造这个简单的键值数据库时&#xff0c;我们只需要关注整体架构和核心模块。这就相当于医学上在正式解剖人体之前&#xff0c;会先解剖一只小白鼠。我们通过剖析这个最简单的键值数据库&#xff0c;来迅速抓住学习和调优 Redis 的关键。 我们把这个简…

python中字符串操作

1、遍历字符串&#xff1a; pystr"HelloPython!" for i in pystr:print(i) 结果&#xff1a; 2、字符串索引 pystr"HelloPython!" print(pystr[0],pystr[-1]) 结果&#xff1a; 3、字符串切片 pystr"HelloPython!" # 切片[start:stop:step] p…

父组件向子组件传值props

父组件 <template><child :list"list" /><h4>{{ title }}</h4> </template> <script> // 引用子组件 import child from ./child.vue export default {data() {return {title: APP根组件,list: [a1, a2, a3]}},// 组件注册compo…

2024电动车新国标是什么标准

9月19日&#xff0c;工业和信息化部会同多部门&#xff0c;对最新修订的《电动自行车安全技术规范》进行公开征求意见&#xff0c;将持续1个月。与现行标准相比&#xff0c;这次的“新国标”做了哪些方面的改进和提升&#xff1f;事关你出行自由顺畅的“小电驴”&#xff0c;快…

【C语言】猜数字小游戏

&#x1f602;个人主页: 起名字真南 &#x1f923;个人专栏:【数据结构初阶】 【C语言】 【C】 目录 1 随机数的生成1.1 rand1.2 srand1.3 time1.4 设置随机数范围 2 猜数字游戏实现 前言&#xff1a;我们学习完前面的循环以后可以写一个猜数字小游戏 1 随机数的生成 想要完成…

假鞋检测分割系统源码&数据集分享

假鞋检测分割系统源码&#xff06;数据集分享 [yolov8-seg-C2f-DiverseBranchBlock&#xff06;yolov8-seg-C2f-SCConv等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAA…

C++11--默认成员函数控制 模板的可变参数

默认成员函数 之前学习C类中&#xff0c;有6个默认成员函数&#xff1a; 构造函数析构函数拷贝构造函数拷贝赋值重载取地址重载const 取地址重载 最重要的是前4个&#xff0c;默认成员函数就是我们不写编译器会生成一个默认的。在C11中新增了两个函数&#xff1a;移动构造函…

MySQL连接:内连接

先看我的表结构 dept表 emp表 内连接分为两个连接方式 1.隐式内连接 2.显式内连接 1.隐式内连接 基本语法 select 字段列表 FROM 表1, 表2 WHERE 条件... ;例子&#xff1a;查询每一个员工的姓名&#xff0c;及关联的部门的名称&#xff08;隐式内连接实现&#xff09; …

Pikachu-url重定向-不安全的url跳转

不安全的url跳转 不安全的url跳转问题可能发生在一切执行了url地址跳转的地方。如果后端采用了前端传进来的(可能是用户传参,或者之前预埋在前端页面的url地址)参数作为了跳转的目的地,而又没有做判断的话就可能发生"跳错对象"的问题。 url跳转比较直接的危害是: …

LSTM模型变种

LSTM模型变种 一、GRU 1.什么是GRU GRU&#xff08;Gated Recurrent Unit&#xff09;是一种循环神经网络&#xff08;RNN&#xff09;的变体&#xff0c;它被设计用来解决传统RNN在处理长序列时可能遇到的梯度消失或梯度爆炸问题。GRU通过引入门控机制来控制信息的流动&…

PCL 计算点云的高斯曲率

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 法向量计算 2.1.2 主曲率和高斯曲率计算 2.1.3 可视化函数 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接&#xff1a; PCL点云算法与项目实战案例汇总&a…

1000万元试水,看完AI约稿平台上赚钱的故事,真的心动了……

在生成对抗网络&#xff08;GAN&#xff09;、扩散模型&#xff08;Diffusion Models&#xff09;、视觉语言预训练模型&#xff08;CLIP&#xff09;等技术的发展下&#xff0c;AI 绘画可做的内容越来越多。 建筑设计、服装设计、室内设计、插画设计等垂类模型的出现也让更多…