增强现实系列—Map-Relative Pose Regression for Visual Re-Localization

server/2024/9/23 5:20:16/
<article class="baidu_pl">
article_content" class="article_content clearfix">
arkdown_views prism-atom-one-dark">arker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中一起航行,共同成长,探索技术的无限可能。

🚀 探索专栏:学步_技术的首页 —— 持续学习,不断进步,让学习成为我们共同的习惯,让总结成为我们前进的动力。

🔍 技术导航:

  • 人工智能:深入探讨人工智能领域核心技术。
  • 自动驾驶:分享自动驾驶领域核心技术和实战经验。
  • 环境配置:分享Linux环境下相关技术领域环境配置所遇到的问题解决经验。
  • 图像生成:分享图像生成领域核心技术和实战经验。
  • 虚拟现实技术:分享虚拟现实技术领域核心技术和实战经验。

🌈 非常期待在这个数字世界里与您相遇,一起学习、探讨、成长。不要忘了订阅本专栏,让我们的技术之旅不再孤单!

💖💖💖 ✨✨ 欢迎关注和订阅,一起开启技术探索之旅! ✨✨

文章目录

  • 1. 背景介绍
        • 我们的主要贡献总结如下:
  • 2. 方法
    • 2.1 架构概述
    • 2.2 相对地图姿态回归架构
      • 2.2.1 动态位置编码
      • 2.2.2 深层 Transformer 的再注意机制
      • 2.2.3 姿态回归头
    • 2.3 损失函数
    • 2.4 (可选)微调姿态回归器
  • 3. 实验
    • 3.1 实现细节
    • 3.2 定量评估
    • 3.3 消融实验
  • 4. 结论

1. 背景介绍

姿态回归网络预测查询图像相对于已知环境的相机姿态。在这类方法中,绝对姿态回归(APR)最近在位置误差范围达到几厘米级的精度方面显示出令人鼓舞的准确性。APR 网络将场景几何信息隐式地编码在其权重中。为了达到高精度,它们需要大量的训练数据,这些数据实际上只能通过耗时数天的新视图合成来创建。对于每个新场景,这一过程都必须反复进行。

我们提出了一种新的姿态回归方法,称为 相对于地图的姿态回归(map-relative pose regression, marepo),能够以与场景无关的方式满足姿态回归网络对数据的需求。我们将姿态回归器与特定场景的地图表示进行条件化,从而使其姿态预测相对于场景地图。这使我们能够在数百个场景中训练姿态回归器,以学习场景特定地图表示和相机姿态之间的通用关系。
在这里插入图片描述
我们的相对地图姿态回归器可以立即应用于新的地图表示,或者通过几分钟的微调以达到最高的准确性。我们的方法在两个公共数据集(室内和室外)上远远优于之前的姿态回归方法。代码已公开:https://nianticlabs.github.io/marepo。

如今,神经网络几乎已经征服了计算机视觉的各个领域,但仍有一个任务它们尚难以解决:视觉重定位。那么,什么是视觉重定位呢?给定一组映射图像及其在公共坐标系中表达的姿态,构建场景表示。随后,给定一个查询图像,估计其相对于场景的姿态,即位置和方向。

视觉重定位的成功方法依赖于预测图像与场景的对应关系,可以通过匹配 [8, 21, 38–40, 42, 57] 或直接回归 [4–6, 14, 56] 来实现,然后使用传统且稳健的算法,如 PnP [18] 和 RANSAC [17],来解决姿态。

从不同的角度看,基于姿态回归的方法 [12, 25, 32, 46] 尝试不借助传统姿态求解,使用单个前馈神经网络从单张图像中推断姿态。映射数据被视为训练集,摄像机的外部参数用于监督。总体而言,姿态回归方法有两种类型,但与基于对应关系的方法相比,它们在准确性方面存在不足。

绝对姿态回归(APR) 方法 [7, 24, 25] 为每个独立场景训练专用的姿态回归器,能够预测相机相对于特定场景的姿态。虽然场景坐标空间可以隐式编码到神经网络的权重中,但绝对姿态回归器在姿态估计的准确性上较低,主要是因为每个场景通常可用的训练数据有限,并且难以对未见过的视角进行泛化 [43]。

相对姿态回归 是姿态回归方法的另一种类型 [10, 16, 26, 51, 54]。回归器被训练用于预测两个图像之间的相对姿态。在典型的推理场景中,回归器被应用于由未见的查询图像和映射集中某一图像(通常通过最近邻匹配选择)构成的图像对;然后,预测的相对姿态可以与映射图像的已知姿态相结合,得出绝对查询姿态。这些方法可以在大量与场景无关的数据上进行训练,但其准确性仍然有限:两个图像之间的度量姿态只能大致预测 [2]。

