Efficient LoFTR论文阅读(特征匹配)

news2024/11/25 16:31:02

Efficient LoFTR论文阅读(特征匹配)

  • 摘要
  • 1. 引言
  • 2. 相关工作
    • 基于检测器的图像匹配
    • 无检测器图像匹配
  • 3. 方法
    • 3.1. 局部特征提取
    • 3.2. 高效的局部特征变换
    • 3.3. 准备工作
    • 3.4. 聚合注意力机制
    • 3.5 粗级匹配模块
      • 有效推理策略
      • 子像素级细化模块
      • 有效的精细特征提取
      • 两阶段相关细化
    • 3.6 损失函数
      • 粗级匹配监督
      • 精细级匹配监督
  • 4. 实验
    • 4.1. 实施细节
    • 4.2. 相对姿态估计
    • 4.3. 单应性估算
    • 4.4 视觉定位
    • 4.5 消融研究
  • 5. 结论

摘要

我们提出了一种有效产生跨图像半密集匹配的新颖方法。 之前的无检测器匹配器LoFTR在处理大视点变化和纹理贫乏的场景中表现出了出色的匹配能力,但效率较低。 我们重新审视其设计选择,并在效率和准确性方面进行了多项改进。 一个关键的观察是,由于共享本地信息,在整个特征图上执行变换器是多余的,因此我们提出了一种具有自适应标记选择的 聚合注意力机制 以提高效率。 此外,我们发现LoFTR的精细相关模块中存在空间方差,这不利于匹配精度。 提出了一种新颖的两级相关层来实现精确的子像素对应以提高精度。 我们的效率优化模型比 LoFTR 快约 2.5 倍,甚至可以超越最先进的高效稀疏匹配管道 SuperPoint + LightGlue。 此外,大量实验表明,与竞争性半密集匹配器相比,我们的方法可以实现更高的精度,并具有可观的效率优势。 这为图像检索和 3D 重建等大规模或延迟敏感的应用开辟了令人兴奋的前景。

1. 引言

图像匹配是许多 3D 计算机视觉任务的基石,其目标是在给定图像对的情况下找到一组高度准确的对应关系。 图像之间建立的匹配具有广泛的用途,例如通过运动结构(SfM)或SLAM系统重建3D世界,以及视觉定位等。 以前的方法通常遵循两阶段流程:它们首先检测并描述每个图像上的一组关键点,然后通过手工制作的或基于学习的匹配器建立关键点对应关系。 这些基于检测器的方法很有效,但在具有挑战性的对中稳健地检测可重复的关键点会受到影响,例如极端的视点变化和纹理贫乏的区域。

最近,LoFTR 引入了一种带有 Transformer 的无检测器匹配范例,可以直接在两个图像之间建立半密集对应关系,而无需检测关键点。 借助 Transformer 机制来捕获全局图像上下文和无检测器设计,LoFTR 显示了匹配具有挑战性的对的强大能力,尤其是在纹理较差的场景中。 为了减轻计算负担,LoFTR 采用从粗到细的流程,首先对下采样的粗特征图执行密集匹配,其中应用了 Transformer。 然后,固定一幅图像上粗匹配的特征位置,而在另一图像上通过基于粗匹配裁剪特征块、执行特征相关性并计算相关性块的期望来搜索它们的子像素对应关系。

尽管其匹配性能令人印象深刻,但 LoFTR 的效率有限,因为在整个粗特征图上执行 Transformer 的 token 大小很大,这极大地阻碍了图像检索 和 SfM 等实际的大规模使用。 LoFTR的大量后续工作都试图提高其匹配精度。 然而,很少有方法关注无检测器匹配的匹配效率。 四叉树注意力将多尺度变换与逐渐缩小的注意力跨度结合起来,以避免对大特征图进行注意力。 这种策略可以降低计算成本,但它也将单个粗注意力过程分为多个步骤,导致延迟增加。

在本文中,我们重新审视了无检测器匹配器 LoFTR 的设计决策,并提出了一种新的匹配算法,该算法可以消除冗余计算,从而显着提高效率,同时进一步提高准确性。 如下图所示,与最近的图像匹配方法相比,我们的方法实现了最佳的推理速度,同时在准确性方面具有竞争力。 我们的关键创新在于引入了用于高效特征转换的 token 聚合机制和用于对应细化的两阶段相关层。 具体来说,我们发现像 LoFTR 那样在整个粗特征图上密集地执行全局注意力是不必要的,因为注意力信息在局部区域是相似和共享的。 因此,我们设计了一种聚合注意力机制来对自适应选择的标记进行特征转换,该机制非常紧凑,并且有效降低了局部特征转换的成本。

