【FeatureBooster】Boosting Feature Descriptors with a Lightweight Neural Network

news2024/11/27 18:49:32

这篇论文介绍了一种轻量级网络,用于改进同一图像中关键点的特征描述符。该网络以原始描述符和关键点的几何属性作为输入,使用基于多层感知器(MLP)的自我增强阶段和基于Transformer的交叉增强阶段来增强描述符。增强后的描述符可以是实值或二进制。作者使用提出的网络来增强手工设计的(ORB [36],SIFT [25])和最先进的基于学习的描述符(SuperPoint [11],ALIKE [55]),并在图像匹配、视觉定位和运动结构等任务上进行评估。结果表明,该方法显著提高了每个任务的性能,特别是在光照变化大或重复模式的挑战性情况下。该方法在桌面GPU上仅需3.2毫秒,在嵌入式GPU上需27毫秒即可处理2000个特征,足够快速应用于实际系统。代码和训练权重可在github.com/SJTU-ViSYS/FeatureBooster上公开获取。
在这里插入图片描述

图1所示。ORB描述符在challenge -中表现得非常好在被提议的轻量级网络所推动之后。
左列:使用原始ORB描述符的匹配结果。右列:使用增强ORB描述符的结果。近使用test neighbor search和RANSAC[15]进行匹配

该论文的引言部分介绍了从图像中提取稀疏关键点或局部特征在计算机视觉任务中的重要性,并指出特征描述符在匹配不同图像中的关键点时起着关键作用。手工设计的描述符和基于学习的描述符都在实践中表现良好,但如何改进现有的描述符却鲜有研究。因此,本文提出了一种轻量级网络来增强原始描述符的区分能力,以尽可能少的计算开销实现。该网络利用Transformer将所有关键点的视觉和几何信息整合到各个描述符中,从而提高它们的鲁棒性和区分能力。作者将该方法应用于手工设计的描述符(SIFT [25],ORB [36])和最先进的基于学习的描述符(SuperPoint [11],ALIKE [55]),并在图像匹配、视觉定位和运动结构等任务上进行了评估。实验结果表明,通过使用增强后的描述符,该方法可以显著提高每个任务的性能。由于FeatureBooster不需要处理图像并采用轻量级Transformer,因此它非常高效。在NVIDIA RTX 3090上仅需3.2毫秒,在NVIDIA Jetson Xavier NX(用于嵌入式设备)上需27毫秒即可增强2000个特征,使得该方法适用于实际系统。

相关工作部分介绍了特征描述符的发展历程,包括手工设计的描述符和基于学习的描述符。此外,还介绍了一些改进现有特征描述符的方法,以及特征匹配和特征上下文方面的研究。

论文的方法部分详细介绍了提出的轻量级网络的架构和训练过程。网络通过多层感知器(MLP)和Transformer来增强描述符,并使用平均精度(AP)作为损失函数进行训练。此外,还介绍了一种高效的Attention-Free Transformer(AFT)来替代传统的多头注意力机制,以提高计算效率。

最后,论文通过实验评估了提出的方法在图像匹配、视觉定位和运动结构等任务上的性能,并展示了显著的改进效果

分步骤重新描述原先方法和改进后的方法

原先方法的步骤:

  1. 收集数据:收集所需的数据,包括输入和输出数据。
  2. 数据预处理:对收集到的数据进行清洗、去噪和归一化等预处理操作,以确保数据的质量和一致性。
  3. 特征工程:根据问题的特点和领域知识,对数据进行特征提取、选择和转换,以便更好地表示数据的特征。
  4. 模型选择:根据问题的性质和数据的特点,选择合适的机器学习模型,如决策树、支持向量机、神经网络等。
  5. 模型训练:使用训练数据对选定的模型进行训练,通过调整模型的参数和超参数,使模型能够更好地拟合训练数据。
  6. 模型评估:使用测试数据对训练好的模型进行评估,计算模型的性能指标,如准确率、精确率、召回率等。
  7. 模型优化:根据评估结果,对模型进行优化,如调整模型的结构、增加正则化项、调整学习率等,以提高模型的性能。
  8. 模型部署:将优化后的模型部署到实际应用中,以解决实际问题。

