LoFTR论文详解(特征匹配)

2024-08-22 05:12

本文主要是介绍LoFTR论文详解(特征匹配),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

LoFTR论文详解(特征匹配)

  • 1. LoFTR 论文
    • 1.1 摘要
    • 1.2 引言
    • 1.3 相关工作
      • 1.3.1 基于检测器的局部特征匹配
      • 1.3.2 无检测器局部特征匹配
      • 1.3.3 在视觉相关任务中使用 Transformer
    • 1.4 LoFTR架构方法
      • 1.4.1 局部特征提取
      • 1.4.2 局部特征 Transformer(LoFTR)模块
      • 1.4.3 建立粗粒度匹配
      • 1.4.4 由粗粒度匹配到细粒度细化的过程
    • 1.5 监督(损失函数)
      • 1.5.1 Coarse-level Supervision
      • 1.5.2 Fine-level Supervision
    • 1.6 实施细节
    • 1.7 实验
      • 1.7.1 Homography Estimation(单应性估计)
      • 1.7.2 Relative Pose Estimation
      • 1.7.3 Visual Localization
      • 1.7.4 消融实验
    • 1.8 结论

1. LoFTR 论文

1.1 摘要

本文提出了一种新的局部图像特征匹配方法,该方法首先建立粗粒度特征匹配,然后再细化粗粒度特征,与传统方法不同,传统方法是依次执行图像特征检测、描述和匹配。与使用 代价体积 来搜索对应的密集方法相比,我们在Transformer中使用自注意层和交叉注意层来获得以两幅图像为条件的特征描述符,在低纹理区域特征检测器通常难以产生可重复的兴趣点,Transformer提供的全局感受域使我们的方法能够在低纹理区域产生密集匹配。在室内和室外数据集上进行了实验,结果表明,LoFTR算法能有效提高分类性能,优于其他方法。

代价体积(笔记)

对于特征匹配中的“代价体积”(Cost Volume)这个概念,它通常与一种称为“立体匹配”(Stereo Matching)的特定任务相关。立体匹配是利用两个或多个视点的图像来恢复场景的三维结构。在这种情况下,代价体积是一种数据结构,用于存储在不同视点之间为每个可能的深度值计算的代价或相似度度量。

代价体积用于表示不同深度假设下的匹配代价。它可以帮助计算图像中每个像素的深度信息。

代价体积进行特征匹配的一些关键步骤:

  1. 图像采集:从两个或多个视点捕获图像。
  2. 特征提取:在每个图像中提取特征点,这些点在不同视图中是对应的。
  3. 代价计算:对于每一对特征点(一个视图中的一个点和另一个视图中的点),计算一个代价值,这个值通常基于像素强度的相似度。代价体积是一个三维数组,其维度为 [ 宽度, 高度, 深度范围 ]。

低纹理区域(笔记)

所谓低纹理区域指的是图像中那些缺乏明显纹理特征的区域。比如平滑的墙面或天空。同时低纹理区域可能对光照条件的变化非常敏感,因为阴影和高光可能会影响这些区域的外观。下图便是LoFTR与基于检测器的方法SuperGlue之间的比较:
在这里插入图片描述
LoFTR能够找到无纹理墙壁和地板上具有重复图案的对应关系,而基于检测器的方法很难找到可重复的兴趣点。

1.2 引言

图像间的局部特征匹配是许多3D计算机视觉任务的基础,在检测阶段,首先从每幅图像中检测出像 角点 这样的显著点作为兴趣点。然后在这些兴趣点的邻域区域周围提取局部描述符。特征检测和描述阶段产生两组具有描述符的兴趣点,随后通过最近邻搜索或更复杂的匹配算法来找到其点对点对应性。

使用特征检测器能够降低特征匹配的搜索空间,并且所得到 稀疏匹配结果 可以满足大部分的任务,例如相机姿态估计等。然而,由于实际中的各种因素,例如 不良纹理重复图案视点变化照明变化运动模糊 等,特征检测器可能无法提取足够多的图像之间可重复的兴趣点。这个问题在室内环境中尤其突出,低纹理区域或重复图案有时会占据视野中的大部分区域。 上图显示了一个示例。 如果没有可重复的兴趣点,即使有完美的描述符也无法找到正确的对应关系。