在这里插入图片描述
此外,我们观察到,在LoFTR的匹配细化阶段可能存在空间方差,这是由噪声特征相关性存在时对整个相关补丁的期望引起的。为了解决这个问题,我们的方法设计了一个两阶段的相关层,首先定位像素级的匹配与精确的相互最近邻匹配的精细功能补丁,然后进一步细化匹配的子像素级的相关性和期望局部内微小的补丁。

针对多个任务进行了广泛的实验,包括单应性估计、相对姿态恢复以及视觉定位,以显示我们方法的有效性。我们的方法将无检测器匹配推向前所未有的效率,比LoFTR快2.5倍,甚至可以超过当前最先进的高效稀疏匹配器LightGlue 。此外,与竞争性无检测器基线相比,我们的框架可以实现相当甚至更好的匹配准确度,并且效率更高。

综上所述,本文有以下贡献:

  • 基于LoFTR全面的多项改进的全新无检测器匹配方法,效率显著提高,准确率更高。
  • 一种新的聚合注意力网络用于有效的局部特征转换。
  • 一种新的两阶段相关细化层,用于精确和子像素级细化对应。

2. 相关工作

基于检测器的图像匹配

经典的图像匹配方法采用手工的方法来检测关键点,描述然后匹配它们。最近的方法从深度神经网络中受益于检测和描述,其中局部描述符的鲁棒性和判别力得到了显着提高。此外,一些方法设法一起学习检测器和描述符。SuperGlue 是一种开创性的方法,它首次将Transformer机制引入匹配中,与经典的手工匹配器相比,它有显着的改进。但是它也花费时间很多,特别是与许多关键点匹配。虽然以牺牲性能为代价,但是为了提高效率,一些后续的工作减少注意力机制的大小。LightGlue 引入了一种新的高效稀疏匹配方案,该方案自适应匹配难度,其中注意力过程可以更早地停止简单的配对。它比SuperGlue更快,可以实现有竞争力的性能。然而,稳健地检测图像中的关键点仍然具有挑战性,特别是对于纹理较差的区域。与它们不同,我们的方法侧重于无检测器方法的效率,它消除了关键点检测的限制,同时性能也很快。

无检测器图像匹配

无检测器方法直接匹配图像,而不是依赖于一组检测到的关键点,产生半密集或密集匹配。 NCNet 将所有特征和可能的匹配表示为4D相关体积。稀疏NC-Net利用稀疏相关层来缓解分辨率限制。随后,DRC-Net 提高了效率,并以粗到细的方式进一步提高了性能。

LoFTR 首先在无检测器匹配中使用Transformer来建模长程依赖性。它显示了显着的匹配能力,但是,由于密集地转换整个粗特征图的巨大计算量而导致效率低下。后续工作进一步提高了匹配精度。Matchformer 和 AspanFormer 对多尺度特征进行关注。四叉树逐渐限制分层注意过程中的注意广度到相关区域,这可以减少整体计算。然而,这些设计的贡献微乎其微,甚至降低了效率,因为多尺度注意力的分层性质将进一步引入延迟。TopicFM 首先将具有相似语义的特征分配给同一主题,其中注意力在每个主题内进行以提高效率。由于它需要顺序处理每个token的特征进行转换,因此效率的提高是有限的。此外,在主题内执行局部注意可能会限制对长范围依赖关系进行建模的能力。与它们相比,我们的方法中提出的聚合注意力模块显着提高了效率,同时实现了更好的准确性。

密集匹配方法旨在估计两幅图像之间所有可能的对应关系,具有很强的鲁棒性。 然而,与稀疏和半密集方法相比,它们通常要慢得多。 与它们不同的是,我们的方法产生具有竞争力的性能和显着更高的效率的半密集匹配。

3. 方法

给定一对图像 I A 、 I B I_A、I_B IAIB,我们的目标是在它们之间建立一组可靠的对应关系。 我们通过从粗到精的匹配管道来实现这一点,该管道首先在下采样的特征图上建立粗匹配,然后对其进行细化以获得高精度。 我们的流程概览如下图所示。

