《Deep Learning of Graph Matching》论文阅读
1. 论文概述
论文首次将深度学习同图匹配(Graph matching)结合,设计了end-to-end网络去学习图匹配过程。
1.1 网络学习的目标(输出)
是两个图(Graph)之间的相似度矩阵。
1.2 网络的输入
拿其中的 imageNet 的鸟举例如下图,使用的是另一篇论文使用的数据集。数据特点:①鸟的姿态几乎一致②每个鸟选取15个关键点。这样就默认不同二图中相对应的点(如下图不同颜色的点)是 一 一 匹配的,即当作ground-truth。具体如何将image输入得到graph,下文讲。
1.3 论文的loss设计
由1.2节我们知道了ground-truth,所以loss的设计:因为我们已经知道二图目标点的相互匹配结果,所以对于网络训练得到的匹配结果,我们使用网络输出的结果和真实匹配点之间的物理位移作为考量因素。具体见下文。
2. 网络设计
2.1 网络基本结构
按顺序大概介绍每层功能:
第一层(预处理):将上文提到的数据集(比如鸟:①姿态一致②两图15个关键点)通过vgg16提取特征。一阶特征代表点的特征信息,二阶特征代表边的特征信息,分别使用浅层的relu4_2激活信息和relu5_1的激活信息,分别记作F和U,下图的U,F的上标表示两个图。输入二图,输出F,U
第二层:通过输入的F,U构建二图的相似度矩阵。输入上一层的F,U,输出相似度矩阵M
第三层:输入M,输出v*。主要求解相似度矩阵的最大特征向量,当作近似的图匹配的解
第四层:输入v*,输出排列阵S。主要将排列阵按行、列 归一化,归一化成双随机矩阵
第五层:对排列阵S,按概率选择每一个点对应的匹配结果
第六层:求loss,并反向传播

3. Deep Feature Extractor层
使用VGG16提取点、边的特征信息,输入到下一层。分别记作F、U,上标表示二图
4. Affinity Matrix Factorization
介绍下论文使用的相似度矩阵,使用分解形式如下:

二图的边和点结点分别为:n点p边。m点q边。[..]是将向量变成diagonal矩阵。vec()是将矩阵按列(有些论文是按行)
第一项[vec(Mp)]是正则项。
看下图,H1,G1分别代表图一的点和边结点的表示,H2、G2类似。
Me表示边结点相似度,X、Y的构成不包含运算,个人认为是输入的F、U的拼接。其中
是要训练的对象

5. 矩阵符号
其中 “:”表示矩阵的内积(对应元素相乘)。(4)式表示函数的偏导数
6. Affinity matrix layer


该层的后向传播分析:因为上一层传入的变量是FU,参数存储在 “半三角形”这个符号中,所以需要求出对FU的偏导,更具上一节,即等于求出X Y的偏导。
中间的为推导需要使用的公式。

7. Power Iteration Layer
因为图匹配数学模型为
,其中M为上文的相似度矩阵,为了使上式最大化,可使用M的最大特征向量来近似,所以这层先使用幂迭代方法,求出M的最大特征向量。(通过闭式解方法)

该层反向传播:

推导中红线第一个等式:

所以结果:

为了进一步降低计算复杂度:

最终结果:

8. bi-stochasic layer
这层就是将上一层输入的vk向量变成双随机矩阵。分别进行行、列的归一化。

那么进一步推导反向传播:

9. voting 和 loss
输入时上一层的s双随机矩阵,所以只要选出概率最大的点就代表这两个点互相匹配,这里的loss函数就是计算匹配的点和真实点的物理位置。
设计基本按照softmax而来。但是我有疑问,就是为什么要减去Pi,感觉不用减,在(23)式中不是在减了嘛?
其中P式m*2维数,所以应该是第二张图的个点的物理位置。


