当前位置: 首页 > news >正文

《论文阅读27》SuperGlue: Learning Feature Matching with Graph Neural Networks

 一、论文

  • 研究领域: 图像特征点匹配
  • 论文:SuperGlue: Learning Feature Matching with Graph Neural Networks
  • CVPR 2020
  • veido
  • 论文code 

二、论文简述

[参考] [参考] [参考] 

 

三、论文详述

SuperGlue:使用图神经网络学习特征匹配

本文介绍了SuperGlue,一种神经网络,通过共同寻找对应点和拒绝不匹配点来匹配两组本地特征。分配估计通过解决一个可微的最优运输问题,其成本预测的图形神经网络。我们引入了一个灵活的上下文聚合机制的基础上的注意力,使SuperGlue的原因有关的基础3D场景和功能分配联合。与传统的手工设计的启发式算法相比,我们的技术通过从图像对进行端到端的训练来学习3D世界的几何变换和规则。SuperGlue优于其他学习方法,并在具有挑战性的真实世界室内和室外环境中的姿态估计任务上取得了最先进的结果。所提出的方法在现代GPU上实时执行匹配,并且可以容易地集成到现代SfM或SLAM系统中

  • Introduction

图像中的点之间的对应关系对于在几何计算机视觉任务(诸如同时定位和映射(SLAM)和运动恢复结构(SfM))中估计3D结构和相机姿态是必不可少的。这种对应性通常通过匹配局部特征来估计,这是一种被称为数据关联的过程。大的视点和光照变化、遮挡、模糊和缺乏纹理是使2D到2D数据关联特别具有挑战性的因素。

在本文中,我们提出了一种新的思维方式的特征匹配问题。本文提出了一种基于SuperGlue神经网络的局部特征匹配算法,该算法不需要学习任务不可知的局部特征,然后通过简单的匹配启发式算法和技巧来完成匹配过程。在SLAM环境中,通常[8]将问题分解为视觉特征提取前端和束调整或姿势估计后端,我们的网络直接位于中间- SuperGlue是一个可学习的中间端(见图1)。

与SuperGlue的特征匹配。我们的方法从现成的局部特征建立逐点对应:它充当手工或学习的前端和后端之间的中间端。SuperGlue使用图形神经网络和注意力来解决分配优化问题,并优雅地处理部分点的可见性和遮挡,从而产生部分分配。

在本文中,学习特征匹配被视为寻找两组局部特征之间的部分分配。通过求解线性分配问题,我们重新审视了经典的基于图的匹配策略,当将线性分配问题放松为最优运输问题时,可以微分地求解线性分配问题。该优化的成本函数由图神经网络(GNN)预测。受Transformer [61]成功的启发,它使用自我(图像内)和交叉(图像间)注意力来利用关键点的空间关系及其视觉外观。该公式强制执行预测的分配结构,同时使成本能够学习复杂的先验知识,优雅地处理遮挡和不可重复的关键点。我们的方法是从图像对中进行端到端的训练--我们从一个大型的带注释数据集中学习姿势估计的先验知识,使SuperGlue能够推理3D场景和分配。我们的工作可应用于各种需要高质量特征对应的多视图几何问题(见图2)。

图2:SuperGlue对应关系。对于这两个具有挑战性的室内图像对,使用SuperGlue进行匹配可以获得准确的姿势,而其他学习或手工制作的方法则会失败(对应关系被极线误差着色)。

我们展示了SuperGlue与手工制作的匹配器和学习的内点分类器相比的优越性。当与SuperPoint [18](一种深度前端)相结合时,SuperGlue推进了室内和室外姿势估计任务的最新技术,并为端到端深度SLAM铺平了道路。

  • Related work

局部特征匹配通常通过以下步骤来执行:

i)检测兴趣点,

i)计算视觉描述符,

iii)将这些与最近邻(NN)搜索进行匹配,

iv)过滤不正确的匹配,

最后v)估计几何变换。

21世纪初开发的经典管道通常基于SIFT [31],过滤器匹配Lowe比率测试[31],相互检查和启发式方法,如邻域共识[59,10,6,49],并使用RANSAC [21,43]等鲁棒求解器找到变换。

