论文地址:https://arxiv.org/abs/1911.11763
代码地址:https://github.com/magicleap/SuperGluePretrainedNetwork


背景

  SuperGlue是一个特征匹配与外点剔除的网络,使用GNN网络来对兴趣点进行特征增强,最后将特征匹配问题等价于求解可微分最优化转移问题;受到Transformer的启发,在GNN网络中作者提出了一个自注意力机制与交叉注意力机制来抽取同一幅图内特征点间的融合信息与两幅图之间的特征点的视觉关联信息,该模型的输入为图像对的特征点与描述符,输出为图像特征之间的匹配关系;


模型结构


  模型大致分为两个部分:基于Attention GNN 的特征增强模块最优匹配模块;其中基于注意力GNN的模块将特征点的位置信息与描述子信息编码后进行特征融合,再通过self attention与cross attention来交替增强(L轮),得到用于匹配的特征匹配向量 fff ,最优匹配层通过计算特征匹配向量的内积得到匹配度得分矩阵,然后通过Sinkhorm算法迭代得到最优特征分配矩阵;
  对于两张图像 A、BA、BA、B 经过一个特征提取器得到特征点位置 (x,y)(x, y)(x,y)、每个特征点的置信度 ccc 与描述子向量 ddd ,采用以下的记法:
第 iii 个特征表示为 pi:=(x,y,c)p_{i} := (x, y, c)pi​:=(x,y,c) ,用 (p,d)(p, d)(p,d) 来表示 ppp 点对应的描述符,其中 d∈RDd\in R^{D}d∈RD ,DDD 表示描述符特征的长度;SuperGlue的特征可以是传统算法得到的特征,也可以是深度特征,在原文中采用的是 SuperPoint 得到的特征点与描述符;假设A图中包含 MMM 个特征,B图中包含 NNN 个特征;

Attention GNN模块

  Attention GNN 模块主要包含KeyPoint Encoder部分与 Attention Aggregation两个部分,其中KeyPoint Encoder部分主要将特征点位置置信度与描述子特征进行融合,得到更具有特异性的匹配特征,这个匹配特征能同时包含其位置信息与外观信息;Attention Aggregation 主要主要利用自注意力与交叉注意力机制,基于迭代优化的策略来得到更加具有特异性的匹配特征;

KeyPoint Encoder

  对于SuperGlue输入的第i个特征 pip_{i}pi​ 与其描述子 did_{i}di​ ,通过一个多层感知机将其融合如式1所示:
(0)xi=di+MLPenc (pi)(1){ }^{(0)} \mathbf{x}_{i}=\mathbf{d}_{i}+\mathbf{M L} \mathbf{P}_{\text {enc }}\left(\mathbf{p}_{i}\right)\tag{1}(0)xi​=di​+MLPenc ​(pi​)(1)
其中(0)xi{ }^{(0)} \mathbf{x}_{i}(0)xi​ 表示迭代开始前的 iii 点的匹配初始特征;

Multiplex Graph Neural Network

  图像A与图像B的每个特征点为一个节点,对于图内的特征点之间的无向边记为 Eself \mathcal{E}_{\text {self }}Eself ​ ,A与B之间的特征点之间的无向边记为 Ecross\mathcal{E}_{\text {cross}}Ecross​; 记 (ℓ)XiA{}^{(\ell)} \mathbf{X}_{i}^{A}(ℓ)XiA​ 为图像 A 上的第 iii 个特征点在第 ℓ\ellℓ 层(轮迭代)的特征向量,信息 mE→i\mathbf{m}_{\mathcal{E} \rightarrow i}mE→i​ 为进行了一轮自注意力或交叉注意力聚合后得到的残差信息(源码中在 ℓ\ellℓ 奇数层进行图像内的自注意力特征融合,在 ℓ\ellℓ 为偶数层进行图像间的交叉注意力特征融合),(ℓ)XiA{}^{(\ell)} \mathbf{X}_{i}^{A}(ℓ)XiA​根据式2来更新:
(ℓ+1)xiA=(ℓ)xiA+MLP⁡([(ℓ)xiA∥mE→i])(2){ }^{(\ell+1)} \mathbf{x}_{i}^{A}={ }^{(\ell)} \mathbf{x}_{i}^{A}+\operatorname{MLP}\left(\left[{ }^{(\ell)} \mathbf{x}_{i}^{A} \| \mathbf{m}_{\mathcal{E} \rightarrow i}\right]\right)\tag{2}(ℓ+1)xiA​=(ℓ)xiA​+MLP([(ℓ)xiA​∥mE→i​])(2)
其中 E∈{Eself,Ecross}\mathcal{E}\in \{\mathcal{E}_{self}, \mathcal{E}_{cross}\}E∈{Eself​,Ecross​} , [.∣∣.][.||.][.∣∣.] 表示拼接,图像B的特征点的更新方式与A相似,故不赘述;这个步骤也是参照人类进行特征匹配的过程:先在左图中观察每个特征点与周围特征点的相对关系,再在右图中观察,然后再对比观察两幅图像中特征点的相对关系;

Attentional Aggregation

注意力机制:对于信息残差值mE→i\mathbf{m}_{\mathcal{E} \rightarrow i}mE→i​,有:
mE→i=∑j:(i,j)∈Eαijvj(3)\mathbf{m}_{\mathcal{E} \rightarrow i}=\sum_{j:(i, j) \in \mathcal{E}} \alpha_{i j} \mathbf{v}_{j}\tag{3}mE→i​=j:(i,j)∈E∑​αij​vj​(3)
其中 aija_{ij}aij​ 为 查询索引 query(iii 特征)与待查询键值key(jjj 特征)的相似度,上式表示用于更新 iii 特征的信息是聚合了所有 jjj 特征集合的信息而来(因为 value 的下标为 jjj),而相似度 aija_{ij}aij​ 是根据 iii 特征集合与 jjj 特征集合取出的特征的相似度计算来,即:
αij=Softmax⁡j(qi⊤kj)(4)\alpha_{i j}=\operatorname{Softmax}_{j}\left(\mathbf{q}_{i}^{\top} \mathbf{k}_{j}\right)\tag{4}αij​=Softmaxj​(qi⊤​kj​)(4)
qi、ki、viq_{i} 、k_{i} 、v_{i}qi​、ki​、vi​ 由以下的方式计算而来, Q表示特征 iii 所在的图像(query图像), S表示特征 jjj 特征所在的图像(source图像):
qi=W1(ℓ)xiQ+b1[kjvj]=[W2W3](ℓ)xiS+[b2b3](5)\begin{aligned} \mathbf{q}_{i} &=\mathbf{W}_{1}^{(\ell)} \mathbf{x}_{i}^{Q}+\mathbf{b}_{1} \\\\ {\left[\begin{array}{c} \mathbf{k}_{j} \\ \mathbf{v}_{j} \end{array}\right] } &=\left[\begin{array}{l} \mathbf{W}_{2} \\ \mathbf{W}_{3} \end{array}\right]{}^{(\ell)} \mathbf{x}_{i}^{S}+\left[\begin{array}{l} \mathbf{b}_{2} \\ \mathbf{b}_{3} \end{array}\right] \end{aligned}\tag{5}qi​[kj​vj​​]​=W1(ℓ)​xiQ​+b1​=[W2​W3​​](ℓ)xiS​+[b2​b3​​]​(5)
在源码中: qi=MLP1((ℓ)xiQ)kj=MLP2((ℓ)xiS)vi=MLP3((ℓ)xiS)q_{i}=MLP_{1}({}^{(\ell)}x_{i}^{Q})\\\\k_{j}=MLP_{2}({}^{(\ell)}x_{i}^{S})\\\\v_{i}=MLP_{3}({}^{(\ell)}x_{i}^{S})qi​=MLP1​((ℓ)xiQ​)kj​=MLP2​((ℓ)xiS​)vi​=MLP3​((ℓ)xiS​)
自注意力特征融合:在 ℓ\ellℓ 层为奇数时进行自注意力特征聚合,此时 Q 与 S 是同一幅图像,特征 iii 与特征 jjj 来源于同一幅图像, 先经过多层感知机对输入的匹配特征进行特征映射;然后通过式 4 逐一计算同一幅图像内每个特征点剩余所有特征点的相似性矩阵,再根据式 3 来计算Q内其余特征点能给 iii 点提供的信息残差值,最后通过式 2 来更新信息;
交叉注意力特征融合:在 ℓ\ellℓ 层为偶数时进行交叉注意力特征聚合,此时 Q 与S 是表示左右视图的图像,特征 iii 与特征 jjj 来源于两幅不同图像, 先经过多层感知机对输入的匹配特征进行特征映射;然后通过式 4 来逐一计算 Q 图像的每个特征点S 图像所有特征点的相似性矩阵,再根据式 3 计算 S 图像的所有特征点能提供给 Q 图像的第 iii 个特征点的信息残差值,最后通过式2来更新Q图像特征点的信息;

  原文中展示了迭代优化的结果,其中绿色代表匹配较容易的点,蓝色代表难度中等的点,红色代表困难的点;上方两幅图表示最后结果的匹配与关键点检测情况;
  左下方的图代表在不同轮次的self attention迭代过程中,同幅图像内的特征点与其余特征点的权重关系 aija_{ij}aij​ ,在开始迭代时,图像上的特征点与全图中较多特征点都较相似,注意力比较分散(此时的特征不具有特异性),随着迭代次数增加,每个特征与其余特征的相似性逐渐降低(特征特异性增强);
  右下方代表 cross attention 迭代过程,一开始左图中的特征点与右图中较多的特征点相似性较高(注意力分散),随着迭代进行,最后左图中的特征点只与右图中的真正匹配点的相似度较高(注意力集中) ;
  上述过程说明在自注意力模块与交叉注意力模块迭代优化过程中,可以提高特征的特异性,得到的增强后的匹配特征不仅包含原有的位置与外观信息,还包含了与其余特征点融合的信息;
  对于图像 A 经过 L 轮自我注意力与交叉注意力迭代优化后,得到GNN模块的输出,如式6所示:
