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维数,所以应该是第二张图的个点的物理位置。
有做图匹配的同学欢迎交流!!