【论文笔记】Efficient LoFTR: Semi-Dense Local Feature Matching with Sparse-Like Speed

news2024/11/29 8:59:01

引用格式】:Wang Y, He X, Peng S, et al. Efficient LoFTR: Semi-dense local feature matching with sparse-like speed[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2024: 21666-21675.

网址https://arxiv.org/pdf/2403.04765

开源代码】:https://github.com/zju3dv/efficientloftr

目录

一、瓶颈问题

二、本文贡献

三、解决方案

1  局部特征提取

2 高效的局部特征转换

3 粗级匹配模块

4 子像素精细化模块

4.1 高效的特征块提取器

4.2 两级特征相关层

5 Loss

5.1 粗级匹配监督

5.2 精细匹配监督

四、实验结果

1 实验细节

2 相对姿势估计

3 单应性估计

4 视觉定位

5 消融实验


一、瓶颈问题

    LoFTR 在处理大视点变化和纹理贫乏场景时显示出了卓越的匹配能力,但效率较低

二、本文贡献

  • 由于图像特征中的局部区域往往共享相似的信息,直接在整个特征图上执行Transformer计算是冗余的。为此,论文提出了一种聚合注意力机制,通过自适应选择关键标记,显著减少计算量,从而提高效率。
  • LoFTR的精细相关模块中存在空间差异,影响匹配精度。论文提出了两级相关层,先进行像素级匹配,再进行局部亚像素精细匹配,显著提升了匹配精度。
  • 对网络结构进行修改,采用轻量化的网络骨干并使用重新参数化技术,进一步提升模型的推理效率。

三、解决方案

1  局部特征提取

    文中特征提取模块是使用了一个轻量化的bckbone,不像LoFTER或者其他的detector-free matchers等使用多分支的ResNet网络。在推理过程中,文中应用了一个轻量化的单分支网络,通过重新参数化技术【RepVGG: Making VGG-style ConvNets Great Again】来提高模型效率。

    在训练过程中,文中采用了具有残差连接的多分支 CNN 网络,以获得最大的表征能力。在推理时,文中采用重参数化技术,将特征骨干网无损地转换为高效的单分支网络。然后,就可以提取到1/8的粗特征\tilde{F}_{A}/\tilde{F}_{B}和用于第四阶段的1/4及1/2的特征。

2 高效的局部特征转换

    在这一阶段,通过若干层的自注意力和交叉注意力,将特征\tilde{F}_{A}/\tilde{F}_{B}转化为特征\tilde{F}_{A}^{t}/\tilde{F}_{B}^{t}。对于之前的方法,都是直接在整个粗特征图上进行注意力变换,vanilla attention(香草注意力)代替linear attention来提高效率,但是模型能力达不到最优,这里文中提出高效的聚合注意力机制。

  1. 相邻query的关注区域是相似的,文中将相邻query(f_{i})聚合到一起,避免冗余计算;这里,文中使用深度卷积神经网络(分段深度卷积)对fi进行聚合
  2. 每个query的大部分关注权重都集中到少数key(f_{j})上,文中在执行注意力之前,选出突出的key,来减少计算量;这是,文中使用最大池化对fj进行挑选。
  3. 使用位置编码和香草注意力来缩小tokens(位置编码:建立空间位置上下文模型;RoPE【RoFormer: Enhanced Transformer with Rotary Position Embedding】:稳定键的相对位置;PE仅在自注意力使用,交叉注意力跳过)
  4. 对转换后的特征图进行上采样,并于f_{i}融合,得到最终的特征图。

3 粗级匹配模块

    首先通过\tilde{F}_{A}^{t}\tilde{F}_{B}^{t}构建分数矩阵S,然后是在S矩阵上使用双softmax,进一步构建粗匹配矩阵M_{C}

    文中发现,由于tokens过大,双softmax导致推理效率受到很大的限制,特别是对于分辨率高的图片。另外,双softmax在训练过程中至关重要,而在推理中,不使用softmax,直接使用分数矩阵S进行MNN匹配仍然可以得到很好的效果。

    文中做了一个实验,在推理过程中跳过双softmax,为efficiency optimized model。

4 子像素精细化模块

    子像素精细话模块是由一个高效的特征块提取器和一个两级特征相关层组成,前者用于提取精细特征,后者用于最终匹配。

4.1 高效的特征块提取器

    为了提高效率,文中重新利用先前转换的粗特征\tilde{F}_{A}^{t}\tilde{F}_{B}^{t},来获得跨视图的判别性精细特征,不再像LoFTER那样引入额外的特征转换网络。

  1. \tilde{F}_{A}^{t}\tilde{F}_{B}^{t}与1/4及1/2的backbone特征融合和上采样获得特征图\hat{F}_{A}^{t}\hat{F}_{B}^{t}
  2. 以每个粗匹配点为中心的精细特征图上裁剪局部特征块。

4.2 两级特征相关层

    根据粗匹配提取的精细局部特征块,搜索高精度的亚像素匹配。

    为了细化粗匹配,常用的策略是选择 IA 的中心块特征作为固定参考点,然后对整个相应的特征块进行特征相关和期望,以实现精细匹配。然而,这种按期望值细化的方法会给最终匹配结果带来位置差异,因为无关区域也有权重,会影响结果。为此文中提出了两阶段相关模块来解决这个问题。

    在第一阶段利用互近邻(MNN)匹配来获得中间像素级的精细匹配,然后通过相关性和期望值对其进行细化,以获得亚像素精度。原因:MNN 匹配不存在空间差异,因为匹配是通过直接索引得分最高的像素来选择的,但无法实现亚像素精度。而根据预期进行细化可以达到亚像素精度,但存在差异。

  1. 在细化粗级对应 M_{C} 时,第一阶段(细化阶段)会密集关联其精细特征块,以获得局部块得分矩阵S_{I}
  2. S_{I}上应用 MNN 搜索,以获得中间像素级的精细匹配。为了限制总体匹配数,文中通过对相关性得分进行排序,为一个粗匹配选择前 1 个精细匹配。
  3. 使用一个很小的局部窗口来进行相关和期望,最大限度地抑制位置方差。将I_{A} 中每个点的特征与 I_{B} 中以其精细匹配点为中心的 3 × 3 特征块相关联。
  4. 应用 softmax 运算符得到匹配分布矩阵,并通过计算期望值得到最终的精细匹配。

5 Loss

5.1 粗级匹配监督

    按照之前的方法【SuperGlue、LoFTER】,通过深度图和图像姿态将网格级点从I_{A}  扭曲到 I_{B},从而建立总数为 N 的粗略地面真实匹配\left \{​{M_{C}} \right \}_{gt}。粗匹配中产生的相关得分矩阵 S 是通过最小化 \left \{​{M_{C}} \right \}_{gt}位置的对数似然损失来监督的:

5.2 精细匹配监督

    第一阶段的精细损失L_{f_{1}}是根据像素级地面真实精细匹配结果,最小化每个精细局部得分矩阵 S_{I}的对数似然损失,与粗损失类似。第二阶段由L_{f_{2}}训练,计算最终子像素匹配度\left \{​{M_{f}} \right \}与地面实况精细匹配度\left \{​{M_{f}} \right \}_{gt} 之间的损失。

    最终损失:

四、实验结果

1 实验细节

  • 采用RepVGG作为特征提取主干,利用深度卷积和最大池化层对粗特征进行自注意力和交叉注意力的转换,重复4次,卷积核为4×4。
  • 在大规模户外数据集MegaDepth上训练,测试场景与训练数据分离。
  • 使用AdamW优化器,初始学习率为4×10⁻³,损失函数权重α=1.0,β=0.25,训练在8个NVIDIA V100 GPU上进行,耗时约15小时,批次大小为16。
  • 粗匹配和细匹配阶段一起从零开始训练。

2 相对姿势估计

  • 在MegaDepth数据集上,方法超越了最好的半稠密匹配方法AspanFormer,所有指标均优于AspanFormer。而在ScanNet数据集上的表现稍低,但速度提升约2倍。
  • 通过移除粗匹配中的dual-softmax操作,进一步提升效率,虽然性能略有下降,但方法在效率上超越了稀疏匹配方法SP + LG,并保持更高的精度。
  • ROMA尽管匹配能力强,但速度慢,而文中方法在效率上快约7.5倍,在精度与效率之间实现了良好平衡。

3 单应性估计

  • 在匹配数量受限的情况下仍能表现出色,远超稀疏方法,并在效率上显著优于其他半稠密方法。
  • 文中将这一优势归功于两个创新点:
    • 两阶段精细化模块:通过精细化的两阶段匹配提升了匹配的精度。
    • 聚合模块:在特征选择和聚合方面提高了计算效率,使得在高效的同时还能保持较好的性能。

4 视觉定位

    尽管文中方法主要注重效率,但在精度上能够与一些以精度为主的检测器方法媲美。在表3和表4中,结果显示出本文方法不仅在效率上具备优势,在性能上也能达到与最佳方法相当的水准。

5 消融实验

  • 去除dual-softmax,在高分辨率图像中,模型效率显著提升。
  • 用LoFTR的Transformer替代聚合注意力模块后,效率和准确度下降,表明聚合特征上使用原始注意力的有效性。
  • 使用LoFTR的单一精细化方法代替两阶段精细化,发现两阶段精细化 能提高准确性而延迟很小,体现了最大程度抑制位置方差的优势。
  • 缺失第二阶段,将导致姿态准确性下降,效率变化不大,特别在严格的AUC@5°指标上。
  • 从重参数化的VGG改回多分支ResNet,虽然准确性相似但效率下降,证明了设计选择的有效性。

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

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

相关文章

PostgreSQL Docker Error – 5432: 地址已被占用

PostgreSQL Docker Error – 5432: 地址已被占用 今天在学习【Spring Boot React】价值79.9美元,全栈开发,搭建个人网站、做毕业设计、试试这套课程第17~21节视频的时候,发现运行docker run --name demo-postgres -e POSTGRES_PASSWORDpass…

数据集-目标检测系列- 货船 检测数据集 freighter>> DataBall

数据集-目标检测系列- 货船 检测数据集 freighter>> DataBall 数据集-目标检测系列- 货船 检测数据集 freighter>> DataBall 数据量:3k 想要进一步了解,请联系。 DataBall 助力快速掌握数据集的信息和使用方式,会员享有 百种…

高效参数微调

一、增加额外参数的方法 这些方法通过向模型中添加额外的可训练参数,而不修改原有的预训练模型参数。 1. Prefix Tuning(前缀微调) 原理:在每一层的输入添加一组可训练的“前缀”向量,这些前缀向量会影响模型的输出…

使用PL/SQL Deverloper过程遇见的问题

目录 背景: ORA-01031权限问题: PL/SQL Deverloper显示Oravle中存在的所有表: PL/SQL Deverloper优点: 背景: PL/SQL Developer是由Allround Automations公司开发的一款集成开发环境(IDE),它专门面向Oracle数据库存储的程序单元的开发。随着越来越多…

Python+Matplotlib可视化初等函数示例

import numpy as np import matplotlib.pyplot as pltplt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] Falsefig, axs plt.subplots(2, 3, figsize(15, 10))# 1. 幂函数 x np.linspace(-2, 2, 200) axs[0, 0].plot(x, x**2, labely x^2) axs[0,…

