论文阅读笔记《Joint Graph Learning and Matching for Semantic Feature Correspondence》

2023-05-16

核心思想

  本文提出一种联合图学习和图匹配的算法(GLAM),将图的构建和匹配过程整合到一个端到端的注意力网络中。相比于其他启发式的建图方法,如Delaunay三角法、KNN方法或完全图,通过学习构建的图结构能够更加准确的反映关键点之间的语义关系。与SuperGlue和NCTR类似,本文也采用了自注意力层和交叉注意力层进行信息传递和聚合,但做了两个改进:1.将位置特征向量与每个注意力层输出的特征向量相加,来充分利用关键点的位置信息;2. 在交叉注意力层中计算注意力权重时,使用Sinkhorn算子取代了softmax层。这样一来不需要专门的匹配层,最后一个交叉注意力层输出的结果就可以作为一个柔性的匹配关系矩阵。
在这里插入图片描述

实现过程

  首先,利用一个卷积神经网络分别提取两幅图中关键点对应的视觉特征 F A , F B F^A,F^B FA,FB,通过一个多层感知机 ρ \rho ρ提取关键点坐标 P A , P B P^A,P^B PA,PB中包含的位置特征 ρ ( P A ) , ρ ( P B ) \rho(P^A),\rho(P^B) ρ(PA),ρ(PB),将视觉特征和位置特征逐元素相加,得到输入特征 F A = F A + ρ ( P A ) F^A = F^A + \rho(P^A) FA=FA+ρ(PA),图 B B B相同。
  输入的特征将进入注意力层进行信息的传递和聚合,注意力层包含自注意力层和交叉注意力层具体的计算过程不再赘述,大家可以参考这篇博文的介绍。在原有的注意力机制的基础上作者做了两点改进。第一就是将位置特征 ρ ( P A ) , ρ ( P B ) \rho(P^A),\rho(P^B) ρ(PA),ρ(PB)分别加到每个注意力层的输出中,我觉得这一步是有必要的,因为没有预先构建图结构,因此需要借助位置信息来反映了节点之间结构关系,这在许多的图像关键点匹配中都是成立的。第二个改进是在交叉注意力层中使用sinkhorn算子取代了Softmax层来计算注意力权重。具体而言,常用的注意力权重计算方法如下
在这里插入图片描述
而本文采用的是
在这里插入图片描述
其中 s g d sgd sgd表示的是Sigmoid层,目的是将向量归一化到 ( 0 , 1 ) (0,1) (0,1),来满足sinkhorn算子输入的非负性要求。softmax层相当于逐行进行归一化,而Sinkhorn算子是逐行逐列进行归一化。实验表明在源图和目标图中关键点数量一致时,这个方法是有效的,而如果关键点数量不一致,则需要对源图的关键点和目标图的关键对应的注意力权重分别做逐行归一化和逐列归一化。
  由于交叉注意力层的计算中已经使用sinkhorn算子进行归一化处理了,因此不需要专门设计一个匹配网络来进行匹配矩阵计算,只需要利用最后一层交叉注意力层的中间输出值来计算
在这里插入图片描述
N C N_C NC表示交叉注意力层中的头(head)的数量。损失函数方面,作者将匹配问题看作一个二元分类问题,采用加权交叉熵损失函数
在这里插入图片描述
w w w表示权重系数, x g t , x \mathbf{x}^{gt},\mathbf{x} xgtx分别为真实的匹配关系矩阵 X g t \mathbf{X}^{gt} Xgt和预测的匹配关系矩阵 X \mathbf{X} X的向量化表示。

创新点

  • 将位置特征添加到每个注意力层的输出中
  • 在交叉注意力层中使用sinkhorn算子取代了Softmax层来计算注意力权重