fiA=W⋅(L)xiA+b,∀i∈A(6)\mathbf{f}_{i}^{A}=\mathbf{W} \cdot{ }^{(L)} \mathbf{x}_{i}^{A}+\mathbf{b}, \quad \forall i \in \mathcal{A}\tag{6}fiA​=W⋅(L)xiA​+b,∀i∈A(6)
其中 fiAf_{i}^{A}fiA​ 表示 A 图中的第 iii 个特征点增强后的特征,这个特征用于之后的匹配;

最优匹配模块

  对于两个特征点集的匹配问题,可以试视为一个分配问题:一般通过计算分配矩阵(assignment matrix)P∈RM×NP\in R^{M\times N}P∈RM×N与得分矩阵S∈RM×NS\in R^{M\times N}S∈RM×N 来构建优化问题,通过最大化总体得分∑i,jSi,jPi,j\sum_{i, j} \mathbf{S}_{i, j} \mathbf{P}_{i, j}∑i,j​Si,j​Pi,j​ 来求解P,优化问题描述如下:

{max(∑i,jSi,jPi,j)s.t.P1N≤1Mand P⊤1M≤1N(7)\begin{cases} max(\sum_{i,j}S_{i,j}P_{i,j}) \\ s.t.\ \ \ \mathbf{P} \mathbf{1}_{N} \leq \mathbf{1}_{M} \quad \text { and } \quad \mathbf{P}^{\top} \mathbf{1}_{M} \leq \mathbf{1}_{N} \end{cases}\tag{7}{max(∑i,j​Si,j​Pi,j​)s.t.   P1N​≤1M​ and P⊤1M​≤1N​​(7)
其中 PPP 矩阵为稀疏矩阵,两个约束表示 PPP 矩阵每一行或每一列只有一个元素为1,表示一个特征点只能与一个特征点匹配(避免一对多的匹配),Pi,j=1P_{i, j}=1Pi,j​=1 表示A图中第 iii 点与 B 图中的 jjj 点匹配;
  文中使用GNN输出的 fiA与fiBf_{i}^{A} 与 f_{i}^{B}fiA​与fiB​ 来计算得分矩阵S如式8所示:
Si,j=<fiA,fjB>,∀(i,j)∈A×B(8)\mathbf{S}_{i, j}=<\mathbf{f}_{i}^{A}, \mathbf{f}_{j}^{B}>,\ \forall(i, j) \in \mathcal{A} \times \mathcal{B}\tag{8}Si,j​=<fiA​,fjB​>, ∀(i,j)∈A×B(8)
注:与SuperPoint学习的视觉描述符不同,此处的匹配描述符 fiA与fiBf_{i}^{A} 与 f_{i}^{B}fiA​与fiB​ 没有归一化,其大小可以在每个特征和训练过程中变化,以反映预测的置信度。

借鉴SuperPoint的思想,在得分矩阵S最后的维度扩充一个dustbin通道(dustbin通道初始化为全部1,通过梯度下降继续优化),用于表示无匹配的特征点(遮挡点):
S‾i,N+1=S‾M+1,j=S‾M+1,N+1=z∈R(9)\overline{\mathbf{S}}_{i, N+1}=\overline{\mathbf{S}}_{M+1, j}=\overline{\mathbf{S}}_{M+1, N+1}=z \in \mathbb{R}\tag{9}Si,N+1​=SM+1,j​=SM+1,N+1​=z∈R(9)
增加dustbin的过程类似于引入松弛变量的过程,为了使 式7 中的约束等价,引入dustbin后的软分配矩阵的约束如式10所示(原文中为等号,个人理解应该是原文写错了,此处应该为≤):
P‾1N+1≤aand P‾⊤1M+1≤b(10)\overline{\mathbf{P}} \mathbf{1}_{N+1} \leq \mathbf{a} \quad \text { and } \quad \overline{\mathbf{P}}^{\top} \mathbf{1}_{M+1}\leq\mathbf{b}\tag{10}P1N+1​≤a and P⊤1M+1​≤b(10)
考虑极端情况,若两幅图只有一对点是匹配上的,也就是N+1个dustbin的数值中有N个是为1, M+1个dustbin的值有M个为1,匹配上那个点的dustbin为0,则有a=[1M⊤N]⊤,b=[1N⊤M]⊤\mathbf{a}=\left[\begin{array}{ll} \mathbf{1}_{M}^{\top} & N \end{array}\right]^{\top}, \mathbf{b}=\left[\begin{array}{ll} \mathbf{1}_{N}^{\top} & M \end{array}\right]^{\top}a=[1M⊤​​N​]⊤,b=[1N⊤​​M​]⊤

Sinkhorn Algorithm

最后由Sinkhorn Algorithm算法来接上述的优化问题,得到最终的分配矩阵;


损失函数

  SuperGlue的过程都是可微的,可以使用梯度下降法来进行优化,损失函数如式10所示:
Loss =−∑(i,j)∈Mlog⁡P‾i,j−∑i∈Ilog⁡P‾i,N+1−∑j∈Jlog⁡P‾M+1,j(10)\begin{aligned} \text { Loss }=&-\sum_{(i, j) \in \mathcal{M}} \log \overline{\mathbf{P}}_{i, j} -\sum_{i \in \mathcal{I}} \log \overline{\mathbf{P}}_{i, N+1}-\sum_{j \in \mathcal{J}} \log \overline{\mathbf{P}}_{M+1, j} \end{aligned}\tag{10} Loss =​−(i,j)∈M∑​logPi,j​−i∈I∑​logPi,N+1​−j∈J∑​logPM+1,j​​(10)
其中 M={(i,j)}\mathcal{M}=\{(i, j)\}M={(i,j)} 为两幅图像的Ground True,对于没有匹配的点 I⊆A与J⊆B\mathcal{I} \subseteq \mathcal{A} 与 \mathcal{J} \subseteq \mathcal{B}I⊆A与J⊆B,将其dustbin维度设为1作为Ground True;


实验结果

论文阅读《SuperGlue: Learning Feature Matching with Graph Neural Networks》相关推荐

  1. 《基于卷积神经网络的深度迁移学习,用于燃气轮机燃烧室的故障检测》论文阅读

    目录 突出 抽象 引言 1.1动机 1.2文献综述获得的结论 1.3贡献 1.4组织 2方法 2.1燃汽轮机组故障知识共享 2.2迁移学习 2.3 基于卷积神经网络的深度迁移学习 2.4用于燃气轮机燃 ...

  2. 基于卷积神经网络和投票机制的三维模型分类与检索 2019 论文笔记

    作者:白静 计算机辅助设计与图形学学报 1.解决的问题 由于三维模型投影得到的视图是由不同视点得到,具有相对独立性,这种像素级的融合运算并没有直接的物理或者几何意义,更有可能造成图像有益信息淹没和混淆 ...

  3. TextCNN——基于卷积神经网络的文本分类学习

    1.CNN基础内容 CNN的全称是Convolutional Neural Network,是一种前馈神经网络.由一个或多个卷积层.池化层以及顶部的全连接层组成,在图像处理领域表现出色. 本文主要学习 ...

  4. 读懂深度迁移学习,看这文就够了 | 赠书

    百度前首席科学家.斯坦福大学副教授吴恩达(Andrew Ng)曾经说过:迁移学习将是继监督学习之后的下一个促使机器学习成功商业化的驱动力. 本文选自<深度学习500问:AI工程师面试宝典> ...

  5. 一种基于卷积神经网络的图像去雾研究-含matlab代码

    目录 一.绪论 二.去雾卷积网络 2.1 特征提取 2.2 多尺度映射 2.3 局部均值 2.4 非线性回归 三.实验与分析 四.Matlab代码获取 一.绪论 雾是一种常见的大气现象,空气中悬浮的水 ...

  6. 机械臂论文笔记(一)【基于卷积神经网络的二指机械手 抓取姿态生成研究 】

    基于卷积神经网络的二指机械手 抓取姿态生成研究 论文下载 摘要 第1章 绪论 1.1 抓取生成国内外研究现状 1.1.1已知物体抓取生成 1.1.2相似物体抓取生成 1.1.3 未知物体抓取生成 1. ...

  7. 毕业设计 - 基于卷积神经网络的乳腺癌分类 深度学习 医学图像

    文章目录 1 前言 2 前言 3 数据集 3.1 良性样本 3.2 病变样本 4 开发环境 5 代码实现 5.1 实现流程 5.2 部分代码实现 5.2.1 导入库 5.2.2 图像加载 5.2.3 ...

  8. 基于卷积神经网络与迁移学习的油茶病害图像识别

    基于卷积神经网络与迁移学习的油茶病害图像识别 1.研究思路 利用深度卷积神经网络强大的特征学习和特征表达能力来自动学习油茶病害特征,并借助迁移学习方法将AlexNet模型在ImageNet图像数据集上 ...

  9. Python深度学习实例--基于卷积神经网络的小型数据处理(猫狗分类)

    Python深度学习实例--基于卷积神经网络的小型数据处理(猫狗分类) 1.卷积神经网络 1.1卷积神经网络简介 1.2卷积运算 1.3 深度学习与小数据问题的相关性 2.下载数据 2.1下载原始数据 ...

  10. 基于卷积神经网络实现图片风格的迁移 1

    卷积神经网络详解 一.实验介绍 1.1 实验内容 Prisma 是最近很火的一款APP,它能够将一张普通的图像转换成各种艺术风格的图像.本课程基于卷积神经网络,使用Caffe框架,探讨图片风格迁移背后 ...

最新文章

  1. flutter和webapp_Flutter全平台!迁移现有Flutter项目到WEB端
  2. 外媒:Facebook新发展方向或模仿微信
  3. python和c++哪个好用-C#、C++、Java、Python 选择哪个好?
  4. matlab gui七种参数传递方式和范围
  5. 分享两个JavaScript打乱数组顺序实现随机排序洗牌的方法(应用于音乐视频的随机播放等)
  6. NLP快速入门:手把手教你用HanLP做中文分词
  7. Lecture 21 Parallel Algorithms II
  8. php jsonerrorsyntax,php – json_decode返回JSON_ERROR_SYNTAX,但在线格式化程序表示JSON可以...
  9. 使用Turi Create训练核心ML模型以对犬种进行分类
  10. 深圳罗湖区:拟重点发展区块链金融技术 推动数字人民币国际合作
  11. 找不到 org/springframework/dao/support/PersistenceExceptionTranslator
  12. 通达信服务器文件是那个文件夹,通达信的公式在哪个文件夹?
  13. x509证书验签方法,支持国密证书
  14. 经纬度 度分秒转换为小数
  15. C4D的几大主流渲染器!看完你就知道选择学习哪款了
  16. GitLab CI/CD 基础教程(一)
  17. ThinkPHP3.2.3 where注入
  18. python pandas clip
  19. 技术干货 | 录屏采集实现教程 —— Windows桌面端
  20. python打印古诗_python打印古诗_python教程:利用python基础知识取出对应诗句

热门文章

  1. 有没有用先留一份,linux vi/vim快捷键
  2. 网络密码保护神:江民密保试用手记(转)
  3. mysql数据库查询关键字级别_MySQL数据库之单表查询中关键字的执行顺序
  4. MicroPython内核开发笔记书内软件用例 :utime 的实验用例
  5. node.js学习笔记Day5
  6. 中国DT城市智能服务指数研究报告
  7. 装修后才知道的79件事,无数网友真金白银砸出来的经验
  8. 海中月是天上月,眼前人是心上人。
  9. 查看电脑异常关机日志
  10. 全网多种方式解决The requested resource [/] is not available的错误