每日OJ题_牛客_OR63删除公共字符_哈希_C++_Java

目录 牛客_OR63删除公共字符_哈希 题目解析 C代码1 C代码2 Java代码 牛客_OR63删除公共字符_哈希 删除公共字符_牛客题霸_牛客网 (nowcoder.com) 题目解析 用哈希表记录一下字符串的字符信息即可。 C代码1 #include <iostream> #include <string> #includ…

C语言 动态数据结构的C语言实现内存映像

C程序的内存映像 C程序中变量的内存分配方式  C程序中变量的内存分配方式  从静态存储区分配  全局变量和静态变量 C程序中变量的内存分配方式  从静态存储区分配  全局变量和静态变量  在栈上分配  存放函数参数值&#xff0c;局部变量值等  …

角膜移植难题现,传统方式缺陷显,创新水凝胶破局

大家好&#xff01;今天来了解一篇天然聚合物衍生光固化生物粘附水凝胶研究——《Natural polymer-derived photocurable bioadhesive hydrogels for sutureless keratoplasty》发表于《Bioactive Materials》。本文介绍了一种用于无缝合角膜移植术的天然聚合物衍生光固化生物粘…

Leetcode—76. 最小覆盖子串【困难】

2024每日刷题&#xff08;167&#xff09; Leetcode—76. 最小覆盖子串 C实现代码 class Solution { public:string minWindow(string s, string t) {int bestL -1;int l 0, r 0;vector<int> cnt(128);for(const char c: t) {cnt[c];}int require t.length();int m…