改进后的方法的步骤:

  1. 数据收集和预处理:收集所需的数据,并对数据进行清洗、去噪和归一化等预处理操作。
  2. 特征工程:根据问题的特点和领域知识,对数据进行特征提取、选择和转换,以便更好地表示数据的特征。
  3. 模型选择和训练:根据问题的性质和数据的特点,选择合适的机器学习模型,并使用训练数据对模型进行训练。
  4. 模型评估和优化:使用测试数据对训练好的模型进行评估,并根据评估结果对模型进行优化,以提高模型的性能。
  5. 模型部署和监控:将优化后的模型部署到实际应用中,并进行监控和调优,以确保模型在实际环境中的稳定性和性能。

改进后的方法相比原先方法,主要在模型选择和训练、模型评估和优化以及模型部署和监控等方面进行了改进。通过更加合理的模型选择和训练方法,以及更加准确的模型评估和优化策略,可以提高模型的性能和泛化能力。同时,在模型部署和监控阶段,加强对模型的实时监控和调优,可以确保模型在实际应用中的稳定性和可靠性。

分别详细描述原先方法和改进后的方法的差异以及这么改进的原因?

这篇论文提出了一种轻量级网络来改进图像中关键点的特征描述符。原先的方法是使用手工设计的描述符或学习得到的描述符,但在一些具有挑战性的情况下,如光照变化或重复纹理,它们的性能可能不理想。为了改进这个问题,作者提出了一种轻量级网络,通过自我增强和交叉增强两个阶段来提升描述符的性能。

在自我增强阶段,网络将原始描述符和关键点的几何属性作为输入,使用基于多层感知器(MLP)的自我增强阶段和基于Transformer的交叉增强阶段来增强描述符。增强后的描述符可以是实值或二进制的。在交叉增强阶段,作者使用Transformer来捕捉来自同一图像中提取的稀疏局部特征的空间上下文线索。通过整合全局上下文信息,局部特征描述符的可区分性可以得到改善。

作者通过实验证明,他们的方法在图像匹配、视觉定位和运动结构等任务中显著提高了性能,尤其是在具有挑战性的情况下。此外,该方法在处理2000个特征时只需要3.2毫秒的时间,足够快速应用于实际系统。

改进的原因是为了提高关键点的描述符性能,特别是在具有挑战性的情况下。通过引入轻量级网络和自我增强、交叉增强两个阶段,可以在不改变现有硬件和软件的情况下提升描述符的性能。

2. Related work

特征描述子:长期以来,手工设计的描述子是常用的方法。SIFT [25] 和 ORB [36] 是最著名的手工设计的描述子,在许多三维计算机视觉任务中仍被广泛使用,因为它们具有良好的性能和高效率。手工设计的描述子通常从局部区域提取,这限制了它们在更高层次上的表示能力。随着深度学习的发展和带注释的局部图像数据集的出现 [7],学习型描述子得到了广泛研究。大多数基于学习的局部描述子采用了L2-Net [46] 中引入的网络架构,并使用不同的损失函数进行训练,例如三元组损失 [29, 45, 47]、N对损失 [46] 和列表排序损失 [18]。学习型密集描述子 [11, 13, 17, 31, 35, 52] 可以利用整个图像中除了局部区域之外的信息,因为它们通常是使用卷积神经网络从整个图像中提取的,因此在大视角和光照变化下展现出优异的性能。虽然已经发明了许多描述子,但如何增强现有描述子的能力却受到了很少的关注,尤其是通过学习的方法。

改进现有特征描述子:已经发现通过非线性变换将现有描述子投影到另一个空间可以获得更好的匹配结果 [34]。RootSIFT [2] 表明,仅对归一化后的SIFT描述子的每个元素取平方根可以改善匹配结果。除了提高区分度之外,一些工作还试图通过减少描述子的维度来压缩描述子,例如PCA-SIFT [20] 和 LDAHash [42]。最近的一项工作 [12] 训练了一个网络,将不同类型的描述子映射到一个公共空间中,从而可以进行描述子之间的匹配。我们的工作与这一研究领域的核心思想相同,但旨在利用轻量级神经网络增强现有描述子的区分能力

特征匹配:一旦获得了特征描述子,通常会通过最近邻搜索来找到图像之间的对应关系。可以通过采用一些技巧(如互相检查、Lowe的比值测试 [25] 和RANSAC [15])来过滤掉错误的匹配。然而,最近邻搜索忽略了特征之间的空间和视觉关系,通常会产生嘈杂的匹配结果。为了解决这个问题,SuperGlue [38] 训练了一个关注图神经网络,通过将来自不同图像的两组局部特征进行相关性计算来预测对应关系。我们的方法在很大程度上受到SuperGlue的启发,但并不尝试改进匹配过程。相反,它增强了单个图像中的特征描述符,以便可以使用简单的最近邻搜索产生具有竞争力的结果。因此,我们的方法可以无缝地集成到许多现有流水线中,如BoW(词袋模型)[16] 的实现。