最近的几项工作试图通过建立 像素密集匹配 来解决这个问题。 可以从密集匹配中选择具有高置信度分数的匹配,从而避免特征检测。但是这些原有方法中卷积神经网络(CNN)提取的密集特征的感受野有限,无法区分不明显的区域。

相反,我们人对于这些没有显著特征的无纹理区域,不仅仅会关注图像的局部的无纹理区域,而是将局部无纹理区域结合到图像的全局区域来分析。例如,下图中的低纹理区域,我们可以根据它们与边缘的相对位置来区分。 这一观察结果告诉我们,特征提取网络中较大的感受野至关重要。
在这里插入图片描述
受上述观察的启发,我们提出了局部特征Transformer(LoFTR),一种新的无检测器的局部特征匹配方法。我们使用自注意力层和交叉注意层来处理(转换)从卷积骨干中提取的密集局部特征。

首先以低特征分辨率(图像维度的1/8)在两组变换特征之间提取密集匹配。从这些密集匹配中选择具有高置信度的匹配,然后使用 基于相关性的方法 将其细化到子像素级。Transformer的全局感受野和位置编码使变换后的特征表示具有上下文和位置相关性。通过多次交错自注意力层和交叉注意层,LoFTR学习了地面实况匹配中显示的密集排列的全局一致匹配先验。还采用了线性变换器(Transformer),将计算复杂度降低到可管理的水平。

我们评估所提出的方法在几个图像匹配和相机姿态估计任务与室内和室外数据集进行实验,结果表明,相比较于基于检测器和无检测器的特征匹配基线,LoFTR的性能大幅度提升。LoFTR在两个公开的视觉定位基准测试中排名第一。LoFTR即使在具有低纹理、运动模糊或重复图案的不明显区域中也可以产生高质量的匹配。

1.3 相关工作

基于检测器的方法依赖于稀疏分布的关键点的检测和描述,以便在图像之间建立匹配。 鉴于关键点检测器和特征描述符在该过程中的重要作用,这些方法的有效性在很大程度上取决于它们的性能。

无检测器方法通过利用图像中普遍存在的丰富上下文信息,避免了单独的关键点检测和特征描述阶段的必要性。 这些方法实现了端到端图像匹配,从而提供了一种独特的机制来处理该任务。

1.3.1 基于检测器的局部特征匹配

基于检测器的方法已经成为局部特征匹配的主要方法。在深度学习时代之前,许多著名的基于手工设计的传统局部特征方法取得了良好的表现。SIFT 和 ORB 可以说是最成功的手工设计的方法,并被广泛用于许多3D计算机视觉任务。

基于学习的方法可以显著提高大视点和局部特征光照变化的性能。所谓基于学习的方法指的是那些依赖于数据驱动的算法来自动发现特征和模式的方法。这些方法通常使用大量的标记数据来训练模型,以便模型能够学习到从输入数据到输出结果的映射关系。与传统的手工设计特征(hand-crafted features)不同,基于学习的方法能够自动学习数据中的特征表示。

值得注意的是,LIFT 和 MagicPoint 是最早成功的基于学习的局部特征提取器,他们采用基于探测器的手工设计方法,取得了较好的性能。SuperPoint 建立在 MagicPoint 的基础上,并通过单应性适应提出了一种自监督训练方法。

2019年,Wang et al.提出了SuperGlue架构,它一种基于学习的局部特征匹配方法。 SuperGlue 接受两组兴趣点及其描述符作为输入,并通过图神经网络 (GNN)(Transformer的一般形式)学习它们的匹配。 由于特征匹配的先验可以通过数据驱动的方法来学习,SuperGlue 实现了令人印象深刻的性能,并在局部特征匹配方面树立了新的技术水平。 然而,作为一种依赖于检测器的方法,它的根本缺点是无法检测不明显区域中的可重复兴趣点。 SuperGlue 中的注意力范围也仅限于检测到的兴趣点。

