《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 ...
随机推荐
- Django数据迁移时提示 ModuleNotFoundError: No module named 'users'
执行数据迁移时提示找不到对应的APP,错误如下: 这个错误主要是路径找不到引起的,只需在settings文件夹中添加app文件路径即可 sys.path.insert(0, os.path.join( ...
- Super Mario HDU - 4417 (主席树询问区间比k小的个数)
Mario is world-famous plumber. His “burly” figure and amazing jumping ability reminded in our memory ...
- Cf D. Nauuo and Circle
https://codeforces.com/contest/1173/problem/D 题意: 给出你一个包含 n 个点的树,这 n 个点编号为 1~n: 给出一个圆,圆上放置 n 个位置,第 i ...
- webapck imports-loader和exports-loader的使用
webapck imports-loader和exports-loader的使用
- SpringBoot 将自制的Starter 发布到远程公服
上一篇文章:就是简单的介绍了如何自己制作一个starter ,由于上篇文章只是我个人的笔记,就是将其中重要的部分写出来了,少了其他的基础步骤,但是这个我自己就能看懂,也算不上是一篇好的博客,只能算是笔 ...
- Linux下安装mysql(yun方式)
1.进入下载好的mysql版本 cd /usr/local/mysql 2.解压安装包 tar -xzvf mysql-5.7.11.tar.gz 3.改名 直接改或者 mv 文件名 要改的文件名m ...
- HotSpot Java对象创建,内存布局以及访问方式
内存中对象的创建.对象的结构以及访问方式. 一.对象的创建 在语言层面上,对象的创建只不过是一个new关键字而已,那么在虚拟机中又是一个怎样的过程呢? (一)判断类是否加载.虚拟机遇到一条new指令的 ...
- scala编程(四)——类和对象
类,字段和方法 在scala里定义一个典型的类,代码如下: class ChecksumAccumulator { private var sum = 0 def add(b: Byte): Uni ...
- Python使用pycharm导入pymysql(MySQL)或pymssql(SQLServer)
file->setting->project->project interperter,双击右侧出现的pip,弹出安装包,搜索pymysql->选择第一个->Instal ...
- CSS性能优化探讨
大部分前端开发人员都不关心CSS性能优化,其实对于一个复杂的页面来说,高效的选择器还是可以带来一定的性能提升的. 1. CSS 选择器 浏览器是“从右往左”来分析 class 的,它的匹配规则是从右向 ...