程序员必备!面向Prompt编程全攻略

前言 程序员工作的终极意义&#xff0c;就是干掉复杂度&#xff0c;用一套通用的方法解决大部分问题。在大模型时代&#xff0c;这个通用的方法就是——Prompt 工程。作为用好大模型最重要的武器&#xff0c;Prompt 的好坏对模型效果有着决定性的影响。 然而&#xff0c;网络…

MySQL8.0高可用MIC

一、机器准备 机器 主机名 ip地址 角色 软件 mic-master 192.168.252.148 主节点 mysql8.0.23 mysql-shell-8.0.23 mic-node1 192.168.252.142 node1 mysql8.0.23 mic-node2 192.168.252.145 node2 mysql8.0.23 关闭防火墙 systemctl stop firewalld setenf…

GPTQ vs AWQ vs GGUF(GGML) 速览和 GGUF 文件命名规范

简单介绍一下四者的区别。 参考链接&#xff1a;GPTQ - 2210.17323 | AWQ - 2306.00978 | GGML | GGUF - docs | What is GGUF and GGML? 文章目录 GPTQ vs AWQ vs GGUF&#xff08;GGML&#xff09; 速览GGUF 文件命名GGUF 文件结构文件名解析答案 附录GGUF 文件命名GGUF 文件…