特征上下文:图像中特征位置和描述子的分布形成了一个全局上下文,这对于特征匹配是有帮助的,正如SuperGlue [38] 中所展示的那样。本文的目标是将全局上下文信息整合到原始描述子中,以增强它们的区分能力,而不是从头开始学习来描述图像。与我们的方法最接近的工作是SConE [49] 和ContextDesc [26]。SConE [49] 开发了一个星座嵌入模块,将一组相邻的特征(包括原始描述子和它们的空间布局)转换为新的描述子。该模块设计用于特定类型的描述子(FREAK [1])。ContextDesc [26] 使用两个MLP将视觉上下文和几何上下文编码为全局特征,以改善局部描述子。但它需要使用额外的CNN从原始图像中提取高级特征来构建视觉上下文。

与此相比,我们的方法仅将描述符和几何信息(如2D位置)作为输入,并使用轻量级Transformer聚合它们以生成新的描述符。新的描述符可以是二进制或实值的,可以无缝地集成到现有的视觉定位、SLAM和结构运动系统中。不需要处理原始图像使得我们的方法非常高效,并且可以在嵌入式GPU设备上实时运行。

3. 算法框架

  1. 概述
    图2. 提出的FeatureBooster流程包括自我增强和交叉增强两个阶段。自我增强阶段通过应用MLP将关键点的几何属性进行编码,并将其与另一个MLP投影的新描述符进行结合。在交叉增强阶段,整个图像中的所有关键点的几何编码描述符被送入一个轻量级Transformer中生成增强描述符。最后,增强描述符被用于特征匹配。

3. 概述

我们提出了一种轻量级网络,通过对从图像中提取的一些现有关键点检测器提取的关键点的特征向量(或描述符)进行增强,如图2所示。它仅使用特征描述符以及几何信息(例如特征位置、方向和尺度)作为输入,并输出比原始描述符更强大得多的新描述符。新的描述符可以是实值向量或二进制向量,可能与原始描述符不同。我们的特征增强器不需要处理从中提取这些关键点的图像,这使得我们的模型轻巧高效,并且可以更容易地集成到现有的运动结构或SLAM系统中。不需要访问原始图像也使我们的方法能够重用已经使用某些类型特征构建的3D地图。

该提出的流程包括两个步骤:自我增强和交叉增强。自我增强是指使用轻量级MLP网络将原始特征向量投影到新空间中。它还编码了几何信息,如2D位置、检测分数和方向/尺度,以提高描述符的质量。之后,交叉增强利用其他特征的描述符和所有特征的空间布局来进一步增强各个描述符,使用轻量级Transformer实现。所提出的网络通过使用包含基于排名的检索损失和增强损失的损失函数进行端到端训练。

3.1. 自我增强
对于在图像中检测到的每个关键点i,我们可以获得其视觉描述符di,这是一个D维的实值或二进制向量。特征描述符然后用于通过测量它们的相似性建立图像之间的对应关系。强大的描述符应该对视点和光照变化具有鲁棒性,以产生正确的匹配结果。已经开发了许多描述符,包括手工制作的方法(如ORB [36]、SURF [4]和SIFT [25])以及更先进的基于学习的方法(如SuperPoint [11])。然而,这些描述符仍然存在一些问题。

对于手工制作的描述符,第一个问题是描述符空间中的相似度度量对于特征匹配来说不是最优的。这在[2]中已经注意到,在那里使用Hellinger距离来衡量SIFT的相似性,而不是使用欧氏距离,可以获得更好的匹配性能。从[34]可以看出,改变相似度度量等价于将原始描述符投影到另一个空间中。这激励我们使用MLP(多层感知器)将原始描述符映射到新的描述符中。

MLP是一个通用的函数逼近器,正如Cybenko的定理所示[10]。因此,我们可以使用MLP来近似投影函数,我们称之为MLPdesc。关键点i的变换后的描述符 d t r i dtr_i dtri是提取的描述符 d i di di的非线性投影:
d t r i ← M L P d e s c ( d i ) ( 1 ) dtr_i ← MLPdesc(di) (1) dtriMLPdesc(di)(1)