最近的深度学习匹配工作通常集中在使用卷积神经网络(CNN)从数据中学习更好的稀疏检测器和局部描述符[18,19,37,45,69]。为了提高它们的区分度,一些作品使用区域特征[32]或对数极坐标补丁[20]明确地查看更广泛的背景。其他方法通过将其分类为内点和离群点来学习过滤匹配[33,44,7,71]。这些操作仍然通过NN搜索估计的匹配集,因此忽略分配结构并丢弃视觉信息到目前为止,学习执行匹配的作品集中在密集匹配[46]或3D点云[65]上,并且仍然表现出相同的限制。相比之下,我们的可学习的中间端同时执行上下文聚合,匹配和过滤在一个单一的端到端架构。

图匹配问题通常被公式化为二次分配问题,其是NP难的,需要昂贵、复杂并且因此不切实际的求解器[30]。对于局部特征,2000年代的计算机视觉文献[5,27,57]使用了许多启发式的手工成本,使其变得复杂和脆弱。Caetano等人[9]学习更简单的线性分配的优化成本,但只使用浅层模型,而我们的SuperGlue使用深度神经网络学习灵活的成本。与图匹配相关的是最优运输问题[63] -它是一个广义线性分配,具有有效而简单的近似解,即Sinkhorn算法[55,12,39]。

点云等集合的深度学习旨在通过聚合元素之间的信息来设计置换等不变函数。一些作品通过全局池化[70,40,15]或实例归一化[60,33,32]平等地对待所有元素,而其他作品则专注于坐标或特征空间中的局部邻域[41,66]。Attention [61,64,62,26]可以通过关注特定的元素和属性来执行全局和数据相关的局部聚合,因此更加灵活。通过观察到自我注意力可以被视为完整图上的消息传递图神经网络[23,4]的实例,我们将注意力应用于具有多种类型边缘的图,类似于[28,72],并使SuperGlue能够学习关于两组局部特征的复杂推理。

  • The SuperGlue Architecture

动机:在图像匹配问题中,可以利用世界的一些规律:3D世界在很大程度上是平滑的,有时是平面的,如果场景是静态的,则给定图像对的所有对应关系都从单个对极变换导出,并且一些姿势比其他姿势更可能。此外,2D关键点通常是突出的3D点的投影,如角点或斑点,因此图像之间的对应关系必须遵守某些物理约束:

i)关键点可以在另一图像中具有至多单个对应关系

ii)由于检测器的遮挡和故障,一些关键点将不匹配。用于特征匹配的有效模型应旨在找到相同3D点的重投影之间的所有对应关系,并识别没有匹配的关键点。

我们将SuperGlue(见图3)表述为解决一个优化问题,其成本由深度神经网络预测。这减轻了对领域专业知识和启发式的需求-我们直接从数据中学习相关的先验知识。

 在线性规划问题中,可能会有以下形式的约束条件:

1. Ax ≤ b(不等式约束)
2. Ax = b(相等约束)

其中
- A 是代表约束条件的系数矩阵。
- x 是决策变量向量。
- b 是右侧的常量向量。


假设有一个相等约束 引入松弛变量 s 将其转换为不等式约束: Ax + s = b,其中 s 为非负。

松弛变量 s 的作用是衡量在满足相等约束条件时有多少 "松弛 "或剩余。

如果 s 为零,表示完全满足相等约束条件。

如果 s 为正数,则表示平等约束条件没有得到充分利用,还存在一定的松弛。

如果 s 为负数,则表示违反了相等约束条件。

加入松弛变量后,线性规划求解器就能处理不等式,并找到尽可能满足相等约束条件的解决方案,即使这些约束条件因其他约束条件而无法完全满足。

总之,引入松弛变量是为了将相等约束条件转化为不等式约束条件,同时确保非负性,这样就可以使用不等式约束问题的标准技术来求解线性规划问题。

相关文章:

《论文阅读27》SuperGlue: Learning Feature Matching with Graph Neural Networks