我们的工作受到 SuperGlue 的启发,在 GNN 中使用自注意力和交叉注意力在两组描述符之间传递消息,同时我们还提出了一种无检测器设计,以避免特征检测器的缺点。 我们还在 Transformer 中使用注意力层的有效变体来降低计算成本。

1.3.2 无检测器局部特征匹配

无检测器方法消除了特征检测器阶段,并直接产生密集描述符或密集特征匹配。 密集特征匹配的思想可以追溯到 SIFT Flow 。 Selfsupervised visual descriptor learning for dense correspondence(用于密集对应的自监督视觉描述符学习) 是第一个基于学习的方法来学习具有对比损失的像素特征描述符。 与基于检测器的方法类似,最近邻搜索通常用作后处理步骤来匹配密集描述符。 NCNet 提出了一种不同的方法,以端到端的方式直接学习密集对应关系。 它构建 4D 成本量来枚举图像之间所有可能的匹配,并使用 4D 卷积来正则化成本量并在所有匹配之间强制执行邻域共识。 Sparse NCNet 在 NCNet 的基础上进行了改进,并通过稀疏卷积使其更加高效。 与我们的工作同时,DRC-Net 遵循这一工作思路,并提出了一种从粗到细的方法来产生更高精度的密集匹配。 尽管在 4D 成本量中考虑了所有可能的匹配,但 4D 卷积的感受野仍然仅限于每个匹配的邻域区域。 除了邻域共识之外,我们的工作重点是借助 Transformer 中的全局感受野在匹配之间达成全局共识,而 NCNet 及其后续作品中并未利用这一点。

1.3.3 在视觉相关任务中使用 Transformer

Transformer 由于其简单性和计算效率已经成为自然语言处理(NLP)中序列建模的事实上的标准。最近,Transformer在计算机视觉任务中也得到了更多的关注,例如图像分类、对象检测和语义分割。与我们的工作同时,Revisiting Stereo Depth Estimation From a Sequence-to-Sequence Perspective with Transformers 这篇文章提出使用Transformer进行视差估计。由于查询向量和关键字向量之间的乘法,vanilla Transformer的计算成本随着输入序列的长度呈二次增长。最近在处理长语言序列的上下文中提出了许多有效的变体。由于在这些工作中没有对输入数据进行假设,因此它们也很适合于处理图像。

1.4 LoFTR架构方法

给定图像对 I A I^A IA I B I^B IB,现有的局部特征匹配方法使用特征检测器来提取兴趣点。我们提出了一个无检测器的设计来解决特征检测器的可重复性问题。所提出的方法LoFTR的概述如下图所示。
在这里插入图片描述

1.4.1 局部特征提取

我们使用具有FPN(表示为局部特征CNN)的标准卷积架构来从两个图像中提取多级特征。我们用 F A ~ \tilde{F^A} FA~ F B ~ \tilde{F^B} FB~ 来表示原始图像维度的 1/8 处的粗粒度特征,而 F A ^ \hat{F^A} FA^ F B ^ \hat{F^B} FB^ 表示原始图像维度的 1/2 处的细粒度特征。

卷积神经网络(Convolutional neural networks,CNNs)非常适合于局部特征提取。CNN引入的下采样还减少了LoFTR模块的输入长度,这有效的处理了计算成本开销。

1.4.2 局部特征 Transformer(LoFTR)模块

在局部特征提取之后,通过LoFTR模块传递 F A ~ \tilde{F^A} FA~ F B ~ \tilde{F^B} FB~以提取位置和上下文相关的局部特征。直观地说,LoFTR模块将特征转换为易于匹配的特征表示。我们将变换后的特征表示为 F t r A ~ \tilde{F^{A}_{tr}} FtrA~ F t r B ~ \tilde{F^{B}_{tr}} FtrB~