针对这些局限性,我们提出了一种新的绝对姿态回归形式:相对地图姿态回归(marepo)。我们将特定场景的表示(对每个目标场景的尺度-度量参考空间进行编码)与通用、场景无关的绝对姿态回归网络相结合。具体来说,我们利用快速训练的场景坐标回归模型作为场景表示,预先训练一个姿态回归网络,使其学习场景坐标预测与相应相机姿态之间的关系。这种通用关系允许我们在数百个不同场景中训练姿态回归器,有效解决绝对姿态回归模型因训练数据有限而产生的问题。此外,由于在定位时我们的姿态回归器以特定场景的地图表示为条件,它能够预测准确的尺度-度量姿态,与相对姿态回归器不同。

我们的实验表明,marepo 是一种姿态回归网络,其准确性可与基于结构的重定位方法相媲美(例如 [6]),并且远远超过所有其他单帧绝对姿态回归方法(见图1)。我们的与场景无关的姿态回归器可以立即应用于每个新的场景表示,或(可选地)通过几分钟的微调以获得最佳精度。

我们的主要贡献总结如下:
  1. 我们提出了 marepo,一种新的绝对姿态回归方法,它将通用且与场景无关的相对地图姿态回归与场景特定的度量表示相结合。我们展示了该网络可以在之前未见过的图像上执行端到端推理,并且由于场景特定组件中所编码的强大且明确的3D几何知识,能够直接估计准确的、绝对的、度量的姿态。

  2. 我们引入了一种基于 Transformer 的网络架构,能够处理查询图像中的2D位置与之前映射场景参考系统中的对应3D坐标之间的密集对应关系,并估计捕获查询图像的相机姿态。我们进一步展示了应用于查询图像2D位置的动态位置编码如何通过在 Transformer 输入中编码相机内参,显著提高方法性能。

2. 方法

当前流行的姿态回归方法主要基于端到端的神经网络方法,可以表示为 P ^ = F ( I ) \hat{P} = F(I) argin-right: 0.1389em;">P^argin-right: 0.2778em;">=argin-right: 0.2778em;">argin-right: 0.1389em;">F(argin-right: 0.0785em;">I),即通过将输入图像 I I argin-right: 0.0785em;">I 提供给网络 F F argin-right: 0.1389em;">F,直接预测出相机姿态 P ^ \hat{P} argin-right: 0.1389em;">P^。这种方法的优点是概念简单,推理速度非常高效。然而,典型的绝对姿态回归(APR)网络的前向过程主要依赖于图像和特征上的2D操作,未能利用任何3D几何推理,因此与最新的几何方法相比,其性能不足。本文提出了首个具备显式3D几何推理的相对地图姿态回归方法(map-relative pose regression),在保持与其他姿态回归方法相同的实时效率和端到端简洁性的同时,能够回归出准确的相机姿态。

在本节的剩余部分,我们将首先概述我们用于执行姿态回归的基于 Transformer 的网络架构(第 3.1 节);然后描述我们提出的方法的主要组件和核心理念(第 3.2 节);接着,解释训练期间优化的损失函数(第 3.3 节);最后,我们展示如何在几分钟内对与场景无关的姿态回归 Transformer 进行针对特定测试场景的微调,从而在与未微调的回归器相比时进一步提高方法的性能(第 3.4 节)。

2.1 架构概述

我们方法的主要架构由两个部分组成:(1)一个基于 CNN 的场景几何预测网络 G G G,它将输入图像中的像素映射到 3D 场景坐标;(2)一个基于 Transformer 的相对地图姿态回归器 M \mathcal{M} M,它根据给定的场景坐标估计相机姿态。理想情况下,网络 G G G 旨在将每个输入图像与特定场景的 3D 信息相关联,因此每当方法处理新的场景时,都需要对其进行训练。相对而言,姿态回归器 M \mathcal{M} M 是一个与场景无关的模块,经过大量数据训练后,可以泛化到未见过的地图。
在这里插入图片描述
我们在图2中展示了所提出的网络架构。给定来自场景 S S argin-right: 0.0576em;">S 的图像 I I argin-right: 0.0785em;">I,我们将其输入到模型中,输出一个姿态 P ^ \hat{P} argin-right: 0.1389em;">P^。整个过程可以表述为:

P ^ = M ( H ^ , K ) = M ( G S ( I ) , K ) , \hat{P} = \mathcal{M}(\hat{H}, K) = \mathcal{M}(\mathcal{G}_S(I), K), argin-right: 0.1389em;">P^argin-right: 0.2778em;">=argin-right: 0.2778em;">M(argin-right: 0.0813em;">H^,argin-right: 0.1667em;">argin-right: 0.0715em;">K)argin-right: 0.2778em;">=argin-right: 0.2778em;">M(argin-right: 0.0593em;">Gargin-left: -0.0593em; margin-right: 0.05em;">argin-right: 0.0576em;">S(argin-right: 0.0785em;">I),argin-right: 0.1667em;">argin-right: 0.0715em;">K),

