【CVPR2024】Efficient LoFTR: 高效的 LoFTR:具有类似稀疏的速度的半密集局部特征匹配
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

相关文章:
【CVPR2024】Efficient LoFTR: 高效的 LoFTR:具有类似稀疏的速度的半密集局部特征匹配
Efficient LoFTR: 高效的 LoFTR:具有类似稀疏的速度的半密集局部特征匹配 Efficient LoFTR realtime_demo 0.摘要 \qquad 我们提出了一种新的方法来有效地产生跨图像的半密集匹配。以往的无探测器匹配器LoFTR在处理大视点变化和纹理差的场景下表现出了出色的匹配能力…...
【Golang 面试 - 基础题】每日 5 题(九)
✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/UWz06 📚专栏简介:在这个专栏中,我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏…...
《程序猿入职必会(4) · Vue 完成 CURD 案例 》
📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…...
编程技巧:如何优雅地合并两个有序数组?
目录 题目引用描述1.直接合并 排序2.指针3.后逆向双指针进阶:你可以设计实现一个时间复杂度为 O(m n) 的算法解决此问题吗?总结 题目 来自力扣 引用 合并两个有序数组 给你两个按 **非递减顺序 **排列的整数数组 nums1 和 nums2,另有两个整…...
Vue组件库移动端预览实现原理
引言 大家如果使用过移动端组件库(比如:Vant),会发现在网站右侧有一个手机端的预览效果。 而且这个手机端预览的内容和外面的组件代码演示是同步的,切换组件的时候,移动端预览的内容也会发生相应的变化。 …...
FastAPI(七十五)实战开发《在线课程学习系统》接口开发-- 创建课程
源码见:"fastapi_study_road-learning_system_online_courses: fastapi框架实战之--在线课程学习系统" 上次我们分享了,FastAPI(七十四)实战开发《在线课程学习系统》接口开发-- 删除留言 从本篇文章开始,…...
【C++】 条件变量实现线程同步示例
在做一些比较大的项目的时候,需要实现线程同步, 这里结合一个小示例,进行线程同步的讲解 问题定义 以下是一个使用 C 多线程和条件变量的示例,展示了线程 A 接收一个 enable 信号并通知线程 B 开始工作。线程 B 在开始工作之前…...
linux下载redis安装并指定配置文件启动
linux下载redis并安装启动: cd /usr/local/src 下载redis压缩包 wget http://download.redis.io/releases/redis-6.2.6.tar.gz 解压 tar -xzf redis-6.2.6.tar.gz 编译和安装redis make make install 安装完成后进入 redis 安装目录 cd /usr/local/bin 修改…...
线性结构、线性表、顺序表、链表、头插法、尾插法、中间插入或删除一个节点
梳理几个名词: 逻辑地址:就是说是第几个元素。 物理地址:也就是存储地址,在计算机里具体存放的位置。 线性表的存储结构分为: (1)顺序存储结构:将数据依次存储在连续的整块物理空…...
C# Task.WaitAll 的用法
目录 简介 1.WaitAll(Task[], Int32, CancellationToken) 2.WaitAll(Task[]) 3.WaitAll(Task[], Int32) 4.WaitAll(Task[], CancellationToken) 5.WaitAll(Task[], TimeSpan) 结束 简介 Task.WaitAll 是 C# 中用于并行编程的一个的方法,它属于 System.Threa…...
vue2 前端实现pdf在线预览(无插件版)
toFielDetail()是点击预览的方法,getOfficialFile是获取文件流的接口正常定义即可: export function getOfficialFile(query) {return request({url: /dataAsset/projectassess/getOfficialFile,method: get,params: query,}); } 调用接口的页面需要引用…...
排序XXXXXXXXX
信息学奥赛|常见排序算法总结(C+) - 腾讯云开发者社区-腾讯云 (tencent.com) https://cloud.tencent.com/developer/news/975232 常用序号层级排序 一、序号 序号Sequence Number,有顺序的号码,如数字序号…...
【文件解析漏洞】实战详解!
漏洞描述: 文件解析漏洞是由于中间件错误的将任意格式的文件解析成网页可执行文件,配合文件上传漏洞进行GetShell的漏洞! IIS解析漏洞: IIS6.X: 方式一:目录解析 在网站下建立文件夹的名字为.asp/.asa 的文件夹,其目…...
【杂谈】学会让你节省三秒钟——Dev-c++的缺省源
【杂谈】学会让你节省三秒钟——Dev-c的缺省源 1.前言2.缺省源的介绍3.注意 1.前言 你是否在为每次写程序都要自己手打一遍框架而感到苦恼?为什么大佬的Dev-C一新建文件就会自动出现程序框架?看完这篇文章,让你也能成为大佬,不用再…...
推荐一款前端滑动验证码插件(Vue、uniapp)
uniapp版本:滑块拼图验证码,有后端,简单几步即可实现,小程序、h5都可以用 - DCloud 插件市场 Vue版本及cdn版本可以查阅文档: 行为验证 | Poster 文档 示例代码: <template><view id"app&…...
【Git】git stash
目录 基本概念参数详解listshowsavepushpop|applydropclearbranch 参考文章 Git的stash命令是一个非常实用的功能,它允许开发者临时保存工作目录和暂存区的更改,以便能够切换到其他分支或进行其他操作,而不会丢失当前的修改。以下是git stash…...
不得不安利的程序员开发神器,太赞了!!
作为一名程序员,你是否常常为繁琐的后端服务而感到头疼?是否希望有一种工具可以帮你简化开发流程,让你专注于创意和功能开发?今天,我要向大家隆重推荐一款绝佳的开发神器——MemFire Cloud。它专为懒人开发者准备&…...
吴恩达机器学习C1W2Lab06-使用Scikit-Learn进行线性回归
前言 有一个开源的、商业上可用的机器学习工具包,叫做scikit-learn。这个工具包包含了你将在本课程中使用的许多算法的实现。 目标 在本实验室你可以: 利用scikit-learn实现基于正态方程的近似解线性回归 工具 您将使用scikit-learn中的函数以及ma…...
CSS实现表格无限轮播
<div className{styles.tableTh}><div className{styles.thItem} style{{ width: 40% }}>报警名称</div><div className{styles.thItem} style{{ width: 35% }}>开始时间</div><div className{styles.thItem} style{{ width: 25% }}>状态&…...
编程小白如何从迷茫走出
针对新生们常常感到的迷茫,以下是如何选择适合自己的编程语言、如何制定有效的学习计划以及如何避免常见的学习陷阱的详细建议: 一、如何选择适合自己的编程语言 明确需求和目标:不同的编程语言有不同的特点和适用场景。例如,Py…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