Transformer

Transformer编码器由顺序连接的编码器层组成。下图表示的是编码器层的体系结构。

在这里插入图片描述
编码器层中的关键元素是注意层。注意层的输入向量通常被命名为查询、键和值。类似于信息检索,查询向量Q根据从Q和对应于每个值V的关键向量K的点积计算的注意力权重从值向量V检索信息。注意力层的计算图在上图(b)中呈现。形式上,注意力层表示为:
在这里插入图片描述

注意力操作通过衡量查询元素与每个关键元素之间的相似度来选择相关信息。输出向量是由相似性分数加权的值向量的总和。结果,如果相似度高,则从值向量中提取相关信息。这个过程在图神经网络中也被称为“消息传递”。

Linear Transformer

将Q和K的长度表示为N并且将它们的特征维数表示为D,则在Transformer中Q和K之间的点积引入了计算成本,该计算成本随着输入序列的长度而二次增长( O ( n 2 ) O(n^2) O(n2))。在局部特征匹配的上下文中直接应用普通版本的Transformer是不切实际的。为了解决这一问题,我们建议在Transformer中使用 vanilla 注意层的有效变体。Linear Transformer 提出将Transformer的计算复杂度降低到 O ( n ) O(n) O(n),Linear Transformer 通过用替代核函数 s i m ( Q , K ) = φ ( Q ) φ ( K ) T sim(Q,K)=\varphi (Q)\varphi(K)^T sim(Q,K)=φ(Q)φ(K)T替换原始注意力层中使用的指数核,其中 φ(·)= elu(·)+1,利用矩阵乘积的结合性,可以先进行 φ ( K ) T φ(K)^T φ(K)T V V V的乘法运算。因为D << N,所以计算成本降低到O(N)。

Self-attention and Cross-attention Layers

对于自我注意层,输入特征 f i f_i fi f j f_j fj(如图3所示)是相同的(要么是 F A ~ \tilde{F^A} FA~,要么是 F B ~ \tilde{F^B} FB~)。对于交叉关注层,输入特征fi和fj是( F A ~ \tilde{F^A} FA~ F B ~ \tilde{F^B} FB~)或( F B ~ \tilde{F^B} FB~ F A ~ \tilde{F^A} FA~),这取决于交叉关注的方向。随后,我们将LoFTR模块中的自我和交叉注意层交错 N c N_c Nc 次。LoFTR中自我和交叉注意力层的注意力权重在下图的前两行中可视化。
在这里插入图片描述

1.4.3 建立粗粒度匹配

在LoFTR中可以应用两种类型的可区分匹配层,在这里作者采用了双softmax算子。首先通过 S ( i , j ) = 1 τ ⋅ ⟨ F t r A ( i ) , ~ F t r B ( j ) ~ ⟩ S(i,j)=\frac{1}{\tau } \cdot \left \langle \tilde{F^{A}_{tr}(i),} \tilde {F^{B}_{tr}(j)} \right \rangle S(i,j)=τ1FtrA(i),~FtrB(j)~ 计算变换特征之间的得分矩阵S。我们在S的两个维度上应用softmax(以下称为双softmax)来获得软相互最近邻匹配的概率。 当使用dual-softmax时,匹配概率 P c P_c Pc由下式获得:
在这里插入图片描述
基于置信度矩阵 P c P_c Pc,我们选择置信度高于阈值 θ c θ_c θc 的匹配,并进一步强制执行相互最近邻(MNN)标准,过滤可能的异常粗略匹配。 我们将粗略匹配预测表示为:在这里插入图片描述

1.4.4 由粗粒度匹配到细粒度细化的过程

