赞
踩
图像的兴趣点(关键点、特征点)检测和描述往往是图像配准、相机标定、场景识别、目标跟踪的首要步骤,是计算机视觉研究的重要课题。检测子的目的是为了提取可匹配的兴趣点,而描述子可用于匹配或识别,为下游任务作准备。网上很多文章[1,2]都只介绍了传统的SIFT、SURF、ORB等方法,关于深度学习的方法缺少一篇系统的总结性文章,本文将填一下这个坑。
本文重点用自己的理解介绍LIFT[3]、DeLF[4]、SuperPoint[5]、D2Net[6]几篇文章的发展脉络和创新点分析。
本文创作不易,转载请标明出处 @CSDN 窗外的千纸鹤
在介绍具体工作之前,先捋一下此任务的一种pipeline。 一种经典的pipeline来源于SIFT,可以分为三个模块,1)兴趣点检测子(detector):目的是检测出可匹配的点,输出的是这些点的坐标 { x , y } \{x,y\} {x,y}, 如果考虑尺度不变性(可参考我的下一篇文章),还返回该点的尺度。然后会以检测子为中心,根据尺度的大小取周围的像素点生成一个patch送入后面两个模块。2) 主方向估计子(Orientation Estimator)(非必须):目的是找到该patch的主方向,从而使描述子具有旋转不变性。3)特征描述子(descriptor):目的是为下游任务(如匹配、识别)作准备。
纵观整个pipeline, 其中最重要的是detector和descriptor。 而descriptor很容易学,CNN+对比损失 即可。我比较感兴趣的是detector, 根据SIFT的指导思想,找出具有局部差异性的点,而且是尺度空间的极值点,即“在尺度空间和坐标空间同时搜索极值点”。然而,因为SIFT不存在训练的过程,它自然不需要人告诉它关键点在哪,即不需要标签。但是,深度学习不需要标签怎么能行?且看下面这些方法如何解决这个问题。
这是深度学习detector和descriptor的早期作品,我读完获得很多知识和灵感。废话不多说,先上这个模型的创新点
在detector阶段,有两个Patch概念需要厘清,第一个patch P是网络的输入,文章假设一个patch只有一个关键点。在patch中提取出关键点后,再其周围再生成一个小patch p, 由于后面两个模块,显然p 是 P 的子集。
为了获得关键点的位置,作者先用一个CNN生成score map, 然后用softmax建立权重,最后使用patch内部的坐标加权得到(如下面的公式所示)。
首先是关键点的标签:来自于SIFT+SfM产生,具体操作可以参考原论文
作者使用了两种损失函数监督,一种是结果导向型的目标函数,一种是分类的损失函数
这篇文章的架构与上篇文章有很大不同:首先,这个模型用于图像检索而不是图像配准;其次,这不是端到端的架构而是“显示(explicit)“地监督检测子和描述子; 然后,这篇文章没有方向估计子模块,而是让网络自己学习旋转不变性。所以DeLF和LIFT属于两个流派,那么DeLF给这个领域带来了什么贡献呢,看下面的创新点部分
也是一种间接的方式,没有直接训练检测子,而是将检测子的分数作为权重 加权求和特征,最后去监督特征。
十分精妙且易读的文章,非常值得一看!
关于SuperPoint与LIFT的差异,作者给出了下面这个表格,结合我前面分析的LIFT的局限性,可以很好地理解。当然还有一些其他差别,我放在创新点部分总结。
以上大多是个人理解,如有问题欢迎指正
转载请注明出处@CSDN 窗外的千纸鹤
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。