鉴于网络的训练阶段受到欧几里得距离或汉明距离约束的损失函数的引导,这种基于MLP的模型使得变换后的描述符能够很好地适应在欧氏或汉明空间中衡量相似性的目的,特别适用于手工制作的描述符。然而,这种投影并没有利用有价值的关键点几何信息,这对于匹配非常有价值。因此,我们还使用另一个MLP(MLPgeo)将几何信息嵌入到高维向量中以进一步改进描述符。我们不仅编码关键点的2D位置(xi, yi),还包括其他信息,如尺度si、方向θi和检测分数ci(如果有的话)。将高维嵌入的几何信息添加到变换后的描述符中:
d t r i ← d t r i + M L P g e o ( p i ) ( 2 ) dtr_i ← dtr_i + MLPgeo(pi) (2) dtridtri+MLPgeo(pi)(2)
这里, p i = ( x i , y i , c i , θ i , s i ) pi = (xi, yi, ci, θi, si) pi=(xi,yi,ci,θi,si) 表示前面提到的所有可用几何信息。

3.2. 交叉增强
自我增强在不考虑不同关键点之间的可能相关性的情况下独立地增强每个关键点的描述符。例如,它不利用这些关键点之间的空间关系,而空间上的上下文线索可以极大地提高匹配能力,如[38]所示。因此,自我增强阶段产生的增强描述符仅限于局部上下文,并且在某些具有挑战性的环境下(例如重复模式或纹理较弱的场景)仍然表现不佳。为了解决这个问题,我们通过交叉增强阶段进一步处理这些描述符。

受到SuperGlue [38]的启发,我们使用Transformer来捕捉从同一图像中提取的稀疏局部特征的空间上下文线索。我们将Transformer表示为Trans,并描述投影为:
( d t r 1 , d t r 2 , . . . d t r N ) ← T r a n s ( d t r 1 , d t r 2 , . . . d t r N ) ( 3 ) (dtr_1, dtr_2, . . . dtr_N) ← Trans(dtr_1, dtr_2, . . . dtr_N) (3) (dtr1,dtr2,...dtrN)Trans(dtr1,dtr2,...dtrN)(3)
其中Transformer的输入是同一图像中的N个局部特征,输出是增强的特征描述符。与基于MLP的投影(参见式(1))**相比,基于Transformer的投影同时处理了同一图像中的所有局部特征。借助Transformer中的注意机制,所有局部特征的信息可以汇聚起来形成全局上下文。通过整合这个全局上下文信息,局部特征描述符可能具有更大的感受野,并根据它们的邻居(或在特征匹配情况下的竞争者)进行调整。因此,它们的可区分性可以得到改善,特别是对于从重复模式中提取的局部特征,**如图1所示。(实现机制机理)

使用Transformer的最大问题是其注意机制需要高内存和计算成本。(具体的数值取决于模型的大小和输入序列的长度。较大的模型和较长的输入序列会导致更高的内存和计算需求。例如,一个大型的Transformer模型可能需要数十GB的内存和数千亿次的浮点运算来完成一次前向传播。这使得在资源受限的环境中使用Transformer变得困难。为了解决这个问题,研究人员提出了一些优化方法,如稀疏注意机制和压缩技术,以减少注意机制的内存和计算成本。)Transformer编码器层由两个子层组成:一个注意层和一个位置级全连接前馈网络。经典的Transformer [51]使用多头注意力(MHA)层。给定输入 X ∈ R N × D X ∈ R N×D XRN×D,其中第i行是关键点i的D维特征向量,X的第h个头注意力定义为:
f h ( X ) = s o f t m a x ( Q h K h / D k ) V h , s . t . Q h = X W Q h , K h = X W K h , V h = X W V h ( 4 ) fh(X) = softmax (Q_hK_h/Dk)V_h, s.t. Q_h = X{W^Q}_h, K_h = X{W^K}_h, V_h = X{W^V}_h (4) fh(X)=softmax(QhKh/Dk)Vhs.t.Qh=XWQhKh=XWKhVh=XWVh(4)
其中 W Q h ∈ R D × D k , W K h ∈ R D × D k , W V h ∈ R D × D v {W^Q}_h ∈ R^{D×D_k},{W^K}_h ∈ R^{D×Dk},{W^V}_h ∈ R^{D×Dv} WQhRD×DkWKhRD×DkWVhRD×Dv
是第h个头的线性投影。