建立粗粒度匹配后,开始进行粗粒度细化,具体过程如下:

  1. 使用从粗到细的模块先将这些匹配细化到原始图像分辨率,然后使用基于相关性的方法来实现此目的。
  2. 对于每个粗匹配 ( i ~ , j ~ ) (\tilde{i},\tilde{j}) (i~,j~),我们首先在精细级特征图 F A ^ , F B ^ \hat{F^A},\hat{F^B} FA^,FB^上定位其位置 ( i ^ , j ^ ) (\hat{i},\hat{j}) (i^,j^)
  3. 裁剪两组大小为w×w的局部窗口
  4. 较小的 LoFTR 模块将每个窗口内的裁剪特征变换 N f N_f Nf 次,产生分别以 ( i ^ , j ^ ) (\hat{i},\hat{j}) (i^,j^) 为中心的两个变换后的局部特征图 F t r A ( i ^ ) ^ , F t r B ( j ^ ) ^ \hat{F^A_{tr}{(\hat{i})}},\hat{F^B_{tr}({\hat{j}})} FtrA(i^)^,FtrB(j^)^
  5. 接着我们将 F t r A ( i ^ ) ^ \hat{F^A_{tr}{(\hat{i})}} FtrA(i^)^的中心向量与 F t r B ( j ^ ) ^ \hat{F^B_{tr}({\hat{j}})} FtrB(j^)^的所有向量相关联,从而生成一个热图,表示 j ^ \hat{j} j^ i ^ \hat{i} i^ 邻域中每个像素的匹配概率。
  6. 最后通过计算概率分布的期望,我们得到 I B I^B IB 上亚像素精度的最终位置 j ′ ^ \hat{j'} j^。 收集所有匹配项 { ( i ^ , j ′ ^ ) } \left \{ (\hat{i},\hat{j'}) \right \} {(i^,j^)} 产生最终的精细匹配 M f M_f Mf

1.5 监督(损失函数)

最终损失由粗略级别和精细级别的损失组成: L = L c + L f L = L_c + L_f L=Lc+Lf

1.5.1 Coarse-level Supervision

粗级的损失函数是最优传输层或双 softmax 算子返回的置信矩阵 Pc 上的负对数似然损失。 我们按照 SuperGlue 使用相机姿势和深度图来计算训练期间置信矩阵的地面实况标签。 我们将真实粗略匹配 M c g t M^{gt}_c Mcgt 定义为两组 1/8 分辨率网格的相互最近邻居。 两个网格之间的距离是通过其中心位置的重投影距离来测量的。 当使用 Dual-softmax 进行匹配时,我们最小化 M c g t M^{gt}_c Mcgt 中网格上的负对数似然损失:

在这里插入图片描述

1.5.2 Fine-level Supervision

我们使用 l 2 l_2 l2 损失进行精细化。 对于每个查询点 i ^ \hat{i} i^,我们还通过计算相应热图的总方差 σ 2 ( i ^ ) σ^{2}(\hat{i}) σ2(i^)来测量其不确定性。 目标是优化不确定性较低的精细位置,得到最终的加权损失函数:

在这里插入图片描述
其中 j g t ′ ^ \hat{j'_{gt}} jgt^ 是通过使用地面实况相机位姿和深度将每个 i ^ \hat{i} i^ F t r A ^ ( i ^ ) \hat{F^{A}_{tr}}(\hat{i}) FtrA^(i^) 扭曲到 F t r B ^ ( j ^ ) \hat{F^{B}_{tr}}(\hat{j}) FtrB^(j^) 来计算的。 在计算 L f L_f Lf 时,如果 i 的扭曲位置落在 F t r B ^ ( j ^ ) \hat{F^{B}_{tr}}(\hat{j}) FtrB^(j^) 的局部窗口之外,我们将忽略 ( i , j ′ ^ ) (i, \hat{j'}) (i,j^)。 训练期间梯度不会通过 σ 2 ( i ^ ) σ^2(\hat{i}) σ2(i^) 反向传播。

1.6 实施细节

