摘要

本文提出了 SuperGlue,一种神经网络,用于通过联合寻找对应关系并排除不可匹配点来匹配两组局部特征。匹配结果通过求解一个可微的最优传输问题来估计,该问题的代价由一个图神经网络预测。我们引入了一种基于注意力的灵活上下文聚合机制,使 SuperGlue 能够联合推理底层三维场景和特征匹配关系。相比传统手工设计的启发式方法,我们的方法通过图像对的端到端训练,学习几何变换的先验和三维世界的结构规律。SuperGlue 超越了其他学习方法,在具有挑战性的真实室内和室外环境中的位姿估计任务上达到了最先进的效果。该方法在现代 GPU 上可实现实时匹配,并可方便地集成到现代的 SfM 或 SLAM 系统中。代码与训练权重已在 github.com/magicleap/SuperGluePretrainedNetwork 公开提供。

1. 引言

图像间点的对应关系对于在几何计算机视觉任务中估计三维结构和相机位姿至关重要,如同时定位与建图(SLAM)和运动结构恢复(SfM)。这些对应关系通常通过匹配局部特征来估计,这一过程称为数据关联。视角和光照的大幅变化、遮挡、模糊以及纹理缺失是导致二维到二维数据关联特别具有挑战性的因素。

在本文中,我们提出了一种关于特征匹配问题的新思路。与其学习更好的通用局部特征并结合简单的匹配启发式方法与技巧,不如从已有局部特征中直接学习匹配过程。为此,我们设计了一种新颖的神经网络架构——SuperGlue。在 SLAM 的语境下,该任务通常[8]被分解为视觉特征提取前端与束调整或位姿估计后端,而我们的网络正处于这两者之间——SuperGlue 是一个可学习的 middle-end(见图1)。
在这里插入图片描述

在本工作中,特征匹配的学习被视为在两组局部特征之间寻找部分匹配关系。我们重新审视了经典的基于图的方法,通过求解一个线性分配问题来实现匹配,而当该问题被松弛为最优传输问题时,可以以可微的方式进行求解。该优化问题的代价函数由一个图神经网络(GNN)预测。受 Transformer [61] 成功的启发,GNN 使用了自注意力(图像内)和交叉注意力(图像间)机制,从而利用关键点之间的空间关系及其视觉外观。这种表述形式既强制了预测结果的匹配结构,又使得代价函数能够学习复杂的先验,有效处理遮挡和不可复现的关键点。我们的方法通过图像对进行端到端训练——我们从一个大规模标注数据集中学习位姿估计的先验,从而使 SuperGlue 能够联合推理三维场景与匹配关系。我们的工作可以应用于各种需要高质量特征对应关系的多视角几何问题中(见图2)。
在这里插入图片描述

我们展示了 SuperGlue 相较于手工设计的匹配器以及学习型内点分类器的优越性。当与深度特征提取前端 SuperPoint [18] 结合使用时,SuperGlue 在室内和室外位姿估计任务上推动了当前技术的最前沿,并为实现端到端的深度 SLAM 奠定了基础。

2. 相关工作

局部特征匹配通常包括以下几个步骤:i)检测兴趣点,ii)计算视觉描述子,iii)通过最近邻(Nearest Neighbor, NN)搜索进行匹配,iv)过滤错误匹配,最后 v)估计几何变换。2000 年代发展的经典流水线往往基于 SIFT [31],使用 Lowe 的比值测试(ratio test)[31]、互查(mutual check)以及如邻域一致性(neighborhood consensus)[59, 10, 6, 49] 等启发式方法过滤匹配,然后使用如 RANSAC [21, 43] 等鲁棒求解器估计变换。

