[论 文笔记]D2-Net: A Trainable CNN for Joint Description and Detection of Local Features
关键点的检测关键是保证在光照和视点变化下的可重复性,描述子只要是可区分度,主要是用来做匹配的。
思路
这篇文章借用了传统的特征点检测的思路。
之前的大多数网络,比如lift,都是先进行关键点的检测,然后确定了关键点的位置以后再进一步生成描述子,也就是detect-then-describe。而在Superpoint和GCNv2中,是将检测和描述分成了两个分支,Superpoint是用一个mask来标注匹配和未匹配的描述子,而GCNv2中,是直接构建三元组损失,就是需要根据特征点的位置挑出其对应的描述子(总感觉这样不太合理,训练的时候就只训练了关键点的描述子,并没有训练其他的描述子,这里可以改进)。
而这篇文章,也是认为检测和描述应该同时进行,并且不像之前采用两个网络分支,这里只用了一个网络。
具体讲,就是对一个图像通过网络以后生成HWC的特征图,那么1×1×C的特征会对应原图一个区域,也就是说这个特征是原图中的局部描述。我们可以将该特征图看作类似于SIFT等传统检测器中的DoG,也就是图像的梯度差分层。然后按照传统检测器的流程去提取特征点,此时该1×1×C的特征就是该点的描述子,然后构建loss进行训练。
新的数据集
MegaDepth 数据集,由 COLMAP给出的1070468张图片,而且图像的内外参和深度图均有。
效果
鲁棒性增强,但是精度下降,按照作者所说,这个精度是够视觉定位和SFM的。
复现
Our implementation will be available at https://github.com/mihaidusmanu/d2-net.
同时进行检测和描述
检测关键点的方法
各种不变性
光照和视点:图像增强技术
尺度:类似图像金字塔操作,同时输入多个(3个,0.5,1,2)尺度的图像,联合生成特征图并构建loss进行训练。
训练
论文的4.2和4.3
训练数据的处理
首先,图像对之间要有至少50%的重叠区域。
其次,将第二幅图像中的点重投影到第一幅图像中,对第一幅图像的深度图进行深度检查以去除遮挡的像素。
最终,获得327036个图像对。
验证集:18149对—来自78个场景,每个至少500对图像
训练集:剩下的118个场景的图像
网络结构
基础还是VGG16,并且在ImageNet上进行了预训练,从CONV4_3之后进行截断。