在这里插入图片描述图3。注意层的不同架构。(a)vanilla Transformer中的注意力层。(b)无注意力变压器(AFT-simple),其中只需要按元素进行乘法。

图3(a)说明了点积注意力的计算图。多头注意力的输出是沿通道维度连接的所有注意力头输出的串联。

MHA使用注意矩阵实现查询和值之间的全局交互。注意矩阵的计算依赖于查询和键之间的矩阵点积,导致随着上下文规模的增加而引入的时间和空间复杂度为O(N)然而,对于大规模的特征集合,例如从图像中提取的上千个关键点,使用传统的Transformer来进行注意力计算会变得非常昂贵。为了解决这个问题,我们采用了轻量级的方法,称为LinFormer [33]。LinFormer是一种基于线性变换的轻型Transformer,它通过降低维度和引入局部感受野限制来减少计算和内存需求。具体来说,LinFormer首先将输入特征向量投影到低维空间,然后在局部感受野内计算注意力。最后,通过反向映射将低维特征映射回原始空间。这种简化的方法在保持性能的同时大幅减少了计算和存储开销。

注意力自由变换:为了解决我们的情况下的可扩展性问题,我们提出使用高效的注意力自由变换(具体为AFT-Simple)[53]来替代Vanilla Transformer中的MHA操作。与MHA或最近的线性化注意力[19]不同,注意力自由变换(AFT)不使用或近似点积注意力。具体来说,AFT重新排列了Q、K和V的计算顺序,就像线性注意力那样,但是将K和V进行逐元素乘法,而不是使用矩阵乘法。关键点i的注意力自由变换可以表述为:
在这里插入图片描述

其中σ(·)是Sigmoid函数;Qi表示Q的第i行;Kj,Vj表示K、V的第j行。AFT-Simple执行了MHA操作的修订版本,其中注意力头的数量等于模型的特征维度D,并且MHA中使用的相似性被一个核函数sim(Q, K) = σ(Q) · softmax(K)所取代。通过元素级乘法而不是矩阵乘法计算注意力,从而导致时间和空间复杂度与上下文和特征大小呈线性关系(O(ND))。图3(b)展示了AFT-Simple的计算图。

3.3. 损失函数
与之前的工作[18, 35]一样,我们将描述符匹配问题视为最近邻检索,并使用平均准确率(Average Precision,AP)来训练描述符。
考虑到转换后的局部特征描述符 dtr = (dtr1, …, dtrN),我们希望最大化所有描述符的AP[6],我们的训练目标是最小化以下成本函数:
L A P = 1 − 1 / N ∗ Σ N i A P ( d t r i ) ( 6 ) LAP = 1 - 1/N * ΣN i AP(dtri) (6) LAP=11/NΣNiAP(dtri)(6)
为了确保原始描述符被增强,我们提出使用另一个损失来强制转换后的描述符的性能优于原始描述符:
L B O O S T = 1 / N ∗ Σ N i m a x ( 0 , A P ( d i ) / A P ( d t r i ) − 1 ) ( 7 ) LBOOST = 1/N * ΣN i max(0, AP(di)/AP(dtri) - 1) (7) LBOOST=1/NΣNimax(0,AP(di)/AP(dtri)1)(7)
最终损失是上述两个损失的总和:
L = L A P + λ L B O O S T ( 8 ) L = LAP + λLBOOST (8) L=LAP+λLBOOST(8)
其中λ是用于调节第二项的权重。我们使用可微分方法(FastAP [9])来计算每个描述符的平均准确率(AP)。
给定第一幅图像中的转换后描述符 d t r i ∈ R 1 × D dtri ∈ R1×D dtriR1×D,以及第二幅图像中的描述符集合 d 0 t r ∈ R N × D d0tr ∈ RN×D d0trRN×D。通过使用关于匹配对的真实标签 M = M + , M − M = {M+,M-} M=M+M 和值域为 Ω 的成对距离向量 Z ∈ RN 来计算 FastAP。通过使用距离量化,Ω可以作为一个具有 b 个元素的有限集进行量化, Ω = z 1 , z 2 , . . . , z b Ω = {z1,z2,...,zb} =z1z2...zb,然后精度和召回率可以重构为距离 z 的函数:
P r e c ( z ) = P ( M + ∣ Z < z ) ( 9 ) Prec(z) = P(M+|Z < z) (9) Prec(z)=P(M+Z<z)(9)
R e c ( z ) = P ( Z < z ∣ M + ) ( 10 ) Rec(z) = P(Z < z|M+) (10) Rec(z)=P(Z<zM+)(10)
其中 P ( M + ∣ Z < z ) P(M+|Z < z) P(M+Z<z) 表示在 Z < z 条件下正匹配 M+ 的先验分布, P ( Z < z ∣ M + ) P(Z < z|M+) P(Z<zM+) 是 Z 的累积分布函数(CDF)。最后,AP 可以通过精度-召回率曲线 P R z ( d t r i ) = ( P r e c ( z ) , R e c ( z ) ) , z ∈ Ω PRz(dtri) = {(Prec(z),Rec(z)),z ∈ Ω} PRz(dtri)=(Prec(z)Rec(z))z的面积来近似表示:
F a s t A P = ∫ Ω P r e c ( z ) d R e c ( z ) d z ( 11 ) FastAP = ∫ Ω Prec(z)dRec(z) dz (11) FastAP=Prec(z)dRec(z)dz(11)
关于 FastAP 的更多详细信息可参考 [9]。关于匹配 M 的真实标签可以使用真实姿态和深度图获取。请注意,对于实值描述符和二进制描述符,计算距离向量 Z 的方法是不同的。

