论文研读:SuperGlue vs. LoFTR

简介

SupeGlue与LoFTR都是对图片间进行特征点匹配的方法,其目的是,找到图像A、图像B中同时存在的相同物体实例,并输出其位置信息、匹配关系。

在提取出特征点后,我们通过图神经网络生成匹配代价矩阵,并求解最优匹配矩阵,以获得全局最优的匹配结果。

图神经网络简介

在讨论 GNN 之前,让我们先了解一下什么是 图 (Graph)。在计算机科学中,图是由两个部件组成的一种数据结构: 顶点/节点 (vertices/nodes)边 (edges)。一个图 G 可以用它包含的顶点 V 和边 E 的集合来描述。边可以是 有向的无向的,这取决于顶点之间是否存在方向依赖关系。

现有的深度学习算法在处理图数据时面临着巨大的挑战。这是因为图数据是非欧式空间数据,复杂性很高,且图是不规则的,每个图可以有大小可变的无序节点,图中的每个节点可以有不同数量的相邻节点,导致一些重要的操作(例如卷积)不再适合直接用于图。此外,现有深度学习算法的一个核心假设是数据样本之间彼此独立。然而,对于图来说,情况并非如此,图中的每个数据样本(节点)都会有边与图中其他实数据样本(节点)相关,这些信息可被用于捕获实例之间的相互依赖关系。

近年来,人们对深度学习方法在图上的扩展越来越感兴趣。在多方因素的成功推动下,研究人员借鉴了卷积网络、循环网络和深度自动编码器的思想,定义和设计了用于处理图数据的神经网络结构。

SuperGlue模型中主要采用的是基于空间方法的图注意力网络,运用了类似Vision Transformer的方法,只不过样本空间并不是全图像的Patch Embedding,而是提取所得的特征点编码信息(位置+由传统方法或深度卷积方法获得的该像素及其邻域的特征+特征置信度)。 图中的每个数据样本(节点)是特征点的编码信息,每条边是节点两两之间的Attention值,每个节点都有边与其他所有节点连通,构成了一个完全图。我们通过下式计算完全图的边信息。

论文研读:SuperGlue vs. LoFTR

这是一种类似于数据库检索的特征聚合方式,在图神经网络中也被称为”消息传递”。q表示Query,k表示Key,v表示Value,对于图像对{A, B},q由A产生,k、v由B产生。对于输入A,我们通过q进行查询,匹配到B的键k,通过Softmax函数计算这种查询与键匹配的相似度,然后与B的真值v相乘。通常这种Attention机制会循环多层,以使匹配达到紧密收敛。需要注意的是,对于每轮循环,我们首先对{A, A}、{B, B}计算Self-Attention,再对{A, B}计算Cross-Attention。

现在我们成功的编码表示了特征点,并计算出特征点间的互相关性。 我们将这两者相加融合,这相当于将完全图中所有的边近似去除,使所有节点之间互相独立,此时我们简单计算节点间的内积(欧氏距离)即可进行后续的匹配流程。

模型介绍

SuperGlue

下图表示了SuperGlue处理一对图像对的主干逻辑。

论文研读:SuperGlue vs. LoFTR

模型推理阶段

输入:

包含特征点位置信息、特征描述子,可通过手工特征或深度学习提取。

手工:SIFT算法

深度:SuperPoint模型

论文研读:SuperGlue vs. LoFTR

输出:

2张图的特征点间的最优匹配关系。

设定阈值输出结果。

阈值包括:可作为特征点的置信度阈值、是否输出该匹配的匹配得分阈值。

论文研读:SuperGlue vs. LoFTR

模型训练阶段:

属于监督训练,无需手工标注,方法是输入1张真实图片,提取特征点,通过随机单应变换生成1张特征点对应的新图片、以及深度图,形成一对图像对。

深度图生成的方法是:使用COLMAP/MVS方法,对一些具有多视角多图的场景进行稀疏-稠密重建,然后对生成图进行深度估计。

