摘要
本文提出了 SuperGlue,一种神经网络,用于通过联合寻找对应关系并排除不可匹配点来匹配两组局部特征。匹配结果通过求解一个可微的最优传输问题来估计,该问题的代价由一个图神经网络预测。我们引入了一种基于注意力的灵活上下文聚合机制,使 SuperGlue 能够联合推理底层三维场景和特征匹配关系。相比传统手工设计的启发式方法,我们的方法通过图像对的端到端训练,学习几何变换的先验和三维世界的结构规律。SuperGlue 超越了其他学习方法,在具有挑战性的真实室内和室外环境中的位姿估计任务上达到了最先进的效果。该方法在现代 GPU 上可实现实时匹配,并可方便地集成到现代的 SfM 或 SLAM 系统中。代码与训练权重已在 github.com/magicleap/SuperGluePretrainedNetwork 公开提供。
1. 引言
图像间点的对应关系对于在几何计算机视觉任务中估计三维结构和相机位姿至关重要,如同时定位与建图(SLAM)和运动结构恢复(SfM)。这些对应关系通常通过匹配局部特征来估计,这一过程称为数据关联。视角和光照的大幅变化、遮挡、模糊以及纹理缺失是导致二维到二维数据关联特别具有挑战性的因素。
在本文中,我们提出了一种关于特征匹配问题的新思路。与其学习更好的通用局部特征并结合简单的匹配启发式方法与技巧,不如从已有局部特征中直接学习匹配过程。为此,我们设计了一种新颖的神经网络架构——SuperGlue。在 SLAM 的语境下,该任务通常[8]被分解为视觉特征提取前端与束调整或位姿估计后端,而我们的网络正处于这两者之间——SuperGlue 是一个可学习的 middle-end(见图1)。
在本工作中,特征匹配的学习被视为在两组局部特征之间寻找部分匹配关系。我们重新审视了经典的基于图的方法,通过求解一个线性分配问题来实现匹配,而当该问题被松弛为最优传输问题时,可以以可微的方式进行求解。该优化问题的代价函数由一个图神经网络(GNN)预测。受 Transformer [61] 成功的启发,GNN 使用了自注意力(图像内)和交叉注意力(图像间)机制,从而利用关键点之间的空间关系及其视觉外观。这种表述形式既强制了预测结果的匹配结构,又使得代价函数能够学习复杂的先验,有效处理遮挡和不可复现的关键点。我们的方法通过图像对进行端到端训练——我们从一个大规模标注数据集中学习位姿估计的先验,从而使 SuperGlue 能够联合推理三维场景与匹配关系。我们的工作可以应用于各种需要高质量特征对应关系的多视角几何问题中(见图2)。
我们展示了 SuperGlue 相较于手工设计的匹配器以及学习型内点分类器的优越性。当与深度特征提取前端 SuperPoint [18] 结合使用时,SuperGlue 在室内和室外位姿估计任务上推动了当前技术的最前沿,并为实现端到端的深度 SLAM 奠定了基础。
2. 相关工作
局部特征匹配通常包括以下几个步骤:i)检测兴趣点,ii)计算视觉描述子,iii)通过最近邻(Nearest Neighbor, NN)搜索进行匹配,iv)过滤错误匹配,最后 v)估计几何变换。2000 年代发展的经典流水线往往基于 SIFT [31],使用 Lowe 的比值测试(ratio test)[31]、互查(mutual check)以及如邻域一致性(neighborhood consensus)[59, 10, 6, 49] 等启发式方法过滤匹配,然后使用如 RANSAC [21, 43] 等鲁棒求解器估计变换。
近年来,深度学习在特征匹配方面的研究主要集中于使用卷积神经网络(CNN)从数据中学习更好的稀疏检测器和局部描述子 [18, 19, 37, 45, 69]。为了提升判别能力,一些工作显式地利用更广的上下文信息,例如区域特征 [32] 或对数极坐标图像块(log-polar patches)[20]。也有一些方法学习如何通过将匹配分类为内点和外点来进行过滤 [33, 44, 7, 71]。这些方法虽然对匹配集合进行操作,但仍是基于最近邻搜索,因而忽略了匹配分配结构,并丢弃了视觉信息。已有尝试学习匹配的工作多聚焦于稠密匹配 [46] 或 3D 点云 [65],但仍存在相同的局限性。相比之下,我们提出的可学习中端(middle-end)方法在一个端到端架构中同时实现上下文聚合、匹配以及过滤。
图匹配问题通常被表述为二次分配问题(Quadratic Assignment Problems),这是一个 NP-困难问题,求解代价高昂、复杂,因而在实际中难以应用 [30]。对于局部特征,2000 年代的计算机视觉文献 [5, 27, 57] 使用了大量启发式规则手工设计匹配代价函数,使得整体方法既复杂又脆弱。Caetano 等人 [9] 针对更简单的线性分配问题学习优化代价,但其模型较浅。而我们提出的 SuperGlue 则利用深度神经网络学习一个灵活的代价函数。
与图匹配相关的问题是最优传输(Optimal Transport)[63],它是一种广义的线性分配问题,可以通过一种高效而简洁的近似解法——Sinkhorn 算法 [55, 12, 39] 来求解。
面向点云等集合的深度学习方法,通常致力于设计排列等变(permutation equivariant)或不变(permutation invariant)的函数,通过聚合集合中元素的信息来实现。一些方法对所有元素一视同仁,例如使用全局池化 [70, 40, 15] 或实例归一化 [60, 33, 32];另一些方法则关注于坐标或特征空间中的局部邻域 [41, 66]。
注意力机制(Attention)[61, 64, 62, 26] 可以实现全局以及数据相关的局部信息聚合,通过聚焦于特定元素和属性,从而更加灵活。值得注意的是,自注意力机制可以被视为一种在完全图上的消息传递图神经网络(Message Passing Graph Neural Network)[23, 4] 的实例。因此,我们将注意力机制应用于具有多种边类型的图结构,类似于 [28, 72],使得 SuperGlue 能够学习两个局部特征集合之间的复杂关系推理。
3. SuperGlue 架构
动机:在图像匹配问题中,我们可以利用一些现实世界中的规律:三维世界通常是平滑的,有时是平面的;如果场景是静态的,对于某一图像对,所有的匹配点应遵循一个单一的极几何变换(epipolar transform);此外,一些相机位姿的组合更可能出现。同时,二维关键点往往是显著三维点(如角点或斑点)的投影,因此图像之间的关键点对应关系必须满足某些物理约束:
i)一个关键点在另一张图像中最多只能有一个对应点;
ii)由于遮挡或检测器失败,有些关键点不会有匹配。
一个有效的特征匹配模型应能够识别所有源于同一三维点的重投影之间的匹配关系,并识别出无法匹配的关键点。
我们将 SuperGlue(见图 3)建模为一个优化问题,其代价函数由一个深度神经网络预测。这种做法无需依赖领域知识或手工启发式规则,而是通过数据学习有用的先验信息。
形式化描述:考虑两张图像 A 和 B,每张图像都有一组关键点位置 p p p 和对应的视觉描述符 d d d —— 我们将二者合称为“局部特征”(local features)。位置 p p p 包括图像中的 x x x 和 y y y 坐标以及一个检测置信度 c c c,即 p i : = ( x , y , c ) i p_i := (x, y, c)_i pi:=(x,y,c)i。视觉描述符 d i ∈ R D d_i \in \mathbb{R}^D di∈RD 可以来自像 SuperPoint 这样的卷积神经网络,也可以是传统描述符如 SIFT。图像 A 和 B 分别有 M M M 和 N N N 个局部特征,索引集合分别为 A : = { 1 , . . . , M } \boldsymbol { A } : = \left\{ 1 , . . . , M \right\} A:={1,...,M} 和 B : = { 1 , . . . , N } \boldsymbol { B } : = \left\{ 1 , . . . ,N \right\} B:={1,...,N}。
部分分配(Partial Assignment): 约束 i)和 ii)意味着对应关系来自于两个关键点集合之间的一个部分分配(partial assignment)。为了便于集成到下游任务中以及提升可解释性,我们希望每一个可能的匹配都具有一个置信度值。因此,我们定义一个部分软分配矩阵 P ∈ [ 0 , 1 ] M × N P \in [0, 1]^{M \times N} P∈[0,1]M×N:
P 1 N ≤ 1 M a n d P ⊤ 1 M ≤ 1 N ( 1 ) \mathbf { P 1 } _ { N } \leq \mathbf { 1 } _ { M } \quad \mathrm { a n d } \quad \mathbf { P } ^ { \top } \mathbf { 1 } _ { M } \leq \mathbf { 1 } _ { N }\quad(1) P1N≤1MandP⊤1M≤1N(1)
我们的目标是设计一个神经网络,用于从两个局部特征集合中预测分配矩阵 P P P。
3.1. 注意力图神经网络
除了关键点的位置和视觉外观之外,整合其他上下文信息直观上可以增强其区分度。例如,我们可以考虑关键点与其他可见关键点之间的空间和视觉关系,比如显著关键点[32]、自相似关键点[54]、统计共现关键点[73]或邻近关键点[58]。另一方面,第二张图像中关键点的信息可以通过比较候选匹配点,或基于全局且无歧义的线索估计相对的光度或几何变换,帮助解决歧义。
当人类被要求匹配一个模糊的关键点时,会来回观察两张图像:筛选候选匹配点,仔细检查每一个,并寻找帮助区分真实匹配与其他自相似点的上下文线索[11]。这暗示了一个迭代过程,能够将注意力集中在特定位置。
因此,我们设计了 SuperGlue 的第一个主要模块——注意力图神经网络(见图3)。给定初始的局部特征,该模块通过让特征之间相互通信,计算匹配描述符 f i ∈ R D f_i \in \mathbb{R}^D fi∈RD。正如我们将展示的,图像内及跨图像的长距离特征聚合对稳健匹配至关重要。
关键点编码器:每个关键点 ii 的初始表示 ( 0 ) x i { \bf \ } ^ { ( 0 ) } { \bf x } _ { i } (0)xi结合了其视觉外观和位置信息。我们通过一个多层感知机(MLP)将关键点的位置嵌入到高维向量中,具体表示为:
( 0 ) x i = d i + M L P e n c ( p i ) ( 2 ) { ^ { ( 0 ) } } { \bf x } _ { i } = { \bf d } _ { i } + { \bf M } { \bf L } { \bf P } _ { \mathrm { e n c } } \left( { \bf p } _ { i } \right)\quad(2) (0)xi=di+MLPenc(pi)(2)
该编码器使得图神经网络能够在后续阶段同时考虑外观和位置信息,特别是在结合注意力机制时,这相当于语言处理领域广泛使用的“位置编码器”的一种实现方式[22, 61]。
多层图神经网络(Multiplex Graph Neural Network):我们考虑一个完整的图,其节点是两幅图像中的关键点。该图包含两种无向边——这是一个多层(multiplex)图[34, 36]。图像内部的边,称为自边(self edges) E self E_{\text{self}} Eself,连接同一图像中所有关键点之间的边。图像之间的边,称为交叉边(cross edges) E cross E_{\text{cross}} Ecross,连接一幅图中的关键点与另一幅图中所有关键点。我们采用消息传递的形式[23, 4],沿着这两类边传播信息。得到的多层图神经网络对每个节点维持一个高维状态,并在每一层计算通过对所有边的消息进行聚合后更新的表示。
阅读全文请访问"AI深语解构" SuperGlue:使用图神经网络学习特征匹配