Deep Learning of Graph Matching 阅读笔记

CVPR2018的一篇文章,主要提出了一种利用深度神经网络实现端到端图匹配(Graph Matching)的方法. 该篇文章理论性较强,较难读懂。。。

论文链接

介绍这篇文章之前,需要先了解一下什么是图匹配,图匹配是干嘛的。

图匹配

图匹配简单来说就是将已有的两个图中对应的顶点关联起来实现能量函数最大。以多目标跟踪任务来说,每帧图像中的观测都可以构成一个拓扑图,希望将两帧图像中的拓扑图匹配起来以实现同一条轨迹中的观测成功匹配。

Formulation

这里需要说明的是,一般而言两个图之间节点的匹配,直接根据关联矩阵就可以了,比如​ 中分别有​个节点,那么关联矩阵​就决定了节点的匹配结果,但是这样只考虑了两个点之间的相似度而没有考虑更高阶信息。高阶信息,说起来挺玄的,其实就是更全局的信息。比如这里两个点之间是否匹配不仅仅取决这两个点之间的相似度还要考虑这两个点匹配的话对其他匹配的影响,从而选取一种匹配使得总体的能量最大。

举个简单的例子,现在有两个男孩​ 和两个女孩​, 有一个挣钱的工作必须男女搭档完成(一股铜臭味,谁让我掉钱眼里了呢。。。),已知搭档性价比如下:

挣钱(元) A B
a 1000 900
b 800 600

现在让你分组你怎么分?

那么这里是怎么刻画高阶信息的呢?其实是二阶信息。

还以这个例子来说,构建如下的矩阵

  Aa Ab Ba Bb
Aa 1000 0 0 1600
Ab 0 800 1700 0
Ba 0 1700 900 0
Bb 1600 0 0 600

对角线表示两个点匹配的能量,称为边的unary energy, 非对角线表示对应的两个匹配同时成立的能量,比如(Aa, Bb)=1600表示Aa和Bb同时成立,(Aa,Ab)=0是因为A不可能同时分给两个人。

这里公式(1)其实约束有点问题 . 如果​那么约束​不可能同时成立。


在使用深度学习框架学习的时候牵涉到大量的矩阵求导操作,所以论文首先给出了矩阵求导需要使用的公式:

这段话想说啥?无非就是矩阵的复合求导过程。

Deep Network Optimization for Graph Matching 框架

这里我们先来看看框架流程,先别管具体推导过程。首先利用深度学习框架生成每一个顶点的深度特征(Deep Feature Extractor), 然后将这些特征送到Affinity Matrix Layer生成Affinity Matrix, 接着采用幂迭代(Power Iteration)的方法对Affinity Matrix进行分解,再然后通过Bi-Stochastic layer添加 one-to-one约束,最后两层是用于计算网络损失的。

可以参考链接1,看看之前Affinity Matrix是怎么用Power Iteration分解的

可以发现矩阵分解部分就是直接将传统的操作放到了网络里面,所以本文实现的Deep Learning的重点其实是如何用深度网络构建Affinity Matrix。

Deep Network Optimation

OK, 不管愿不愿意,还是介绍到了公式的部分。。。

首当其中的就是Affinity Matrix Layer,直观上我们将顶点组合成edge,再由edge组成pairs然后放到网络里自然可以学到对应的能量,但是这样会导致计算规模太大,而且Affinity Matrix还有对称非负(元素非负)约束等。 而正是由于这些特性,可以将Affinity Matrix ​ 分解成了两个较小部分再进行运算。

那么Affinity Matrix Layer的前向计算过程如下:

Power Iteration Layer

Bi-Stochastic Layer

Loss Layer


Experiments

实验数据集我也不了解,具体就不介绍了,只看一下定性结果吧

Conclusion

We have presented an end-to-end learning framework for graph matching with general applicability to models containing deep feature extraction hierarchies and combinatorial optimization layers. We formulate the problem as a quadratic assignment under unary and pair-wise node relations represented using deep parametric feature hierarchies. All model parameters are trainable and the graph matching optimization is included within the learning formulation. As such, the main challenges are the calculation of backpropagated derivatives through complex matrix layers and the implementation of the entire framework (factorization of the affinity matrix, bi-stochastic layers) in a computationally efficient manner. Our experiments and ablation studies on diverse datasets like PASCAL VOC keypoints, Sintel and CUB show that fully learned graph matching models surpass nearest neighbor counterparts, or approaches that use deep feature hierarchies that were not refined jointly with (and constrained by) the quadratic assignment problem.

网络的计算还是相当耗时的,论文中也给出了一些加速的建议,不过这些加速会影响性能。

  

参考文献

