论文阅读-D2网络:一个可训练的CNN用于局部特征的联合描述和检测。

作为近两年来检测器和描述器联合学习(也称为一阶段)论文的另一个代表,D2网是一个相当特殊的结构。其特点是“一图两用”,即网络预测的稠密张量既是检测得分图,又是描述图特征图,既代表特征检测结果,又代表特征描述结果(注意预测的特征图不是原图的分辨率)。换句话说,D2网的特征检测模块和描述模块是高度耦合的。

本文主要针对外观变化较大(包括昼夜变化、大视角变化等)的场景中的图像匹配任务。).作者比较了两种局部特征学习方法:稀疏法和稠密法。稀疏法效率高,但在外观变化较大的场景中无法提取可重复的关键点,因为特征提取器只使用浅层图像信息,不使用语义信息;Dense方法直接利用深度特征提取密集特征描述,更健壮,代价是更高的匹配时间和内存开销。

因此,作者的目的是提出一种足够鲁棒的稀疏局部特征,使提取的特征(兴趣点)更具可重复性,从而同时实现稀疏方法的高效性和稠密方法的鲁棒性。其核心思想是推迟特征提取阶段,使局部特征也能利用高层语义信息,而不是只考虑低层信息。

问题:关于这里的稀疏和密集方法。

关键词:单一CNN扮演双重角色;联合优化;不同的训练/测试模型结构

与SuperPoint或SEKD不同的是,本文虽然也是密集预测型结构,但并不同时预测kpt和description,而只是预测一个形状为HxWxd(d为特征描述的长度)的特征图,然后同时做出描述结果和检测结果……从空间维度来看,特征图的每个像素位置都是一个描述子;从通道维度看,每个通道代表一个特征检测器的检测结果,总共得到D个2D响应图,可以和SIFT中的高斯差分金字塔响应进行比较。

后续的兴趣点提取需要对这个D通道的特征图做进一步的后期处理:

根据上述D2特征图的定义,如果(I,j)位置是感兴趣点,则该像素位置的最终检测结果必须从通道维中取探测器响应值最大的通道对应值,从而选择通道;就空间维度而言,该通道中该位置的2D图必须是局部最大值。这就是本文中的“硬特征检测”:

首先为输入图像构建一个图像金字塔,然后在每个尺度上向前移动得到D2特征图。然后对多尺度特征图进行尺度上采样,并以相同的分辨率进行融合(见下式),得到融合后的特征图。在预测阶段,可以根据融合后的特征图,通过上述后处理提取特征点。

由于上述特点,网络结构本身非常简单。ImageNet上的训练前权重直接用VGG16 conv4_3之前的部分恢复,然后除了最后一个conv4_3层,其他都冻结,只对这一层进行微调。但是关于模型,有两个值得注意的地方:

1.使用VGG16的结果比ReseNet好很多。

2.训练和测试期间的模型结构是不同的。

具体来说,在测试阶段,为了提高特征的分辨率,将pool3改为跨距为1的avg pool,后续的三层conv扩张比调整为2,以保持相同的感受野。作者的解释是,为了降低训练时内存中使用的小特征分辨率,提高测试时的特征定位能力,将分辨率提高到原始图像的1/4,并增加了一个类似于SIFT中使用的局部特征提取,然后将特征插值上采样到原始分辨率。

然而,上述硬特征检测不能用于训练过程,因为它是不可微的。因此,作者提出了一个版本的soft,其设计思想是模仿硬方法中的通道选择和空间位置选择(即通道中的局部最大值):

对于空间位置选择,作者将为特征图的每个像素找到一个α(i,j),并得到一个α图(形状为[h,w,d]):

其中N(i,j)表示以(I,j)为中心的9-邻域。所以可以看出,这里的局部最大值实际上是3x3区域的最大值,而不是如公式(3)所写的那样,整个通道只输出一个最大值。

对于通道选择,直接计算一个ratio-to-max得到一个β图(形状为[h,w,d]):

根据kpt的定义,评分图s应该是α图和β图的乘积图在渠道维度上最大化的结果。最后做一个归一化:(问题:这个归一化是什么意思,评分图的像素值之和是1?评分图不要用sigmoid等等。换算成0-1之间的分布是否合理?)

这部分还有一个问题要考虑。为什么D2网需要在训练中提取兴趣点?(比如R2D2等结构直接针对kpt评分图进行优化,实际预测只需要根据评分图提取特征点的步骤。)

答:这个问题的理解是不正确的。在训练中,我们不是提取兴趣点,而是得到“单场得分图”。上述硬特征检测相当于NMS的过程,输出的是兴趣点的稀疏位置坐标;而训练检测模块需要hxw的评分图,所以hxwxd的特征图要经过一个可微分的步骤处理才能得到评分图。

①三联边际排名损失(仅考虑描述符)

实际上训练描述符并没有太多的区别,就是根据输入对的对应关系,把每个匹配对C看成正对,错配对看成负对,训练三元组。主要问题是如何根据当前匹配对构造C的最有意义的负对。在这里,作者使用了基于邻域的困难样本挖掘策略。如果当前匹配的是下图中的A点和B点,那么在I1和I2扣除A\B的邻域的区域中寻找负对,分别与B的描述子dB和A的dA进行比较,在所有这些负对中寻找相似度最小的,与c构成三元组。

下面的p(c)和n(c)分别代表正距离和负距离。M(c)表示当前与c匹配的三重态损耗。

②添加描述次优化的三重边际排序损失。

由于D2特征表示感兴趣的分数图和描述符,所以本文中的优化需要检测和描述的联合优化。在三重差序损失的基础上,增加了提高检测结果重复性的优化目标。具体实现方法是:利用输入两幅图像中所有对应关系的检测分数,对当前匹配计算出的三重损失进行加权平均,如果当前匹配的三重损失很低(即该对的匹配距离远小于其各自最困难的负对),为了使损失最小化,三重损失小(即区分度高)的对应关系对自然会赋予更大的权重;其他三重损失大的对应给出较小的权重。

感觉这篇论文中公式(13)的符号有点混乱。m(p(c),n(c))直接写,m(c)可能更简洁。