近年来,深度学习在特征匹配方面的研究主要集中于使用卷积神经网络(CNN)从数据中学习更好的稀疏检测器和局部描述子 [18, 19, 37, 45, 69]。为了提升判别能力,一些工作显式地利用更广的上下文信息,例如区域特征 [32] 或对数极坐标图像块(log-polar patches)[20]。也有一些方法学习如何通过将匹配分类为内点和外点来进行过滤 [33, 44, 7, 71]。这些方法虽然对匹配集合进行操作,但仍是基于最近邻搜索,因而忽略了匹配分配结构,并丢弃了视觉信息。已有尝试学习匹配的工作多聚焦于稠密匹配 [46] 或 3D 点云 [65],但仍存在相同的局限性。相比之下,我们提出的可学习中端(middle-end)方法在一个端到端架构中同时实现上下文聚合、匹配以及过滤。

图匹配问题通常被表述为二次分配问题(Quadratic Assignment Problems),这是一个 NP-困难问题,求解代价高昂、复杂,因而在实际中难以应用 [30]。对于局部特征,2000 年代的计算机视觉文献 [5, 27, 57] 使用了大量启发式规则手工设计匹配代价函数,使得整体方法既复杂又脆弱。Caetano 等人 [9] 针对更简单的线性分配问题学习优化代价,但其模型较浅。而我们提出的 SuperGlue 则利用深度神经网络学习一个灵活的代价函数。

与图匹配相关的问题是最优传输(Optimal Transport)[63],它是一种广义的线性分配问题,可以通过一种高效而简洁的近似解法——Sinkhorn 算法 [55, 12, 39] 来求解。

面向点云等集合的深度学习方法,通常致力于设计排列等变(permutation equivariant)或不变(permutation invariant)的函数,通过聚合集合中元素的信息来实现。一些方法对所有元素一视同仁,例如使用全局池化 [70, 40, 15] 或实例归一化 [60, 33, 32];另一些方法则关注于坐标或特征空间中的局部邻域 [41, 66]。

注意力机制(Attention)[61, 64, 62, 26] 可以实现全局以及数据相关的局部信息聚合,通过聚焦于特定元素和属性,从而更加灵活。值得注意的是,自注意力机制可以被视为一种在完全图上的消息传递图神经网络(Message Passing Graph Neural Network)[23, 4] 的实例。因此,我们将注意力机制应用于具有多种边类型的图结构,类似于 [28, 72],使得 SuperGlue 能够学习两个局部特征集合之间的复杂关系推理。

3. SuperGlue 架构

动机:在图像匹配问题中,我们可以利用一些现实世界中的规律:三维世界通常是平滑的,有时是平面的;如果场景是静态的,对于某一图像对,所有的匹配点应遵循一个单一的极几何变换(epipolar transform);此外,一些相机位姿的组合更可能出现。同时,二维关键点往往是显著三维点(如角点或斑点)的投影,因此图像之间的关键点对应关系必须满足某些物理约束:

i)一个关键点在另一张图像中最多只能有一个对应点;

ii)由于遮挡或检测器失败,有些关键点不会有匹配。

一个有效的特征匹配模型应能够识别所有源于同一三维点的重投影之间的匹配关系,并识别出无法匹配的关键点。

我们将 SuperGlue(见图 3)建模为一个优化问题,其代价函数由一个深度神经网络预测。这种做法无需依赖领域知识或手工启发式规则,而是通过数据学习有用的先验信息。

形式化描述:考虑两张图像 A 和 B,每张图像都有一组关键点位置 p p p 和对应的视觉描述符 d d d —— 我们将二者合称为“局部特征”(local features)。位置 p p p 包括图像中的 x x x y y y 坐标以及一个检测置信度 c c c,即 p i : = ( x , y , c ) i p_i := (x, y, c)_i pi:=(x,y,c)i。视觉描述符 d i ∈ R D d_i \in \mathbb{R}^D diRD 可以来自像 SuperPoint 这样的卷积神经网络,也可以是传统描述符如 SIFT。图像 A 和 B 分别有 M M M N N N 个局部特征,索引集合分别为 A : = { 1 , . . . , M } \boldsymbol { A } : = \left\{ 1 , . . . , M \right\} A:={1,...,M} B : = { 1 , . . . , N } \boldsymbol { B } : = \left\{ 1 , . . . ,N \right\} B:={1,...,N}

