SuperGlue
Background
SuperGlue是Magicleap团队在SuperPoint后的又一力作,其思路与方法之巧妙不输SuperPoint,完成的任务也是传统视觉问题中特征点提取和描述(SuperPoint)的后一步–特征点匹配。
说起匹配,最传统的就是直接根据上一步提取出的特征描述子,计算两者间的欧式距离来衡量匹配的概率,也就是俗称的最近邻搜索(NN Search)。最近几年,随着深度学习的发展,有学者将处理点云数据的网络PointNet应用到匹配任务中,如PointCN,OANet等,但这些都是直接将所有匹配点一股脑输入网络,用网络拟合函数做分类任务。而SuperGlue,则为匹配问题提供了一个新的思路。
Motivation
SuperGlue对于匹配问题的新看法,是用一个经典的数学问题来定义,即最优运输问题(Optimal Transport)。
最优运输问题
关于最优运输问题的一个例子就是:把一堆沙子里的每一铲都对应到一个沙雕上的一铲沙子,怎么搬沙子最省力气。数学上的解释就是:从一个概率分布转换到另一个概率分布所需要的最小代价。
那么匹配问题是如何看成最优运输的呢?我的理解是:原先没有匹配的点群作为一个概率分布,而匹配完成后的点是另一个概率分布,这其中的转换代价就是匹配概率。
所以SuperGlue就是用神经网络来预测这种转换代价,也就是最终输出的分配矩阵(第i行第j列表示A图中第i个点与B图中第j个点之间的匹配概率)。
虽然是如此定义的,但在实际方法中,可以看到,SuperGLue先是从原始的特征点分布用图神经网络估计出转换到一个中间分布的(得分矩阵)cost,然后从中间分布到最终的分布又可以看作是一个OT问题,在这一步,作者则是直接采用了传统可微的Sinkhore算法来得到最终的分配矩阵。
Methods
SuperGlue的作者认为,一个好的匹配算法,应该是能够找到所有存在匹配的点的匹配点,同时还要甄别出那些无匹配的点,所以作者将最后的输出定义为一个分配矩阵P。
如何得到这个分配矩阵呢?作者首先从人类视觉的角度做了一些思考。我们在找匹配的时候,首先需要确立一个点的特殊性,显而易见的,需要这个点的位置和像素信息;其次,我们还可以从一个点与另一个点的相对位置关系来确定其特殊性;最后,在另一张图中的信息也可以用于判别一些难以区分的情况(人为定义信息之间的拓扑结构)。同时,我们往往会在两张图片中来回对比(迭代),将注意力集中在某些点与点的关系上(attention)。
基于以上几点,作者提出了如下图所示的网络结构。首先,作者设计了一个encoder,用于将之前提取出的点的位置和描述整合到一起,然后用图的形式将图内和图间的特征点连接起来(相当于一种信息流向的先验知识),并且在图的边上增加了可学习的权重作为attention机制,通过图网络的迭代,最后得到特征点的匹配描述子(f)。
然后作者根据这个描述子对各点的匹配进行打分(用描述子的内积,来衡量相似度),得到一个匹配得分矩阵,而由于遮挡等因素,可能会出现无匹配的情况,作者就在这个得分矩阵的最后增加了一行一列(dustbin),用于放置无匹配的特征点。
从得分矩阵到最后的分配矩阵,可以看作是一个OT问题,作者用传统的可微的Sinkhorn算法来解决。最后drop dustbin后得到分配矩阵P。
网络的loss采用分配矩阵中代表匹配的概率值的log形式。
Experiment & Result
这篇文章的实验是挑选了两个以匹配为核心的视觉任务–单应估计、姿态估计。对比的对象是传统匹配算法(NN)和learning-based算法(OANet)。同时,作者还在前段提取算法上,做了一些组合,最后得到的结论就是SuperPoint+SuperGlue效果最好。
Conclusion
SuperGlue这个方法给人第一直觉上是很合理的,不仅有数学做支撑,也有结合了信息流拓扑结构的网络,给人很make sense的感觉。作者也认为这是通往DeepSLAM的一个重要里程碑。