提出一种基于深度学习的特征描述方法能够替代引FT,并且能够很好的应对尺度变化、图像旋转乁透射变换、非刚性变形、光照变化等。使用孪生网络从图块中提取特征信息,并且使用L2距离来描述特征之间的差异。
这里距离越大相似度越低,距离越小相似度越高
只拿出CNN部分则是特征提取
在两个patch是相等的情况下,用两个patch特征的距离来作为Loss函数,我们希望距离越来越小
在两个patch不相等的情况下,多了,MAX和阈值C,如果两个patch特征的距离>c,LOSS=0,如果两个patch特征的距离
这种方法进行训练,可以训练出一个特征提取的CNN网络
A: Feature network 是双塔结构中的单塔,其中的Bottleneck与Preprocessing层比较重要,是为了防止过拟合加的两个层.
B:Metric network 相当于把特征进行比较,Fully Connected Layer +Softmax层判断两个图像特征之间的距离
输出把两个塔的输出放到一块,在输出到Metric network
用了三种方法,集合了detector,orientation,descriptor
detector:把图像切割成不同的patch
orientation:对patch做一个旋转
descriptor:做一个描述
这三个方法是三个不同的文章
训练的时候要先输入4个patch,4个patch要不一样,P1和P2是来自同一个3D点不同视角的图像,相当于P1与P2是匹配的,P3是在不同的3D点回来的一个图像投影,相当于P3,P2,P1是不匹配的,P4是一个不包含任何特征点的特征,是为了防止过拟合去用的
输入的流程就是先进入detector然后对图像进行一个裁剪,紧接着用orientation对图像进行一个旋转,再用descriptor输出图像最终的描述符
descriptor的损失函数和之前的损失函数几乎是一样的
orientation训练了一个角度
detector网络训练一个有特征的中心点
最后会输出一个feature map
最后会输出两个点的特征描述符,去做一个距离的比较,如果距离大于一个阈值说明像素比较低
最后会把输入的x,y的点,映射到feature map里面去,输出描述符,然后去做一个比较
重点在于训练方法
数据集有标注角点的位置,并且有噪声
heatmap中分数比较高的点就是角点,分数比较低的点就不是角点
原始图片进行随即变形,再放进刚才的base-detect 提取角点,然后把所有的角点拼到一块生成新的角点,然后重新训练,自我标注技术
用superpoint提取真正的兴趣点,再对这些兴趣点做loss
decoder之后会生成这样的矩阵,包含Cell的信息,每一个像素的信息,代表这个坐标点是否能作为兴趣点的信息,值比较高就是能作为兴趣点,值比较低就是不能作为兴趣点,把寻找兴趣点的回归问题换为分类问题
上面是找兴趣点,下面是找描述子,对特征进行一个描述
既能提取特征点,又能提取描述子,并且对特征点进行打分
然后这里的比较还是和传统方法比较的
在superpoint的匹配方法做了一个改进,不再使用欧式距离方法,做匹配
这里的M和N 就是superpoint输出的feature map,P就是对应兴趣点的矩阵,之后会再输出一个矩阵,表示两个点是否是匹配的
输入部分会输入描述子和位置,会将位置信息encoder到描述子中去,我们的输出是x,
自注意力:单张图的注意力
交叉注意力:两张图一起看的注意力方法
类似于人类反复比较两张图
一开始自注意力是发散的,通过迭代,会发生收敛
去匹配我们输出的描述符,用的是内积的方法得到一个得分最终放到两个矩阵上
检测关键点的方法,最后的输出并不是提取出的特征而是关键点
主要贡献是用了一阶导数和二阶导数的融合
没有任何的网路结构, 相当于一个手工生成的特征,每一层下采样,用金字塔一样的结构,得到三个相同的feature map (蓝色),三个feature map 放到一块做一个normalization,得到score map,相当于key point
得分比较高的是关键点,得分比较低的是非关键点,得到这样的一个feature map
首先会输入两张图片,然后通过刚才的网络,输出分数。先进行分离,对于每一块要通过NMS得到一个得分最高的点,每一块得分最高的点应该是匹配上的
就是看两张图片某个点是比较匹配点,就定为关键点
共享权值,双网络训练,上面用ps数据集,下面AMOS数据集,交替训练,取最好的权值进行共享