【CVPR2024】Efficient LoFTR: 高效的 LoFTR:具有类似稀疏的速度的半密集局部特征匹配

news2024/9/19 10:49:39

Efficient LoFTR: 高效的 LoFTR:具有类似稀疏的速度的半密集局部特征匹配

Efficient LoFTR realtime_demo

0.摘要

\qquad 我们提出了一种新的方法来有效地产生跨图像的半密集匹配。以往的无探测器匹配器LoFTR在处理大视点变化和纹理差的场景下表现出了出色的匹配能力,但效率较低。我们重新审视了它的设计选择,并得出了效率和准确性的多重改进。一个关键的观察是,由于共享的局部信息,在整个特征映射上执行转换是冗余的,因此我们提出了一种具有自适应令牌选择的聚合注意力机制以提高效率。
此外,我们发现LoFTR的精细相关模块存在空间方差,这不利于匹配精度。提出了一种新的两级相关层,以实现精确的亚像素对应,从而提高精度。 我们的效率优化模型比LoFTR快2.5倍,甚至可以超过最先进的高效稀疏匹配管道SuperPoint + LightGlue。此外,大量的实验表明,与竞争对手的半密集匹配器相比,我们的方法可以达到更高的精度,并具有可观的效率优势。这为大规模或延迟敏感的应用(如图像检索和3D重建)开辟了令人兴奋的前景。
项目地址:https://zju3dv.github.io/efficientloftr/。

在这里插入图片描述

1.简介

\qquad 最近,LoFTR 引入了一种带有transformer的无检测器匹配范式,可以在不检测关键点的情况下直接在两个图像之间建立半密集对应关系。借助Transformer机制来捕获全局图像环境和无检测器设计,LoFTR表现出强大的匹配具有挑战性的对的能力,特别是在纹理较差的场景中。为了减轻计算负担,LoFTR采用从粗到细的流水线,首先在下采样的粗大特征图上进行密集匹配,其中应用了Transformer。然后,通过裁剪基于粗匹配的特征块,执行特征相关性,并计算相关性块的期望值,固定粗匹配在一张图像上的特征位置,同时在另一幅图像上搜索它们的子像素对应关系。
\qquad 尽管LoFTR的匹配性能令人印象深刻,但由于在整个粗糙特征图上执行Transformer的令牌大小较大,因此效率有限,这严重阻碍了图像检索和SfM 等实际的大规模使用。LoFTR的大量后续工作都试图提高其匹配精度。然而,很少有方法专注于无检测器匹配的匹配效率。QuadTree Attention 将多尺度变换与逐渐缩小的注意力跨度相结合,以避免在大型特征图上执行注意力。这种策略可以降低计算成本,但它也会将单个粗略的注意力过程划分为多个步骤,从而导致延迟增加。
\qquad 在本文中,我们重新审视了无探测器匹配器LoFTR的设计决策,并提出了一种新的匹配算法,该算法在进一步提高精度的同时,挤出冗余计算以显著提高效率。如图 1 所示,与最近的图像匹配方法相比,我们的方法实现了最佳的推理速度,同时在准确性方面具有竞争力。我们的主要创新在于引入令牌聚合机制进行有效的特征转换,并引入两阶段关联层进行对应细化。具体来说,我们发现像在LoFTR中那样在整个粗糙特征图上密集执行全局注意力是不必要的,因为注意力信息在局部区域是相似和共享的。因此,我们设计了一种聚合注意力机制,用于对自适应选择的标记进行特征转换,该机制明显紧凑,有效降低了局部特征转换的成本。
\qquad 此外,我们观察到LoFTR的匹配细化阶段可能存在空间差异,这是由于存在噪声特征相关性时对整个相关性补丁的期望引起的。为了解决这个问题,我们的方法设计了一个两阶段关联层,首先在精细的特征斑块上定位像素级匹配和准确的互近邻匹配,然后通过在微小斑块内进行局部相关性和期望来进一步细化亚像素级的匹配。
\qquad 在单调估计、相对姿态恢复以及视觉定位等多个任务上进行了广泛的实验,以证明我们的方法的有效性。我们的管道将无探测器匹配推向了前所未有的效率,比 LoFTR 快约 2.5 倍,甚至可以超过目前最先进的高效稀疏匹配器 LightGlue [30]。此外,与竞争性的无检测器基线[7,14,15]相比,我们的框架可以达到相当甚至更好的匹配精度,效率相当高。