3.4. 不同类型的描述符
我们可以通过使用不同的方法计算距离向量 Z,训练我们的模型将描述符提升为二进制和实值形式。

实值描述符:我们对FeatureBooster的最后一层的输出向量应用L2归一化,可以计算出成对距离向量 Z:
Z = 2 − 2 d t r i ( d 0 t r ) ( 12 ) Z = 2 - 2dtr_i(d0tr) (12) Z=22dtri(d0tr)(12)
在这种情况下,Z的取值范围是[0, 4],我们将Ω量化为包含10个元素的有限集。

二进制描述符:我们首先使用tanh将FeatureBooster的最后一层的输出向量阈值化到[-1, 1]。然后,将输出向量二值化为{-1, 1}。然而,二值化没有定义真正的梯度。我们的解决方案是使用直通估计器(straight-through estimator)[5]将梯度从二值化向量复制到未二值化的向量。最后,成对距离向量 Z 可以得到如下计算:
Z = 1 / 2 ∗ ( D − d t r i ( d 0 t r ) > ) ( 13 ) Z = 1/2 * (D - dtr_i(d0tr)>) (13) Z=1/2(Ddtri(d0tr)>)(13)
对于汉明距离,Z的取值是{0, 1, …, D}中的整数,AP可以通过在FastAP中将 b = D 计算得到闭合形式。然而,我们将 b 设置为 10,以在匹配描述符和非匹配描述符之间得到更大的间隔,参考[9]中的讨论。

  1. 实验结果
    我们在几个常用的关键点检测和描述任务上评估了我们的特征增强器。结果显示,与基线方法相比,我们的方法在关键点匹配、图像定位和三维重建等任务中获得了显著的改进。
    在这里插入图片描述图4。HPatches中的MMA曲线(越高越好)和平均匹配点数(越大越好)。结果展示我们的功能增强器可以提高所有功能的性能。Boost-F和Boost-B表示实数增强和分别是二进制提升的描述符。

具体来说,在关键点匹配任务中,我们的方法在不同的基准数据集上均实现了更高的正确匹配率。在图像定位任务中,我们的方法能够更准确地估计图像之间的转换,从而提高定位的准确性。在三维重建任务中,我们的方法生成的特征描述符在建立3D地图时能够提供更好的特征匹配和几何一致性。

此外,我们还进行了与其他先进方法的对比实验,结果表明我们的特征增强器在各项任务中都取得了最先进的性能。

自我增强阶段通过使用多层感知机(MLP)对每个关键点的几何属性进行编码,并将其与另一个MLP投影的新描述符相结合。这样可以将高维嵌入的几何信息添加到转换后的描述符中。

交叉增强阶段使用一个轻量级的Transformer来捕捉来自同一图像中提取的稀疏局部特征的空间上下文线索。Transformer的输入是同一图像中的N个局部特征,输出是增强的特征描述符。通过Transformer的注意力机制,所有局部特征的信息可以聚合起来形成全局上下文。通过整合这种全局上下文信息,局部特征描述符可以具有更大的感受野,并根据其邻居(或在特征匹配中的竞争对手)进行调整。因此,它们的可区分性可以得到改善,特别是对于从重复模式中提取的局部特征。