在这里插入图片描述

3.1. 局部特征提取

首先通过一个轻量级的主干提取图像特征图,用于后续的变换和匹配。与LoFTR和许多其他使用重型多分支ResNet网络进行特征提取的无检测器匹配器不同,我们使用具有重新参数化的轻量级单分支网络来实现更好的推理效率,同时保持模型性能。

特别地,在训练期间应用具有残余连接的多分支CNN网络以获得最大的代表性。在推理时,我们通过采用 重新参数化技术,将特征骨干损失地转换为有效的单分支网络,该技术通过将并行卷积核融合为单个核来实现。然后,中间的1/8下采样的粗特征的 F ~ A \tilde{F}_A F~A F ~ B \tilde{F}_B F~B 和精细特征在1/4和1/2分辨率被有效地提取为以后的粗到精匹配。

3.2. 高效的局部特征变换

在特征提取后,对粗特征映射 F ~ A \tilde{F}_A F~A F ~ B \tilde{F}_B F~B 进行自注意和交叉注意交织变换,以提高区分度。变换后的特征表示为 F ~ A t \tilde{F}_{A}^{t} F~At F ~ B t \tilde{F}_{B}^{t} F~Bt。以往的方法通常在整个粗特征图上进行注意,为了保证计算开销的可控性,采用线性注意力代替普通注意力。然而,由于粗糙特征的拥有较大的token尺寸,效率仍然受到限制。我们提出了一种有效的聚合注意力,它兼顾了效率和性能。

3.3. 准备工作

首先,我们简要介绍了常用的Vanilla注意力和线性注意力。Vanilla attention是Transformer编码器层中的核心机制,依赖于三个输入:查询Q、键K和值V。结果输出是值的加权和,其中加权矩阵由查询及其对应的键确定。形式上,注意函数定义如下:

在这里插入图片描述
然而,直接将普通注意力应用于密集的局部特征是不切实际的,因为token大小很大。为了解决这个问题,LoFTR的方法使用线性注意力来将计算复杂度从二次降低到线性:
在这里插入图片描述
其中 φ ( ⋅ ) = e l u ( ⋅ ) + 1 \varphi(\cdot ) =elu(\cdot)+1 φ()=elu()+1然而,这是以降低代表性能力为代价的。

3.4. 聚合注意力机制

在全面研究了粗特征图上的Transformer机制之后,我们有两个观察结果,促使我们设计一种新的高效聚合注意力。首先,相邻查询标记的关注区域是相似的,因此我们可以聚合 f i f_i fi的相邻标记以防止冗余计算。其次,每个查询标记的大部分注意力权重集中在少数关键标记上,因此我们可以在注意力之前选择 f j f_j fj的突出标记以减少计算。因此,我们建议首先使用深度卷积网络聚合 f i f_i fi 令牌,并且 f j f_j fj 通过最大池化层聚合以获得减少的显著的token:

在这里插入图片描述
其中Conv2D是由一个内核大小为 s × s 的步幅dependency卷积实现的,与最大池化层的内核大小相同。然后,位置编码和香草注意遵循处理减少令牌。位置编码(PE)可以帮助对空间位置上下文进行建模,其中RoPE在实践中被采用以考虑更稳健的相对位置,受[30]的启发。请注意,PE层仅为自注意启用,并在交叉注意期间跳过。然后对变换后的特征图进行上采样,并与fi融合,以获得最终的特征图。由于聚合和选择,f′ i和f′ j中的标记的数量减少了s2,这有助于注意阶段的效率。

3.5 粗级匹配模块

我们基于先前变换的粗略特征图 F ~ A t \tilde{F}_{A}^{t} F~At F ~ B t \tilde{F}_{B}^{t} F~Bt建立粗略级匹配。粗对应表示粗匹配区域,用于细化阶段中的后续子像素级匹配。为了实现这一点,将 F ~ A t \tilde{F}_{A}^{t} F~At F ~ B t \tilde{F}_{B}^{t} F~Bt紧密相关以构建得分矩阵S。然后应用两个S维上的softmax运算符(称为dualsoftmax)来获得相互最近匹配的概率。通过在满足相互最近邻(MNN)约束的同时选择高于分数阈值 τ \tau τ的匹配来建立粗略对应{ M c M_c Mc}。

有效推理策略

