LightGlue: Local Feature Matching at Light Speed

一、论文概述

发表于: 2023 ICCV

作者信息:Philipp Lindenberger Paul-Edouard Sarlin Marc Pollefeys

对比算法:SuperGlue

代码:github.com/cvg/LightGlue

效果:

现有问题:

1) SuperGlue 与其他基于 Transformer 的模型一样难以训练,需要许多从业者无法访问的计算资源。因此,后续工作未能达到原始SuperGlue模型的性能。

2) 在展现对称性、弱纹理或因视角和光照变化而导致外观变化的条件下,可靠地描述每个点是具有挑战性的。为了排除由于遮挡和丢失点而产生的异常值,这些表示还应具有辨别性。这导致了两个冲突的目标,即鲁棒性唯一性,这两者很难同时满足。

系统特色:

1)与先前的方法不同,LightGlue对每个图像对的难度是自适应的,这取决于视觉重叠的程度、外观变化或辨别信息的量。相对于具有挑战性的图像对,对于直观上易于匹配的图像对,推理速度更快,这种行为类似于人类处理视觉信息的方式。实现这一点的方法是:1)在每个计算块之后预测一组对应关系,2)使模型自省这些对应关系并预测是否需要进一步计算。LightGlue还在早期阶段丢弃不可匹配的点,从而将注意力集中在可共视区域上。LightGlue在典型的操作条件(如SLAM中)下带来了很大的改进,而不会在任何难度级别上降低性能。这是通过动态调整网络的大小而不是减小其整体容量来实现的。

2)LightGlue是SuperGlue的即插即用替代品:它在一小部分运行时间内预测两组局部特征的强匹配。这为在延迟敏感的应用中部署深度匹配器或从众包数据中重建更大的场景开辟了令人兴奋的前景。LightGlue模型及其训练代码将在许可许可下公开发布。

优化方法:

1)选择性检查点技术根据某种策略或规则,选择性地保存或舍弃注意力权重的计算结果,只保留对模型性能关键的部分位置的注意力权重,从而减少内存需求。这样可以在保持一定的模型性能的同时,显著降低内存占用,提高模型的效率和可扩展性。

2)瓶颈潜在标记方法是一种通过将输入标记映射到低维潜在空间来减小注意力机制内存占用的技术。在传统的Transformer模型中,每个输入标记都与其他标记计算注意力权重,这会导致计算和内存需求的增加,尤其是在处理长序列时。瓶颈潜在标记方法通过引入一个降维步骤,将输入标记映射到一个低维潜在空间中。这个映射过程可以使用线性变换或其他降维技术(如主成分分析)来实现。通过将输入标记映射到低维空间,可以大幅减小每个标记之间的关联性,从而减少计算和存储注意力权重所需的内存。在具体实施中,瓶颈潜在标记方法通常在Transformer模型的编码器或解码器中的某一层引入一个降维操作。这个降维操作将输入标记映射到一个较低维度的表示,通常比原始输入标记的维度要小得多。然后,在计算注意力权重时,只考虑这些降维后的潜在标记之间的关系,而不需要考虑所有的原始输入标记。通过使用瓶颈潜在标记方法,可以显著减小注意力机制的内存占用,特别是对于处理长序列的情况。同时,这种方法还可以降低计算复杂度,提高模型的训练和推理速度。然而,需要注意的是,通过降维操作,瓶颈潜在标记方法可能会引入一定的信息损失,因此需要在减小内存占用和保持模型性能之间进行权衡。

二、方法

问题表述:

从图像A和B中预测匹配点,点的归一化表示如下所示:

pi:=(x,y)i∈[0,1]2

视觉描述符为: di∈Rd

图像A和图像B有M和N个局部特征点,表示为 :,A:={1,.....M} 和 :,B:={1,.....N}

输出的一组对应关系为: M={(i,j)}⊂A×B 从公式中不难看出,执行了一次笛卡尔积,每一对点都计算了一次,由于遮挡或非重复性,一些关键点是不可匹配的,如何表示上述对应关系的结果呢?使用软分配矩阵,软部分分配矩阵)是一种用于表示元素之间关联程度的矩阵。在给定的问题中,软部分分配矩阵 P 用于表示图像 A 和 B 中的局部特征之间的匹配程度: P∈[0,1]M×N

LightGlue由一堆相同的层组成,这些层共同处理两个集合。每个层由自注意力和交叉注意力单元组成,用于更新每个点的表示。然后,一个分类器在每个层上决定是否停止推断,从而避免不必要的计算。最后,一个轻量级的头部从表示集合中计算出一个部分分配。

网络细节:

1、Transformer骨干:将图像A和B中的每一个特征用向量进行表示,其中 xiI⊂Rd ,向量由视觉描述符初始化,并随着后续的由自注意力和一个交叉注意力组成的层进行更新。I ∈ {A, B}