Deep Learning of Graph Matching 阅读笔记的更多相关文章

  1. 《Deep Learning of Graph Matching》论文阅读

    1. 论文概述 论文首次将深度学习同图匹配(Graph matching)结合,设计了end-to-end网络去学习图匹配过程. 1.1 网络学习的目标(输出) 是两个图(Graph)之间的相似度矩阵 ...

  2. Deep Learning深入研究整理学习笔记五

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  3. Deep Learning for NLP学习翻译笔记(2)

    Deep Learning for NLP Deep Learning for NLP Lecture 2:Introduction to Teano enter link description h ...

  4. deep learning深度学习之学习笔记基于吴恩达coursera课程

    feature study within neural network 在regression问题中,根据房子的size, #bedrooms原始特征可能演算出family size(可住家庭大小), ...

  5. 深度学习 Deep Learning UFLDL 最新 Tutorial 学习笔记 1:Linear Regression

    1 前言 Andrew Ng的UFLDL在2014年9月底更新了. 对于開始研究Deep Learning的童鞋们来说这真的是极大的好消息! 新的Tutorial相比旧的Tutorial添加了Conv ...

  6. Deep Learning(深度学习) 学习笔记(四)

    神经概率语言模型,内容分为三块:问题,模型与准则,实验结果.[此节内容未完待续...] 1,语言模型问题 语言模型问题就是给定一个语言词典包括v个单词,对一个字串做出二元推断,推断其是否符合该语言表达 ...

  7. 深度学习 Deep Learning UFLDL 最新Tutorial 学习笔记 5:Softmax Regression

    Softmax Regression Tutorial地址:http://ufldl.stanford.edu/tutorial/supervised/SoftmaxRegression/ 从本节開始 ...

  8. 《Deep Learning》第二章 线性代数 笔记

    第二章 线性代数 2.1 名词 标量(scalar).向量(vector).矩阵(matrix).张量(tensor) 2.2 矩阵和向量相乘 1. 正常矩阵乘法: 2. 向量点积: 3. Hadam ...

  9. 深度学习 Deep Learning UFLDL 最新Tutorial 学习笔记 3:Vectorization

    1 Vectorization 简述 Vectorization 翻译过来就是向量化,各简单的理解就是实现矩阵计算. 为什么MATLAB叫MATLAB?大概就是Matrix Lab,最根本的差别于其它 ...

随机推荐

  1. RocketMQ事务消费和顺序消费详解

    一.RocketMq有3中消息类型 1.普通消费 2. 顺序消费 3.事务消费 顺序消费场景 在网购的时候,我们需要下单,那么下单需要假如有三个顺序,第一.创建订单 ,第二:订单付款,第三:订单完成. ...

  2. seo标题关键字描述字数限制Title,keywords,description长度最长多长 ?

    seo标题关键字描述字数限制 seo优化各个搜索引擎收录Title,keywords,description长度最长多长 ?SEO网站优化中Title标签的作用为重中之重,好的Title也就成功了一半 ...

  3. c++第十六天

    p99~p101: 1.迭代器的指向:容器内的元素或者尾元素的下一位. 2.迭代器与整数相加减返回值为移动了若干位置的迭代器. 3.迭代器间相加减返回值则是类型为 difference_type 的带 ...

  4. MySQL 字符串拼接

    MySQL 字符串拼接 在Mysql 数据库中存在两种字符串连接操作.具体操作如下 1. CONCAT(string1,string2,…)   说明 : string1,string2代表字符串,c ...

  5. [Linux 003]——用户和用户组以及 Linux 权限管理(一)

    嗬!没想到吧!学习 Linux 的第三天,我们已经开始接触用户管理,用户组管理,以及权限管理这几个逼格满满的关键字.这几个关键字对于前端程序猿的我来说真的是很高大上有木有,以前尝试学 Linux 的时 ...

  6. TI 实时操作系统SYS/BIOS使用总结

    1:概述: SYS/BIOS 是一个可扩展的实时的操作系统.具有非常快速的响应时间(在中断和任务切换时达到较短的延迟),响应时间的确定性,强壮的抢占系统,优化的内存分配和堆栈管理(尽量少的消耗和碎片) ...

  7. 关于fragment点击穿透的问题

    当一个activity有多个fragment的时候,点击当前显示的fragment,如果点击处在其他fragment中也有相应的控件,那么可能会点击穿透,有响应另外fragment事件的趋势.但是这个 ...

  8. strerror函数的总结

    定义函数:char * strerror(int errnum); 函数说明:strerror()用来依参数errnum 的错误代码来查询其错误原因的描述字符串, 然后将该字符串指针返回. 返回值:返 ...

  9. windows10下cygwin安装神器apt-cyg

    一.背景 需要在cygwin下安装一些库 二.安装 2.1获取apt-cyg源码 git clone https://github.com/transcode-open/apt-cyg.git 2.2 ...

  10. JavaScript 各种验证收集

    filter或者forEach函数,可能是因为你的浏览器还不够新,暂时不支持新标准的函数,你可以使用如下方式自己定义: if (!Array.prototype.forEach) { Array.pr ...