简介
传统SLAM的流程通常包括如下内容, 特征点提取+描述,特征点匹配 + 异常点去除, 位姿估计。
在以往前人的工作中,SuperPoint和 D2-Net试图解决特征点检测和描述的问题。而检测之后的匹配通常通过最近邻匹配和异常点剔除的方式完成。最后再完成位姿估计。
而SuperGlue试图将特征点的描述,特征的匹配(异常点的剔除)采用端到端的深度网络实现。这意味着距离实现全栈的DLslam又进了一步。
动机
很多场景,由于纹理特征不足,或者局部特征不具备代表性,特征匹配不能取得很好的效果。如下图棋盘格,采用最近邻和distance ratio后,效果依旧非常糟糕。这个例子想说明的是,即使具备了特征点和描述子,由于视角的变化和纹理特征的缺失。很多时候,我们依旧无法获取好的data association。
算法介绍
问题定义
我们要解决的问题“学习特征匹配”。也可以被解读为,寻找两个特征点集合的最优匹配关系。
该算法输入为:
- 两张图片
- 图片上的特征点和描述子(两张图片分别包含m,n个特征点和描述子)
输出为:
M*N的输出,表示两张图片上特征点匹配的概率。
网络框架
- 采用注意力机制的图神经网络
首先一个编码器用于处理特征点描述子和特征点位置。这里使用了流行的注意力机制。
- 求解“局部求解问题” (partial assignment problem)
利用Sinkhorn Algorithm求解。
细节
首先,采用MLP来结合特征点的描述子和位置信息。
然后,利用基于其他特征点的信息来进行更新。其中,在同一张图像上的称为“self edge”,在其他图像上的称为“cross edge”。
接着,采用Message Passing Neural Network来进行网络的更新。
Attentional Aggregation(不太懂)
self-attention用于区分同一图片的不同特征点;cross attention用于区分不同图片的相同(位置)特征点。
特征匹配
最后一步为特征匹配,利用Sinkhorn算法,我们基于位姿信息的真值进行训练。
The cost function of this optimization is pre-dicted by a Graph Neural Network (GNN). Inspired by thesuccess of the Transformer.
总结:
SuperGlue的创新点可以总结为如下(from知乎)
- 构建了一个可学习的特征匹配器,比传统的匹配器效果更好(如常见的bf.knnMatch()匹配器);
- 利用SuperPoint计算得到关键点与描述符,再通过该匹配器得到最佳匹配的关键点;
- 涉及的主要技术有关键点编码、多头注意力机制(Multi-Head attention)、利用最优传输优化分配;
- 关键点点编码,将关键点点位置嵌入到具有多层感知器(MLP)的高维向量,再与对应的描述符进行融合;
- 多头注意力机制,其中self-attention用于提升局部描述符感受野,cross-attention用于提升两图特征信息交流(灵感来自于人类观察两物体不同点来回对比的过程);
- 最优传输优化分配,即将两组特征描述符进行矩阵运算得到得分矩阵S,对得分矩阵采用Sinkhorn算法,求得最优的分配矩阵P,然后根据分配矩阵得到最佳匹配的关键点;
参考资料
SuperGlue - 知乎