在这里插入图片描述

部分分配(Partial Assignment): 约束 i)和 ii)意味着对应关系来自于两个关键点集合之间的一个部分分配(partial assignment)。为了便于集成到下游任务中以及提升可解释性,我们希望每一个可能的匹配都具有一个置信度值。因此,我们定义一个部分软分配矩阵 P ∈ [ 0 , 1 ] M × N P \in [0, 1]^{M \times N} P[0,1]M×N
P 1 N ≤ 1 M a n d P ⊤ 1 M ≤ 1 N ( 1 ) \mathbf { P 1 } _ { N } \leq \mathbf { 1 } _ { M } \quad \mathrm { a n d } \quad \mathbf { P } ^ { \top } \mathbf { 1 } _ { M } \leq \mathbf { 1 } _ { N }\quad(1) P1N1MandP1M1N(1)
我们的目标是设计一个神经网络,用于从两个局部特征集合中预测分配矩阵 P P P

3.1. 注意力图神经网络

除了关键点的位置和视觉外观之外,整合其他上下文信息直观上可以增强其区分度。例如,我们可以考虑关键点与其他可见关键点之间的空间和视觉关系,比如显著关键点[32]、自相似关键点[54]、统计共现关键点[73]或邻近关键点[58]。另一方面,第二张图像中关键点的信息可以通过比较候选匹配点,或基于全局且无歧义的线索估计相对的光度或几何变换,帮助解决歧义。

当人类被要求匹配一个模糊的关键点时,会来回观察两张图像:筛选候选匹配点,仔细检查每一个,并寻找帮助区分真实匹配与其他自相似点的上下文线索[11]。这暗示了一个迭代过程,能够将注意力集中在特定位置。

因此,我们设计了 SuperGlue 的第一个主要模块——注意力图神经网络(见图3)。给定初始的局部特征,该模块通过让特征之间相互通信,计算匹配描述符 f i ∈ R D f_i \in \mathbb{R}^D fiRD。正如我们将展示的,图像内及跨图像的长距离特征聚合对稳健匹配至关重要。

关键点编码器:每个关键点 ii 的初始表示 ( 0 ) x i { \bf \ } ^ { ( 0 ) } { \bf x } _ { i }  (0)xi结合了其视觉外观和位置信息。我们通过一个多层感知机(MLP)将关键点的位置嵌入到高维向量中,具体表示为:
( 0 ) x i = d i + M L P e n c ( p i ) ( 2 ) { ^ { ( 0 ) } } { \bf x } _ { i } = { \bf d } _ { i } + { \bf M } { \bf L } { \bf P } _ { \mathrm { e n c } } \left( { \bf p } _ { i } \right)\quad(2) (0)xi=di+MLPenc(pi)(2)
该编码器使得图神经网络能够在后续阶段同时考虑外观和位置信息,特别是在结合注意力机制时,这相当于语言处理领域广泛使用的“位置编码器”的一种实现方式[22, 61]。

多层图神经网络(Multiplex Graph Neural Network):我们考虑一个完整的图,其节点是两幅图像中的关键点。该图包含两种无向边——这是一个多层(multiplex)图[34, 36]。图像内部的边,称为自边(self edges) E self E_{\text{self}} Eself,连接同一图像中所有关键点之间的边。图像之间的边,称为交叉边(cross edges) E cross E_{\text{cross}} Ecross,连接一幅图中的关键点与另一幅图中所有关键点。我们采用消息传递的形式[23, 4],沿着这两类边传播信息。得到的多层图神经网络对每个节点维持一个高维状态,并在每一层计算通过对所有边的消息进行聚合后更新的表示。

阅读全文请访问"AI深语解构" SuperGlue:使用图神经网络学习特征匹配

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/87115.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/87115.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/87115.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ssh -T git@github.com失败后解决方案

这个错误表示你的 SSH 连接无法到达 GitHub 服务器。以下是详细解决方案,按照优先级排序: 首选解决方案:使用 SSH over HTTPS(端口 443) 这是最有效的解决方案,因为许多网络会阻止 22 端口: …