我们注意到,在粗匹配阶段使用的双softmax算子会显著限制推理过程中的效率,因为大的token尺寸,使得计算量十分庞大,尤其是对于高分辨率图像。此外,我们发现双softmax算子对于训练至关重要,在推理时将其丢弃,而直接使用得分矩阵S进行MNN匹配也可以更好地工作,效率更高。

在训练中使用双softmax算子的原因是它可以帮助训练区分性特征。直觉上,使用softmax操作,两个像素之间的匹配分数也可以以其他像素为条件。这种机制迫使网络提高真实对应的特征相似性,同时抑制与不相关点的相似性。通过训练的区分特征,可以在推理期间潜在地消除softmax操作。我们将在推理中跳过双softmax层的模型称为效率优化模型。下表中的结果证明了这种设计的有效性。

在这里插入图片描述
由此可见,我们采用该方法效率提升了很多,同时整体精确度也比LoFTR要高。

子像素级细化模块

如下图中第4模块所示,利用已建立的粗略匹配{ M c M_c Mc},我们利用我们的细化模块对它们进行细化以获得亚像素精度。它是由一个有效的特征补丁提取器的歧视性的精细功能,其次是一个两阶段的特征相关层的最终匹配{ M f M_f Mf}。

在这里插入图片描述

有效的精细特征提取

我们首先通过一个高效的融合网络提取歧视性的精细特征patches,这个patches集中在每个粗匹配 M c M_c Mc,然后再做匹配细化。为了提高效率,我们在这里的关键思想是重新利用先前变换的粗略特征 F ~ A t \tilde{F}_{A}^{t} F~At F ~ B t \tilde{F}_{B}^{t} F~Bt,以获得交叉视图参与的区分性精细特征,而不是像LoFTR中那样引入额外的特征变换网络。

具体地说,通过卷积和上采样,自适应地将 F ~ A t \tilde{F}_{A}^{t} F~At F ~ B t \tilde{F}_{B}^{t} F~Bt与1/4和1/2分辨率骨干特征融合,以获得原始图像分辨率下的精细特征图 F ^ A t \hat{F}_{A}^{t} F^At F ^ B t \hat{F}_{B}^{t} F^Bt。然后在以每个粗匹配为中心的精细特征图上裁剪局部特征块。由于只包括浅前馈网络,我们的精细特征融合网络是非常有效的。

两阶段相关细化

在粗匹配的基础上提取精细的局部特征块,进行高精度的亚像素匹配。为了细化粗匹配,常用的策略是选择 I A I_A IA 的中心补丁特征作为固定的参考点,并对其整个对应的特征补丁进行特征相关和期望以进行精匹配。然而,这种期望值细化会给最终匹配带来位置差异,因为不相关的区域也有权重,可能会影响结果。 因此,我们提出了一种新的两阶段相关模块来解决这个问题。

该算法首先利用MNN匹配得到中间像素级的精细匹配,然后通过相关性和期望值对匹配结果进行亚像素级的精细化处理。其动机是MNN匹配不具有空间变化,因为匹配是通过直接索引具有最大分数的像素来选择的,但是不能实现亚像素精度。相反,期望细化可以实现亚像素精度,但存在方差。拟议的两阶段改进可以通过结合这两种方法的最佳情况而获益。

具体地,为了细化粗级对应 M c M_c Mc,第一阶段细化阶段将它们的精细特征块密集地相关以获得局部块分数矩阵 S l S_l Sl。MNN搜索然后应用于 S l S_l Sl以获得中间像素级精细匹配。为了限制总体匹配数量,我们通过对相关性分数进行排序来为一个粗略匹配选择前1个精细匹配。

然后,我们进一步完善这些像素级的亚像素精度匹配我们的第二阶段细化。由于匹配精度在第一阶段细化中已经显著提高,现在我们可以使用一个微小的局部窗口进行相关和期望,最大限度地抑制位置方差。 在实践中,我们将 I A I_A IA中每个点的特征与 I B I_B IB中以其精细匹配为中心的3 × 3特征块相关联。然后应用softmax算子来获得匹配分布矩阵,并通过计算期望值来获得最终的精确匹配。

3.6 损失函数

整个过程通过分别监督粗匹配模块和精匹配模块进行端到端的训练。

粗级匹配监督