有做图匹配的同学欢迎交流!!
论文原文:Deep Learning of Graph Matching
参考:https://zhuanlan.zhihu.com/p/54034817
《Deep Learning of Graph Matching》论文阅读的更多相关文章
- Deep Learning of Graph Matching 阅读笔记
Deep Learning of Graph Matching 阅读笔记 CVPR2018的一篇文章,主要提出了一种利用深度神经网络实现端到端图匹配(Graph Matching)的方法. 该篇文章理 ...
- Deep Reinforcement Learning for Dialogue Generation 论文阅读
本文来自李纪为博士的论文 Deep Reinforcement Learning for Dialogue Generation. 1,概述 当前在闲聊机器人中的主要技术框架都是seq2seq模型.但 ...
- Deep Learning 33:读论文“Densely Connected Convolutional Networks”-------DenseNet 简单理解
一.读前说明 1.论文"Densely Connected Convolutional Networks"是现在为止效果最好的CNN架构,比Resnet还好,有必要学习一下它为什么 ...
- Deep Learning 26:读论文“Maxout Networks”——ICML 2013
论文Maxout Networks实际上非常简单,只是发现一种新的激活函数(叫maxout)而已,跟relu有点类似,relu使用的max(x,0)是对每个通道的特征图的每一个单元执行的与0比较最大化 ...
- Discriminative Learning of Deep Convolutional Feature Point Descriptors 论文阅读笔记
介绍 该文提出一种基于深度学习的特征描述方法,并且对尺度变化.图像旋转.透射变换.非刚性变形.光照变化等具有很好的鲁棒性.该算法的整体思想并不复杂,使用孪生网络从图块中提取特征信息(得到一个128维的 ...
- Sequence to Sequence Learning with Neural Networks论文阅读
论文下载 作者(三位Google大佬)一开始提出DNN的缺点,DNN不能用于将序列映射到序列.此论文以机器翻译为例,核心模型是长短期记忆神经网络(LSTM),首先通过一个多层的LSTM将输入的语言序列 ...
- Deep Learning 24:读论文“Batch-normalized Maxout Network in Network”——mnist错误率为0.24%
读本篇论文“Batch-normalized Maxout Network in Network”的原因在它的mnist错误率为0.24%,世界排名第4.并且代码是用matlab写的,本人还没装caf ...
- Deep Learning 25:读论文“Network in Network”——ICLR 2014
论文Network in network (ICLR 2014)是对传统CNN的改进,传统的CNN就交替的卷积层和池化层的叠加,其中卷积层就是把上一层的输出与卷积核(即滤波器)卷积,是线性变换,然后再 ...
- Deep Learning 28:读论文“Multi Column Deep Neural Network for Traffic Sign Classification”-------MCDNN 简单理解
读这篇论文“ Multi Column Deep Neural Network for Traffic Sign Classification”是为了更加理解,论文“Multi-column Deep ...
随机推荐
- idea maven Running C:\Users\Administrator\AppData\Local\Temp\archetype1tmp
Running C:\Users\Administrator\AppData\Local\Temp\archetype1tmp 在IDEA中通过maven项目管理工具创建javaweb项目的时候一直卡 ...
- Linux centos 下安装redis
一.安装编译工具及库文件 yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel 二.选择安装文件 ...
- JavaScript之Date常用知识点
1.new Date(dateStr) :把字符串转换为Date对象 参数: ①dateStr {string} :可转换为Date对象的字符串(可省略时间):字符串的格式主要有两种: 1) yyyy ...
- Java分层架构的使用规则
原文章引用地址:http://blog.csdn.net/ygzk123/article/details/7816511 三层结构的程序不是说把项目分成DAL, BLL, WebUI三个模块就叫三层了 ...
- android 新闻应用、Xposed模块、酷炫的加载动画、下载模块、九宫格控件等源码
Android精选源码 灵活的ShadowView,可替代CardView使用 基于Tesseract-OCR实现自动扫描识别手机号 Android播放界面仿QQ音乐开源音乐播放器 新闻应用项目采用了 ...
- AdminWebSessionManager AdminAuthorizingRealm ShiroConfig ShiroExceptionHandler
package org.linlinjava.litemall.admin.shiro; import com.alibaba.druid.util.StringUtils; import org.a ...
- class.forName() 和 classLoader 的区别
相同点: java中class.forName() 和 classLoader 都可用来对类进行加载 不同店: 1.class.forName()除了将类的 .class ...
- Normally Distributed|
6.1Introducing Normally Distributed Variables Why the word “normal”? Because, in the last half of th ...
- Windows10下Linux系统的安装和使用
WSL 以往我都是直接安装VirtualBox,然后再下载Linux系统的ISO镜像,装到VirtualBox里运行. 改用Win10系统后,了解到了WSL(Windows Subsystem for ...
- mac android sdk manager 无法更新(被墙)
http://www.androiddevtools.cn/ 一句话,相见恨晚!! 想把以前的旧安卓项目拿到MAC上 环境就卡住了,以前的包是4.4的,想试试5.0的,更新不动 Android Too ...