其中 H ^ = G S ( I ) \hat{H} = \mathcal{G}_S(I) argin-right: 0.0813em;">H^argin-right: 0.2778em;">=argin-right: 0.2778em;">argin-right: 0.0593em;">Gargin-left: -0.0593em; margin-right: 0.05em;">argin-right: 0.0576em;">S(argin-right: 0.0785em;">I) 表示由 G G G 预测的图像到场景坐标( G G G 是针对场景 S S argin-right: 0.0576em;">S 专门训练的), K ∈ R 3 × 3 K \in \mathbb{R}^{3 \times 3} argin-right: 0.0715em;">Kargin-right: 0.2778em;">argin-right: 0.2778em;">Rargin-right: 0.05em;">3×3 是与输入图像关联的相机内参矩阵。这一公式使得该方法与标准绝对姿态回归(APR)类似,因为它通过神经网络的前馈传递生成姿态,同时也类似于场景坐标回归(SCR),因为场景几何预测网络直接从每个输入图像回归出 3D 坐标。

与标准 APR 不同的是,我们的方法在图像和场景之间的关联上具有完整的几何推理能力;与 SCR 方法不同的是,它不需要传统的、非确定性的 RANSAC 阶段来推断姿态。理论上,任何能够从输入图像预测 3D 场景坐标的算法都可以作为 G G G 的候选者,因为我们用于执行姿态回归的 Transformer M \mathcal{M} M 不依赖于前置组件。

在下一节中,我们将重点详细说明相对地图姿态回归网络 M \mathcal{M} M

2.2 相对地图姿态回归架构

为了实现鲁棒且与场景无关的相对地图姿态回归,我们精心设计了如图3所示的简单而有效的架构。该模块的主要组件包括:(a) 一种新颖的动态位置编码,用于增加输入场景坐标的维度,并将其空间位置嵌入到输入图像中,同时考虑捕获该帧的相机内参;(b) 若干多层自注意力 Transformer 块;最后 © 一个基于 MLP 的姿态回归头。给定场景坐标图 H ^ \hat{H} argin-right: 0.0813em;">H^(由 G S G_S Gargin-left: 0em; margin-right: 0.05em;">argin-right: 0.0576em;">S 预测)和相应的相机内参矩阵 K K argin-right: 0.0715em;">K,网络能够直接估计 6-DoF(六自由度)的度量相机姿态。我们将在以下小节中详细介绍每个组件的设计。
在这里插入图片描述

2.2.1 动态位置编码

与许多用于高级任务的视觉 Transformer(ViTs)不同 [9, 15, 50],这些 Transformer 通常被条件化以直接处理输入的 RGB 图像(或更高维的特征),我们的 Transformer 设计用于解释与现实世界物理紧密相关的准确 3D 几何信息。相机捕获的帧内容与其内参严格关联;因此,我们提出使用一个以每个独立传感器为条件的位置信息编码,使我们能够以通用的方式(即独立于相机校准参数)训练主要的 Transformer 块。

我们的位置编码方案融合了两个不同的组件:(1) 一个相机感知的 2D 位置嵌入,将每个预测的场景坐标与其对应的像素位置相关联;(2) 一个 3D 位置嵌入,将实际的 3D 场景坐标值嵌入到一个高频域。

