【论文笔记】R2D2: Repeatable and Reliable Detector and Descriptor

摘要

之前想的是能否只在感兴趣的区域进行特征点的提取和描述,但是这篇论文认为,显著的区域不一定是易区分的,可能带来难以描述的情况。而且描述符应该只在高置信度的区域进行匹配,所以作者的网络,在输出description和具有可重复性的kp_map的同时,还输出了每个像素的可靠度(0~1)(为描述符准备的),结构如下:
【论文笔记】R2D2: Repeatable and Reliable Detector and Descriptor

网络结构

作者训练一个全卷积网络(FCN)来预测大小为hw的图像I的3个输出,包括D维稠密的描述子张量,具有可重复的,稀疏(提取局部极大值)的kp_map,相关的可靠性映射。

补:看下作者所说的可靠性和可重复性的区别,如下:
举例说明一个给定图像的可重复性(第二列)和可靠性(第三列)之间的关键区别。第一幅图像中可重复的区域只位于黑色三角形附近,然而,所有包含它的patch都是同样可靠的。相比之下,棋盘格图案中的所有方块都是显著的,因此是可重复的,但由于自相似性,没有一个方块是有区别的。这两个置信度图都是由我们的网络估计的。总之,可重复性是指要确保条件改变后能够再一次检测到,可靠性偏向于易于区分,即偏向于根据描述子匹配。
【论文笔记】R2D2: Repeatable and Reliable Detector and Descriptor

损失函数

将这两者引入到网络中分离得到并不困难,只是新增了一条分支,关键看下loss如何构建:

可重复度损失

两图之间构建可重复度——‘余弦损失’

这里用的是余弦相似度,两者相似,余弦相似度比较大

【论文笔记】R2D2: Repeatable and Reliable Detector and Descriptor

单张图局部峰值——‘峰值损失’

当S和S’都是常量的时候,上式也很小,为此引入第二个损失函数,该函数试图最大化可重复性映射的局部峰值
【论文笔记】R2D2: Repeatable and Reliable Detector and Descriptor

可重复度损失

整个重复度:两者加权:
【论文笔记】R2D2: Repeatable and Reliable Detector and Descriptor

可靠性损失

目标是让网络学会在使描述符尽可能具有高置信度的区别性和低置信度之间进行选择,在后一种情况下,损失对描述符的影响很低,例如对于不能具有足够区别性的区域。
最近的工作[19]表明,直接优化AP(平均精度)来匹配patch描述符可以显著提高性能,并且定义了AP的可微近似。
ps:在给定一个batch的图像块的真值对时,使用卷积神经网络来计算它们的描述符。然后,计算所有patch的描述符之间的欧氏距离矩阵。矩阵中的每一行都可以解释为从第一个图像到第二个图像的所有patch之间的距离,充当数据库文档。因此,训练就是对batch B上的每个查询patch q,最大化其AP,并在整个batch中取平均值。
【论文笔记】R2D2: Repeatable and Reliable Detector and Descriptor
在我们的例子中,每个像素(i;j)从第一幅图像中定义了一个大小为M的patch,我们可以将它与第二幅图像中的所有其他patch进行比较。知道了真值对应U,我们就可以计算出它的AP,它类似于之前的损失。
ps:事实上,可以在任何地方提取局部描述符,但并不是所有位置都一样有趣。特别是,统一区域或拉长的一维模式缺乏特征匹配[15]所必需的独特性。更有趣的是,即使是那些纹理很好的区域,从它们的语义性质来看也是不可靠的,比如树叶或者海浪。由此可见,即使在图像中无意义的区域,强行优化patch描述符也会影响训练和运行时性能。因此,提出了一个新的损失函数:
【论文笔记】R2D2: Repeatable and Reliable Detector and Descriptor
k是每个patch中期望的最小的AP。R是网络输出的可靠度,实际在0和1之间,理论应该是:Rij = 0 if AP (i; j) < κ ,Rij = 1AP (i; j) >= κ。作者在这里设置k=0.5
ps:最近在[33]中提出了一个类似的想法,即联合训练描述符和相关的置信度。然而,他们用三联体的损失,而从而防止可判断的阈值κ的使用。

效果

显示超过了Superpoint
【论文笔记】R2D2: Repeatable and Reliable Detector and Descriptor