深度学习 +SLAM:SuperGlue

简介

传统SLAM的流程通常包括如下内容, 特征点提取+描述,特征点匹配 + 异常点去除, 位姿估计。

深度学习 +SLAM:SuperGlue_第1张图片

 在以往前人的工作中,SuperPoint和 D2-Net试图解决特征点检测和描述的问题。而检测之后的匹配通常通过最近邻匹配和异常点剔除的方式完成。最后再完成位姿估计。

而SuperGlue试图将特征点的描述,特征的匹配(异常点的剔除)采用端到端的深度网络实现。这意味着距离实现全栈的DLslam又进了一步。

动机

很多场景,由于纹理特征不足,或者局部特征不具备代表性,特征匹配不能取得很好的效果。如下图棋盘格,采用最近邻和distance ratio后,效果依旧非常糟糕。这个例子想说明的是,即使具备了特征点和描述子,由于视角的变化和纹理特征的缺失。很多时候,我们依旧无法获取好的data association。

深度学习 +SLAM:SuperGlue_第2张图片

算法介绍

问题定义

我们要解决的问题“学习特征匹配”。也可以被解读为,寻找两个特征点集合的最优匹配关系。

该算法输入为:

  • 两张图片
  • 图片上的特征点和描述子(两张图片分别包含m,n个特征点和描述子)

输出为:

M*N的输出,表示两张图片上特征点匹配的概率。

深度学习 +SLAM:SuperGlue_第3张图片

网络框架

深度学习 +SLAM:SuperGlue_第4张图片

  • 采用注意力机制的图神经网络

 首先一个编码器用于处理特征点描述子和特征点位置。这里使用了流行的注意力机制。

  • 求解“局部求解问题” (partial assignment problem)

利用Sinkhorn Algorithm求解。

细节

深度学习 +SLAM:SuperGlue_第5张图片

 首先,采用MLP来结合特征点的描述子和位置信息。

 深度学习 +SLAM:SuperGlue_第6张图片

然后,利用基于其他特征点的信息来进行更新。其中,在同一张图像上的称为“self edge”,在其他图像上的称为“cross edge”。

接着,采用Message Passing Neural Network来进行网络的更新。

深度学习 +SLAM:SuperGlue_第7张图片

Attentional Aggregation(不太懂)

深度学习 +SLAM:SuperGlue_第8张图片

 深度学习 +SLAM:SuperGlue_第9张图片

 self-attention用于区分同一图片的不同特征点;cross attention用于区分不同图片的相同(位置)特征点。

特征匹配

最后一步为特征匹配,利用Sinkhorn算法,我们基于位姿信息的真值进行训练。

深度学习 +SLAM:SuperGlue_第10张图片

The cost function of this optimization is pre-dicted by a Graph Neural Network (GNN). Inspired by thesuccess of the Transformer.

总结:

SuperGlue的创新点可以总结为如下(from知乎)

  1. 构建了一个可学习的特征匹配器,比传统的匹配器效果更好(如常见的bf.knnMatch()匹配器);
  2. 利用SuperPoint计算得到关键点与描述符,再通过该匹配器得到最佳匹配的关键点;
  3. 涉及的主要技术有关键点编码、多头注意力机制(Multi-Head attention)、利用最优传输优化分配;
  4. 关键点点编码,将关键点点位置嵌入到具有多层感知器(MLP)的高维向量,再与对应的描述符进行融合;
  5. 多头注意力机制,其中self-attention用于提升局部描述符感受野,cross-attention用于提升两图特征信息交流(灵感来自于人类观察两物体不同点来回对比的过程);
  6. 最优传输优化分配,即将两组特征描述符进行矩阵运算得到得分矩阵S,对得分矩阵采用Sinkhorn算法,求得最优的分配矩阵P,然后根据分配矩阵得到最佳匹配的关键点;

参考资料

SuperGlue - 知乎

你可能感兴趣的:(SLAM,深度学习,深度学习,人工智能)