一、论文 研究领域: 图像特征点匹配论文:SuperGlue: Learning Feature Matching with Graph Neural NetworksCVPR 2020veido论文code 二、论文简述 [参考] [参考] [参考] 三、论文详述 SuperGlue:使用图神经网络学习特征匹配 本文介绍了…...

远程计算机或设备不接受连接解决方法

远程计算机或设备不接受连接解决方法 点击左下角开始,点击运行,输入inetcpl.cpl,点击确定,打开Internet选项。 将三个框的勾勾去掉,即为不选中状态,点击确定。 当你的电脑浏览器不能正常上网时&#xff…...

基于Python实现的快递管理系统源码+数据库,采用PyQt6实现GUI界面

快递管理系统 完整代码下载地址:快递管理系统 介绍 通过对传统的快递收发流程进行分析,完成网上快递管理系统的分析设计与开发,使客户能方便在网站上查询自己的快件信息以及网上寄件,同时管理员又能对每天的收到快件进行登记和…...

如何使用docker快速部署MinDoc文档系统

MinDoc是非常优秀的知识分享系统,但是很多刚接触的人会一脸懵逼,而且官方文档写的也并不清晰,所以和大家分享一下快速部署MinDoc的方法。 首先docker环境先自行安装好,这里不再赘述。 拉取docker镜像: docker pull …...

9月25日,每日信息差

今天是2023年9月27日,以下是为您准备的18条信息差 第一、苹果向法国监管机构提交iPhone 12软件更新,解决辐射超标问题 第二、“双节”期间,北京全市预计接待游客1283万人次,中秋国庆“双节”长假将至,北京市民和游客…...

【网络协议】Https

HTTP 协议内容都是按照⽂本的⽅式明⽂传输的,这就可能导致在传输过程中出现⼀些被篡改的情况。所以在HTTP协议的基础上,引入加密层,形成了HTTPS协议。 HTTPS 协议是由 HTTP 加上 TLS/SSL 协议构建的可进行加密传输、身份认证的网络协议,主要…...

Lostash同步Mysql数据到Elasticsearch(三)Elasticsearch模板与索引设置