具有总数 N N N 的粗略地面实况匹配 { M c } g t \left \{ M_c \right \}_{gt} {Mc}gt 是通过经由深度图和图像姿态按照先前的方法将网格级点从 I A I_A IA 扭曲到 I B I_B IB 来构建的。通过最小化 { M c } g t \left \{ M_c \right \}_{gt} {Mc}gt 的位置上的对数似然损失来监督粗匹配中产生的相关性得分矩阵S:

在这里插入图片描述

精细级匹配监督

我们通过分别监督这两个阶段来训练所提出的两阶段精细级匹配模块。第一阶段精细损失 L f 1 L_{f 1} Lf1是基于像素级地面实况精细匹配来最小化每个精细局部得分矩阵 S l S_l Sl的对数似然损失,类似于粗略损失。第二阶段由 L f 2 L_{f 2} Lf2训练, L f 2 L_{f 2} Lf2计算最终子像素匹配 { M c } \left \{ M_c \right \} {Mc}和地面实况精细匹配 { M c } g t \left \{ M_c \right \}_{gt} {Mc}gt之间的 l 2 l_2 l2损失。总损失是所有监督的加权和:

在这里插入图片描述

4. 实验

在本节中,我们评估了我们的方法在几个下游任务上的性能,包括单应性估计,成对姿态估计和视觉定位。此外,我们通过进行详细的消融研究来评估我们设计的有效性。

4.1. 实施细节

我们采用 RepVGG 作为我们的特征骨干,自我和交叉注意交织N = 4次以转换粗糙特征。对于每个注意力,我们通过深度卷积层和最大池化层聚合特征,两者的内核大小都是4 × 4。我们的模型是在MegaDepth数据集上训练的,这是一个大规模的户外数据集。测试场景与训练数据分离。损失函数的权重α和β分别设置为1.0和0.25。我们使用AdamW优化器,初始学习率为 4 × 1 0 − 3 4 × 10^{−3} 4×103。网络训练大约需要15个小时,在8个NVIDIA V100 GPU上批量大小为16。粗和细阶段一起从头开始训练。MegaDepth上的训练模型用于评估我们实验中的所有数据集和任务,以证明泛化能力。

4.2. 相对姿态估计

数据集

我们使用室外MegaDepth数据集和室内ScanNet数据集来评估相对姿态估计,以证明我们方法的有效性。MegaDepth数据集是一个大规模的数据集,包含来自196个场景的稀疏3D重建。该数据集的主要挑战是大视角和照明变化,以及重复模式。我们遵循之前方法的测试分割,该方法使用来自场景“圣心教堂”和“圣彼得广场”的1500个采样对进行评估。调整图像大小,以便所有半密集和密集方法的最长边等于1200,稀疏方法提供了最长边缘等于1600的大小调整图像。ScanNet数据集包含1613个序列,具有地面实况深度图和相机姿势。它们描绘了视点变化和无纹理区域的室内场景,其中所有方法的图像大小均为640 × 480。

基线

我们将所提出的方法与三类方法进行比较:

  1. 稀疏关键点检测和匹配方法,包括SuperPoint [10]与NearestNeighbor(NN),SuperGlue(SG),LightGlue(LG)匹配器
  2. 半密集匹配器,包括DRC-Net,LoFTR,QuadTree Attention,MatchFormer ,AspanFormer,TopicFM
  3. 最先进的密集匹配器ROMA,可预测每个像素的匹配。

评估方案

在此基础上,对匹配恢复的相对位姿进行评价,以反映匹配精度。位姿误差被定义为旋转和平移中的角度误差的最大值。我们报告了阈值(5 μ m、10 μ m和20 μ m)下姿态误差的AUC。此外,还报告了ScanNet数据集中每对图像匹配的运行时间,以全面了解匹配精度和效率的平衡。我们使用一个单一的NVIDIA 3090来评估所有方法的运行时间。

结果

如下表所示,该方法取得了竞争的性能相比,稀疏和半密度方法在两个数据集上。定性比较如下图所示。具体来说,我们的方法在MegaDepth数据集的所有指标上都优于最好的半密集基线AspanFormer,并且在ScanNet数据集上具有较低但相当的性能,速度快了102倍。我们的优化模型消除了粗级匹配中的双softmax运算符,进一步提高了效率,但性能略有下降。 使用这种策略,我们的方法可以优于高效和强大的稀疏方法SP + LG的效率与显着更高的精度。密集匹配器ROMA具有很好的匹配能力,但在实际应用中速度较慢。 此外,由于ROMA使用预先训练的DINOv2主干,其在ScanNet上的强大泛化能力可能归因于DINOv2中类似的室内训练数据,其中其他方法仅在室外MegaDepth上训练。与之相比,我们的方法是10.75倍,这在准确性和效率之间有很好的平衡。