2、注意力单元:每一个单元根据从源图像 S(属于集合 {A, B})聚合得到的消息 miI←S 来更新状态, xiI←xiI+MLP([xiI|miI←S]) , 其中[ | ]代表向量的堆叠,这里并行计算两幅图像中的所有的点,自注意力模块从同一副图像中提取信息 S = I ,在交叉注意单元中,每个图像从其他图像中提取信息 S = {A, B}\ I ,消息m是通过注意力机制计算得出的,作为图像 S 的所有状态 j 的加权平均值(即会包含自注意力和交叉注意力)。

a是图像I和S的点i和j之间的注意力分数; W是一个投影矩阵; x代表状态;j代表状态数

到这里就完成了一个特征点的初始化和如何更新的叙述

3、自注意力机制:对于每个点 i,首先通过不同的线性变换将当前状态 xi 分解为键向量和查询向量 ki 和 qi。然后,我们将点 i 和 j 之间的注意力分数定义为

注:这里会有q

其中R(·)∈ Rd×d 是点间相对位置的旋转编码,为什么引入旋转编码呢?在投影相机几何中,视觉观察的位置对于图像平面内的相机平移是等变的:来自同一前平行平面上的3D点的2D点以相同的方式进行平移,并且它们之间的相对距离保持不变。但是绝对距离会发生变化(即出现在2D像平面上的位置)这要求仅捕捉点的相对位置而不是绝对位置的编码。旋转编码[67]使模型能够检索到相对于i处的学习到的相对位置的点j。位置编码不适用于值vj, 本质上就是通过自注意力机制,和同一幅图像中的特征点进行计算,从而得出更好的特征编码,R充当了位置编码

4、交叉注意力机制 I中的每个点都关注另一个图像s中的所有点,我们为每个元素计算一个键ki,但不计算查询。这允许将分数表示为:

因此,我们只需要为I ← S和S ← I的消息计算一次相似度。这个技巧之前被称为双向注意力(bidirectional attention)。由于这一步骤的复杂度为O(NMd),它节省了约2倍的计算开销。这里不添加任何位置信息,因为跨图像的相对位置没有意义。

5、分配分数

相似度得分,其中Linear是一个带有偏置的线性变换(例如MLP)

代表是否可能匹配成功

6、软匹配分配矩阵P的求法

当两个点都被预测为可匹配点,并且它们的相似度高于两个图像中的任何其他点时,点对 (i, j) 才会产生对应关系。我们选择满足以下条件的点对:Pij 大于一个阈值 τ,并且大于其所在行和列的其他元素。

换句话说,当点 i 和点 j 都被判定为可匹配点,并且它们之间的相似度高于阈值 τ,同时也高于两个图像中所有其他点之间的相似度时,我们认为点对 (i, j) 是对应关系。

这个过程可以通过对分数矩阵 S 进行逐元素比较和阈值筛选来实现。首先,我们将 Pij 与阈值 τ 进行比较,如果 Pij 大于 τ,那么我们进一步检查它是否大于其所在行和列的其他元素。如果满足条件,那么点对 (i, j) 被选为对应关系。这样的策略可以帮助我们选择具有最高相似度且互为最佳匹配的点对,从而构建准确的对应关系。

7、损失函数设计

损失函数的公式描述了在训练过程中如何计算损失,以便推动模型 LightGlue 尽早预测正确的对应关系。损失函数由三部分组成,分别对应于正确匹配(positive labels)和不匹配的点(negative labels)。

  • 第一部分:对正确匹配的点(i, j) ∈ M,计算预测的对应关系 ℓ * Pij 的对数似然损失,其中 ℓ 是层次信息,Pij 是预测的分配矩阵中的元素。
  • 第二部分:对于标记为不可匹配的点̄A ⊆ A,计算预测的可匹配性分数 ℓ * σAi 的对数似然损失,其中 σAi 是点 i 的可匹配性分数。
  • 第三部分:对于标记为不可匹配的点̄B ⊆ B,计算预测的可匹配性分数 ℓ * σBj 的对数似然损失,其中 σBj 是点 j 的可匹配性分数。

三、实验

LightGlue 架构极大地提高了预训练在合成单应性上的收敛速度。在 5M 图像对(只有 2 个 GPU 天)之后,LighGlue 在最后一层实现了 -33% 的损失,匹配召回率为 +4%。SuperGlue 需要超过 7 天的训练才能达到类似的准确度。

重投影误差在1像素和5像素的比较

  1. RANSAC:RANSAC是一种经典的鲁棒估计算法,常用于估计基本矩阵、单应矩阵等模型参数。它通过随机采样和迭代的方式,从数据中选择一组假设的内点集合,然后通过这个内点集合来估计模型参数。RANSAC的主要思想是假设大部分数据是噪声或异常值,通过随机采样和模型验证的过程,寻找最佳的内点集合,从而得到准确的模型参数估计。
  2. DLT:DLT是指直接线性变换(Direct Linear Transform)方法,用于估计单应矩阵或其他几何变换的参数。它基于线性代数的原理,通过将图像中的点对应到世界坐标系中的点,建立齐次线性方程组,然后使用最小二乘法或奇异值分解等方法求解方程组,从而得到准确的变换参数。