相机感知的 2D 位置嵌入:我们受 LoFTR [50] 的位置嵌入启发,但整合了来自相机内参的信息来生成输入到网络的高频分量。具体而言,对于输入图像中的每个像素坐标 ( u , v ) (u, v) (u,argin-right: 0.1667em;">argin-right: 0.0359em;">v),我们首先计算从相机中心出发并穿过该像素的3D射线的 ( x , y ) (x, y) (x,argin-right: 0.1667em;">argin-right: 0.0359em;">y) 分量(忽略 z z argin-right: 0.044em;">z 分量);然后对该射线的方向分量应用来自 [50] 的位置嵌入。这生成了高频/高维嵌入,使 Transformer 能够将输入 3D 坐标(由 G S G_S Gargin-left: 0em; margin-right: 0.05em;">argin-right: 0.0576em;">S 预测并在特定场景坐标系统中定义)与从当前相机位置发出的 3D 射线相关联,从而有助于回归相机相对于场景坐标系原点的姿态。形式化地,我们定义相机感知的 2D 位置嵌入为:

[
\mathcal{P} \mathcal{E}{2D}(u, v)^i :=
\left {
\begin{array}{ll}
\sin(\omega_k \cdot X
{\text{ray}}(u)), & i = 4k \
\cos(\omega_k \cdot X_{\text{ray}}(u)), & i = 4k + 1 \
\sin(\omega_k \cdot Y_{\text{ray}}(v)), & i = 4k + 2 \
\cos(\omega_k \cdot Y_{\text{ray}}(v)), & i = 4k + 3
\end{array}
\right.
]

其中, ω k = 1 1000 0 2 k / d \omega_k = \frac{1}{10000^{2k/d}} argin-right: 0.0359em;">ωargin-left: -0.0359em; margin-right: 0.05em;">argin-right: 0.0315em;">kargin-right: 0.2778em;">=argin-right: 0.2778em;">10000argin-right: 0.0714em;">2argin-right: 0.0315em;">k/d1 是针对 d 维特征所定义的频带,在该维度上应用位置编码, i i i 是当前特征索引, X ray X_{\text{ray}} argin-right: 0.0785em;">Xargin-left: -0.0785em; margin-right: 0.05em;">ray Y ray Y_{\text{ray}} argin-right: 0.2222em;">Yargin-left: -0.2222em; margin-right: 0.05em;">ray 是穿过 ( u , v ) (u, v) (u,argin-right: 0.1667em;">argin-right: 0.0359em;">v) 的射线的 X X argin-right: 0.0785em;">X Y Y argin-right: 0.2222em;">Y 分量:

[
\begin{aligned}
X_{\text{ray}}(u) &= \lambda \frac{u - c_x - \varepsilon}{f_x}, \
Y_{\text{ray}}(v) &= \lambda \frac{v - c_y - \varepsilon}{f_y},
\end{aligned}
]

其中, f x / y f_x/y argin-right: 0.1076em;">fargin-left: -0.1076em; margin-right: 0.05em;">x/argin-right: 0.0359em;">y c x / y c_x/y cargin-left: 0em; margin-right: 0.05em;">x/argin-right: 0.0359em;">y 对应于输入帧的相机内参, ε = 0.5 \varepsilon = 0.5 εargin-right: 0.2778em;">=argin-right: 0.2778em;">0.5 用于实现图像中心的零均值, λ = 400 \lambda = 400 λargin-right: 0.2778em;">=argin-right: 0.2778em;">400 是一个用于保持最终嵌入合理数值量级的启发式常数。

3D 位置嵌入:我们使用 3D 位置嵌入将 G S G_S Gargin-left: 0em; margin-right: 0.05em;">argin-right: 0.0576em;">S 预测的场景坐标 p ∈ R 3 p \in \mathbb{R}^3 pargin-right: 0.2778em;">argin-right: 0.2778em;">Rargin-right: 0.05em;">3 映射到高频/高维空间,受 [31] 启发:

[
\begin{aligned}
\mathcal{P}\mathcal{E}{3D}§ = \operatorname{Conv}{3(2m+1)}^{d}
\left[p, \sin(2^{0}\pi p), \cos(2^{0}\pi p), \ldots, \sin(2^{m-1} \pi p), \cos(2^{m-1} \pi p) \right].
\end{aligned}
]

在这里,除了将 3D 坐标映射到 3(2m + 1) 维空间的正弦嵌入外,我们还应用了一个进一步的 1 × 1 卷积 C o n v d 6 m + 3 Conv_d^{6m+3} argin-right: 0.0715em;">Conargin-right: 0.0359em;">vargin-left: -0.0359em; margin-right: 0.05em;">dargin-right: 0.05em;">6m+3,以确保 P E 2 D \mathcal{P} \mathcal{E}_{2D} argin-right: 0.0822em;">Pargin-right: 0.0894em;">Eargin-left: -0.0894em; margin-right: 0.05em;">2argin-right: 0.0278em;">D P E 3 D \mathcal{P} \mathcal{E}_{3D} argin-right: 0.0822em;">Pargin-right: 0.0894em;">Eargin-left: -0.0894em; margin-right: 0.05em;">3argin-right: 0.0278em;">D 具有相同的通道数。

融合位置嵌入:最后,在将它们传递到 Transformer 之前,我们融合 2D 和 3D 嵌入:

[
\mathcal{P}\mathcal{E}f = \mathcal{P}\mathcal{E}{3D} + \mathcal{P}\mathcal{E}_{2D}.
]

2.2.2 深层 Transformer 的再注意机制

如图3左侧所示,我们的相对地图姿态回归架构的核心由12个自注意力 Transformer 组成,排列为三个块,每个块包含四个 Transformer。在我们的实现中,我们使用 Linear Transformers [22],因为它们将每一层的计算复杂度从输入长度的平方降低到线性(即场景坐标图的分辨率)。

由于动态位置编码仅在网络开始时被输入,我们发现随着网络深度的增加,信息流会变得越来越弱。为了解决这个问题,我们引入了所谓的“再注意机制”(Re-Attention),在每四个块之间引入残差连接。实验表明,这种做法相当有效,不仅使网络更快收敛,还提升了网络的泛化能力。

2.2.3 姿态回归头

marepo 架构的最后一个组件是姿态回归头。它的结构非常简单:首先,通过一个由三个 1×1 卷积层组成的残差块,随后进行全局平均池化,生成一个单一的嵌入来表示整个输入场景坐标图。然后将此嵌入输入到一个小型 MLP(3 层),直接输出一个 10 维的相机姿态表示。姿态表示随后可以被解压为平移和旋转:平移通过四维齐次坐标表示(受 [6] 启发);旋转被编码为一个 6 维向量,表示坐标系的两个未归一化轴,之后通过归一化和叉积来形成完整的旋转矩阵,如 [58] 所示。

2.3 损失函数

上面描述的相对地图姿态回归器架构可以直接为每个图像输出一个度量姿态 P ^ \hat{P} argin-right: 0.1389em;">P^(由 3 × 3 旋转矩阵 R ^ \hat{R} argin-right: 0.0077em;">R^ 和一个平移向量 t ^ \hat{t} t^ 组成)。为了训练这个系统,我们使用了在 [2] 中提出的标准 L1 姿态回归损失,定义如下:

[
\mathcal{L}_{\hat{P}} = |\hat{R} - R|_1 + |\hat{\mathbf{t}} - \mathbf{t}|_1.
]

实验中我们发现,在回归器的中间层添加监督对整体性能有益。因此,在训练期间,我们还在每四个自注意力 Transformer 块后应用姿态回归头(见图3右侧)并计算辅助损失 L P 0 ^ \mathcal{L}_{\hat{P0}} Largin-left: 0em; margin-right: 0.05em;">argin-right: 0.1389em;">P0^ L P 1 ^ \mathcal{L}_{\hat{P1}} Largin-left: 0em; margin-right: 0.05em;">argin-right: 0.1389em;">P1^,如上所述。因此,我们在训练期间优化的总体损失为:

[
\mathcal{L} = \mathcal{L}{\hat{P0}} + \mathcal{L}{\hat{P1}} + \mathcal{L}_{\hat{P}},
]

在推理期间,我们只使用最后的输出姿态 P ^ \hat{P} argin-right: 0.1389em;">P^

2.4 (可选)微调姿态回归器

如前所述,所提出的相对地图姿态回归器由两个主要组件组成:一个初始的场景特定网络 G S G_S Gargin-left: 0em; margin-right: 0.05em;">argin-right: 0.0576em;">S,能够为每个像素预测度量场景坐标(在我们的实现中,我们使用一个可在几分钟内为每个场景训练的现成场景坐标回归架构 [6]);以及一个与场景无关的回归器 M \mathcal{M} M,利用场景坐标中编码的几何信息来预测相机姿态。后者事先在大量数据上训练,并且可以直接用于每个新的目标场景。

我们发现,与传统的端到端图像到姿态协议训练数小时或数天的其他 APR 方法相比,这种混合方法效果非常好。然而,我们还研究了是否对基于 Transformer 的回归器进行场景特定的微调阶段可以进一步提升方法性能。在这种方案中,对于每个新评估的场景,在训练完场景特定坐标回归器 G S G_S Gargin-left: 0em; margin-right: 0.05em;">argin-right: 0.0576em;">S 后,我们对姿态回归器 M \mathcal{M} M 进行微调,使用与第 3.3 节相同的损失。在下一节中,我们将展示只需对每个新场景在训练数据集上进行两次遍历(通常需要1到10分钟,取决于帧数),我们的方法就能够进一步提高其相对于基于姿态回归的方法已经达到的最先进性能。

值得注意的是,最后的微调步骤在我们的方法中是完全可选的:预训练的 M \mathcal{M} M 已经能够根据几何网络模块 G S G_S Gargin-left: 0em; margin-right: 0.05em;">argin-right: 0.0576em;">S 预测的 3D 场景坐标,准确预测相机姿态。

3. 实验

3.1 实现细节

在本节中,我们详细介绍训练 marepo 网络的过程。首先描述训练数据的生成,然后描述架构配置。

训练数据生成:在我们的实现中,我们采用了 [6] 提出的加速坐标编码架构和训练协议作为 G G G,用于为训练数据集中的每个场景 S S argin-right: 0.0576em;">S 训练场景特定的几何预测网络 G S G_S Gargin-left: 0em; margin-right: 0.05em;">argin-right: 0.0576em;">S,因为这可以快速训练场景特定的坐标回归网络(每个新场景约需 5 分钟)。为了训练 M \mathcal{M} M,我们使用来自 Map-Free Dataset [2] 的 450 个场景(编号为 0 到 459,排除 200-209)。数据集中每个图像都由数据集作者通过 SfM [44] 计算得到了相应的真实相机姿态。该数据集包括约 50 万帧,每个场景包含扫描一个小型室外位置的图像。每个扫描的帧被分为映射和查询,约有 500 个映射帧和 500 个查询帧。在实际操作中,我们使用每个场景及其两个分割的帧训练了 900 个场景特定的坐标回归器 G S G_S Gargin-left: 0em; margin-right: 0.05em;">argin-right: 0.0576em;">S。鉴于该方法的高效扩展能力,我们能够通过将每个 G S G_S Gargin-left: 0em; margin-right: 0.05em;">argin-right: 0.0576em;">S 应用于其对应扫描的未见分割的帧,生成大量图像像素与场景坐标之间的 2D-3D 对应关系。我们在生成对应关系期间使用数据增强,对每个帧处理 16 个变体。具体而言,我们对图像应用最多 15° 的随机旋转,将每个帧缩放至其原始分辨率的 0.67 至 1.5 倍,并最终进行随机裁剪。我们将预处理输出的场景坐标图连同其对应的旋转后有效像素的掩码、增强的相机内参和相机姿态一起保存。这构成了用于训练相对地图姿态回归器 M \mathcal{M} M 的固定数据集。

此外,我们通过随机抖动场景坐标(±1m)和旋转它们(最多 180°)来在线执行数据增强,以进一步提高数据多样性。请注意,随机抖动是针对整张图像应用的,即输入帧的所有场景坐标都通过相同的变换进行扰动。我们这样做是为了避免过拟合,确保网络 M \mathcal{M} M 学习的是相对于场景坐标的姿态,而不是每个帧的绝对姿态。

网络配置:场景特定网络 G S G_S Gargin-left: 0em; margin-right: 0.05em;">argin-right: 0.0576em;">S 处理短边为 480 像素长的图像,并输出 8 倍小分辨率的密集场景坐标图。相对地图姿态回归器 M \mathcal{M} M 基于一系列线性注意力 Transformer 块 [50] 构建,具有 d model = 256 d_{\text{model}} = 256 dargin-left: 0em; margin-right: 0.05em;">modelargin-right: 0.2778em;">=argin-right: 0.2778em;">256 h = 8 h = 8 hargin-right: 0.2778em;">=argin-right: 0.2778em;">8 个并行注意力层。对于 3D 位置嵌入,我们审慎选择 m = 5 m = 5 margin-right: 0.2778em;">=argin-right: 0.2778em;">5 个频带,因为输入可能存在噪声。

训练和硬件细节:我们使用 8 个 NVIDIA V100 GPU,批次大小为 64 来训练 M \mathcal{M} M。我们使用 AdamW [28] 优化器,学习率在 3e−4 到 2e−3 之间,采用 1-cycle 调度器 [49]。模型训练大约需要 10 天,迭代 150 个 epoch。推理时,我们的整个模型,包括场景特定网络 G S G_S Gargin-left: 0em; margin-right: 0.05em;">argin-right: 0.0576em;">S 和相对地图姿态回归器 M \mathcal{M} M,仅需一块 GPU,能够以实时的吞吐量估计相机姿态,正如在表2中所示。

3.2 定量评估

接下来,我们在两个公共数据集上展示 marepo 的性能:一个室内场景数据集,一个室外场景数据集。我们展示了所提出的相对地图姿态回归模块 M \mathcal{M} M 能够在场景特定几何预测网络 G S G_S Gargin-left: 0em; margin-right: 0.05em;">argin-right: 0.0576em;">S 为其提供每个场景的 2D-3D 对应关系的情况下,将预测泛化到以前未见过的场景。

7-Scenes 数据集:首先,我们在 Microsoft 7-Scenes 数据集 [19, 48] 上评估我们的方法,这是一个室内重定位数据集,为每个场景提供最多 7000 张映射图像。每个场景覆盖有限的面积(1m³ 至 18m³);尽管如此,之前的 APR 方法需要数十小时甚至几天 [32] 来训练模型以实现重定位。在实际场景中,这种情况并不理想,因为场景的外观可能已在此期间发生变化,导致训练的 APR 过时。相比之下,marepo 对每个新场景仅需几分钟(≈ 5 分钟)即可生成针对目标环境调优的几何预测网络 G S G_S Gargin-left: 0em; margin-right: 0.05em;">argin-right: 0.0576em;">S。我们在表1中将我们的方法与之前的姿态回归方法进行比较,显示 marepo 不仅是一种部分场景无关的方法,享有所有基于 APR 方法中最快的映射时间,而且在平均性能(中位误差)方面还提高了约 50%。我们还展示了经过微调的变体 marepoS 的性能,除了训练场景特定的 G S G_S Gargin-left: 0em; margin-right: 0.05em;">argin-right: 0.0576em;">S 场景坐标预测器外,我们还使用映射帧对 M \mathcal{M} M 回归器运行两个 epoch 的微调(见第3.4节)。微调模型 marepoS 在平均性能方面进一步提高,训练时间仅需额外 1.5∼10 分钟,成为唯一能够达到与目前最佳 3D 几何方法类似准确度的单帧姿态回归方法,同时在所需计算资源方面更高效。
在这里插入图片描述
Wayspots 数据集:我们进一步在 Wayspots 数据集 [2, 6] 上评估了我们的方法,该数据集展示了当前几何方法仍难以处理的室外场景。数据集包含对 10 个不同区域的扫描,提供了由视觉惯性测程系统 [1, 20] 提供的真实姿态。在表2中,我们展示了我们提出的 marepo 及其微调变体 marepoS 在每个场景的映射帧上与两种 APR 方法的比较;同时还与两种场景坐标回归方法进行比较:DSAC* [4] 和 Wayspots 上的当前最先进方法 ACE [6]。marepo 显著优于以前的 APR 方法,例如 PoseNet [25] 和 MS-Transformers [47],后者平均需要数小时的训练时间,并且与几何方法相比具有更高的性能。我们首次展示了一种依赖于几何先验的端到端图像到姿态回归方法,其性能与依赖于稳健求解器来估计相机姿态的方法相当。更具体地说,marepo 仅需五分钟即可训练一个将感兴趣位置编码到 G S G_S Gargin-left: 0em; margin-right: 0.05em;">argin-right: 0.0576em;">S 场景特定坐标回归器权重中的网络,并且(可选地)大约一分钟来微调相对地图回归器 M \mathcal{M} M(因为 Wayspots 扫描的帧数比上面的 7-Scenes 场景少得多)。在推理时,marepo(或其微调变体)可以以约 56 帧每秒的速度进行推理,使其不仅准确而且与其他方法相比非常高效。
在这里插入图片描述

3.3 消融实验

在以下内容中,我们提供对设计方法时所采用设计选择的额外见解。

架构消融:我们进行了几次控制实验以证明架构设计的合理性。注意,对于本小节的实验,我们仅训练基于 Transformer 的姿态回归器 50 个 epoch,而不是主要实验中的 150 个。这使我们能够在大约两天内完成每次实验,同时不影响消融实验中结果的相对排名。在第一个实验中(见表3),我们训练了一个较小的 Transformer M \mathcal{M} M d model = 128 d_{\text{model}} = 128 dargin-left: 0em; margin-right: 0.05em;">modelargin-right: 0.2778em;">=argin-right: 0.2778em;">128),并逐渐移除再注意(Re-Attention)和动态位置编码组件,以评估它们对 Wayspots 数据集性能的影响。姿态准确性显示为 5cm/5° 和 10cm/5° 误差范围内重新定位的帧的百分比。表格显示了在没有所提组件的情况下,性能的一致性下降。
在这里插入图片描述
接下来,我们通过在表4中使用不同数量的 Transformer 块和 d model d_{\text{model}} dargin-left: 0em; margin-right: 0.05em;">model 维度来展示不同模型配置的影响。我们还尝试了更大规模的模型( d model = 512 d_{\text{model}} = 512 dargin-left: 0em; margin-right: 0.05em;">modelargin-right: 0.2778em;">=argin-right: 0.2778em;">512,16/20 个 Transformer 块),但发现它们需要更多的 GPU 资源和时间。因此,考虑性能与时间权衡,我们不建议使用这些模型。
在这里插入图片描述
每场景训练:提出的姿态回归器组件 M \mathcal{M} M 被设计为与场景无关,并在大量数据上进行训练。然而,我们仍然感兴趣评估它在单个场景中进行专用训练时的性能,类似于现有的 APR 方法。我们进行了两个实验,使用 Wayspots 数据集中的映射序列训练场景特定模型,如表5所示。首先,模型从头开始训练,即场景几何回归器 G S G_S Gargin-left: 0em; margin-right: 0.05em;">argin-right: 0.0576em;">S 和相对地图姿态回归器 M \mathcal{M} M 被作为单个实体进行训练,类似于 PoseNet [25]。结果显示性能非常差,这可能是由于模型无法学习场景的显式 3D 几何关系。对于第二个变体,我们假设提供了预训练的 G S G_S Gargin-left: 0em; margin-right: 0.05em;">argin-right: 0.0576em;">S,然后为每个场景从头开始训练 M \mathcal{M} M。我们看到结果与其他 APR 方法(如 PoseNet [25] 或 MST [47],参见表2)相当;但该训练方法的性能仍远不及完整的 marepo 模型,其中 M \mathcal{M} M 在大型数据集上进行训练,以预测真正通用且与场景无关的相对地图姿态。
在这里插入图片描述