在这里插入图片描述
在这里插入图片描述

4.3. 单应性估算

数据集

我们在HPatches数据集上评估我们的方法。HPatches数据集描述了划分为序列的平面场景。在不同的视点或照明变化下拍摄图像。

基线

我们将我们的方法与稀疏方法进行了比较,这些稀疏方法包括D2 Net、R2D2、具有NN匹配器的DISK检测器以及SuperPoint + SuperGlue。对于半密集方法,我们将其与稀疏NCNet、DRC-Net 和LoFTR进行了比较。对于SuperGlue和所有半密度方法,我们使用它们在MegaDepth数据集上训练的模型进行评估。

评估方案

在SuperGlue和LoFTR之后,我们调整了所有图像的大小以进行匹配,从而使其最小边缘等于480像素。我们收集角点的平均重投影误差,并报告3个不同阈值(包括3 px,5 px和10 px)下的累积曲线下面积(AUC)。对于所有基线,我们采用相同的RANSAC方法作为一个强大的单应性估计公平的比较。在LoFTR之后,为了公平起见,我们仅选择半密集方法的前1000个预测匹配。

结果

如下表所示,即使匹配的数量是有限的,我们的方法也可以工作得非常好,并显着优于稀疏方法。与半稠密算法相比,我们的方法可以以更高的效率超越它们。我们将此归因于两阶段改进的有效性,以提高准确性和建议的聚合模块的效率。

在这里插入图片描述

4.4 视觉定位

数据集和评估协议

视觉定位是图像匹配的重要下游任务,其目的是基于3D场景模型估计查询图像的6-DoF姿态。我们对两个常用的基准进行了实验,包括InLoc数据集和Aachen v1.1数据集进行评估,以证明我们的方法的优越性。InLoc数据集是在具有大量重复结构和无纹理区域的室内场景上捕获的,其中每个数据库图像都有相应的深度图。Aachen v1.1是一个具有挑战性的大规模户外数据集,用于大视点和昼夜光照变化的定位,这特别依赖于匹配方法的鲁棒性。我们采用其完整的本地化跟踪进行基准测试。

基线

我们将所提出的方法与基于检测器的方法SuperPoint+SuperGlue和无检测器方法(包括LoFTR ,TopicFM,PATS和Aspanformer)进行了比较。

结果

我们坚持在线视觉本地化基准的管道和评估设置,以确保公平性。如下表所示,在基于检测器和无检测器的两种方法中,所提出的方法都取得了较好的效果。
在这里插入图片描述
作为一种主要面向效率的方法,我们的方法可以提供与许多以准确性为导向的方法相媲美的结果。如下表所示,我们的方法也展示了与最佳性能方法相当的性能。

在这里插入图片描述

4.5 消融研究

在本部分中,我们进行了详细的消融研究,以分析我们提出的模块的有效性,其结果如下表所示。

  1. 在没有双softmax的情况下,我们的优化模型可以在高分辨率图像中带来巨大的效率提升。
  2. 在粗特征变换中,用LoFTR的Transformer代替所提出的聚集注意力模型会导致效率显著下降,准确率下降。请注意,更换的Transformer也配备了与我们相同的绳索保护装置,以便进行公平的比较。实验结果表明,该模型对聚合特征进行香草关注可以在提高匹配效率的同时获得更好的匹配精度。
  3. 与LoFTR算法中对整个相关片进行期望的精化相比,该算法的两级精化层在延迟可忽略的情况下,提高了算法的精度。我们将此归因于两阶段精化的性质,即在相关精化中可以最大化地抑制位置方差。
  4. 放弃第二细化阶段将导致位姿精度下降,效率变化较小,尤其是在严格的AUC@5指标上。
  5. 将主干从重新参数化的VGG变回多分支ResNet会导致效率降低,但精度相似,这证明了我们的效率设计选择的有效性。

5. 结论