从苹果事件看 ARM PC市场的未来走向

最近,苹果宣布部分搭载 Intel 处理器的 Mac 不再支持最新的 macOS 系统更新,这一消息犹如一颗石子投入平静湖面,激起层层涟漪。它不仅让 Intel 芯片在 Mac 产品线上彻底成为历史,也促使我们重新审视 PC 行业的发展脉络&#xff0c…

vue + element ui 实现超出宽度展示..,鼠标移入显示完整内容

vue element ui 实现超出宽度展示…&#xff0c;鼠标移入显示完整内容 代码理念&#xff1a; 当高度大于对应行数的高度 则说明需要展示"…" 子组件 <template><div class"tooltip"><div ref"tooltipRef" :class"[tooltip…

HarmonyOSNext应用无响应全解析:从机制到实战的卡死问题排查

HarmonyOSNext应用无响应全解析&#xff1a;从机制到实战的卡死问题排查 ##Harmony OS Next ##Ark Ts ##教育 本文适用于教育科普行业进行学习&#xff0c;有错误之处请指出我会修改。 喂喂喂&#xff01;应用卡成PPT了&#xff1f;点啥都没反应&#xff1f;别慌&#xff01…

git 迁移之获取原库所有分支

以下是一个安全的 Bash 脚本&#xff0c;用于将远程 Git 仓库的所有分支检出到本地&#xff08;自动跳过已存在的分支&#xff09;&#xff1a; #!/bin/bash# 获取所有远程分支&#xff08;排除 HEAD&#xff09; remote_branches$(git branch -r | grep -v HEAD\|->)# 循环…

设计模式 | 适配器模式

适配器模式&#xff08;Adapter Pattern&#xff09; 是结构型设计模式中的连接器大师&#xff0c;它允许不兼容接口的类能够协同工作。本文将深入探索适配器模式的核心思想、实现技巧以及在C中的高效实践&#xff0c;解决现实开发中的接口兼容性问题。 为什么需要适配器模式 …

RTL 级机器人电机控制器的 FPGA 设计

借助Verilog&#xff0c;在FPGA中实现了带编码器的两台电机的电机控制系统的RTL级设计。 介绍 借助硬件描述语言 (HDL) Verilog 和 AMD Vivado 设计套件&#xff0c;在 AMD Spartan-7 FPGA 中实现带编码器的两个电机的控制器系统的 RTL 设计。 在这个项目中&#xff0c;使用了搭…

4_Flink CEP

Flink CEP 1、何为CEP&#xff1f; CEP&#xff0c;全称为复杂事件处理&#xff08;Complex Event Processing&#xff09;&#xff0c;是一种用于实时监测和分析数据流的技术。 CEP详细讲解&#xff1a; CEP是基于动态环境的事件流的分析技术&#xff0c;事件是状态变化&am…

容器基础知识2-K8s 和 Docker 的关系与管理逻辑详解

K8s 和 Docker 的关系与管理逻辑详解 一、先搞懂&#xff1a;Docker 和 K8s 分别是做什么的&#xff1f; Docker&#xff08;容器工具&#xff09;&#xff1a;好比「集装箱工厂」&#xff0c;负责把应用和依赖打包成标准化容器&#xff08;类似集装箱&#xff09;&#xff0…

QT MaintenanceTool 登录无法找到 QtAccount 凭据

亲测有效&#xff1a;QT6 Maintenance Tool 登录问题_qt6 maintenancetool-CSDN博客 将ini这个配置文件移出文件夹后&#xff0c;在切换自己账户登录即可

华为云Flexus+DeepSeek征文|利用华为云一键部署 Dify 平台并接入 DeepSeek 大模型,构建长篇文章生成助手