算法总结

  本文整体来讲延续了SuperGlue开创的基于注意力机制的图匹配方法,两点改进虽然简单但也是有效的。至于作者提到的图学习和图匹配的结合,其实是隐式地通过注意力机制实现的,节点之间的注意力权重就反映了连接的强度,也就是边的权重,这个在其他基于注意力机制的图匹配方法中其实都是类似的。作者在实验环节,专门展示了通过学习得到关联矩阵和人工标记的关联矩阵非常接近,说明学习得到的图结构能够更加准确的反映节点之间的语义关系。并且使用本文得到的图结构取代其他图匹配的方法中的启发式建图方法,均能有效的提高匹配效果。这说明图结构中所蕴含的归纳偏置信息对于图匹配是至关重要的,构建一个好的图结构能够有效的提高匹配准确性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

论文阅读笔记《Joint Graph Learning and Matching for Semantic Feature Correspondence》 的相关文章

  • 检测图中的所有圆圈

    我有一个存储在 Map 数据结构中的有向图 其中键是节点的 ID value 是key节点所指向的节点的nodeId数组 Map
  • 获取图表中走过的最长路线

    我有一组相互连接的节点 我有以下节点网络 这里0是起点 我想遍历尽可能多的节点 并且一个节点只遍历一次 另外 在从 0 到目标节点的旅程中 我只想有一个奇数编号的节点 如 1 3 5 7 现在我需要找出从起始位置 0 开始可以行驶的最长路线
  • 如何在Python中从邻接列表中选择子矩阵?

    我有一个邻接列表 其中每个数组代表该行的非零列 例如 下面的 adj 列表中的第 0 个数组意味着第 2 列和第 6 列为 1 其他所有列均为 0 adj list 2 6 1 3 24 2 4 3 5 21 4 6 10 1 5 7 6
  • qgraph可以在实际边缘之外渲染边缘标签吗?

    为了便于阅读 我正在尝试在 qgraph 中的实际边缘之外插入边缘标签 我特别不喜欢在标签下方添加白色背景的选项 它会弄乱边缘 根据手册 只能沿线调整边缘标签位置 而不能在侧面调整 以前有人为此苦苦挣扎吗 是否可以规避这个问题 干杯 似乎没
  • 如何将共现矩阵转换为 networkx 图

    我正在使用以下代码将列表列表转换为共现矩阵 lst a b b c d e a d b e u pd get dummies pd DataFrame lst prefix prefix sep groupby level 0 axis 1
  • 投影 - 将 3d 转换为 2d

    我有问题或者很好 我不知道如何将具有 x y z 值的 3d 点转换为 2d 点 我必须绘制投影 其中我确实有点的 x y z 值 但我不知道如何将它们转换为 2d 以便我可以将它们移动到我的轴上 我一直在浏览维基和谷歌 但是我不太确定应该
  • 导出图像格式的访问图表?

    我在 Access 表单中创建了一个图表 并将其以图像格式导出 这很容易完成 但是当我关闭表单时 问题就出现了 它显示了一条弹出消息 对图表对象的操作失败 OLE 服务器可能未注册 要注册 OLE 服务器 请重新安装它 然后我做了一些改变
  • 使用 D3.js SVG 进行 2D 多边形布尔运算

    我有 2 个使用 D3 js 创建的简单面积图 数据和代码如下 让我们称它们为Graph A Graph B 我想用它们根据它们的相交方式创建 3 个新路径 多边形 Path 1 Graph A Graph B Path 2 Graph B
  • ggplot2:将面/条文本分割成两行

    考虑以下带有长面 条带文本的 ggplot2 图 断成两行 该文本超出了专门用于分面标题的区域 library ggplot2 x lt c 1 3 1 3 y lt c 3 1 1 3 grp lt c 0 0 0 1 1 1 p lt
  • NetworkX:翻转图

    有没有办法以相反的顺序生成图形 即我想生成垂直翻转的图形 或者如果我可以在绘制之前用一些 matplotlib 子例程翻转它 F e 我希望 357 和 358 位于顶部 1 6 位于底部 只需交换您的位置坐标即可 import netwo
  • 用于生成交互式图的 Java 库

    我想将我们的 SOA 服务可视化为图表 我们有商业服务和领域服务 gt domain service 1 e g business service 1 gt domain service 2 gt domain service 3 我目前使
  • 如何使用 Chart.js 在堆积条形图中显示内联值?

    我正在使用 Chart js 库在堆叠条形图中显示一些值 但我正在努力找出如何显示条形图中的值 即 现在 我有以下代码 可以在条形顶部显示数字 但我想知道如何在条形内部显示它们 var numberWithCommas function x
  • Java - 哪个是 Graph 的最佳实现结构?

    图很大但是无向 边缘未加权 在我的实现中 我必须找到具有最大度数的顶点并在顶点和边上进行删除 链接列表 数组列表 地图 哪一种更适合我的实施 表示图的两个基本数据结构是 adjacency list the adjacency matrix
  • ZedGraph 垂直线与 LineObj 问题

    我有一个 ZedGraphControl 里面有几条曲线 我想在一些固定的 x 位置添加垂直线 当然 这些线只能位于实际图形区域内 我尝试以下 LineObj line new LineObj Color Black xPos myPane
  • Kamada 和 Kawai 图形布局算法? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有人尝试过 Kamada Kawai 的 88 算法来绘制一般无向图吗 如果是这样 并且您知道其中的任
  • 向图节点添加标签

    我使用 visnetwork 库制作了下图 library tidyverse library igraph set seed 123 n 15 data data frame tibble d paste 1 n relations da
  • 如何显示 matplotlib 饼图中的实际值

    我有一个饼图 绘制从 CSV 文件中提取的值 当前显示值的比例 百分比显示为 autopct 1 1f 有没有办法显示每个切片的数据集中表示的实际值 Pie for Life Expectancy in Boroughs import pa
  • 如果 1 个 Gremlin 查询中不存在顶点和边,则创建

    我找到以下代码来创建边缘 如果它尚不存在 g V hasLabel V1 has userId userId as a V hasLabel V1 has userId userId2 coalesce bothE link where o
  • 图中的后边

    I m having a hard time understanding Tarjan s algorithm for articulation points I m currently following this tutorial he
  • Silverlight 中的图形可视化

    我有一个表示有向图的数据结构 我正在寻找一个好的 Silverlight 可视化 以允许我从一个节点导航到另一个节点 最好带有一些漂亮的动画 有谁知道这种显示有什么好的 UI 控件或框架吗 甚至是来自另一个领域的样本 也许是社交网络 我的图

