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)的特定任务相关。立体匹配是利用两个或多个视点的图像来恢复场景的三维结构。在这种情况下,代价体积是一种数据结构,用于存储在不同视点之间为每个可能的深度值计算的代价或相似度度量。
代价体积用于表示不同深度假设下的匹配代价。它可以帮助计算图像中每个像素的深度信息。
代价体积进行特征匹配的一些关键步骤:
- 图像采集:从两个或多个视点捕获图像。
- 特征提取:在每个图像中提取特征点,这些点在不同视图中是对应的。
- 代价计算:对于每一对特征点(一个视图中的一个点和另一个视图中的点),计算一个代价值,这个值通常基于像素强度的相似度。代价体积是一个三维数组,其维度为 [ 宽度, 高度, 深度范围 ]。
低纹理区域(笔记)
所谓低纹理区域指的是图像中那些缺乏明显纹理特征的区域。比如平滑的墙面或天空。同时低纹理区域可能对光照条件的变化非常敏感,因为阴影和高光可能会影响这些区域的外观。下图便是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替换原始注意力层中使用的指数核,其中 φ