前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ICCV2019 Oral论文:基于图嵌入的深度图匹配(已开源)

ICCV2019 Oral论文:基于图嵌入的深度图匹配(已开源)

作者头像
SIGAI学习与实践平台
发布于 2019-09-17 07:11:47
发布于 2019-09-17 07:11:47
3K0
举报

原创技术文章,第一时间获取



由上海交通大学研究团队独立完成的论文Learning CombinatorialEmbedding Networks for Deep Graph Matching已被ICCV2019会议录用为Oral论文。

这篇论文聚焦于计算机视觉领域一项历久弥新的问题:图匹配问题。在计算机视觉中,图匹配旨在利用图结构信息,寻找物体之间节点与节点的对应关系。已有的研究工作通常从数学优化的角度求解图匹配的数学形式,而忽视了机器学习、尤其是深度学习在图匹配问题上的巨大潜力。作者提出,基于嵌入(embedding)技术的深度学习方法具有高效建模图结构的能力,它能够降低图匹配求解运算的复杂度,同时整个框架能够进行端到端的训练。

论文下载

(https://arxiv.org/abs/1904.00597)

相关代码

(https://github.com/rogerwwww/PCA-GM)。

概述

图 1 论文提出的框架概览

在这篇工作中,通过CNN网络与嵌入网络,作者高效地建模了图像与图结构的相似度信息。作者提出了排列损失函数以替代已有工作中的偏移损失函数,进行端到端的监督训练。通过引入嵌入技术,图匹配求解的复杂度大大降低,原先无法被精确求解的二阶组合优化问题转化为了能够精确求解的一阶问题。在论文中,作者采用了Sinkhorn算法,在精确求解图匹配问题的同时允许梯度回传。这是图嵌入技术被首次用于计算机视觉的图匹配任务中。论文中提出的深度图匹配框架如图 1所示。在实验中,作者提出的PCA-GM算法以15%的相对精度超越了CVPR2018的最佳论文提名Deep Learning of Graph Matching,同时还能够在多个类别之间进行知识迁移。

背景知识

图匹配是计算机视觉和模式识别领域中一项重要的基础性问题。通常,图匹配问题的结果由一个指派矩阵(assignment matrix)X表示,其中指派矩阵的每行、每列有且仅有一个元素为1。为了同时建模图结构之间的相似度,研究者们引入了同时包含一阶和二阶相似度信息的相似度矩阵(affinity matrix)K。相似度矩阵是一个具有高阶复杂度的矩阵,它的对角线元素包含了节点与节点的相似度信息,非对角线元素包含了边与边的相似度信息。基于相似度矩阵K与指派矩阵X,图匹配问题可以被公式化为Lawler形式的二次指派问题(Lawler’s Quadratic Assignment Problem, Lawler’s QAP):

其中,vec(X)代表对矩阵X进行列向量化。公式(1)中,一个列向量的转置乘矩阵乘列向量,其结果是一个数值。直观地看,公式(1)最大化了图匹配对应关系中的一阶相似度和二阶相似度。在数学上,公式(1)是一个NP-难的二次指派问题。一方面,过去的图匹配研究工作主要聚焦于如何快速、精确地求解公式(1)。在这篇工作中,作者引入了深度嵌入技术,将公式(1)中NP-难的二次指派问题转化为可以精确求解的线性指派问题。

另一方面,图匹配面临的问题是如何建模相似度,即如何构建相似度矩阵K。传统的图匹配方法通常采用形如公式(2)的高斯核函数建模边特征fij与fab之间的相似度。

然而,形如公式(2)的固定参数形式并不能适应多样化的输入图像,建模得到的相似度信息并不能准确地反映节点之间的匹配关系。因此,在过去的研究工作中,许多基于机器学习的图匹配方法被提出,利用机器学习方法准确地建模图匹配相似度。特别的,CVPR2018的最佳论文提名Deep Learning of Graph Matching首次将深度学习引入图匹配,其中采用了VGG16网络提取特征、谱方法求解图匹配、像素偏移损失函数用于监督训练(详见公众号对这篇论文的解读:https://mp.weixin.qq.com/s/l1Bc5l5cr3y9jQbh-bEQeQ)。在PCA-GM中,作者采用了同样的VGG16网络结构以进行公平的对比,同时采用了Sinkhorn算法替代谱方法,求解匹配问题。

图内卷积

如图 1所示,在PCA-GM中,输入一对含有关键点的图片,我们使用CNN网络(VGG16)为每个关键点提取一个特征向量。随后,通过德洛内三角化(Delaunay triangulation),我们建立了一对包含图像特征的图结构。通过图嵌入方法,我们能够在节点的特征向量中嵌入图结构信息。

图 2 图内卷积

在模型中,作者采用了图卷积作为图嵌入的方法。作者提出的图内卷积GConv实际上与图卷积网络GCN类似,通过在邻接的节点之间传递特征信息,图内卷积能够在节点的特征向量中嵌入图结构的信息,进而体现图结构的相似度。图内卷积的所有网络参数在所有节点之间共享。基于如图 2所示的图内卷积,作者提出了PIA-GM模型(图 1中蓝色箭头所示)。

跨图卷积

图 3 跨图卷积

基于图内卷积,作者进一步提出了跨图卷积CrossConv的形式。跨图卷积在两个待匹配的图结构之间传递特征,如图 3所示。

在作者提出的跨图卷积算法中,首先输入上一层(k-1层)的特征向量

。随后,第二行中,通过计算两图之间任意两个向量的相似度,构造一个的相似度矩阵

。第三行对相似度矩阵采用Sinkhorn算法,求解得到一个匹配关系

。这是由k-1层网络的特征预测得到的匹配关系。这个预测得到的匹配关系作

为两个图结构之间跨图更新的权重,在上一层特征

中越相似的点对,在跨图更新时具有越高的传播权重。因此,直观地看,跨图卷积层在匹配过程中同时考虑了两个待匹配图结构的信息,在嵌入层中引入了一一对应的匹配约束;与之对比,单纯的图内卷积只考虑了单个图内部的结构信息,没有考虑节点一一对应的匹配约束。通过跨图卷积更新,两图之间原本较为相似的特征会更加相似。基于如图 3所示的跨图卷积,作者在论文中提出了PCA-GM模型(图 1中黄色箭头所示)。

匹配求解

在经过图内和跨图卷积层后,图结构中的每个节点都拥有一个同时包含了图像特征以及图结构特征的嵌入特征向量。通过为任意两个嵌入特征计算相似度,我们即可构建一个相似度矩阵M。在衡量相似度时,作者额外引入了相似度权重矩阵A:

其中τ是调整公式(13)判别能力的超参数,

包含了可学习的相似度权重。需要注意的是,由于作者采用了嵌入技术,将图结构特征嵌入到了节点的特征向量中,因此公式(13)得到的相似度矩阵规模是线性的,其复杂度小于公式(1)中的NP-难问题。实际上,由公式(13)组成的图匹配问题可以被公式化为线性指派问题,可以采用如下介绍的Sinkhorn算法在端到端的框架中精确求解。

在计算得到相似度矩阵后,作者采用了Sinkhorn算法,从相似度矩阵求解匹配结果。Sinkhorn算法是一种迭代算法,它通过将输入的矩阵交替进行行归一化以及列归一化,最终收敛得到一个每行、每列加和均为1的双随机矩阵(doubly stochastic matrix)。Sinkhorn算法如公式(14)(15)所示

由于Sinkhorn算法只包含了乘、除操作,Sinkhorn算法完全可微,能够被用于端到端的深度学习训练中。论文作者借助了PyTorch 的自动微分技术,高效地实现了Sinkhorn算法及其反向传播。

损失函数

在论文中,作者提出了基于交叉熵的损失函数:排列损失函数(Permutation loss)

作为对比,CVPR2018的工作采用了基于像素偏移的损失函数:

在实验中,作者证明,基于交叉熵的排列损失函数能够为模型提供更精确的监督信息。在图 4所示的对比中,排列损失函数的优势被具象地阐述:图 4中,粉红色标注的两个节点(马的左耳)代表真实的匹配关系。右图中,每个节点上方的数字代表模型预测当前节点与左图粉红节点匹配的概率。在这次不理想的预测中,右图中的真值节点(右图中的粉红色节点)只获得了0.05的概率。然而,基于像素偏移的损失函数为这次预测给出了一个相当低的损失值(只有0.070);作为对比,排列损失函数能够给出一个较高的损失值(5.139)。显然,排列损失函数为模型训练提供了更加准确的监督信息。

图 4 排列损失与偏移损失对比

直观来看,在图 4所示的例子中,排列损失函数能够分清马的左、右耳,进而让模型学习其中的结构化差异;与之对比,由于马的左、右耳在空间上离得太近,偏移损失函数并不能够将它们明确地区分,因此不能为训练提供足够的监督信息。从图匹配的数学形式看,作为一个组合优化问题,图匹配问题与图像中关键点实际的像素位置并无紧密联系,采用基于交叉熵的排列损失函数迎合了图匹配作为组合优化问题的本质。

实验结果

在包括了真实图片匹配以及仿真数据集上,作者提出的PCA-GM与PIA-GM均取得了最高的匹配精度,超越了基于传统机器学习的方法以及CVPR2018 Deep Learning of Graph Matching中提出的模型GMN。

仿真数据集:

PascalVOC数据集:

Willow ObjectClass数据集:

作者还通过混淆矩阵(Confusion matrix)的实验,说明了模型在不同类别的物体之间具有泛化能力。实验结果表明,PCA-GM模型学习得到的图结构在相似的类别(例如猫和狗)之间具有很好的泛化性,这说明模型学习到了图结构的相似度,展现了嵌入模型在图相关问题上的巨大潜能。

结论

这篇文章提出了一种基于嵌入方法的深度图匹配算法PCA-GM。PCA-GM提出了基于嵌入的图结构建模以及基于交叉熵的排列损失函数。在仿真数据集以及真实图片数据集上的实验证明了基于嵌入的深度图匹配算法的优越性。这篇文章为图匹配,尤其是深度图匹配研究提供了全新的思路。

PS:好书推荐

《机器学习-原理,算法与应用》,清华大学出版社,雷明著。在这本书中对有监督学习,聚类,降维,半监督学习,强化学习的主要算法进行了细致、深入浅出的推导和证明,参加飞跃计划可以获得本书作者雷明全程指导,还有想参加飞跃计划的同学,可以联系小编SIGAI_NO1。

参考文献

[1] R. Wang, J. Yan and X. Yang. Learning Combinatorial Embedding Networks for Deep Graph Matching. ICCV 2019.

[2] A. Zanfir and C. Sminchisescu. Deep Learning of Graph Matching. CVPR 2018.

本文为SIGAI原创

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SIGAI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
PyQt5 资源文件*
为了解决图标文件(以及帮助文件和其它一些较小的文件)与应用程序目录不匹配 或者 易丢失 的问题,在PyQt中,可以将多个图标文件打包成资源文件,再编译成一个.py 文件以供应用程序调用。步骤如下:
用户6021899
2019/08/14
8970
Pycharm+PyQt5配置GUI开发环境
Qt Creator配置Qt Designer命令配置Qt Designer-Current命令配置PyUIC命令配置PyRcc5命令为什么要使用资源文件?配置PyInstaller命令
星星在线
2019/05/17
3K0
PyQt5 GUI应用程序工具包入门(1)
众所周知,PyQt5是一款优秀的GUI工具集,可用于python界面的快速开发。 本文采用Python3.6+PyCharm社区版进行PyQt5的开发。对于python环境和PyCharm的安装本文不
Python中文社区
2018/02/01
2.3K0
PyQt5 GUI应用程序工具包入门(1)
PyQt5 入门
我的路径是:D:\ProgramData\Anaconda3\envs\cv\Lib\site-packages\qt5_applications\Qt\bin\designer.exe
Michael阿明
2022/05/10
1.5K0
PyQt5 入门
pycharm中pyqt5使用方法_对中仪使用方法视频
PyQt是Python与Qt的融合,做为Python的一个模块使用,有很多工具包。且Qt Designer可以快速的搭建应用程序的前台界面、类似Visual Studio的拖放操作,且可以配合PyCharm使用,让Python的开发效率更上一层楼。
全栈程序员站长
2022/09/27
1.2K0
pycharm中pyqt5使用方法_对中仪使用方法视频
【Pyqt5】进度条QProgressBar的使用/多线程更新/按钮美化/图片编码/开机自启动
诚如标题所见,我在使用Pyqt5进行开发时,先后遇到了上面几个问题。本篇博客就用来记录遇到问题/解决问题的过程,希望能给遇到相同问题的读者一些参考。
zstar
2022/06/14
6K0
【Pyqt5】进度条QProgressBar的使用/多线程更新/按钮美化/图片编码/开机自启动
【说站】python PyQt如何使用资源
Qt库包括Qt资源系统,这是一种方便的增加二进制文件,如图标、图像、翻译文件和其他资源应用程序。
很酷的站长
2022/11/24
3740
小白白也能学会的 PyQt 教程 —— 图像类及图像相关基础类介绍
图,貌似是一个好看的 UI 中必不可少的东西,精美的 UI 中不可避免的会使用一些奇特的各种图像元素来提升用户体验。对于开发者而言,如何在应用程序中有效地显示和处理图像成为一个重要的课题。在Python中,PyQt库是一个强大而灵活的选择,它提供了丰富的图像处理类和功能。
繁依Fanyi
2023/05/20
3.2K0
挑战任务: PyQt5编写GUI界面
前面我们学习的OpenCV内容都是运行在命令行中的,没有界面,所以本次的拓展挑战内容便是:
CodecWang
2021/12/07
2.2K0
挑战任务: PyQt5编写GUI界面
Python高级进阶#016 pyqt5载入图片QPixmap应用
知识回顾: 1.掌握进度条qprogressbar使用 2.学会使用时钟控件qbasictimer 3.学会重写事件timerEvent 本节知识视频教程 以下开始文字讲解: 一、案例:图片的载入与
刘金玉编程
2019/11/06
8K0
python pyqt5 QCliboard剪贴板
clear() setImage() setMimeData() setPixmap() setText() text()
用户5760343
2019/07/05
8330
PyQt5 基本窗口控件(绘图类 / 拖拽 / 剪贴板 / 日历时间 / 菜单、工具、状态栏 / 打印)
learn from 《PyQt5 快速开发与实战》 https://doc.qt.io/qtforpython/index.html https://www.riverbankcomputing.com/static/Docs/PyQt5
Michael阿明
2022/05/10
2K0
PyQt5 基本窗口控件(绘图类 / 拖拽 / 剪贴板 / 日历时间 / 菜单、工具、状态栏 / 打印)
Python 图形界面框架 PyQt5 使用指南!
使用Python开发图形界面的软件其实并不多,相对于GUI界面,可能Web方式的应用更受人欢迎。但对于像我一样对其他编程语言比如C#或WPF并不熟悉的人来说,未必不是一个好的工具。
快学Python
2021/12/13
9.8K0
Python 图形界面框架 PyQt5 使用指南!
PyQt5 文档打印
本篇通过Python3+PyQt5实现《python Qt Gui 快速编程》这本书13章文档打印功能。本文共通过三种方式: 1,使用HTML和QTextDOcument打印文档,最简单 2,使用QTextCusor和QTextDocument打印文档 3,使用QPainter打印文档 使用Qpainter打印文档比QTextDocument需要更复杂的计算,但是QPainter确实能够对输出赋予完全控制。
用户6021899
2019/08/14
1.4K0
目标检测工具安装使用--labelImg
如果想要在深度学习中训练我们自己的模型,就得对图片进行标注。labelImg是一个超级方便的目标检测图片标注工具,打开图片后,只需用鼠标框出图片中的目标,并选择该目标的类别,便可以自动生成voc格式的xml文件。 安装环境 win10 python3.6 下载安装包 github:https://github.com/tzutalin/labelImg [在这里插入图片描述] 百度:https://pan.baidu.com/s/1pZo4Cn2mGPz-Z-zgIMVfaQundefined
陶陶name
2022/05/12
6140
python pyqt5 QFileDialog 常用
getOpenFileName() getSaveFileName() setFileMode() setFilter()
用户5760343
2019/07/05
1.1K0
『PyQt5-基础篇』| 03 基于PyQt5的第一个应用程序简单示例
虫无涯
2023/09/01
5990
【愚公系列】2022年07月 python界面可视化 VS2022配置PyQt5环境
anaconda这是一个非常常用的python包集成管理工具,其中预安装了很多python库,使得我们不需要去手动安装各种的第三方库,我们知道自己取手动安装的过程中,很容易就会遇到一些报错,解决起来也非常的麻烦。
愚公搬代码
2022/09/19
1.7K0
【愚公系列】2022年07月 python界面可视化 VS2022配置PyQt5环境
Python高级进阶教程022期 pyqt5 qtimer实现图片轮播
这里的超时的意思是:超时后,要执行什么代码。在timer中体现为去执行什么槽函数。
刘金玉编程
2019/11/27
1.9K0
Python高级进阶教程022期 pyqt5 qtimer实现图片轮播
推荐阅读
相关推荐
PyQt5 资源文件*
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档