AUC被用来评估通过对应关系估计得到的单应矩阵的准确性。通过计算累积误差曲线(AUC)来度量重投影误差,以评估单应矩阵的质量。较高的AUC值表示估计的单应矩阵具有较高的准确性和预测能力。

可视化据结果

Image Matching Challenge 2021

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

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

相关文章

mybatis xml多表查询,子查询,连接查询,动态sql

项目结构 数据库表 student_type 表 student 表 依赖 <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.30</version></dependency><dependency><groupId>org.…

使用zabbix-proxy进行分布式监控

目录 一、准备4台服务器 二、配置主从复制 1.准备环境 2.主机名解析 3.安装数据库 4.配置主库db1 5.配置从库db2 6.主从状态显示 三、db1&#xff0c;db2配置zabbix-agent 三、zabbix-server的配置 四、zabbix-proxy的配置 1.为您的平台安装和配置Zabbix-proxy a. …

beego的模块篇 - I18n国际化

1. i18n 安装导入 安装该模块&#xff1a; go get github.com/beego/i18n 导入引用包&#xff1a; import ("github.com/beego/i18n" ) conf 目录下就有 locale_en-US.ini 和 locale_zh-CN.ini 两个本地化文件。 本地化文件的文件名和后缀是随意的&#xff0c;不…

vector迭代器的失效

1.vector的底层 vector的底层就是由三个指针构成的 iterator _start 这个指针指向vector数据起始位置。 iterator _finish这个指针指向vector数据的结束位置。 iterator _end_of_shorage这个指针指向vector容量的位置。 2.迭代器失效的种类 2.1扩容引发的迭代器失效 例&…

【GitHub项目推荐--微软开源的可视化工具】【转载】

说到数据可视化&#xff0c;大家都很熟悉了&#xff0c;设计师、数据分析师、数据科学家等&#xff0c;都需要用各种方式各种途径做着数据可视化的工作.....当然许多程序员在工作中有时也需要用到一些数据可视化工具&#xff0c;如果工具用得好&#xff0c;就可以把原本枯燥凌乱…

智能驾驶新浪潮:SSD与UFS存储技术如何破浪前行?- SSD篇

随着汽车行业的不断发展&#xff0c;对存储的需求也在不断的变化中。早期阶段的汽车对存储的需求主要是收音机、播放器、导航仪等&#xff0c;有些还可以支持光盘和U盘的外接播放。中期阶段&#xff0c;也是当前主流的燃油车行车记录、多媒体、车联网的需求&#xff0c;对存储性…

Jmeter 性能 —— 压测常遇问题+解决!

1、测试过程中CPU过高 用vmstat实时监控cpu使用情况。很小的压力AP cpu却到了80%多&#xff0c;指标是不能超过60%。vmstat 2 (每二秒显示一次系统内存的统计信息) 分析是use cpu过高还是sys cpu过高&#xff0c;常见的是use cpu使用过高。如果是sys cpu使用过高&#xff0c;先…

【内存管理】flink内存管理(一):内存管理概述:flink主动管理内存原理、flink内存模型

文章目录 一.flink为什么自己管理内存1. 处理大数据时JVM内存管理的问题2. flink主动管理内存逻辑2.1. Flink内存管理方面2.2. 序列化、反序列化说明 3. Flink主动管理内存的好处 二. Flink内存模型1. 堆内存2. 非堆内存2.1. 托管内存2.2.直接内存2.3. JVM特定内存 本节从整体使…

深入探索 Android 中的 Runtime

深入探索 Android 中的 Runtime 一、什么是 Runtime二、Android 中的 Runtime 类型2.1. Dalvik Runtime2.2. ART&#xff08;Android Runtime&#xff09; 三、Runtime 的作用和特点3.1. 应用程序执行环境3.2. 跨平台支持3.3. 性能优化3.4. 应用程序优化 四、与应用开发相关的重…

第十四章 MyBatis

第十四章 MyBatis 1.入门-课程介绍2.入门-快速入门程序3.配置SQL提示4.入门-JDBC5.入门-数据库连接池6.入门-lombok工具包介绍7.基础操作-环境准备8.基础操作-删除9.基础操作-删除&#xff08;预编译SQL&#xff09;10.基础操作-新增11.基础操作-新增&#xff08;主键返回&…

ctfshow命令执行(web29-web52)

目录 web29 web30 web31 web32 web33 web34 web35 web36 web37 web38 web39 web40 web41 web42 web43 web44 web45 web46 web47 web48 web49 web50 web51 web52 web29 <?php error_reporting(0); if(isset($_GET[c])){$c $_GET[c];if(!preg_match…

Leveraging Unlabeled Data for Crowd Counting by Learning to Rank

无标签人群技术&#xff0c;作者引入了一种排名。 利用的是一个图的人群数量一定小于等于包含这个图的图 生成排名数据集 作者提出了一种自监督任务&#xff0c;利用的是一个图的人群数量一定小于等于包含这个图的图 流程&#xff1a; 1.以图像中心为中心&#xff0c;划分一…