我们在 ScanNet 数据集上训练 LoFTR 的室内模型,在 ScanNet 上,模型使用 Adam 进行训练,初始学习率为 1 × 1 0 − 3 1 × 10^{−3} 1×103,批量大小为 64。在 64 个 GTX 1080Ti GPU 上训练 24 小时后,模型收敛。 局部特征CNN使用 ResNet-18 的修改版本作为主干网络。 整个模型使用随机初始化的权重进行端到端训练。 N c N_c Nc 设置为 4, N f N_f Nf 设置为 1。 θ c θ_c θc 选择为 0.2。 窗口大小 w 等于5。在实现中,在通过精细级LoFTR之前, F t r A ~ \tilde{F^{A}_{tr}} FtrA~ F t r B ~ \tilde{F^{B}_{tr}} FtrB~被上采样并与 F A ^ \hat{F^A} FA^ F B ^ \hat{F^B} FB^连接。 对于 RTX 2080Ti 上的 640×480 图像对,具有 Dualsoftmax 匹配的完整模型的运行时间为 116 毫秒。 在最佳传输设置下,我们使用 3 次 Sinkhorn 迭代,模型运行时间为 130 毫秒。

1.7 实验

1.7.1 Homography Estimation(单应性估计)

在第一个实验中,我们在广泛采用的 HPatches 数据集上评估 LoFTR 以进行单应性估计。 HPatches 包含 52 个在显着光照变化下的序列和 56 个在视点上表现出较大变化的序列。

评估方案

在每个测试序列中,一张参考图像与其余五张图像配对。 所有图像都调整为更小的尺寸,等于 480。对于每个图像对,我们使用在 MegaDepth 上训练的 LoFTR 提取一组匹配。我们使用 OpenCV 来计算单应性估计,并以 RANSAC 作为鲁棒估计器。 为了与产生不同数量匹配的方法进行公平比较,我们计算用估计的 H ^ \hat{H} H^ 和真实 H H H 扭曲的图像之间的角误差作为正确性标识符,我们分别报告了阈值为 3、5 和 10 像素的角点误差的累积曲线 (AUC) 下的面积。 我们报告 LoFTR 的结果,最多有 1K 输出匹配。

基线方法

我们将 LoFTR 与三类方法进行比较:

  1. 基于检测器的局部特征,包括 R2D2 、D2Net 和 DISK
  2. 基于检测器的局部特征匹配器,即 SuperGlue SuperPoint 功能
  3. 无检测器匹配器,包括 Sparse-NCNet 和 DRC-Net

对于局部特征,我们最多提取 2K 个特征,并用这些特征提取相互最近的邻居作为最终匹配。 对于直接输出匹配的方法,我们限制最多 1K 匹配,与 LoFTR 相同,我们对所有基线使用原始实现中的默认超参数。

结果

下表表明 LoFTR 在所有误差阈值下均显著优于其他基线。具体而言,LoFTR 与其他方法之间的性能差距随着更严格的正确性阈值而增大。我们将最佳性能归因于无检测器设计提供的大量匹配候选项和 Transformer 带来的全局感受野。此外,粗到精模块还通过将匹配细化到子像素级而有助于估计精度。在这里插入图片描述

1.7.2 Relative Pose Estimation

数据集

我们使用 ScanNet 和 MegaDepth 分别证明了LoFTR在室内和室外场景中的位姿估计的有效性。ScanNet包含1613个单目序列,其中包含地面真实姿态和深度图。按照SuperGlue 的程序,我们对2.3亿个图像对进行了样本训练,重叠评分在0.4和0.8之间。我们在1500个测试对上评估了我们的方法。所有图像和深度图的大小都调整为640 × 480。此数据集包含具有宽基线和大量无纹理区域的图像对。

MegaDepth由196个不同户外场景的100万张互联网图像组成。作者还提供了从COLMAP [40]和从多视图立体计算的深度图的稀疏重建。我们遵循 DISK 只使用“圣心教堂”和“圣彼得广场”的场景进行验证,从中我们抽取1500对进行公平比较。调整图像的大小,使其较长的尺寸等于840用于训练,1200用于验证。MegaDepth的关键挑战是极端视角变化和重复模式下的匹配。

评估方案