4. 结论

总之,我们的论文引入了 marepo,这是一种在姿态回归中的新方法,结合了与场景无关的姿态回归网络的优势以及快速训练的场景特定度量表示所提供的强大几何先验。该方法解决了以前 APR 技术的局限性,在预测跨不同场景的准确尺度度量姿态方面提供了可扩展性和精确度。我们在两个数据集上展示了 marepo 的卓越准确性及其相较于现有 APR 方法对新场景的快速适应能力。此外,我们还展示了将基于 Transformer 的网络架构与动态位置编码相结合,确保了对不同相机参数的鲁棒性,从而确立了 marepo 作为基于回归的视觉重定位的多功能且高效的解决方案。

🌟 在这篇博文的旅程中,感谢您的陪伴与阅读。如果内容对您有所启发或帮助,请不要吝啬您的点赞 👍🏻,这是对我最大的鼓励和支持。

📚 本人虽致力于提供准确且深入的技术分享,但学识有限,难免会有疏漏之处。如有不足或错误,恳请各位业界同仁在评论区留下宝贵意见,您的批评指正是我不断进步的动力!😄😄😄

💖💖💖 如果您发现这篇博文对您的研究或工作有所裨益,请不吝点赞、收藏,或分享给更多需要的朋友,让知识的力量传播得更远。

