目录
1 简介
2 相关工作
2.1 特征点检测
2.2 方向估计
2.3 特征描述符
3 方法
3.1 问题的制定
3.2 创建训练数据集
3.3 描述子
3.4 方向估计器
3.5 检测器
3.6 运行流程
4 实验验证
4.4 单个方法性能
5 结论
论文链接:https://arxiv.org/pdf/1603.09114v2.pdf
摘要:我们介绍了一种新颖的深度网络架构,实现了完整的特征点处理流程,即检测、方向估计和特征描述。虽然先前的工作已成功地单独处理了这三个问题,但我们展示了如何在统一的方式下学习并保持端对端的可差分性。然后,我们证明了我们的深度管道在多个基准数据集上的表现优于最先进的方法,而无需重新训练。
特征点在许多计算机视觉应用中发挥着关键作用。寻找并在图像之间进行匹配是广泛研究的主题。直到最近,最好的技术依靠精心设计的特征。在过去的几年中,与计算机视觉的许多领域一样,基于机器学习,特别是深度学习的方法开始胜过这些传统方法。
然而,这些新算法仅解决了完整处理链中的一个单一步骤,其中包括检测特征,计算它们的方向和提取强健表示,使我们能够在图像之间进行匹配。在本文中,我们介绍了一种新颖的深度体系结构,它可以同时执行所有三个步骤。我们证明它实现了比最先进的方法更好的整体性能,这在很大程度上是因为它允许这些单独的步骤被优化,以便在一起表现良好。
我们所称的 LIFT(学习不变特征变换)架构如图1所示。它由三个相互连接的组件组成:检测器、方向估计器和描述符。每个组件都基于卷积神经网络(CNN),并且模仿最近的一些模型,已经证明它们能够很好地执行这些单一功能。为了将它们组合在一起,我们使用空间变形器(Spatial Transformers)来矫正图像块,给定检测器和方向估计器的输出。我们还使用soft argmax函数替换传统的非局部极大值抑制(NMS)方法。这使我们能够保留端到端的可微性。这样就形成了一个完整的网络,仍然可以使用反向传播进行训练,这是我们所知道的任何其他架构都无法做到的。
图1. 我们的综合特征提取流程。我们的流程由三个主要组件组成:检测器、方向估计器和描述符。它们通过可微运算相互连接,以保持端到端的可微性。
此外,我们展示了如何有效地学习这样的流程。为此,我们构建了一个孪生网络,并使用在不同视角和光照条件下捕捉的场景图像的结构化运动(SfM)算法产生的特征点进行训练,以学习它的权重。我们在不同尺度上提取的图像快上制定了这个训练问题,以使优化可控。在实践中,我们发现从头开始训练整个架构是不可能的,因为各个组件试图优化不同的目标。相反,我们引入了一个问题特定的学习方法来克服这个问题。这涉及到首先训练描述符,然后使用已经学习了描述符和方向估计器的方向估计器进行训练,最后是检测器,在整个网络中进行微分。在测试时,我们将检测器与处理关键点的方向估计器和描述符分离开来,在尺度空间上运行整个图像。在下一节中,我们简要讨论早期的方法。然后详细介绍我们的方法,并显示它优于许多最先进的方法。
与局部特征相关的文献数量是巨大的,但它总是围绕着寻找特征点,计算它们的方向,并匹配它们。因此,在本节中,我们将分别讨论这三个要素。(本节省略部分)
一个更加近期的趋势是直接从在大量数据上训练的卷积神经网络的原始图像中提取特征。例如,MatchNet使用 Siamese CNN 进行特征表示,然后使用完全连接的网络来学习比较度量。DeepCompare显示了一个专注于图像中心的网络可以提高性能。Simonyan的方法依赖于类似的架构,以获得窄基线立体的最先进结果。在 [1]Discriminative Learning of Deep Convolutional Feature Point Descriptors中,使用硬负例挖掘来学习紧凑的描述符,该描述符使用欧几里德距离来测量相似性。
在本文中,我们依赖于[1] 的架构,因为相应的描述符是使用欧几里德距离训练和比较的,这比需要学习的度量的描述符具有更广泛的适用范围。
在本节中,我们首先根据图2所示的Siamese架构制定整个特征检测和描述流程。接下来,我们将讨论训练我们的网络所需的数据类型以及如何收集这些数据。然后我们详细描述了训练过程。
图2. 我们的四分支连体训练架构,接受包含了四个图像块的输入:图像块P1和P2(蓝色)代表同一物理点的不同视角,并被用作Descriptor的正面示例;P3(绿色)展示了一个不同的3D点,作为Descriptor的负面示例;而P4(红色)没有明显的特征点,只被用作Detector的负面示例。给定一个图像块P,Detector、softargmax和Spatial Transformer层Crop共同提供了一个更小的图像块p,p然后被馈送到Orientation Estimator,这个Estimator与Spatial Transformer层Rot一起提供了旋转后的补丁pθ,由Descriptor处理并得到最终的描述向量d。
我们使用图像块作为输入,而不是整个图像。这样可以使学习过程具有可扩展性,并且不会损失信息,因为大多数图像区域不包含关键点。这些图像块是从SfM流程中使用的关键点中提取出来的,将在第3.2节中讨论。我们将它们取得足够小,可以假设它们只包含给定尺度下的一个主导本地特征,这将使学习过程简化为在图像块中找到最具有代表性的点。为了训练我们的网络,我们创建了图2中显示的四分支孪生体结构。每个分支包含三个不同的CNN,一个检测器,一个方向估计器和一个描述符。为了训练目的,我们使用图像快的四元组。每个四元组包括两个图像块和,对应于同一3D点的不同视图,一个图像块,包含不同3D点的投影,以及一个不包含任何显著特征点的图像块。在训练过程中,每个四元组的第i个图像块将经过第i个分支。为了实现端到端的可区分性,每个分支的组件连接如下:
1. 给定一个输入图像块,检测器提供一个得分图S。
2. 我们在得分图上执行soft argmax,并返回单个潜在特征点的位置x。
3. 我们使用空间变换器层Crop(图2)提取以x为中心的较小块p。这将作为方向估计器的输入。
4. 方向估计器预测块方向θ。
5. 我们使用第二个空间变换器层Rot(如图2中标记的那样)根据这个方向旋转 p,以产生。
6. 被馈送到描述符网络中,该网络计算特征向量。
有一些数据集可以用来训练特征描述符和方向估计器,但是如何训练关键点检测器却不太清楚,绝大多数技术仍然依赖手工制作的特征。TILDE检测器是个例外,但训练数据集中没有展示任何视角改变。
为了实现不变性,我们需要捕捉同一场景在不同照明条件下和不同视角下的图像,因此我们转向了旅游照片集。我们使用来自的伦敦皮卡迪利广场和罗马罗马广场收藏,用VisualSFM重构了3D,该工具依赖于SIFT特征。皮卡迪利包含3384张图像,重构后有59k个独特点,每个点平均有6.5个观察。罗马广场包含1658张图像和51k个独特点,每个点平均有5.2个观察。图3展示了一些例子。
我们将数据分成训练集和验证集,舍弃在验证集上的训练点的视角以及在训练集上的验证点的视角。为了构建正样本训练样本,我们仅考虑经过SfM重建过程的特征点。为了提取不包含任何显著特征点的区域,按照我们的训练方法,我们随机采样包含没有SIFT特征的图像区域,包括SfM未使用的区域。
我们根据点的尺度σ提取灰度训练块,对于特征点和非特征点图像区域。这些位置处的图像块P从一个24σ×24σ的支持区域中提取,并标准化为S×S像素,其中S=128。作为方向估计器和描述符的输入的更小的图像块p和pθ是这些补丁的裁剪和旋转版本,每个补丁的大小为s×s,其中s=64。这些更小的补丁有效地对应于SIFT描述符支持区域大小为12σ。为了避免偏向数据,我们对图像块位置应用均匀随机扰动,范围为20%(4.8σ)。最后,我们使用整个训练集的灰度均值和标准差对图像块进行规范化。
在过去的一年中,从原始图像块中学习特征描述符的研究得到了广泛的研究,很多研究在图像块检索、窄基线立体、匹配非刚性变形等方面取得了令人印象深刻的结果。在这里,我们依赖于相对简单的网络[1] ,它由三个卷积层、超越正切单元、池化和局部subtractive归一化组成,因为它们不需要学习度量。
描述符可以简单地形式化为:
其中,h(.)表示描述符CNN,表示其参数,是方向估计器旋转的图块。在训练描述符时,我们尚未训练探测器和方向估计器。因此,我们使用SfM使用的特征点的图像位置和方向来生成图像块。我们通过最小化对应块对和不对应块对的损失之和来训练描述符。块对的损失定义为其描述向量之间欧几里得距离的铰链嵌入损失。我们写成:
正负样本是对应或不对应于同一物理三维点的贴片对,是欧氏距离,C = 4是嵌入的间隔。我们在训练过程中使用了困难样本挖掘,这在[1]中被证明对描述符性能至关重要。按照这种方法,我们将个样本对进行前向传递,并仅使用具有最高训练损失的个对进行反向传播,其中是“挖掘比率”。在[1]中,网络是没有挖掘进行预训练的,然后fine-tuned 运行在 r = 8。在这里,我们使用一个逐渐增加的挖掘方案,其中我们从r = 1开始,并且每5000个批次加倍挖掘比率。我们使用平衡的批次,每个批次包含128个正对和128个负对,分别进行挖掘。
我们的方向估计器灵感来自于[9]Simonyan的方法。然而,这个具体的方法需要为多个方向预先计算描述向量,以数值方式计算与方向相关的方法参数的Jacobian矩阵。对于我们来说,这是一个关键的限制,因为我们直接在整个流程中处理检测器组件的输出,因此不可能预先计算描述向量。 因此,我们建议改用空间变换器来学习方向。给定由检测器提出的区域中的一个图块p,方向估计器预测一个方向。
将探测器位置x和原始图像块与一起使用,然后第二个空间变换层Rot(.)使用θ提供一个块,它是块p的旋转版本。我们训练定向估计器提供最小化相同3D点不同视角描述矢量之间距离的方向。我们使用已经训练好的描述符计算描述矢量,因为探测器仍未训练,所以我们使用SfM中的图像位置。更正式地,我们最小化成对的对应块的损失,定义为它们描述矢量之间的欧几里得距离。
在方向校正后,是以x为中心的图像块: 。这种复杂的符号表示对于正确处理图像修剪是必要的。回想一下,一对包含相同3D点的投影的图像块,并且位置和表示这些3D点的再投影。与中相似,我们不使用对应于不相关方向的不同物理点的对。
检测器将图像块作为输入,并返回一个评分图。我们将其实现为卷积层,后跟分段线性激活函数,就像TILDE中一样。更确切地说,对于块,评分图的计算如下:
其中,表示具有参数 µ 的检测器本身,如果n为奇数则为+1,否则为−1,µ由卷积层的滤波器和偏差组成以进行学习,∗表示卷积运算,N和M是控制分段线性激活函数复杂度的超参数。与TILDE的主要区别在于我们训练这一层的方式。为了让S在除了SfM检测到的固定位置之外的其他位置具有最大值,我们将这个位置隐式地看作是一个潜变量。我们的方法有可能发现更可靠且更易学习的点,而[6]则不能。顺便提一下,在我们的初步实验中,我们发现强制检测器直接优化SfM位置是有害的。
从评分图S中,我们得到特征点的位置x为:
其中softargmax是一个计算质心的函数,权重是标准softmax函数的输出。我们写:
其中 y 是 S 中的位置,β = 10 是控制 softargmax 平滑度的超参数。这个 softargmax 函数充当非最大抑制的可微分版本。x 被提供给第一个 Spatial Transformer Layer Crop(.),连同图像块P 一起提取一个较小的 patch p = Crop (P, x) 作为输入传递给方向估计器。
鉴于我们已经学习了方向估计器和描述符,我们可以训练检测器并给出完整的流程。为了优化参数µ,我们最小化相应于相同物理点的贴片对的描述向量之间的距离,同时最大化与不相应的物理点对应的贴片的分类分数。更确切地说,给定训练四元组其中和对应于相同的物理点,和对应于不同的SfM点,而P4对应于非特征点位置,我们最小化它们损失函数的和。
如果, ,,否则,,以平衡正负。Softmax是对数-均值-指数的Softmax函数。我们写
请注意,检测到的特征点x的位置仅隐含地出现,并且在训练期间被发现。此外,所有三个组件都与检测器学习密切相关。与描述符一样,我们使用硬挖掘策略,在这种情况下,采用固定的挖掘比率r = 4。在实践中,由于描述符已经学习了某些不变性,因此对于检测器来说,隐式学习新的点可能很困难。为了让检测器开始具备应该发现的区域的概念,我们首先限制相应于相同物理点的裁剪建议重叠。然后,我们继续训练检测器而不使用此约束。具体而言,在预训练检测器时,我们将中的替换为,其中当补丁建议完全重叠时,等于0,并且否则随着它们之间的距离而增加。因此,我们写
其中,,为范数。回想一下,s = 64像素是图像块建议的宽度和高度。
运行时使用的流程如图4所示。由于我们的方法是在图像块上训练的,简单地应用它到图像上将需要网络在整个图像上使用滑动窗口方案进行测试。在实践中,这将是过于昂贵的。幸运的是,由于方向估计器和描述符只需要在局部最大值处运行,我们可以简单地将探测器与其余部分分离开来应用于全图,并用NMS替换Softargmax函数,如图4中的红色所示。我们然后仅将方向估计器和描述符应用于以局部最大值为中心的碎片。更确切地说,我们独立地将探测器应用于不同分辨率的图像以获取尺度空间中的得分图。然后,我们应用类似于的传统NMS方案来检测特征点位。
在本节中,我们首先介绍我们使用的数据集和度量标准。然后我们呈现定性结果,接着通过与多个最先进基线的深入量化比较,证明我们始终领先。最后,为了更好地理解我们方法中的哪些要素最有贡献,我们研究了探测器组件的预训练重要性,该组件在第3.5节中进行讨论,并分析了每个组件带来的性能提升。
我们在三个标准数据集上评估我们的流水线:
对于Strecha和DTU,我们使用提供的地面实况来建立视点之间的对应关系。我们在每张图像上使用最多1000个关键点,并按照[35]的标准评估协议在共同视点区域进行评估。这使我们能够评估以下指标。
我们在三个数据集上将我们的方法与以下特征点检测器和描述符的组合进行比较,这些组合来自相应论文的作者报告:SIFT 、SURF、KAZE、ORB、带有SIFT检测器的Daisy、带有Harris-affine检测器的sGLOH、带有Harris-affine检测器的MROGH、带有Harris-affine检测器的LIOP、带有边缘聚焦检测器的BiCE、BRISK、带有BRISK检测器的FREAK、带有SIFT检测器的VGG、带有SIFT检测器的DeepDesc、带有SIFT检测器的PN-Net和带有SIFT检测器的MatchNet。我们还考虑具有Hessian-Affine关键点的SIFT。对于学习的描述符VGG、DeepDesc、PN-Net和MatchNet,我们使用SIFT关键点,因为它们是使用高斯差分数据集进行训练的,这本质上与SIFT相同。对于没有针对特定检测器开发的Daisy,我们也使用SIFT关键点。为了使我们的结果可重现,我们在补充材料中提供了有关LIFT和基线的其他实现细节。
4.2 定性示例
图5展示了500个特征点使用SIFT和我们的LIFT流程在Piccadilly数据集上的图像匹配结果。正如预期的那样,LIFT返回了更多正确的图像对应关系。需要注意的是,底部两行的两个DTU场景与我们用于训练的photo-tourism数据集完全不同。考虑到这两个数据集之间的差异非常大,这显示了良好的泛化性能。
图5所示。定性的局部特征匹配例子左:SIFT,右:我们的方法LIFT。每种方法恢复的正确匹配用绿线表示,描述符支持区域用红圈表示。上排:斯特拉查的,第二排:网络摄像头的法兰克福,第三排:,下排:。请注意,这些图像彼此之间非常不同。
我们的学习模型Piccadilly和LIFT(rf),以及Roman-Forum,都在Strecha和DTU上明显优于现有技术,并在Webcam上达到了最新技术水平。需要注意的是,KAZE在Webcam上表现最佳,但在另外两个数据集上表现不佳。正如上文所讨论的,Piccadilly和Roman-Forum与用于测试的数据集非常不同。这强调了我们方法的强大泛化能力,这在基于学习的方法中并不总是显现出来。
有趣的是,在DTU上,SIFT仍然是竞争者中表现最佳的方法,甚至比依赖于深度学习的方法(例如DeepDesc和PN-Net)还要好。此外,对于Strecha数据集,SIFT和基于学习的VGG、DeepDesc和PN-Net之间的差距并不大。
这些结果表明,尽管在单独评估时一个组件可能比另一个方法表现更好,但当它们集成到完整流水线中时,它们可能无法发挥其全部潜力,这才是真正重要的。换句话说,学习组件之间的互动非常重要,就像我们所做的那样,评估特征点检测器和描述符时要考虑整个流程。
微调检测器。回想一下,我们使用预训练的检测器,然后加上方向估计器和描述符来完成训练,如第3.5节所述。因此,了解这个最终阶段的效果是很有趣的。在表2中,我们评估了预训练检测器和最终检测器的整个流程。由于等式(11)中的配对损失项˜Lpair旨在模拟理想描述符的行为,预训练检测器已经表现良好。然而,全面的训练会略微提高性能。表2的详细观察表明,Piccadilly的总体增益比Roman-Forum的大。这可能是因为Roman-Forum没有太多非特征点区域。实际上,在这个数据集上进行几次迭代后,网络就开始过拟合了。当我们尝试将整个流程作为一个整体进一步微调时,同样的事情发生了,这表明我们的学习策略已经提供了一个很好的全局解决方案。
各组件的表现。为了了解每个组件对整体性能的影响,我们替换它们为其SIFT对应件,在Strecha上测试LIFT(pic)和LIFT(rf)的性能。我们在表3中报告结果。简而言之,每次替换为SIFT时,性能都会降低,因此表明管道中的每个元素都起着重要作用。我们的探测器为两个模型提供更高的重复性。拥有更好的方向性也有助于使用任何探测器或描述符,而且深度描述符比SIFT表现更好。需要注意的是,我们的探测器不仅在可重复性方面更好,而且在NN mAP(捕捉描述符性能)和匹配分数方面(评估整个管道)一般都更好。这显示我们的探测器学习找到不仅可经常找到的点,而且易于匹配的点,说明整个管道的训练对于最佳性能非常重要。
我们引入了一种新颖的深度网络架构,将用于局部特征检测和描述的标准管道的三个组件合并为一个可不同矩化的网络。我们使用了空间变换器与softargmax函数将它们融合在一起成为一个统一的网络,可以使用反向传播进行端到端训练。虽然理论上这使得从头开始学习网络成为可能,但它并不实用。因此,我们提出了一种有效的培训策略。 我们的实验结果表明,我们的综合方法优于现有技术。为了进一步提高性能,我们将研究策略,使我们更有效地利用训练整个网络的能力。特别是,我们将研究在整个图像上使用硬负采样策略,而不是依赖于预提取的图像块。这有可能产生更具辨识度的滤波器,进而产生更好的描述符。