\qquad 综上所述,本文有以下贡献:

     • 基于对精度的全面回访,具有多个im改进的新的无探测器匹配流水线。
     • 一种新型的聚合注意力网络,用于高效的局部特征转换。
     • Anovel两阶段相关细化层,用于准确和亚像素级的精细对应

2. 原理

  • 想了一下还是不翻译论文了,简单说一下吧
    在这里插入图片描述
    图2.管道概述
    (1)给定一对图像,CNN网络提取粗略的特征图̃FA和ƃFB,以及精细特征。
    (2)然后,我们通过交错我们聚合的自我注意力和交叉注意力N次,将粗糙的特征转换为更具判别性的特征图,其中自适应地进行特征聚合以减小每次注意力之前的令牌大小以提高效率。
    (3)将变换后的粗略特征与得分矩阵S相关联,然后进行互近邻(MNN)搜索,建立粗略匹配{Mc}。
    (4)为了细化粗匹配,通过将变换后的粗特征̃ Ft A, ̃ Ft B与骨干特征融合,在全分辨率下得到判别性精细特征ˆ Ft A, ˆ Ft B。然后,将特征块裁剪为每个粗匹配 Mc 的中心。经过两阶段细化以获得亚像素对应Mf。

在这里插入图片描述

  • 详细的变压器模块比较。与LoFTR使用特征图的所有标记来计算注意力并诉诸线性注意力以降低计算成本不同,所提出的注意力模块首先聚合显著性标记的特征,这对于注意力的效率明显更高。然后,利用普通注意力来转换聚合特征,其中插入相对位置编码以捕获空间信息。转换后的特征被上采样并与原始特征融合,形成最终特征。

3. 效果

demo_comparison

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【零基础必看的前端教程】——JavaScript(八)函数

欢迎大家打开前端的新篇章——JavaScript,JavaScript与HTML、CSS合称为前端三大件,JavaScript是前端的重中之重,小洪将继续以零基础视角,带你循序渐进学习前端知识,一看就懂,小白也能转行做前端&#xff01…

创建个人公私钥对

Windows电脑 本地电脑打开命令输入框,如windows WINR–cmd打开cmd窗口输入ssh-keygen -t rsa -C “Remote dev” ,按三次回车,即可看到本地生成的公私钥进入用户目录,如windows为C:\Users\xxx(个人域账号).ssh,可看到…

在C++程序中新建并使用库

创建一个新的cpp文件后,定义一个函数 我们希望这个函数是可以被多个程序调用的,而不是直接输入在程序中进行编译。在C程序中,不是所有代码都会被编译成可执行文件,只有main函数所在的程序才可以生成可执行文件。而这个库是通过上一…

(第三期)书生大模型实战营——书生大模型全链路开源开放体系

任务及教程来自书生大模型实战营https://github.com/InternLM/Tutorial

负载均衡、软件平滑升级

安装nginx 1.26.1 平滑升级、负载均衡 安装依赖 gcc gcc-c pcre-devel openssl-devel 七层负载均衡配置: [rootf ~]# vim /usr/local/nginx/conf/nginx.conf 43 location / {44 # root html;45 # index index.html index…

在docker中安装MongoDB 5.0+

文章目录 1、查看物理机是否支持avx指令集:安装资料中的cpu-z_2.10-cn.exe,并打开2、查看虚拟机是否支持avx指令集:3、创建目录4、使用Docker来运行一个MongoDB数据库实例5、进入容器6、查看当前db版本7、查看当前db的链接机器地址8、帮助指令…

《昇思25天学习打卡营第24天》

接续上一天的学习任务,我们要继续进行下一步的操作 构造网络 当处理完数据后,就可以来进行网络的搭建了。按照DCGAN论文中的描述,所有模型权重均应从mean为0,sigma为0.02的正态分布中随机初始化。 接下来了解一下其他内容 生成…

程序一调用这个接口就会崩溃, 因为他的静态库添加是放在release文件下,而我用的debug模式

程序一调用这个接口就会崩溃 因为他的静态库添加是放在release文件下 而我用的debug模式 DESTDIR ../x64/ReleaseINCLUDEPATH ./../3rdparty/ZZDecode/include LIBS -lopengl32 \-lglu32 \-luser32 \./../3rdparty/ZZDecode/x64/release/ZZDecodeInterface.lib

华为仓颉语言测试申请