🔥🔥🔥 “Stay Hungry, Stay Foolish” —— 求知的道路永无止境,让我们保持渴望与初心,面对挑战,勇往直前。无论前路多么漫长,只要我们坚持不懈,终将抵达目的地。🌙🌙🌙

👋🏻 在此,我也邀请您加入我的技术交流社区,共同探讨、学习和成长。让我们携手并进,共创辉煌!
在这里插入图片描述


http://www.ppmy.cn/server/120647.html

相关文章

MyBatis 源码解析:TypeHandler 设计与自定义实现

引言 在 MyBatis 中&#xff0c;TypeHandler 是一个非常重要的接口&#xff0c;它的作用是将 Java 类型和数据库类型进行互相转换。当我们执行 SQL 查询或插入操作时&#xff0c;TypeHandler 决定了如何将 Java 对象转换为数据库字段类型&#xff0c;或将数据库字段转换为 Jav…

【C/C++】initializer_list

initializer_list 1 构造函数场景 class P { public:P(int a, int b) {std::cout << "int, int" << std::endl;}P(std::initializer_list<int> initList) {std::cout << "initializer_list" << std::endl;} };调用&#x…

上位机图像处理和嵌入式模块部署(linux小系统开发)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 和若干年前相比较&#xff0c;现在嵌入式linux开发要简单得多。稍微贵一点的有树莓派&#xff0c;国产的有各种水果派&#xff0c;基本上都可以按照…

