代码https://github.com/magicleap/SuperPointPretrainedNetwork
摘要 - 本文提出了一种适用于计算机视觉中大量多视点几何问题的兴趣点检测器和描述子的自监督训练框架。与基于patch的神经网络相反,我们的全卷积模型对全尺寸图像进行操作,并在一次前向传播中联合计算像素级兴趣点位置和相关描述子。我们介绍了Homographic Adaptation,一个多尺度,多单应方法,以提高兴趣点检测的重复性和执行跨域适应(例如,合成到实际)。我们的模型,当使用单应适应训练的 MS-COCO 通用图像数据集,能够比初始预适应深度网络模型和任何其他传统的角检测器重复检测更丰富的兴趣点集。与 LIFT、 SIFT 和 ORB 相比,最终的系统在 HPatches 上得到了最先进的单应估计结果。
几何计算机视觉任务的第一步是从图像中提取兴趣点,这些任务包括即时定位与地图构建(SLAM)、运动结构(sfM)、相机标定和图像匹配。感兴趣的点是图像中的2D 位置,这些位置在不同的光照条件和视点下是稳定和可重复的。数学和计算机视觉的子领域被称为多视图几何[9]包括定理和算法的基础上建立的假设,兴趣点可以可靠地提取和在图像间匹配。然而,大多数真实世界的计算机视觉系统的输入是原始图像,而不是理想的点位置。
在几乎所有需要图像作为输入的任务,卷积神经网络已被证明优于手工表示。特别是,预测2D“关键点”或“地标”的全卷积神经网络已经被很好地研究用于各种任务,如人体姿态估计[31] ,目标检测[14]和房间布局估计[12]。这些技术的核心是一个人为标记地点的二维groundtruth的大型数据集。
将兴趣点检测作为一个大规模的监督式学习问题来描述,并训练最新的卷积神经网络结构来检测它们,这似乎是很自然的事情。遗憾的是,与语义任务(如人体关键点估计)相比,兴趣点检测的概念在语义上是不明确的。人体关键点估计训练网络来检测身体部位,如嘴角或左脚踝。因此训练具有强监督兴趣点的卷积神经网络是不平凡的。
我们提出了一种基于自训练的自监督解决方案,取代了利用人工监督来定义真实图像中的兴趣点的方法。在我们的方法中,我们在真实图像中创建一个伪groundtruth感兴趣点位置的大数据集,由感兴趣点检测器本身监督,而不是大规模的人工注释工作。
为了产生伪地真实感兴趣点,我们首先训练一个完全卷积的神经网络在我们创建的一个名为 合成形状的合成数据集的百万的样本上(参见图2a)。合成数据集由简单的几何图形列表组成,兴趣点位置没有模糊性。我们称之为经过训练的探测器 MagicPoint ーー它在合成数据集上的性能明显优于传统的兴趣点探测器(见第4节)。尽管存在领域适应困难,MagicPoint 在真实图像上表现出令人惊讶的优异表现[7]。然而,与经典的兴趣点检测器在不同的图像纹理和模式集相比,MagicPoint 错过了许多潜在的兴趣点位置。为了弥补在真实的图像差距的性能,我们开发了一个多尺度,多变换技术-单应适应。
单应适应设计用于兴趣点检测器的自监督训练。它多次扭曲输入图像,以帮助感兴趣点探测器从许多不同的视角和尺度看到的场景(见第5节)。我们使用单应自适应与 MagicPoint 检测器结合,以提高检测器的性能,并产生伪groundtruth感兴趣点(见图2b)。由此产生的检测结果更具有可重复性,并对更大的一组刺激进行激发; 因此,我们将这种检测结果命名为 SuperPoint。
在检测出鲁棒且可重复的兴趣点之后,最常见的步骤是在每个点上附加一个固定维度的描述子向量,以完成更高层次的语义任务,例如图像匹配。因此,我们最后将 SuperPoint 与描述符子网络结合起来(参见图2c)。由于 Super-Point 体系结构由一个深层卷积层组成,这些卷积层提取出多尺度特征,因此将兴趣点网络与计算兴趣点描述符的附加子网络结合起来是很简单的(参见第3节)。得到的系统如图1所示。
传统的兴趣点检测器已经被彻底评估[24,16]。FAST 角点检测器[21]是第一个将高速角检测作为机器学习问题来处理的系统,而 Scale-Invariant Feature Transform,简称 SIFT [15] ,可能仍然是计算机视觉中最著名的传统局部特征描述符。
我们的 SuperPoint 架构的灵感来自于将深度学习应用于兴趣点检测和描述符学习的最新进展。在匹配图像子结构的能力上,我们类似于 UCN [3]和在较小程度上的 DeepDesc [6] ; 然而,两者都不执行任何兴趣点检测。另一方面,LIFT [32] ,一个最近引入的卷积替代 SIFT 的方法,与传统的基于补丁的检测-然后描述配方保持接近。LIFT 流水线包括兴趣点检测、方向估计和描述子计算,但是还需要经典 SfM 系统的监督。表1总结了这些差异。
在监督范围的另一个极端,quad网络[23]从一个无监督的方法处理兴趣点检测问题; 然而,他们的系统是基于补丁(输入是小的图像补丁)和相对较浅的2层网络。TILDE [29]兴趣点检测系统使用了类似于同形适应的原理; 然而,他们的方法并没有受益于大型全卷积神经网络。
我们的方法也可以比较其他自监督方法,综合到实际的领域自适应方法。单应适应的一个类似的方法是由 Honari 等人[10]命名为“等变地标变换”。此外,几何匹配网络[20]和深度图像单应估计[4]使用类似的自我监督策略来创建估计全局变换的训练数据。然而,这些方法缺乏兴趣点和点对应,这对更高层次的计算机视觉任务是必须的,如 SLAM 和 SfM。联合姿态和深度估计模型也存在[33,30,28] ,但不使用兴趣点。
我们设计了一个称为 SuperPoint 的全卷积神经网络结构,它对一个全尺寸图像进行操作,并在一次前向传递中产生伴随着固定长度描述符的兴趣点检测(见图3)。该模型有一个单独的、共享的编码器来处理和降低输入图像的维数。在编码器之后,该体系结构分为两个解码器“头”,它们学习任务特定的权重-一个用于兴趣点检测,另一个用于兴趣点描述。网络的大部分参数在两个任务之间共享,这与传统的系统不同,传统的系统首先检测兴趣点,然后计算描述符,缺乏在两个任务之间共享计算和表示的能力。
我们的SuperPoint架构使用VGG风格的[27]编码器来降低图像的维度。编码器由卷积层、通过池化的空间下采样和非线性激活函数组成。编码器使用3个最大池化层,对图像大小 H ∗ W H*W H∗W,定义 H c = H / 8 , W c = W / 8 H_c = H/8,W_c = W/8 Hc=H/8,Wc=W/8,我们将低维输出中的像素称为“单元格”,其中编码器中的三个2 × 2非重叠的最大池操作产生8 × 8个像素单元格。编码器将输入图像 I ∈ R H × W I\in \mathbb R^{H\times W} I∈RH×W映射为为空间维数较小、通道深度较大(例如 H c < H , W c < W H_c < H,W_c < W Hc<H,Wc<W 和 F > 1 F > 1 F>1)的中间张量 B ∈ R H c × W c × F B ∈ R^{H_c× W_c × F} B∈RHc×Wc×F。
对于兴趣点检测,输出的每个像素对输入中该像素的“点性”概率作出响应。用于密集预测的标准网络设计包含一个编码器-解码器对,其中空间分辨率通过合并或跨步卷积降低,然后通过上卷积操作(如 SegNet [1]中所做的)上采样回到完全分辨率。不幸的是,上采样层往往会增加大量的计算量,并可能引入不需要的棋盘伪影[18],因此我们设计了带有显式解码器的兴趣点检测头,以减少模型的计算量(该解码器没有任何参数,在TensorFlow中被称为“亚像素卷积”[26]或“深度到空间”,在PyTorch中称为“像素混洗”)。
感兴趣点检测头计算 χ ∈ R H c × H w × 65 \chi \in \mathbb R^{H_c\times H_w \times65} χ∈RHc×Hw×65并输出张量大小 R H × W \mathbb R^{H\times W} RH×W,65个通道对应于局部的、不重叠的8 × 8像素网格区域,外加一个额外的“无兴趣点”垃圾箱。经过一个通道式的softmax后,移除垃圾桶维度,得到形状为 R H c × H w × 64 ⇒ R H × W \mathbb R^{H_c\times H_w \times64}\Rightarrow \mathbb R^{H\times W} RHc×Hw×64⇒RH×W。
描述子头计算 D ∈ R H c × W c × D \mathcal{D}\in \mathbb R^{H_c\times W_c\times D} D∈RHc×Wc×D并输出张量 R H × W × D \mathbb R^{H\times W\times D} RH×W×D。为了输出 L2归一化固定长度描述符的稠密映射,我们使用类似于 UCN [3]的模型首先输出描述符的半密集网格(例如,每8像素一个)。学习描述符半密集而不是密集地减少了训练内存并使运行时易于处理。解码器然后执行描述符的双三次插值,然后 L2标准化激活为单位长度。图3显示了这个固定的、未学习过的描述子解码器。
最终的损失是两个中间损失的总和: 一个用于兴趣点检测器 L p \mathcal{L}_p Lp,另一个用于描述符 L d \mathcal{L}_d Ld。我们使用一对合成的变换图像,它们具有(a)伪groundTruth感兴趣点位置和(b)来自随机生成的将两幅图像联系起来的单应图 H \mathcal{H} H 的groundTruth对应关系。这允许我们在给定一对图像的情况下同时优化两个损失,如图2c 所示。我们用 λ 来平衡最后的损失:
感兴趣点检测器损失函数 L p \mathcal{L}_p Lp是单元格 x h w ∈ X x_{hw}\in \mathcal{X} xhw∈X上的全卷积交叉熵损失。我们将相应的groundTruth感兴趣点标签集合 Y Y Y ,各个条目称为 y h w y_{hw} yhw,损失为:
其中
描述子损失将应用与所有的描述子单元, d h , w ∈ D d_{h,w}\in \mathcal D dh,w∈D来自第一副图, d h ′ , w ′ ′ ∈ D ′ d'_{h',w'}\in \mathcal D' dh′,w′′∈D′来自第二副图。 ( h , w ) (h,w) (h,w)单元和 ( h ′ , w ′ ) (h ',w ') (h′,w′)单元之间的同单应诱导的对应关系可以写成如下:
其中 p h , w p_{h,w} ph,w代表在 ( h , w ) (h,w) (h,w)单元中心的像素位置, H p h w ^ \widehat{\mathcal H p_{hw}} Hphw 代表单元格位置 p h , w p_{h,w} ph,w乘单应 H \mathcal H H,除以最后一个坐标,就像经常在欧式和齐次坐标变换的那样。我们用 S 表示一对图像的整个匹配集。
我们还增加了一个加权项 λd,以帮助平衡负匹配多于正匹配的事实。使用带有正边界 m p m_p mp和负边界 m n m_n mn的合页损失函数,描述子损失定义为:
其中
在本节中,我们描述了我们的方法来训练一个基本检测器(如图2a 所示) ,称为 MagicPoint,它与单应适应结合使用,以自我监督的方式为未标记的图像生成伪groundtruth感兴趣点标签。
目前还没有大型的兴趣点数据库来标记图像。因此,为了引导我们的深度兴趣点检测器,我们首先创建一个称为合成形状的大规模合成数据集,它由简化的二维几何学组成,通过四边形、三角形、直线和椭圆的合成数据渲染。图4展示了这些形状的例子,在这个数据集中,我们可以通过简单的 Y 连接、 L 连接、 T 连接以及微小椭圆的中心和线段的端点来模拟兴趣点,从而消除标签的模糊性。
一旦合成图像被渲染,我们对每个图像应用全息变形来增加训练样本的数量。数据是动态生成的,网络不会看到两次示例。虽然合成图形中表示的兴趣点类型只代表现实世界中所有潜在兴趣点的一个子集,但我们发现它在训练兴趣点检测器时在实际应用中表现得相当好。
我们使用 SuperPoint 架构的检测器路径(忽略描述符头部)并在合成形状上对其进行训练。我们将生成的模型称为 MagicPoint。
有趣的是,当我们在合成形状数据集评估 MagicPoint 与其他传统的角检测方法,如 FAST [21] ,Harris 角[8]和Shi-Tomasi’s的“好特征-跟踪”[25],我们发现了一个巨大的性能差距。我们测量了合成形状数据集的1000张保留图像的平均平均精度(mAP),并在表2中报告了结果。经典探测器在成像噪声的存在下举步维艰——这方面的定性示例如图4所示。更详细的实验可以在附录B中找到。
MagicPoint检测器在合成形状的表现非常好,但它能推广到真实的图像吗?总结一下我们稍后在第7.2节中提出的结果,答案是肯定的,但没有我们希望的那么好。我们惊讶地发现,MagicPoint在真实世界的图像上表现得相当好,尤其是在桌子、椅子和窗户等具有强烈棱角状结构的场景中。不幸的是,在所有自然图像的空间中,与相同的经典检测器相比,它在视点变化下的可重复性表现不佳。这激发了我们在真实世界图像上进行自我监督训练的方法,我们称之为单应适应。
我们的系统从基本兴趣点检测器和来自目标域的大量未标记图像(例如,MS-COCO)中自我引导。在自监督范式(也称为自训练)中操作,我们首先为目标域中的每个图像生成一组伪ground truth兴趣点位置,然后使用传统的监督学习机制。我们方法的核心是将随机单形性应用于输入图像的扭曲副本并组合结果的过程——我们称之为单形适应的过程(见图5)。
对于仅围绕相机中心旋转的相机运动、与物体相距较远的场景和平面场景,单应可以提供精确或几乎精确的图像到图像转换。此外,由于世界上大多数地方都是合理的平面,单应性是从不同角度观察同一3D点时发生的情况的良好模型。因为单形性不需要3D信息,所以它们可以随机采样,并很容易地应用于任何2D图像——只涉及双线性插值。由于这些原因,单形性是我们自我监督方法的核心。
设 f θ ( ⋅ ) f_θ(·) fθ(⋅)表示我们希望适应的初始兴趣点函数, I I I为输入图像, x x x为由此产生的兴趣点和 H \mathcal H H随机单应性,使得:
理想的兴趣点算子应该是关于单形性的协变算子。如果输出跟随输入变换,函数 f θ ( ⋅ ) f_θ(·) fθ(⋅)与 H \mathcal H H是相关的。换句话说,协变检测器将满足,对于所有 H \mathcal H H:
将单应性相关项向右移动,我们得到
在实践中,检测器将不是完全协变的——方程9中的不同单应性将导致不同的兴趣点x。单应变换背后的基本思想是对足够大的随机 H \mathcal H H样本进行经验求和(见图5)。由此产生的样本聚合产生了一个新的和改进的超点检测器,
并不是所有的3x3矩阵都是单应适应的好选择。为了采样看似合理的相机变换的单应性,我们将潜在的单应性分解为更简单、表达更少的转换类。我们使用截断正态分布在平移、缩放、平面内旋转和对称相关失真的预定范围内进行采样。这些转换与初始根中心裁剪组合在一起,以帮助避免边界伪影。这个过程如图6所示。
当对图像应用单应适配时,我们使用输入图像的大量同形扭曲的平均响应。单应变换的数量 N h N_h Nh是我们方法的超参数,通常强制第一个单应为单位阵,所以在我们的实验中 N h = 1 N_h=1 Nh=1对应于不做任何适应。我们进行了一个实验来确定 N h N_h Nh的最佳值,将Nh的范围从小 N h = 10 N_h=10 Nh=10改变到中等 N h = 100 N_h=100 Nh=100和大 N h = 1000 N_h=1000 Nh=1000。我们的实验表明,当执行超过100个单应性时,回报会递减。在MS-COCO的一组保留的图像上,我们在没有任何同形适配的情况下获得了.67的可重复性得分,当执行Nh=100变换时获得了21%的重复性提升,当Nh=1000时获得了22%的重复性提高,因此使用超过100个单应性的附加益处是最小的。有关此实验的更详细分析和讨论,请参见附录C。
我们在训练时应用单应自适应技术来提高基本MagicPoint架构在真实图像上的泛化能力。该过程可以反复进行,以持续自我监督和改进兴趣点检测器。在我们所有的实验中,我们将应用Homographic Adaptation后得到的模型称为SuperPoint,并在图7中显示了HPatches图像的进展。
在本节中,我们提供了一些用于训练MagicPoint和SuperPoint模型的实现细节。该编码器具有类似VGG的[27]架构,该架构具有大小为64-64-64-128-128-128-128的八个3x3卷积层。每两层有一个2x2最大池层。每个解码器头具有256个单元的单个3x3卷积层,随后分别具有65个单元和256个单元用于兴趣点检测器和描述符的1x1卷积层。网络中的所有卷积层都经过ReLU非线性激活和BatchNorm非线性化。
为了训练完全卷积的SuperPoint模型,我们从在合成形状上训练的基本MagicPoint模型开始。MagicPoint体系结构是没有描述符头的SuperPoint体系结构。MagicPoint模型针对合成数据的200000次迭代进行训练。由于合成数据渲染简单快速,因此数据是动态渲染的,因此网络不会两次看到单个示例。
我们使用MS-COCO 2014[13]训练数据集分割生成伪groundtruth标签,该数据集具有80000个图像和MagicPoint基本检测器。这些图像的分辨率为240×320,并转换为灰度。根据我们在第5.2节中的结果,使用Nh=100的单应适应生成标签。我们使用从第一轮单应适应训练得到的模型,重复进行第二次单应适应。
SuperPoint的联合训练也在240×320灰度的COCO图像上进行。对于每个训练示例,都会随机抽取一个全息图。它是从比在单应自适应期间更严格的单应集合中采样的,以更好地对成对匹配的目标应用进行建模(例如,我们避免采样极端的平面内旋转,因为它们在HPatches中很少出现)。图像和相应的伪groundtruth通过单应性进行变换,以创建所需的输入和标签。在所有实验中使用的描述符大小是D=256。我们使用λd=250的加权项来保持描述符学习的平衡。描述符合页损失使用正边界 m p = 1 m_p=1 mp=1和负边界 m n = 0.2 m_n=0.2 mn=0.2。我们使用系数λ=0.0001来平衡这两种损失。
所有训练都是使用PyTorch[19](小批量大小为32)和ADAM求解器(默认参数为lr=0.001和β=(0.9,0.999))完成的。我们还使用标准的数据增强技术,如随机高斯噪声、运动模糊、亮度级别变化,以提高网络对照明和视点变化的鲁棒性。
在本节中,我们给出了本文中提出的方法的定量结果。兴趣点和描述符的评估是一个研究得很好的主题,因此我们遵循Mikołajczyk等人的评估协议[16]。有关我们的评估指标的更多详细信息,请参阅附录A。
我们使用Titan X GPU和Caffe[11]深度学习库附带的计时工具测量SuperPoint架构的运行时间。模型的单次前向传播大约11.15ms,输入大小为480×640,这产生了点检测位置和半密集描述符映射。为了从半密集描述符中以更高的480×640分辨率对描述符进行采样,无需创建整个密集描述符映射——我们只需从1000个检测到的位置进行采样,这在CPU实现双三次插值和L2归一化后需要约1.5 ms。因此,我们估计系统在GPU上的总运行时间约为13ms或70FPS。
在我们的实验中,我们在MS-COCO图像上训练SuperPoint,并使用HPatches数据集进行评估[2]。HPatches包含116个场景和696个独特的图像。前57个场景表现出照明的大变化,而其他59个场景具有大的视点变化。
为了评估Su-perPoint模型的兴趣点检测能力,我们在HPatches数据集上测量了可重复性。我们将其与MagicPoint模型(在单应变化之前)以及FAST[21]、Harris[8]和Shi[25]进行了比较,所有这些都是使用OpenCV实现的。重复性是以240×320的分辨率计算的,每个图像中检测到300个点。我们还改变了应用于检测的非最大抑制(NMS)。我们使用的正确距离=3个像素。应用更大量的NMS有助于确保点在图像中均匀分布,这对某些应用程序(如ORB-SLAM[17])很有用,这里FAST角点检测器的最小数量在粗网格的每个单元格中被强制。
总之,用于将MagicPoint转换为SuperPoint的单应适应技术大大提高了可重复性,尤其是在大的视点变化下。结果如表3所示。SuperPoint模型在光照变化下优于经典检测器,在视点变化下性能与经典检测器相当。
为了评估SuperPoint兴趣点检测器和描述符网络的性能,我们在HPatches数据集上比较了匹配能力。我们针对三个著名的检测器和描述符系统:LIFT[32]、SIFT[15]和ORB[22]来评估Su-perPoint。对于LIFT,我们使用作者提供的预训练模型(Picadilly)。对于SIFT和ORB,我们使用默认的OpenCV实现。对于Rep、MLE、NN mAP和MScore,我们使用=3像素的正确距离。我们在480×640分辨率下为所有系统计算了最多1000个点,并为每个图像对计算了多个矩阵。为了估计单应性,我们执行从第一幅图像中检测到的所有兴趣点+描述符到第二幅图像中所有兴趣点-描述符的最近邻匹配。。我们使用OpenCV实现(带有RANSAC的findHomography())和所有匹配来计算最终的单应性估计值。
单应性估计结果如表4所示。SuperPoint的性能优于LIFT和ORB,并且在使用各种正确性阈值对HPatches进行单应性估计时,其性能与SIFT相当。SuperPoint与LIFT、SIFT和ORB的定性检验结果如图8所示。请参阅附录D,了解更多的单应估计示例对。SuperPoint往往会产生大量的正确匹配,这些匹配会密集地覆盖图像,并且对照明变化特别有效。从数量上讲,我们几乎在所有领域都优于LIFT。LIFT 在大多数指标上也被 SIFT 所超越。这可能是因为HPatches包括室内序列,而LIFT是在一个室外训练的序列。我们的方法是在数十万张变换的MS-COCO图像上进行训练的,这些图像表现出更大的多样性,与HPatches中的多样性更接近。
SIFT在亚像素精度单应 ε = 1 \varepsilon =1 ε=1时表现良好,并且具有最低的平均定位误差(MLE)。这可能是由于SIFT执行超亚像素定位,而其他方法不符合这一步骤。ORB实现了最高的可重复性(Rep.);然而,如图8所示,它的检测往往在整个图像中形成稀疏的聚类,因此在最终的单应性估计任务中得分很低。这表明,仅为可重复性进行优化并不会导致更好的匹配或估计。
SuperPoint在以描述符为中心的度量中得分很高,如最近邻mAP(NN mAP)和匹配得分(M.score),这证实了Choy等人[3]和Yi等人[32]的发现,这表明描述符匹配的学习表示优于手动调谐表示。
我们提出了一种用于兴趣点检测和描述的全卷积神经网络架构,该架构使用称为单应适应的自监督域自适应框架进行训练。我们的实验表明,(1)可以将知识从合成数据集转移到真实世界的图像上,(2)稀疏兴趣点检测和描述可以作为一个单一、高效的卷积神经网络,(3)结果系统可以很好地用于几何计算机视觉匹配任务,如单应估计。
未来的工作将研究单应适应是否可以提高模型的性能,例如用于语义分割(例如,SegNet[1])和对象检测(例如,SSD[14])的模型。它还将仔细研究兴趣点检测和描述(以及潜在的其他任务)相互受益的方式。
最后,我们相信,我们的SuperPoint网络可以用于解决SLAM和SfM等3D计算机视觉问题中的所有视觉数据关联,并且基于学习的视觉SLAM前端将在机器人和增强现实中实现更强大的应用。