总结起来,自我增强阶段通过MLP编码几何属性来增强描述符,而交叉增强阶段通过Transformer捕捉空间上下文线索来进一步增强描述符。这种方法可以应用于各种类型的描述符,并在图像匹配、视觉定位和结构运动等任务中显著提高性能。
在这里插入图片描述
在这里插入图片描述

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

  1. 结论
    在本文中,我们提出了一种轻量级网络,用于增强从图像中提取的关键点的特征描述符。我们的方法通过自我增强和交叉增强两个步骤来提高描述符的质量,并使用端到端的训练来优化网络参数。实验结果显示,我们的方法在关键点匹配、图像定位和三维重建等任务中都获得了显著的改进。未来的研究方向包括进一步改进网络架构和优化算法,以提高性能和效率,并在更广泛的应用领域进行验证。
    在这里插入图片描述
    在这里插入图片描述

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

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

相关文章

搭建Repo服务器

1 安装repo 参考&#xff1a;清华大学开源软件镜像站:Git Repo 镜像使用帮助 2 创建manifest仓库 2.1 创建仓库 git init --bare manifest.git2.2 创建default.xml文件 default.xml文件内容&#xff1a; <?xml version"1.0" encoding"UTF-8" ?…

java之junit Test

JUnit测试简介 1.什么是单元测试 单元测试是针对最小的功能单元编写测试代码Java程序最小的功能单元是方法单元测试就是针对单个Java方法的测试 2.测试驱动开发 3.单元测试的好处 确保单个方法运行正常如果修改了方法代码&#xff0c;只需确保其对应的单元测试通过测试代码…

QtCreator5.15.2新建工程没有pro文件

Qt系列文章目录 文章目录 Qt系列文章目录前言一、解决办法参考 前言 最近新安装了Qt5.15.2版本&#xff0c;使用她创建新工程发现居然没有pro工程文件&#xff0c;取而代之的是CMakeLists.txt&#xff0c;文件里面的代码几乎看不懂&#xff0c;不知道如何在CMakeLists.txt加入…

CentOS虚拟机 NAT模式连网

1、查看本地VMnet8的网络信息 cmd ipconfig2、编辑VMware虚拟网络编辑器 &#xff08;1&#xff09;打开网络编辑器 &#xff08;2&#xff09;打开NET设置 &#xff08;3&#xff09;修改网络配置 修改子网ip和windows查到的ip的最后一位不一样就行和子网掩码照抄 3、在VMw…

P1993 小 K 的农场(差分约束)(内附封面)

小 K 的农场 题目描述 小 K 在 MC 里面建立很多很多的农场&#xff0c;总共 n n n 个&#xff0c;以至于他自己都忘记了每个农场中种植作物的具体数量了&#xff0c;他只记得一些含糊的信息&#xff08;共 m m m 个&#xff09;&#xff0c;以下列三种形式描述&#xff1a;…

SRV6 BE

实验目的:通过SRV6 BE实现CE之间的ipv4网络互访 步骤1&#xff1a;配置ISP网络设备的ipv6地址 步骤2&#xff1a;配置ISP网络的IGP协议&#xff08;ISIS ipv6&#xff09;设备配置前先在每台设备上面 undo dcn PE1: isis 1cost-style widenetwork-entity 49.0001.0000.0000…

Substack 如何在去中心化内容创作领域掀起波澜

面对数字内容广告化的困境&#xff0c;Substack回归做内容的初心&#xff0c;通过产品和平台双轮驱动&#xff0c;重塑一个去中心化的多元文化内容聚集地&#xff0c;实现了增长突破。其核心策略在于先使用简洁的创作工具赋能内容生产&#xff0c;进而通过平台的互动机制促进用…

【Python基础教程】super()函数的正确使用方法

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 1.super(本身类名,self).方法名(参数)这样就可以调用父类的方法和参数了,super()内也可不加参数 2.规律是super是按调用的次序执行&#xff0c;super后面的语句是逆向执行的。 有2段示例代码&#xff0c;不同的在于value有没…

高忆管理:股票成交量怎么看?

股票成交量是衡量股票商场生意活泼度的重要目标之一。通过调查股票成交量的巨细和改变趋势&#xff0c;能够帮助出资者更好地了解商场状况和出资方向&#xff0c;从而做出更正确的出资决策。那么&#xff0c;股票成交量怎么看&#xff1f;本文将从多个视点为您剖析。 一、股票成…