镜像导入、标签设置与应用、探针测试

一、镜像导入 1、master主机下载镜像并打包 [rootk8s-master ~]# docker pull nginx:1.20.0[rootk8s-master ~]# docker pull nginx:1.21.0[rootk8s-master ~]# docker pull nginx:1.25.0[rootk8s-master ~]# docker pull busybox:latest[rootk8s-master ~]# docker save -o n…

梧桐数据库(WuTongDB):PostgreSQL 优化器简介

PostgreSQL 的查询优化器是一个高度复杂且功能强大的组件&#xff0c;负责将 SQL 查询转换为高效的执行计划。它采用了基于代价&#xff08;Cost-based&#xff09;的方法来评估查询计划的执行成本&#xff0c;并选择代价最小的执行方案。下面详细讲解 PostgreSQL 优化器的关键…

【有啥问啥】深度剖析:大模型AI时代下的推理路径创新应用方法论

深度剖析&#xff1a;大模型AI时代下的推理路径创新应用方法论 随着大规模预训练模型&#xff08;Large Pretrained Models, LPMs&#xff09;和生成式人工智能的迅速发展&#xff0c;AI 在多领域的推理能力大幅提升&#xff0c;尤其是在自然语言处理、计算机视觉和自动决策领…

Linux驱动开发 ——架构体系

只读存储器&#xff08;ROM&#xff09; 1.作用 这是一种非易失性存储器&#xff0c;用于永久存储数据和程序。与随机存取存储器&#xff08;RAM&#xff09;不同&#xff0c;ROM中的数据在断电后不会丢失&#xff0c;通常用于存储固件和系统启动程序。它的内容在制造时或通过…

【YMatrix、PostgreSQL】常用SQL集-持续更新ing

查看库中所有表信息-去除多余的分区表 SELECT t.table_name FROM information_schema.tables t LEFT JOIN pg_inherits i ON t.table_name i.inhrelid::regclass::text WHERE t.table_schema public AND i.inhrelid IS NULL;使用insert插入时&#xff0c;忽略库中重复数据&am…