本文提出了一种基于LoFTR算法的半稠密局部特征匹配方法。我们回顾了它的设计,并提出了几个改进的效率和匹配精度。一个关键的观察是,由于相似的局部信息,在整个粗特征图上执行Transformer是冗余的,其中提出了一个聚合注意力模块来在减少的令牌上执行Transformer,具有明显更好的效率和竞争性能。此外,设计了两级相关层来解决LoFTR精化设计中的位置方差问题,进一步提高了定位精度。 因此,与LoFTR相比,我们的方法可以实现约2.5倍的速度,并且具有更好的匹配精度。此外,作为一种半密集匹配方法,所提出的方法可以达到与最近的鲁棒稀疏特征匹配器LightGlue相当的效率。我们相信,这将为我们的方法在大规模或延迟敏感的下游任务中的应用开辟道路,例如图像检索和3D重建。

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

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

相关文章

[C语言]一、C语言基础(03.函数)

G:\Cpp\C语言精讲 6. 函数 6.1函数的基本使用 6.1.1 为什么需要函数 《街霸》游戏中,每次人物出拳、出脚或跳跃等动作都需要编写50-80行的代码,在每次出拳、出脚或跳跃的地方都需要重复地编写这50-80行代码,这样程序会变得很臃肿&#xff…

目前kimi算不算国内顶级的AI?

利用AI工具批量生成影视短剧推广https://docs.qq.com/doc/DYnl6d0FLdHp0V2ll 从用户体验上讲,我觉得 Kimi 算得上国内的顶级 AI。 现在的大模型产品遍地开花,底层模型原理差异不大,想要在这样的市场环境中生存下来并赢得普通用户认可&#xf…

Go锁 详解

锁 - Go 函数并发编程中,锁是一种同步机制,用于协调对共享资源的访问,防止数据竞争 - Go 中提供了多种类型的锁,每种锁都有不同的特性和适用场景类型 互斥锁(mutex) 基础锁,只能同时允许一个 g…

【C++ Primer Plus习题】6.5

问题: 解答: #include <iostream> using namespace std;int main() {float salary 0;float tax 0;while (salary>0){cout << "请输入您的工资:";cin >> salary;if (cin.fail())break;if (salary < 5000){tax 0;}else if (salary < 15…

2024 MongoDB中国用户大会倒计时2天!请查收专属参会指南

距离2024 MongoDB中国用户大会即将开幕仅剩2天&#xff0c;我们非常期待与您共同探讨和分享最新的数据库技术与应用经验。为了确保您能够顺利参与本次会议&#xff0c;请查阅属于您的专属温馨提示&#xff01; 活动时间 8月31日09:00-17:30 签到开始&#xff1a;08:00 现场参…

Linux实现异步IO的方法:epoll,posix aio,libaio,io_uring

Linux中异步IO的实现方式大概有以下几种&#xff1a; 1. epoll 熟悉网络编程的人可能会想到select&#xff0c;poll&#xff0c;epoll这些异步IO的方式&#xff0c;但实际上这些方式叫做非阻塞IO&#xff0c;并不是实际意义上的异步IO。因此这些只能用于异步的Socket IO&…

Xline v0.7.0: 一个用于元数据管理的分布式KV存储

Xline是什么&#xff1f;我们为什么要做Xline&#xff1f; Xline是一个基于Curp协议的&#xff0c;用于管理元数据的分布式KV存储。现有的分布式KV存储大多采用Raft共识协议&#xff0c;需要两次RTT才能完成一次请求。当部署在单个数据中心时&#xff0c;节点之间的延迟较低&a…

【C++从小白到大牛】C++的隐式和显示类型转换基础知识讲解

目录 1、C语言中的类型转换 2、C语言和C中可以相互转换的类型总结 C语言&#xff1a; CPP&#xff1a; 3. 为什么C需要四种类型转换 4、C四大强制类型转换 4.1static_cast 4.2 reinterpret_cast 4.3 const_cast 4.4dynamic_cast 注…

吴恩达机器学习笔记 四十五 基于内容的过滤的tensorFlow实现

一个user网络&#xff0c;一个item网络 &#xff0c;使用顺序模型&#xff0c;激活函数选择relu&#xff0c;最后的输出大小都是32。 input_user提取特征&#xff0c;然后把这些特征送给上面的user_NN这个网络得到用户向量vu&#xff0c;再对vu进行标准化&#xff08;用l2范式&…

【最精简】解决访问GitHub慢的问题

