《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 ...
随机推荐
- 记录几个windows常用的快捷键和命令
1.打开文件夹 win+E 2.关闭当前窗口 ctrl+w 3.切换窗口 alt+tab 4.输入命令窗口 win+r 5.注册表的快捷键 regedit 6.打开远程 mstsc 7.命令设置开机启 ...
- 面试常见二叉树算法题集锦-Java实现
1.求二叉树的深度或者说最大深度 /* ***1.求二叉树的深度或者说最大深度 */ public static int maxDepth(TreeNode root){ if(root==null) ...
- kubectl 命令详解
使用kubectl来管理Kubernetes集群. kubectl命令的选项: 选项 作用 --alsologtostderr[=false] 同时输出日志到标准错误控制台和文件 --api-vers ...
- WOW.js——在页面滚动时展现动感的元素动画效果
插件描述:WOW.js 是一款可以实现滚动页面时触发CSS 动画效果的插件,动态效果可以使网站显示更有动感. 当页面在向下滚动的时候,使用WOW.js可以让页面元素产生细小的动画效果,从而引起浏览者注 ...
- VBA/VB6/VBS/VB.NET/C#/Python/PowerShell都能调用的API封装库
API函数很强大,但是声明的时候比较繁琐. 我开发的封装库,包括窗口.键盘.鼠标.消息等常用功能.用户不需要添加API函数的声明,就可以用到API的功能. 在VBA.VB6的引用对话框中引用API.t ...
- 聊聊HTTPS和SSL/TLS协议 【基础入门】
要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识.1. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义2. 大致了解 HTTP 和 TCP 的关系(尤其是“短连接”VS“长连接 ...
- 《C 程序设计语言》练习1-3
#include<stdio.h> /*当fahr=0,20,...,300时,打印华氏温度与摄氏温度对照表; 浮点数版本*/ main () { float fahr,celsius; ...
- Mac环境下安装Redis
转自:http://www.jianshu.com/p/6b5eca8d908b -安装 下载安装包 redis-3.0.7.tar.gz 官网地址:http://redis.io/download ...
- linux下的时区修改
Centos 7时区问题: 通常使用tzselect命令选择时区,今天在修改centos7的时区的时候,修改完以后时区还是没有发生变化,重启也是没有用的:通过网络的帮助了解到,在Centos和ubun ...
- open()操作文件
open()函数用来读取.写文件 参数解释: r:只读 w:只写,此时进行读,会报错 a:只追加 r+:可读可写 w+:可读可写 a+:可读可写 rb\rb+\wb\wb+\ab\ab+ 针对二进制文 ...