原文给出的预训练模型采用Oxford、Paris数据集做单应估计训练(https://github.com/filipradenovic/revisitop)。 分别采用百万级的两个数据集Scannet数据集(室内)、YFCC100M数据集(室外)做姿态估计训练。

模型中的几个具体细节:

流程图如下图所示。

论文研读:SuperGlue vs. LoFTR
  1. Keypoint Encoder模块对每个特征点进行编码,将特征描述子 d与位置信息 p合成为一个向量。
  2. 图像A含有N个特征点,表示为一个N长度序列。图像B含有M个特征点,表示为一个M长度序列。接下来构建 含N+M个节点的完全图,每个节点表示一个特征点,每条边表示两个特征点之间的关系,这种关系是通过Attention机制实现的。这里有两个符合人类认知本质的逻辑: ①人类在找图片A、B相似之处时,首先会从图A中挑选出一些格外显著的点,这对应于在N序列内做Self-Attention操作,对于图像B我们也选出这么一些显著的点。其次,对于图A中的 每个显著点,我们会遍历图B的 所有显著点,检索是否两两相似,这对应于在N序列、M序列间做Cross-Attention。 ②这种Self-Attention + Cross-Attention称为一轮注意力。每轮注意力的结果与本轮初始特征向量的合成方法是 直接相加。考虑人类对图像的注意力感知, 我们并不会在眼球聚焦之后丢弃掉眼前的景象,我们仍可以感光,但是由于眼球聚焦的调节,景象的一些部分被削弱了,导致我们只能用”余光”感受这些部分;而另一些部分被增强了,导致我们可以仔细观察这些部分。所以这种加和操作看似可解释性较差(因为将不同维度的特征相加),实则符合视觉感知的生理逻辑。
  3. 经过多轮Attention之后,每个特征点有了一个聚合表示。通过对聚合表示两两内积,我们可得N*M尺寸的代价矩阵,这表示了将特征点两两匹配所需付出的代价。如果两个点非常不相似,而我们强行把他们匹配,则会付出很大的代价。
  4. 基于代价矩阵,我们需要线性规划解算一个最优分配矩阵,其目标是,以最小的全局代价两两匹配图像A与图像B中的特征点,但其计算复杂度随数据量增长而变大。所以我们采用SinkHorn算法,添加熵正则化约束以近似求解。这里需要注意,对于无法越过阈值成功匹配的点,使用额外的垃圾桶空间来存储这些点,为最优化过程添加约束,从而滤除错误点。 SinkHorn算法在保证按需分配的同时,由于熵正则化的作用会使分配矩阵偏向均匀分布,因此结果会有一定的平滑
  5. 模型中使用了许多简易的多层感知机,这减少了复杂计算,调节了通道尺寸,并添加了非线性以提高抽象表征能力。
  6. 损失函数为匹配代价矩阵的负对数似然损失。这相当于优化匹配的准召。

LoFTR

下图表示了LoFTR处理一对图像对的主干逻辑。

论文研读:SuperGlue vs. LoFTR

LoFTR基于SuperGlue做了诸多改进,最主要的改进是:

  1. SuperGlue基于 预先提取的部分特征点。而LoFTR则像传统的图像识别方法那样,预先对 全图提取特征,并在将特征送入Transformer前,为每个点添加 位置编码
  2. SuperGlue的特征描述子 尺度是不变的,LoFTR先对较大的图像块之间做粗匹配,对于可信配对,再做进一步的精细高分辨率匹配。

相较于SuperGlue,这主要解决了两个关键问题:

论文研读:SuperGlue vs. LoFTR
论文研读:SuperGlue vs. LoFTR

模型推理阶段:

输入:

1个图像对。

由CNN逐像素自动提取的多尺度特征+位置编码。

论文研读:SuperGlue vs. LoFTR

输出:

2张图的特征点间的最优匹配关系。

论文研读:SuperGlue vs. LoFTR

模型训练阶段:

属于监督训练,无需手工标注,自标注生成方法采用类似SuperGlue的随机单应变换法,生成图像对及深度图。

不同之处在于,在选定标注时,为了避免出现一对多的情况,遵循互最近邻原则;对于粗标签,先由左向右变换,取右侧最近邻点作为右侧gt标签候选,再将该候选点由右向左变换,取左侧最近邻点,如果左侧最近邻点与初始锚点相同,则该左右点对作为一个gt点对。对于细标签,我们将左侧gt粗标签的中心点变换到右侧,取细尺度的最近邻点作为右侧候选点,对于一张变换生成的标签图像,粗标签的中心点必须落在对应生成的最近邻细标签的5*5单元窗口内,否则丢弃该粗标签。

原文给出的预训练模型使用ResNet-18作为backbone特征提取器, 分别采用百万级的两个数据集Scannet数据集(室内)、MegaDepth数据集(室外)做姿态估计训练。

模型流程:

论文研读:SuperGlue vs. LoFTR
  1. 局部特征提取网络从图像对{A, B}中提取粗特征图、精特征图。
  2. 将A, B的粗略特征图分别展平为一维序列,并分别融合位置编码;然后,对两序列计算图注意力(输入Transformer),通过SinkHorn算法或Dual Softmax法,得到粗特征块互匹配得分矩阵。根据置信度阈值、相互邻近标准,得到粗匹配预测。
  3. 对于粗匹配预测对应的A, B中的位置,我们分别将其对应的细特征图按5*5单元划分为网格图,并序列化,对于每个单元,都将其细特征与网格中心点粗特征融合,得到了每个单元的细特征表示。
  4. 对于A, B的细特征序列计算图注意力,对于两两配对,我们以A的单元中心点为一个最终特征点坐标,输出B的5*5单元中置信度的坐标。最终,我们选择置信度最高的top_K个匹配输出。
  5. 损失函数包含两部分:粗匹配互相关得分矩阵的负对数似然损失 + 细匹配坐标L2损失。这相当于优化粗匹配的准召,以及细匹配位置的准确率。

参考文献:

Paul-Edouard Sarlin and Daniel DeTone and Tomasz Malisiewicz and Andrew Rabinovich (2020). SuperGlue: Learning Feature Matching with Graph Neural Networks. In CVPR.

SuperGlue Git Repository.

Sun, J., Shen, Z., Wang, Y., Bao, H., & Zhou, X. (2021). LoFTR: Detector-Free Local Feature Matching with Transformers. CVPR.

LoFTR Git Repository.

知乎:图神经网络综述

Original: https://blog.csdn.net/weixin_48109360/article/details/121422277
Author: 怎么有情绪啦
Title: 论文研读:SuperGlue vs. LoFTR

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/532934/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球