随机推荐

  • 树莓派3B+ 镜像烧录以及环境设置

    写在前面的话 xff1a 没啥好说的 相关软件下载 xff1a xff08 SD卡格式化工具 win32diskimager Raspbian系统镜像 Xshell ssh工具 xff09 xff09 链接 xff1a https pan
  • 串口调试助手

    一 前言 串口操作流程 xff1a 步骤一 xff1a 设置串口参数 xff0c 如 xff1a 波特率 xff0c 数据位 xff0c 奇偶校验 xff0c 停止位 xff0c 数据流控制等 步骤二 xff1a 选择串口 xff0c 如w
  • 【51单片机】INT0及INT1中断计数

    前言 刚刚本着负责任的心 xff0c 把上次的博客补全 xff08 真的有点长 xff0c 不过都是干货 xff09 xff0c 再回来的时候本次编辑就消失了 xff0c 下次记得保存线上草稿 友情链接 xff1a xff11 51单片机实
  • How To Install and Configure VNC Server on Ubuntu 20.04

    From https tecadmin net install vnc server on ubuntu 20 04 text 61 1 20How 20To 20Install 20and 20Configure 20VNC 20Serv
  • putty+Xming在客户端显示服务器的图形程序界面

    Xming是一个在 Microsoft Windows 操作系统上运行 X Window System 的自由软件 下载地址 xff1a https sourceforge net projects xming Putty的使用方法之前总结
  • C++中的头文件(.h)和源文件(.cpp)都应该写什么?

    头文件 h xff1a 写定义和声明 写类的声明 xff08 包括类里面的成员和方法的声明 xff09 函数原型 define常数等 xff0c 但是一般来说不写具体的实现 注意 xff1a 1 在写头文件的时候需要注意 xff0c 在开头
  • heroku命令整理

    access 管理用户对应用的访问 addons 用于开发 xff0c 扩展和操作您的应用程序的工具和服务 apps 管理应用 auth heroku 认证 authorizations OAuth 认证 buildpacks 管理应用程序
  • 解决com.google.code.kaptcha 从maven中央仓库无法下载的解决方案

    1 首先下载源码包 xff1a http code google com p kaptcha downloads list 2 将解压后的文件中kaptcha version jar kaptcha 3 2 2 jar copy出来放到其他
  • ubuntu16.04创建普通用户、ssh连接

    0 环境 ubuntu16 04 mobaXterm 1 创建用户 创建用户 xff0c 只需要一个命令就可以了 xff1a adduser your username 例子 xff1a adduser yumo passwd your u
  • 【数据清洗】图像数据清洗之---去除相似度高的图像

    目的 xff1a 人工做数据清洗较为麻烦 xff0c 而且费事费力没成绩 xff0c 还拉拽整个项目的后腿 所以这里根据调研情况 xff0c 分析尝试一下 1 调研分析 1 百度EasyData 参考 xff1a 百度大脑自己的csdn说明
  • pip 命令,向指定的python环境中安装包

    在linux中 xff0c 进入anaconda的虚拟环境之后 xff0c 使用pip并不一定会安装在当前环境下 xff08 和windows不太一样 xff09 xff0c 而是安装在该pip对应的python版本里 xff0c pip对
  • 快速区分主键与外键

    主键与外键的区分 主键用来唯一标识一条记录 xff0c 不允许有重复 xff0c 不允许为空 作用 xff1a 用来保证数据的完整性 个数 xff1a only one 外键 xff0c 表的外键是另一个表的主键 xff0c 外键可以有重复
  • module.exports和exports、export和export default、require和import的详解

    一 分类 commonJS xff1a 导出 xff08 module exports和exports xff09 导入 xff08 require xff09 ES6 xff1a 导出 xff08 export和export defaul
  • 如何查看静态编译的依赖(所链接的库)

    如何查看静态编译的依赖 实际上 静态库不存在依赖 依赖是动态编译下被动态链接的库 可以使用ldd查看 静态链接的话 所有需要的静态库会被添加到文件中 库名在连接的过程中会被剥除 如果文件包含debug 信息 可以通过查看符号的方式 对比静态
  • Hadoop URL读取数据

    URL setURLStreamHandlerFactory 每个虚拟机只能调用一次这个方法 xff0c 因此通常在静态中调用这个方法 xff01 这个限制以为着如果程序其他的组件已经声明一个实例 xff0c 则将无法使用这个方法读取 1
  • 【随记】Mac 取消系统更新的红点

    1 打开 系统偏好设置 点击 软件更新 2 取消选择 自动保持我的Mac最新 3 然后点击 高级 按钮 xff0c 取消所有的勾选 4 通过上面步骤设置后 xff0c 发现底部的小红点还在 xff0c 则需打开终端 xff0c 执行如下2段
  • Android InputChannel事件发送接收系统分析

    本文基于Android12 InputChannel表示其他进程通过文件描述符传递输入事件到View的通道 xff0c 因为需要跨进程传输 xff0c 实现了Parcelable序列化接口 xff0c 所以也能够理解Java层的InputC
  • Homestead for Windows

    Homestead Windows Laravel 致力于让整个 PHP 开发体验变得愉快 xff0c 包括你的本地开发环境 Vagrant 提供了一种简单 xff0c 优雅的方式来管理和配置虚拟机 Laravel Homestead 是一
  • 因为你,我愿意

    偶然成就必然 xff0c 纵一现昙花 xff0c 亦可夺人眼眸 顺水推舟好过机缘巧合 xff0c 谨以此献给程序员未来展望 者 题记 每逢六月初 xff0c 总有人会这般调侃自己 就要高考了 xff0c 还没准备好 xff0c 好紧张 xf
  • 论文阅读笔记《Joint Graph Learning and Matching for Semantic Feature Correspondence》

    核心思想 本文提出一种联合图学习和图匹配的算法 xff08 GLAM xff09 xff0c 将图的构建和匹配过程整合到一个端到端的注意力网络中 相比于其他启发式的建图方法 xff0c 如Delaunay三角法 KNN方法或完全图 xff0