我们报告了阈值下的位姿误差AUC,其中位姿误差定义为旋转和平移中的最大角度误差。为了恢复摄像机的姿态,我们用RANSAC从预测的匹配中求解本质矩阵。由于缺乏明确定义的度量(例如,匹配分数或召回)用于无检测器图像匹配方法。我们认为DRCNet是无检测器方法中最先进的方法。

室内姿态估计结果

与所有竞争对手相比,LoFTR在姿态准确性方面实现了最佳性能。将LoFTR与最佳传输或dual-softmax配对作为可区分的匹配层可实现相当的性能。由于DRC-Net的发布模型是在MegaDepth上训练的,因此我们提供了在MegaDepth上训练的LoFTR的结果,以进行公平的比较。LoFTR 在该评估中的表现也大大优于DRC-Net(见图5),这证明了我们的模型在数据集上的通用性。
在这里插入图片描述

户外姿态估计的结果

如下表所示,LoFTR在AUC@10°时的性能比无检测器方法DRC-Net高61%,证明了Transformer的有效性。对于SuperGlue,我们使用来自开源本地化工具箱HLoc的设置。LoFTR的性能远远优于SuperGlue(AUC@10°时为13%),这证明了无检测器设计的有效性。与室内场景不同,LoFTR-DS在MegaDepth上的表现优于LoFTR-OT。更多定性结果见上图。在这里插入图片描述

1.7.3 Visual Localization

视觉定位

除了在相对位姿估计方面具有竞争力的性能之外,LoFTR应用在视觉定位的效果也是非常好的。视觉定位的任务是估计给定图像相对于对应的3D场景模型的6-DoF位姿。我们根据长期视觉定位基准(以下称为VisLoc基准)对LoFTR进行了评估。其重点是在不同条件下对视觉定位方法进行基准测试,例如:昼夜变化、场景几何体变化以及具有大量无纹理区域的室内场景。因此,视觉定位任务依赖于高度鲁棒的图像匹配方法。

评估

我们在VisLoc的两个轨道上评价了LoFTR,包括几个挑战。

  1. 首先,“手持设备视觉本地化”赛道需要完整的本地化流水线。它以两个数据集为基准,即关于室外场景的AachenDay-Night数据集和关于室内场景的InLoc数据集。我们使用开源的本地化渠道HLoc和LoFTR提取的匹配项。
  2. “用于长期定位的局部特征”跟踪提供了固定的定位渠道来评估局部特征提取器本身以及可选地评估匹配器。

结果

我们在下面两个表中提供LoFTR的评估结果。我们已经评估了LoFTR与最佳传输层或双softmax算子的配对,并报告了具有更好结果的一个。LoFTR-DS在局部特征挑战航迹中的性能优于所有基线,显示了其在昼夜变化下的鲁棒性。

在这里插入图片描述
下表为InLoc 基准上的视觉定位评估,在InLoc数据集上,LoFTR-OT算法的视觉定位性能优于已有算法,InLoc数据集包含了大量的外观变化、纹理较少的区域、对称和重复的元素。我们把这种突出归功于Transformer和最佳传输层的使用,其防止了在低纹理区域中基于检测器的方法的重复性问题。

在这里插入图片描述

1.7.4 消融实验

为了全面了解LoFTR中的不同模块,我们评估了五种不同的变体,结果如下表:
在这里插入图片描述

  1. 通过与相当数量的参数进行卷积来替换LoFTR模块,导致AUC如预期的显著下降。
  2. 使用分别在粗略和精细水平具有1/16和1/4分辨率特征图的LoFTR的较小版本,导致104 ms的运行时间和降低的姿态估计精度。
  3. 使用在每一层具有位置编码的DETR式Transformer架构导致结果显著下降。
  4. 通过将LoFTR层数加倍至 N c = 8 N_c = 8 Nc=8 N f = 2 N_f = 2 Nf=2 来增加模型容量几乎不改变结果。我们在ScanNet上使用与室内姿态估计相同的训练和评估协议进行这些实验,其中最佳传输层用于匹配。

1.8 结论