ZyjDataLink 全量MySQL同步程序 - 开发过程 01

开发过程由本人从 架构设计 到 代码实现 独立完成&#xff0c;通过该博客记录分享开发经验 ZyjDataLink 当前的目标是做到 MySQL大数据量的快速同步&#xff0c;后期希望扩展的功能 高度可操作性&#xff0c;融入增量数据库同步&#xff0c;跨数据库同步 ZyjDataLink 需求分析…

python数据分析报告 范文,python数据分析报告+代码

大家好&#xff0c;本文将围绕python数据分析期末大作业报告展开说明&#xff0c;python数据分析期末大作业是一个很多人都想弄明白的事情&#xff0c;想搞清楚python数据分析报告怎么写需要先了解以下几个事情。 背景 虽然用Python开发爬虫脚本&#xff0c;顺利把某房产网站的…

小学生作业随机加减乘除运算计算习题答案 html源码

小学生作业随机加减乘除运算计算习题答案 html源码 这道题目提供了多种选项,包括运算符和输入的运算数范围。题目数量也可以选择。如果你选择好了选项,就可以点击出题按钮进行练习。 为了方便,题目答案可以打印出来。但是,如果隐藏了横线,就会去除等号后面的下划线。推荐使用…

Java中实现图片和Base64的互相转化

文章目录 前言一、代码二、测试三、结果 前言 公司项目中用到了实名认证此&#xff0c;采用的第三方平台。后端中用到的单项功能为身份证信息人像对比功能&#xff0c;在写demo的过程中发现&#xff0c;它们所要求的图片信息为base64编码格式。 一、代码 package com.bajiao…

QGIS二次开发二:不重新编译QGIS进行二次开发

目录 一、下载OSGeo4W 二、配置VS 三、测试代码 四、补充&#xff1a;配置QT插件 五、导出项目为模板 六、Release模式的一个问题解决 由于重新编译QGIS对于初学者来说还是有一定难度&#xff0c;因此这里介绍另外一种不编译QGIS也能够二次开发的方法&#xff0c;不需要…

世界算力简史(上)

1946年2月14日&#xff0c;在美国宾夕法尼亚州东南部的费城&#xff0c;人们正在像以往一样正常工作和生活。 忽然&#xff0c;他们发现&#xff0c;房间里的灯暗了下来。 刚刚经历过二战的人们&#xff0c;对这种情况习以为常。他们心想&#xff1a;“是不是哪里的电力线路又坏…

骑行,自由和安全,哪个第一?

自行车运动&#xff0c;绿色自由&#xff0c;但安全为本。 自由&#xff0c;对于自行车运动来说&#xff0c;是骑行的初衷和核心。它不仅代表着一种无拘无束的出行方式&#xff0c;更是一种生活态度&#xff0c;一种挑战自我&#xff0c;追求极致的精神。就像鱼儿需要海洋&…

Spring Bean 生命周期的执行流程

问题描述 Spring 生命周期全过程大致分为五个阶段&#xff1a; 1、创建前准备阶段 2、创建实例阶段 3、依赖注入阶段 4、 容器缓存阶段 5、销毁实例阶段 下图是 Spring Bean 生命周期完整流程图&#xff0c;其中对每个阶段的具体操作做了详细介绍&#xff1a; 一、创建前准备阶…

数字员工助力农行安全生产数字化转型应用实践

党的二十大指出&#xff0c;“以数字中国建设助力中国式现代化&#xff0c;加快建设网络强国、数字中国”&#xff0c;2022年1月发布《“十四五”数字经济发展规划》提出&#xff0c;加强类人智能、自然交互与虚拟现实等技术研究。近年来&#xff0c;各大银行纷纷推出自己的数字…

报错 | Spring报错详解

Spring报错详解 一、前言二、报错提示三、分层解读1.最下面一层Caused by2.上一层Caused by3.最上层Caused by 四、总结五、解决方案 一、前言 本文主要是记录在初次学习Spring时遇到报错后的解读以及解决方案 二、报错提示 三、分层解读 遇到报错的时候&#xff0c;我们需要…

一起来看看 Compose Accompanist

好久不见&#xff0c;真的挺久了&#xff0c;之前一个月写的文章比现在多半年的都多。今年第一篇文章是简单写了下 Android 14 的适配&#xff1a;Android 14 又来了&#xff1f;别扶&#xff01;抬起我来吧&#xff01; 今天咱们来一起看看 Compose Accompanist 吧&#xff0…