pWnOS2.0 靶机渗透( cms 渗透,php+mysql 网站渗透,密码碰撞)

pWnOS2.0 靶机渗透( ) 靶机介绍 vulnhub 靶机 本地搭建 由于靶机特性&#xff0c;靶机网卡位nat模式扫不到&#xff0c;原来需要改 nat 的地址 参考方法 https://blog.csdn.net/Bossfrank/article/details/131415257 作者主页 https://blog.csdn.net/Bossfrank?typeblog P…

Spring Boot新闻推荐系统:性能优化策略

5系统详细实现 5.1 管理员模块的实现 5.1.1 用户信息管理 新闻推荐系统的系统管理员可以可以对用户信息添加修改删除操作。具体界面的展示如图5.1所示。 图5.1 用户信息管理界面 5.1.2 排行榜管理 系统管理员可以对排行榜进行手动管理&#xff0c;可以对排行榜进行添加删除修…

Acwing 背包问题

背包问题 首先&#xff0c;什么是背包问题&#xff1f; 给定N个物品和一个容量为V的背包&#xff0c;每个物品有体积和价值两种属性&#xff0c;在一些限制条件下&#xff0c;将一些物品放入背包&#xff0c;使得在不超过背包体积的情况下&#xff0c;能够得到的最大价值。根据…

老年人意外跌倒感知技术

意外跌倒是导致老年人仙游的6大原因之一&#xff0c;尤其多余80岁以上的老年人。跌倒已成为我国 65 岁以上老年人因伤致死的首位原因&#xff08;来源&#xff1a;IT之家&#xff09;。 跌倒最容易发生在两个地方&#xff0c;卫生间和过道。主要可能是卫生间没有安装扶手&…

关于Generator,async 和 await的介绍

在本篇文章中我们主要围绕下面几个问题来介绍async 和await &#x1f370;Generator的作用&#xff0c;async 及 await 的特点&#xff0c;它们的优点和缺点分别是什么&#xff1f;await 原理是什么&#xff1f; &#x1f4c5;我的感受是我们先来了解Generator&#xff0c;在去…

将视频改成代码滚动

本文章就来讲讲如何将视频转换成代码滚动&#xff0c;也就是这种模式&#xff1a; 本文章就来详细的教大家如何制作达到这种效果吧&#xff01; &#xff08;注&#xff1a;我记得一些python库也可以轻松达到这些效果&#xff0c;但我一时半伙想不起来了&#xff0c;所以这里用…

idea插件开发的第六天-开发一个笔记插件

介绍 Demo说明 本文基于maven项目开发,idea版本为2022.3以上,jdk为1.8本文在JTools插件之上进行开发本插件目标是做一款笔记插件,用于开发者在开发过程中随时记录信息仓库地址: jtools-notes JTools插件说明 Tools插件是一个Idea插件,此插件提供统一Spi规范,极大的降低了id…