提出的想法:
1.可重复的区域不一定都是有辨别力的。
2.描述符应仅在可以以高置信度执行匹配的区域中学习。
3.传统方法检测不能够避免模糊区域,而经过将特征点和描述子放在一起学习,这样可以允许将模糊区域的值降低,只提取置信度高的部分。通过联合学习,模型可以在训练过程中通过局部描述符判别预测器来估计描述符在不同区域的置信度,从而使得模型更倾向于选择在匹配时具有高置信度的区域进行关键点检测和描述子提取。
什么是度量学习?
在训练过程中,通常会利用正样本对和负样本对来调整模型参数,以使得正样本之间的距离尽可能小,而负样本之间的距离尽可能大。这有助于特征点匹配算法更好地区分不同实体之间的特征点,从而提高匹配的准确性和鲁棒性。在特征点提取与匹配当中,就是,通过学习调整参数,使得学习出来的描述子,两张图中对应特征点他们的描述子之间相似度大,而不同特征点对应的描述子之间的相似度小。
但是使用深度网络学习提取特征点不能只关注可重复性,因为如果一张图像上有很多相似性的区域,它对应的图片上也有很多相似性区域,那可能就会出现匹配错误,比如棋盘格。所以还需要学习描述符的稳健性。
所以感觉特征点提取和描述符的计算是不可分割的,应该是一个联合学习的过程。
所以作者提出了一个方案,估计了每个关键点的两个方面的置信度图,并仅选择既可重复又可靠的关键点。更具体地说,我们的网络输出密集的局部描述符(每个像素一个),以及两个关联的可重复性和可靠性置信度图。这两个图分别旨在预测一个关键点是否可重复,以及其描述符是否具有辨别性,即是否可以高置信度地进行准确匹配。最终选择可重复性值高的点同时也是描述符置信度高的点。(在输出的这两张图中)。
局部描述符,作者引入了一种新的损失,用于学习可靠的局部描述符,同时专门针对对匹配有意义的图像区域。它是通过基于可微的平均精度(AP)度量的列表排序损失进行训练的,从而利用了度量学习的最新进展。我们共同学习描述符可靠性的估计器,以预测哪些补丁可以以高AP进行匹配(这个区域就是自定义一个以特征点为中心的区域)
介绍一下三元组损失
三元组损失是用于训练具有描述符的神经网络的一种常见损失函数。在三元组损失中,每个训练样本由三个示例组成:锚点(anchor)、正例(positive)和负例(negative)。这三个示例分别代表着同一类别内的一对匹配实例和一个不匹配实例。
通过训练神经网络以最小化三元组损失,可以使得网络学习到良好的描述符,从而在匹配任务中取得更好的性能。
网络结构图
其中reliability是可靠性图(用R表示),用来说明那个位置的描述符的可靠程度,repeatability是表示可重复性图(用S表示),表示这个该位置特征点能否在不同条件下被稳定的检测到。
下采样过程中,卷积使用的是空洞卷积,这样可以保持所有阶段的输出分辨率,然后最后那个8*8的卷积层被三个2*2的卷积层替代,这样可以减少参数的数量。
可靠性
下面引入一个U形状是H*W*2,它包含的是图片1和图片2之间像素点真实对应情况,就是如果第一张图片中的像素(i,j)对应第二张图片像素(a,b),那么Uij=(a,b)。U可以由光流或者立体匹配来获得,如果是已知的单应变换那会获得更精确的U矩阵。
我们根据U矩阵把第二张图片的可重复性图S'变换到S'U,就是比如原本S'i,j位置的值变换到Uij,意思就是把第二张图中的可靠性值和第一张图对齐。就如同上面的那个例子,S'在(a,b)位置的值就变换到S’(i,j)位置了。
这个可靠性图我们想让他完成这样一件事,就是S中所有的局部最大值都对应于S'U中的局部最大值,这样可以说明这个点在不同视角下都可以被检测出来很高的可靠性,即它们在不同图像之间具有良好的一致性和稳定性。
这件事可以使用最大化余弦相似度来做,但是如果从整张图像上来说,那么可能会有很多遮挡或者变形伪影什么的,所以将这个想法制定为许多小补丁的平均余弦相似度,把整张图象分成很多N*N的小区块,定义损失函数为:
其中大P是分成的总块数
其中余弦相似度的计算公式是
如果这两个区块相似度完全相同,那么余弦相似度为1,反之越不像则越小。
但是为了防止这些区块的值都差不多,不会出现峰值,那样就没有可重复性高的点了,所以再引入第二个损失函数。
这样就可以使得每个局部补丁的最大值与其平均值之间的差异尽可能大,从而增强了可重复性图的局部峰值性。这样做有助于确保在每个关键区域附近有清晰的局部最大值,而不是像前面提到的情况一样,整张图像上有很多模糊的最大值。
所以最终的可重复性图损失函数就被定义为
可靠性图
除了重复性图外,网络还计算了密集的局部描述符以及一个热图R(可靠性图),用于描述每个描述符Xij的可靠性Rij,这个目标是让网络学会区分具有区分度的特征点,同时在对那些在描述上不具有区分度的区域上减少其努力。在天空等信息不明显的区域,描述符的可靠性得分会降低,因为那里的描述符不太可能对匹配产生积极的影响。然后最后和可重复性图S结合,筛选出两个图上值都很大的点。这些点既具有高重复性,也具有可靠的描述符。
1.将一个点和它在另一幅图中对应点周边3个像素内的点记为正样本,其他记为负样本。对正负样本采样(样本是指一对点是否为对应点),获得gt(1表示这对点为对应点,0表示这对点不是对应点)
2.通过一对样本点的2个descriptor,计算得到一个分数。
3.设置不同的分数阈值,计算正样本的pre和recall,然后计算这些样本点的ap
Ri,j是我们预测得到的点(i,j)的可靠性,如果该点越可靠,Ri,j越大,点的AP越重要,表明该点对损失的作用越大。如果该点不重要,我们希望Ri,j比较小,这点的AP就不重要
k是一个超参数设置为0.5