目录 前言 1 华为云一键部署 Dify 平台 1.1 华为云 Dify 平台介绍 1.2 部署过程介绍 1.3 登录 Dify 平台 2 接入华为云 ModelArts Studio 中的 DeepSeek 大模型 3 构建长篇文章生成助手 3.1 简要介绍长篇文章生成助手 3.2 开始节点 3.3 生成标题和大纲&#xff08;LL…

js的一些基础概念总结

1.变量声明 首先js变量声明有三种&#xff0c;var&#xff0c;const&#xff0c;let&#xff0c;这三种变量声明中我们第一优先使用const&#xff0c;需要改变这个值的时候我们用ley&#xff0c;var是尽量不去使用。 那么我们现在来总结一下三种声明变量的区别。首先是var let …

防 XSS和CSRF 过滤器(Filter)

会话管理存在问题&#xff1a; 1.服务集群部署或者是分布式服务如何实现会话共享 2.会话的不同存储地方的安全性问题 答&#xff1a; 会话共享 可以使用后端集中管理(redis)或者客户端管理 &#xff08;jwt&#xff09;&#xff1b; 存储安全性 这个还真的没有太好的方式&…

鸿蒙容器组件 WaterFlow、FlowItem解析:动态瀑布流布局实践

一、引言&#xff1a;不规则布局的智能化解决方案 在图片社交、电商导购、资讯聚合等现代应用场景中&#xff0c;瀑布流布局以其灵活的空间利用率和自然的视觉流动感成为界面设计的重要选择。鸿蒙提供的 WaterFlow 与 FlowItem 组件&#xff0c;通过智能布局算法与声明式语法&…

概率密度基本概念

概率密度&#xff08;Probability Density&#xff09;是概率论中用于描述随机变量分布的一种方式&#xff0c;特别适用于连续随机变量。它并不是一个概率值&#xff0c;而是表示单位范围内的概率大小或“浓度”。更具体地说&#xff0c;概率密度表示在某个特定值附近&#xff…

10-1 MySQL 索引优化与查询优化

10-1 MySQL 索引优化与查询优化 文章目录 10-1 MySQL 索引优化与查询优化1. 数据准备2. 索引失效案例2.1 索引字段&#xff1a;全值匹配最优2.2 索引字段&#xff1a;最佳左前缀法则2.3 主键插入顺序2.4 索引字段进行了&#xff1a;计算、函数、类型转换(自动或手动)导致索引失…

基于目标驱动的分布式敏捷开发

研究结论 风险对项目目标的影响 时间目标&#xff1a;需求管理不当&#xff08;如需求优先级不明确、多产品负责人需求冲突&#xff09;、架构变更导致的返工、跨站点协调问题&#xff08;如第三方依赖、通信基础设施不足&#xff09;是影响项目时间的主要风险因素。质量目标&…

高通手机跑AI系列之——穿衣试装算法

环境准备 手机 测试手机型号&#xff1a;Redmi K60 Pro 处理器&#xff1a;第二代骁龙8移动--8gen2 运行内存&#xff1a;8.0GB &#xff0c;LPDDR5X-8400&#xff0c;67.0 GB/s 摄像头&#xff1a;前置16MP后置50MP8MP2MP AI算力&#xff1a;NPU 48Tops INT8 &&…

opencv入门(5)图像像素的读写操作和算术运算

文章目录 1 图像遍历与修改1.1 使用数组1.2 使用指针 2 图像的算术运算2.1 一般算术操作2.2 算术API 1 图像遍历与修改 C中支持 数组遍历 和 指针方式遍历 1.1 使用数组 访问使用 image.at(row,col) 进行访问 如果是单通道灰度图&#xff0c;就使用image.at进行读取 如果是三…

Stable Diffusion入门-ControlNet 深入理解-第三课:结构类模型大揭秘——深度、分割与法线贴图

大家好,欢迎回到Stable Diffusion入门-ControlNet 深入理解系列的第三课! 在上一课中,我们深入探讨了 ControlNet 文件的命名规则,以及线条类 ControlNet模型的控制方法。如果你还没有看过第二篇,赶紧点这里补课:Stable Diffusion入门-ControlNet 深入理解 第二课:Contr…