我们通过命令行ping两个网站获取对应的IP地址 在windows中&#xff0c;修改hosts文件&#xff0c;路径一般是C:\Windows\System32\drivers\etc&#xff0c;用记事本打开&#xff0c;输入以下内容即可。 // 配置GitHub加速 199.232.69.194 github.global.ssl.fastly.net 140.8…

数据结构与算法 第3天(栈和队列)

栈和队列也是线性表&#xff0c;限制插入和删除的位置只能在端点 栈&#xff08;stack&#xff09; 后进先出 LIFO 表尾进入&#xff0c;表尾删除 一、案例 案例一&#xff1a;进制转换 例子 159转换成八进制 159/819...7 19/82...3 2/80...2 结果为237 案例二&#xff1a;括…

【香橙派系列教程】(二十) 系统移植、交叉编译工具链—OrangePi Zero2 SDK说明

【二十】基于OrangePi Zero2的系统移植—OrangePi Zero2 SDK说明 文章目录 【二十】基于OrangePi Zero2的系统移植—OrangePi Zero2 SDK说明1.使用环境要求2.Linux获取SDK3.首次编译完整SDK 之前我们在使用香橙派时&#xff0c; 都是直接在香橙派上进行代码编译&#xff0c; 但…

联华证券-新手炒股入门指南:学习路径与注意事项

学习炒股是一个循序渐进的过程&#xff0c;以下是入门建议以及需要注意的事项&#xff1a; 学习炒股的入手步骤 掌握基础知识&#xff1a; 股票市场基础&#xff1a;了解什么是股票、股市的运作机制、股票的种类等基本概念。 常用术语&#xff1a;熟悉如市盈率&#xff08;P/…

8.29c++

仿照string类&#xff0c;实现myString #include <iostream> #include <cstring> using namespace std; class myString { public://无参构造myString():size(10){strnew char[size];//堆区创建空间}//有参构造myString(const char *s){sizestrlen(s);//获取长度s…

TeamTalk消息服务器学习

msg_server发送消息 信令 //service id 0x0003 message IMMsgData{//cmd id: 0x0301required uint32 from_user_id 1; //消息发送方required uint32 to_session_id 2; //消息接受方required uint32 msg_id 3; // 非常重要&#xff1a;由谁产生&#xff1f;答&…

ShenNiusModularity项目源码学习(2:登录页面验证码)

前端登录页面Login.cshtml位于ShenNius.Admin.Mvc项目的Areas\Sys\Views\User内&#xff0c;页面中使用的验证码是调用同项目内UserController的OnGetVCode函数获取验证码图片。   点击验证码图片&#xff0c;会调用wwwroot\js\login.js定义的changeSrcCode函数刷新验证码。…

Qt调用外部exe并嵌入到Qt界面中(验证成功的成功)

http://t.csdnimg.cn/CDsqQ 原作者在这里 本文章主要介绍如何用Qt调用其他应用的exe,并将窗口嵌入到Qt界面中。很多人查到的代码都能成功的将exe调用起来&#xff0c;但是嵌入不到窗口中。主要有两种原因&#xff0c;现在从头到尾的梳理一下。 1.主要代码 1.1启动exe //包含…

keil编译输出的信息program size含义,以及个人使用中的编译内存溢出问题

keil编译后输出的信息含义 data对应的是片内的RAM&#xff0c;xdata对应的是程序中片外扩展的存储器上需要占用的容量&#xff0c;code是编写的程序占用单片机片内的存储程序ROM上的容量。 编译中发现错误 上图中的data值占用了147字节&#xff0c;超过了128字节。 一般解决…

2700+存储过程的超复杂Oracle,国产化怎么办?

前不久部门同事参与了一个关键客户的国产数据库Poc工作。从群里反馈的一些信息来看&#xff0c;难度还是比较大。 我们知道&#xff0c;对于数据库国产改造&#xff0c;其实有几个比较大的难点&#xff0c;其中最让人头疼的无非就是存储过程之类的对象了。 从同时提供的迁移报告…

掌握MySQL就差这一个——超详细讲解Mysql集群技术(包含主从复制,半同步模式,组复制,MHA)

一 Mysql 在服务器中的部署方法 在企业中 90% 的服务器操作系统均为 Linux 在企业中对于 Mysql 的安装通常用源码编译的方式来进行 官网&#xff1a; http://www.mysql.com 1.1 在Linux下部署mysql 1 安装依赖性&#xff1a; [rootmysql_node1 ~]# yum install cmake gcc-c…