本文提出了一种新的无检测器匹配方法LoFTR,该方法能够以从粗到细的方式与Transformers建立精确的半密集匹配。LoFTR模块利用Transformers中的自注意层和交叉注意层将局部特征转换为上下文和位置相关的特征,这对于LoFTR在低纹理或重复模式的不显著区域上获得高质量的匹配至关重要。实验结果表明,LoFTR算法在多个数据集上的相对位姿估计和视觉定位性能均达到了最佳水平。我们认为LoFTR为局部图像特征匹配中的无检测器方法提供了新的方向,并且可以扩展到更具挑战性的场景,例如,匹配具有严重季节变化的图像。

角点
角点就是极值点,即在某方面属性特别突出的点,下面有两幅不同视角的图像,通过找出对应的角点进行匹配。在这里插入图片描述
角点通常是轮廓之间的交点,在同一场景,即使视角发生变化,通常具备稳定性质的特征。

这篇关于LoFTR论文详解(特征匹配)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1095338

相关文章

一文详解如何在Python中从字符串中提取部分内容

《一文详解如何在Python中从字符串中提取部分内容》:本文主要介绍如何在Python中从字符串中提取部分内容的相关资料,包括使用正则表达式、Pyparsing库、AST(抽象语法树)、字符串操作... 目录前言解决方案方法一:使用正则表达式方法二:使用 Pyparsing方法三:使用 AST方法四:使用字

Python列表去重的4种核心方法与实战指南详解

《Python列表去重的4种核心方法与实战指南详解》在Python开发中,处理列表数据时经常需要去除重复元素,本文将详细介绍4种最实用的列表去重方法,有需要的小伙伴可以根据自己的需要进行选择... 目录方法1:集合(set)去重法(最快速)方法2:顺序遍历法(保持顺序)方法3:副本删除法(原地修改)方法4:

python logging模块详解及其日志定时清理方式

《pythonlogging模块详解及其日志定时清理方式》:本文主要介绍pythonlogging模块详解及其日志定时清理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录python logging模块及日志定时清理1.创建logger对象2.logging.basicCo

前端CSS Grid 布局示例详解

《前端CSSGrid布局示例详解》CSSGrid是一种二维布局系统,可以同时控制行和列,相比Flex(一维布局),更适合用在整体页面布局或复杂模块结构中,:本文主要介绍前端CSSGri... 目录css Grid 布局详解(通俗易懂版)一、概述二、基础概念三、创建 Grid 容器四、定义网格行和列五、设置行

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

SQL表间关联查询实例详解

《SQL表间关联查询实例详解》本文主要讲解SQL语句中常用的表间关联查询方式,包括:左连接(leftjoin)、右连接(rightjoin)、全连接(fulljoin)、内连接(innerjoin)、... 目录简介样例准备左外连接右外连接全外连接内连接交叉连接自然连接简介本文主要讲解SQL语句中常用的表

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

Python中局部变量和全局变量举例详解

《Python中局部变量和全局变量举例详解》:本文主要介绍如何通过一个简单的Python代码示例来解释命名空间和作用域的概念,它详细说明了内置名称、全局名称、局部名称以及它们之间的查找顺序,文中通... 目录引入例子拆解源码运行结果如下图代码解析 python3命名空间和作用域命名空间命名空间查找顺序命名空

SpringRetry重试机制之@Retryable注解与重试策略详解

《SpringRetry重试机制之@Retryable注解与重试策略详解》本文将详细介绍SpringRetry的重试机制,特别是@Retryable注解的使用及各种重试策略的配置,帮助开发者构建更加健... 目录引言一、SpringRetry基础知识二、启用SpringRetry三、@Retryable注解

springboot项目中常用的工具类和api详解

《springboot项目中常用的工具类和api详解》在SpringBoot项目中,开发者通常会依赖一些工具类和API来简化开发、提高效率,以下是一些常用的工具类及其典型应用场景,涵盖Spring原生... 目录1. Spring Framework 自带工具类(1) StringUtils(2) Coll