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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

“尔滨”宠粉再升级!百亿像素VR冰雪盛宴

1月10日,由哈尔滨市委网信办、哈尔滨日报社主办,冰城客户端、哈尔滨新闻网承办的“激情迎亚冬,冰雪暖世界——2024年哈尔滨冰雪乐园”VR沉浸式体验产品正式上线。 如果你还没去过最近爆火出圈的“尔滨” ❄️这份哈尔滨冰雪景点VR❄️ 为你…

初识 Elasticsearch 应用知识,一文读懂 Elasticsearch 知识文集(4)

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…

HDClone X.5 新版功能亮点

在 HDClone X.4 版本的基础上,HDClone X.5 新版本推出了对网盘、映射磁盘等的镜像功能,让磁盘镜像更加如虎添翼。 创建卷的镜像:可将非物理介质作为卷,对其制作镜像,从而保护其中数据。挂载这些镜像后,即可直接访问其中的文件,设置的保护层可以确保文件不被更改。 用于存…

小程序系列--8.页面事件

一、下拉刷新事件 1. 什么是下拉刷新? 下拉刷新是移动端的专有名词,指的是通过手指在屏幕上的下拉滑动操作,从而重新加载页面数据的行为。 2. 启用下拉刷新 3. 配置下拉刷新窗口的样式 4. 监听页面的下拉刷新事件 在页面的 .js 文件中&am…

FastAPI 并发请求详解:提升性能的关键特性

在当今的数字化世界中,网络用户对于高速响应和持续连接的诉求日益显著。这促使了基于 Python 构建的 FastAPI 框架受到广泛关注,它不仅现代化且效率极高,而且简化了并行请求的处理。本篇文章旨在探讨 FastAPI 如何处理这类请求,并…

【遥感专题系列】影像信息提取之——面向对象的影像分类技术

“同物异谱,同谱异物”会对影像分类产生的影响,加上高分辨率影像的光谱信息不是很丰富,还有经常伴有光谱相互影响的现象,这对基于像素的分类方法提出了一种挑战,面向对象的影像分类技术可以一定程度减少上述影响。 本…

【AI接口】语音版、文心一言大模型和AI绘图、图片检测API

文章目录 一、语音版大模型AI1、接口2、请求参数3、请求参数示例4、接口返回示例 二、AI图片鉴黄合规检测API1、接口2、请求参数3、请求参数示例4、接口返回示例5、报错说明6、代码开源 三、人工智能AI绘画API1、接口2、请求参数3、请求参数示例4、接口返回示例5、AI绘画成果展…

Redis(四)

1、Redis的单/多线程 1.1、单线程 其实直接说Redis什么单线程或者是多线程,不太准确,在redis的4.0版主之前是单线程,然后在之后的版本中redis的渐渐改为多线程。 Redis是单线程主要是指Redis的网络IO和键值对读写是由一个线程来完成的&#…

安全高效、成本低廉:云桥通SD-WAN企业组网解决企业全球网络挑战

安全高效、成本低廉:云桥通SD-WAN企业组网解决企业全球网络挑战 随着企业规模的扩张和数字化转型的加速,面对分布全球的总部、分支机构、门店、数据中心和云服务之间的网络互联、数据传输和应用加速挑战,云桥通SD-WAN组网已然崭露头角。其在…

F - Digital Roots HUOJ

题目 The digital root of a positive integer is found by summing the digits of the integer. If the resulting value is a single digit then that digit is the digital root. If the resulting value contains two or more digits, those digits are summed and the pro…

SRC实战 | 任意密码重置绕过

本文由掌控安全学院 - 叴龙 投稿 1.信息搜集 2.漏洞挖掘 1.信息搜集 没事干,准备找个证书站挖挖看,没想到碰到一个小通用系统。看样子还挺多功能可以测。 这里利用F12 查看前端源码js 或者css文件提取指纹,直接用hunter或者fofa搜索到同一…

WordPress设置回收站自动清理天数的插件Change Empty Trash Time

前面boke112百科跟大家分享的『WordPress回收站自动清空时间?如何关闭回收站或设置自动清理天数?』一文,就介绍了可以添加一行代码实现关闭或设置回收站自动清理时间,也可以通过安装Change Empty Trash Time插件来实现。 今天bok…

Vue基础入门 - Vue的快速创建、Vue的开发者工具安装及Vue的常用指令(v-model,v-bind,computed计算属性,watch侦听器)

Vue 文章目录 Vue1 什么是Vue2 创建Vue实例2.1 快速创建2.2 插值表达式 {{}}2.3 响应式特性2.3.1 访问与修改 3 Vue开发者工具安装4 Vue中的常用指令4.1 内容渲染指令4.2 条件渲染指令4.3 事件绑定指令4.4 属性绑定指令4.5 案例-上下页图片翻页4.6 列表渲染指令4.7 案例-能删除…

《SPSS统计学基础与实证研究应用精解》视频讲解:参数估计

《SPSS统计学基础与实证研究应用精解》2.5 视频讲解 视频为《SPSS统计学基础与实证研究应用精解》张甜 杨维忠著 清华大学出版社 一书的随书赠送视频讲解2.5节内容。本书已正式出版上市,当当、京东、淘宝等平台热销中,搜索书名即可。本书旨在手把手教会使…

【数字人】10、HyperLips | 使用 audio 实现高保真高清晰的唇部驱动

文章目录 一、背景二、相关工作2.1 Audio-Driven Talking Face Generation2.2 HyperNetwork2.3 Prior Based Face Restoration 三、方法3.1 Base Face Generation3.2 High-Fidelity Rendering 四、效果 论文:HyperLips: Hyper Control Lips with High Resolution De…

[Android] Android架构体系(2)

文章目录 Bionic精简对系统调用的支持:不支持 System V IPC:有限的 Pthread 功能:有限支持C:不再支持本地化和/或宽字符:Bionic新增的特性系统属性硬编码写死的UID/GID内置了DNS解析硬编码写死的服务和协议 硬件抽象层Linux内核匿名共享内存(ASHMem)BinderLoggerION 内存管理内…

vue2嵌入高德地图选择地址后显示地址和经纬度

以高德地图为里&#xff0c;申请key&#xff0c;选择js api服务&#xff0c;获取key和密钥. vue2项目代码引入相关依赖&#xff1a; npm i amap/amap-jsapi-loader -S 封装成组件: <template><div><el-row :gutter"15" class""><…

[C++] external “C“的作用和使用场景

C++中extern "C"的作用是什么? 在 C++ 中,extern "C" 的作用是告诉编译器按照 C 语言的规范来处理函数名和变量名。这是因为 C++ 编译器会对函数名和变量名进行名称修饰(name mangling),以区分不同的函数和变量。而在 C 语言中,函数名和变量名不会被名…

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握

课程地址&#xff1a;【新课uniapp零基础入门到项目打包&#xff08;微信小程序/H5/vue/安卓apk&#xff09;全掌握】 https://www.bilibili.com/video/BV1mT411K7nW/?p12&share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 四、vue组件 uni-app官网 …

《战略共创年度辅导》:手把手辅导企业做战略,比传统咨询更落地

今天产业迭代速度不断加剧,人类知识更迭周期大大压缩到2年以内,企业遭遇更多挑战:1.增长乏力;2.品牌老化;3.竞争压力大;4.竞争方向不明确;5.产品同质化;6.利润越来越低;7.团队执行难等等。 基于此&#xff0c;《战略共创年度辅导》应运而生&#xff0c;旨在手把手辅导企业家及…