1. 申请网址 HarmonyOS NEXT仓颉语言开发者预览版 Beta招募- 华为开发者联盟 点击立即报名登录华为账号 勾选选项 , 点击同意 按要求填写信息即可 2. 申请通过后官方会通过邮件的方式发送相关下载途径 , 根据文档进行下载即可 package Cangmain(): Int64 {println("你…

Springboot使用Redis实现分布式锁

1、使用场景和实现方案: 使用场景:本地锁如Lock和Syncronized只能锁住本地进程,在分布式应用中,需要使用分布式锁来更好实现特定的业务。 实现方案:有多种,比如使用mysql、zookeeper、redis,各…

nginx续1:

八、虚拟主机配置 基于域名的虚拟主机 [rootserver2 ~]# ps -au|grep nginx //查看进程 修改Nginx服务配置,添加相关虚拟主机配置如下 1. [rootproxy ~]# vim /usr/local/nginx/conf/nginx.conf 2. .. .. 3. server { 4. listen …

基于Material studio拉伸-断裂过程的Perl脚本

在材料科学的研究中,拉伸-断裂过程一直是科学家们探索的焦点。这一过程涉及复杂的力学行为和材料内部微观结构的变化,对于理解材料的性能至关重要。然而,传统的实验方法不仅耗时耗力,而且难以捕捉到微观尺度上的所有细节。 为了满…

jQuery前端网页制作

1、Jquery的概述 1.1JavaScript库 JavaScript 高级程序设计(特别是对浏览器差异的复杂处理),通常很困难也很耗时。 为了应对这些调整,许多的 JavaScript (helper) 库应运而生。 这些 JavaScript 库常被称为 JavaScript 框架。 市面上一些广受欢迎的 JavaScript 框架:…

visual studio性能探测器使用案列

visual studio性能探测器使用案列 在visual studio中,我们可以使用自带的工具对项目进行性能探测,具体如下 1.选择性能探查器 Vs2022/Vs2019中打开方式: Vs2017打开方式: 注意最好将解决方案配置为:Release Debu…

【未来餐饮】 配送设置

一、创建门店 关键信息 1. 门店名字要有辨识度,尽量不和其他客户重名 2. 地址要具体到门牌号 3. 定位要和上面的地址一致 可以复制地址搜索地图,然后选择位置 二、创建配送模板 新建模板 填写模板 命名模板,勾上真省钱,然后保…

Meta再下一城:SAM 2

--->更多内容&#xff0c;请移步“鲁班秘笈”&#xff01;&#xff01;<--- “继用于图像的Meta Segment Anything Model &#xff08;SAM&#xff09;取得成功之后&#xff0c;我们发布了SAM 2&#xff0c;这是一种用于在图像和视频中实时进行对象分割的统一模型&#…

npm创建vue的ts项目

一、进入项目文件夹 使用cmd进入你想要创建项目的文件夹&#xff0c;此处为 E盘的test文件夹 cd E:\testE:二、创建项目 此处项目名为 MyTestProject npm create vitelatest输入上述代码&#xff0c;回车后会出现灰色的虚拟名称&#xff0c;此处输入你自己的名称即可&#…

软件平台化开发项目实践

汉捷咨询有40多位来自多家著名企业&#xff08;华为、中兴、三星等&#xff09;的咨询顾问和讲师&#xff0c;资深顾问/项目经理均有华为、中兴等领先企业高管及咨询实践15年以上经验&#xff0c;本文为汉捷一IPD资深顾问的行业实践总结&#xff0c;与各位同仁分享&#xff01;…

WPF用户登录界面设计-使用SQLite数据库进行存储

一、SQLite数据库介绍 SQLite是一款轻量级的关系型数据库&#xff0c;它小巧高效&#xff0c;无需服务器配置&#xff0c;仅需单一文件即可存储数据。SQLite跨平台支持&#xff0c;易于集成到各种应用程序中&#xff0c;并支持SQL语言进行数据操作。它保证了数据的完整性、一致…

Java数据结构和算法中文版(第2版)详细教程

前言 数据结构是指数据在计算机存储空间中(或磁盘中)的安排方式。算法是指软件程序用来操作这些结构中的数据的过程。几乎所有的计算机程序都使用数据结构和算法&#xff0c;即使最简单的程序也不例外。比如设想一个打印地址标签的程序&#xff0c;这个程序使用一个数组来存储…