logstash数据同步ES相关 同步数据时,Elasticsearch配合脚本的相关处理设置 1.模板创建更新 在kibana中执行,或者直接给ES发送请求,你懂得,不懂得百度下ES创建template PUT /_template/test-xxx {"template": "…...

python——ptp()函数

函数功能:求最大值和最小值的差值 def ptp(a, axisNone, outNone):"""沿轴的值范围(最大值-最小值)。该函数的名称来自“peak-to-peak”的首字母缩写。参数----------a:array_like输入值。axis:int,可选找到山峰的…...

SpringBoot之异常处理

文章目录 前言一、默认规则二、定制异常处理处理自定义错误页面ControllerAdviceExceptionHandler处理全局异常ResponseStatus自定义异常自定义实现 HandlerExceptionResolver 处理异常 三、异常处理自动配置原理四、异常处理流程总结 前言 包含SpringBoot默认处理规则、如何定…...

Flask-[实现websocket]-(2): flask-socketio文档学习

一、简单项目的构建 flask_websocket |---static |---js |---jquery-3.7.0.min.js |---socket.io_4.3.1.js |---templates |---home |---group_chat.html |---index.html |---app.py 1.1、python环境 python3.9.0 1.2、依赖包 Flask2.1.0 eventlet0.33.3 #使用这个性能会…...

网页中使用的图片格式

网页中使用的图片格式有以下几种,各有优缺点: JPEG:适用于照片或彩色图像,支持16.7万种颜色,有损压缩,可以调节压缩比和质量,文件较小,加载较快PNG:适用于图标或透明图像…...

【android】如何设置LD_LIBRARY_PATH?

目录 一 配置方法 1 进入Android shell 2 使用export命令 3 使用echo命令查看变量是否设置成功 二 扩展 1 LD_LIBRARY_PATH设置多个路径 2 push文件 一 配置方法 android中配置LD_LIBRARY_PATH的方法具体为: 1 进入Android shell adb shell 2 使用export…...

【hadoop3.x】一 搭建集群调优

一、基础环境安装 https://blog.csdn.net/fen_dou_shao_nian/article/details/120945221 二、hadoop运行环境搭建 2.1 模板虚拟机环境准备 0)安装模板虚拟机,IP 地址 192.168.10.100、主机名称 hadoop100、内存 4G、硬盘 50G 1)hadoop100…...

linux使用操作[2]

文章目录 版权声明网络传输ping命令wget命令curl命令端口linux端口端口命令和工具 进程管理查看进程关闭进程 主机状态top命令内容详解磁盘信息监控 版权声明 本博客的内容基于我个人学习黑马程序员课程的学习笔记整理而成。我特此声明,所有版权属于黑马程序员或相…...

华南理工大学电子与信息学院23年预推免复试面试经验贴

运气较好,复试分数90.24,电科学硕分数线84、信通83、专硕电子与信息74. 面试流程: 1:5min ppt的介绍。其中前2min用英语简要介绍基本信息,后3min可用英语也可用中文 介绍具体项目信息如大创、科研、竞赛等&#xff08…...

Linux网络编程- ether_header iphdr tcphdr

struct ether_header struct ether_header 是一个数据结构&#xff0c;用于表示以太网&#xff08;Ethernet&#xff09;帧的头部。这个结构体在 <netinet/if_ether.h> 头文件中定义。当你处理或分析以太网帧时&#xff0c;可以使用这个结构体来访问和解读 Ethernet 头部…...

wpf中的StaticResource和DynamicResource

不同点一&#xff1a;StaticResource是程序载入时对资源的一次性使用&#xff0c;之后就不在访问了 DynamicResouce则是程序运行过程中回去访问资源 样例&#xff1a;在xaml中定义好的资源 <Window.Resources><SolidColorBrush x:Key"borderRed" Color"…...

数据结构与算法基础-(3)

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…...

maven中relativepath标签的含义

一 relative标签的含义 1.1 作用 这个<parent>下面的<relativePath>属性&#xff1a;parent的pom文件的路径。 relativePath 的作用是为了找到父级工程的pom.xml;因为子工程需要继承父工程的pom.xml文件中的内容。然后relativePath 标签内的值使用相对路径定位…...

Greenplum 对比 Hadoop

Greenplum属于MPP架构&#xff0c;和Hadoop一样都是为了解决大规模数据的并行计算而出现的技术&#xff0c;两者的相似点在于&#xff1a; 分布式存储&#xff0c;数据分布在多个节点服务器上分布式并行计算框架支持横向扩展来提高整体的计算能力和存储容量都支持X86开放集群架…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能

1. 开发环境准备 ​​安装DevEco Studio 3.1​​&#xff1a; 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK ​​项目配置​​&#xff1a; // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效&#xff0c;稳定&#xff0c;易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

给网站添加live2d看板娘

给网站添加live2d看板娘 参考文献&#xff1a; stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下&#xff0c;文章也主…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing

Muffin 论文 现有方法 CRADLE 和 LEMON&#xff0c;依赖模型推理阶段输出进行差分测试&#xff0c;但在训练阶段是不可行的&#xff0c;因为训练阶段直到最后才有固定输出&#xff0c;中间过程是不断变化的。API 库覆盖低&#xff0c;因为各个 API 都是在各种具体场景下使用。…...

前端中slice和splic的区别

1. slice slice 用于从数组中提取一部分元素&#xff0c;返回一个新的数组。 特点&#xff1a; 不修改原数组&#xff1a;slice 不会改变原数组&#xff0c;而是返回一个新的数组。提取数组的部分&#xff1a;slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...

论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving

地址&#xff1a;LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂&#xff0c;正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...

用鸿蒙HarmonyOS5实现中国象棋小游戏的过程

下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...

Unity中的transform.up

2025年6月8日&#xff0c;周日下午 在Unity中&#xff0c;transform.up是Transform组件的一个属性&#xff0c;表示游戏对象在世界空间中的“上”方向&#xff08;Y轴正方向&#xff09;&#xff0c;且会随对象旋转动态变化。以下是关键点解析&#xff1a; 基本定义 transfor…...