深度学习论文: XFeat: Accelerated Features for Lightweight Image Matching

深度学习论文: XFeat: Accelerated Features for Lightweight Image Matching
XFeat: Accelerated Features for Lightweight Image Matching
PDF:https://arxiv.org/pdf/2404.19174
PyTorch: https://github.com/shanglianlm0525/PyTorch-Networks

1 概述

在这里插入图片描述
本文创新性地推出了XFeat(加速特征),一种轻量级且高精度的CNN架构,专为资源受限的视觉任务设计。XFeat优化了局部特征的检测、提取与匹配,通过减少通道数同时保持高分辨率,实现了速度与精度的平衡。它提供灵活的半密集匹配选项,并引入创新的匹配细化模块,利用粗糙描述符提升匹配精度,无需额外高分辨率特征,显著降低了计算成本。XFeat通用性强,硬件无关,速度远超同类深度学习模型,且能在普通CPU上实时运行,展现了在视觉定位和姿态估计等任务中的卓越性能。
在这里插入图片描述
本工作的核心贡献体现在三个方面:

  • 创新的轻量级CNN架构:该架构专为资源受限环境及高吞吐量、高效率的下游任务量身打造,无需依赖耗时的硬件优化。在视觉定位、相机姿态估计等领域,XFeat有望成为传统手工轻量级方法、昂贵深度模型及现有轻量级深度模型的理想替代。
  • 高效的关键点检测分支:我们设计了一个极简且可学习的关键点检测机制,该机制与小型特征提取器主干完美融合,展现出在视觉定位、相机姿态估计及单应性配准任务中的卓越性能。
  • 创新的匹配细化模块:该模块能够利用粗糙的半密集匹配结果,进一步提取像素级偏移,无需额外的高分辨率特征图,从而在显著降低计算成本的同时,实现了高精度与高匹配密度的双重提升,如图1和图2所示。这一创新策略相较于现有技术,在效率和效果上均实现了显著飞跃。

2 XFeat

局部特征提取的准确性依赖于图像分辨率,尤其在需要像素级匹配的相机姿态、视觉定位和结构从运动任务中。然而,高分辨率图像增加了计算负担。本节介绍了如何在减少计算成本的同时,通过策略减轻因减小CNN主干而损失的鲁棒性。
在这里插入图片描述

2-1 Featherweight Network Backbone

轻量级网络主干:

定义灰度图像I,尺寸为H×W,单通道C=1。
降低CNN处理成本的方法是开始于浅层卷积,逐步减半空间维度,同时加倍通道数。
卷积层的计算成本与空间维度和通道数成正比。

优化策略:

通过减少初始卷积层的通道数来应对高分辨率输入。
随着分辨率降低,三倍增加通道数,达到通常用于局部特征主干的128通道。
这种策略重新分配了网络的卷积深度,优化了计算效率和参数数量。

网络结构:

网络由基础层组成,包括2D卷积、ReLU、BatchNorm和用于降低分辨率的步长。
主干包括六个卷积块,按顺序增加深度:{4, 8, 24, 64, 64, 128},以及多分辨率特征的融合块。
通过这些策略,网络在保持精度的同时减少了计算负担,特别是在处理高分辨率图像时。
在这里插入图片描述

2-2 Local Feature Extraction

提出的主干网络用于提取局部特征和执行密集匹配的过程如下:

描述符头:

利用特征金字塔策略,通过多尺度特征合并,提取出尺寸为H/8×W/8×64的密集特征图F。
通过连续卷积块逐步降低分辨率至原始的1/32,增强了对视角变化的鲁棒性。
在三个尺度级别(1/8, 1/16, 1/32)上,通过双线性上采样和逐元素求和合并中间表示,形成最终特征表示F。
引入额外卷积块生成可靠性图R,表示每个局部特征匹配的置信度。

关键点头:

借鉴SuperPoint的策略,使用最终编码器中的特征,分辨率为原始图像的1/8,提取像素级关键点。
创新性地引入一个并行分支,专注于低级图像结构的关键点检测,避免联合训练描述符和关键点回归器导致的性能下降。
输入图像被划分为8×8像素的网格,每个网格单元通过1×1卷积快速回归关键点坐标,最终获得关键点嵌入K。

密集匹配:

提出轻量级模块,通过选择可靠性分数高的图像区域进行匹配,控制内存和计算需求。
采用简单的MLP进行粗到细的匹配,无需高分辨率特征图,适用于资源受限环境。
给定特征图F的子集Fs,提出策略恢复像素级偏移,使用MLP预测特征对的偏移,实现原始分辨率下的精确匹配。
在这里插入图片描述
整个网络设计注重计算效率和特征提取的准确性,通过端到端训练确保特征表示的有效性,并优化了密集匹配的性能。

2-3 Network Training

XFeat通过像素级真实对应关系进行监督学习。对于图像对(I1, I2),我们假设有N个匹配像素点MI1↔I2,记录了各自在I1和I2中的坐标。

Learning local descriptors 使用负对数似然损失来训练局部特征嵌入F。通过F1和F2两个描述符集,计算相似性矩阵S,并采用双重softmax损失Lds。
在这里插入图片描述
Learning reliability 将双重softmax概率视为置信度量,通过L1损失直接监督可靠性图。
在这里插入图片描述

Learning pixel offsets 利用原始分辨率下的真值对应关系,采用NLL损失训练匹配细化模块。
在这里插入图片描述
Learning keypoints 设计极简的关键点检测分支,通过从较大的教师网络中进行知识蒸馏来促进学习。使用ALIKE关键点监督模型,将关键点坐标映射为线性索引,并设置无关键点情况的上限以避免类别不平衡。
在这里插入图片描述
最终Loss:
在这里插入图片描述

3 Experiments

Relative pose estimation

在这里插入图片描述

Homography estimation

在这里插入图片描述

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

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

相关文章

kubernetes——Istio(三)

一、安全 将单一应用程序分解为微服务可提供各种好处,包括更好的灵活性、 可伸缩性以及服务复用的能力。但是,微服务也有特殊的安全需求: 为了抵御中间人攻击,需要流量加密。为了提供灵活的服务访问控制,需要双向 TL…

大语言模型可以处理图问题吗?

为了探讨大型语言模型(LLM)在处理自然语言描述的图结构问题上的能力,提出了NLGraph基准测试集,包含29,370个涉及不同复杂度的图推理任务。这些任务从简单的连通性和最短路径到复杂的最大流和图神经网络模拟。评估结果显示&#xf…

【C语言初阶】探索编程基础:深入理解分支与循环语句的奥秘

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C语言 “ 登神长阶 ” 🤡往期回顾🤡:C语言入门 🌹🌹期待您的关注 🌹🌹 ❀分支与循环语句 📒1.…

uniapp-day2

目录 1.在uniapp中显示视图有三种方式 2.scss和less的区别? 1. 语法差异 2. 变量和常量 3. 嵌套规则 4. 混合(Mixins) 5. 继承和扩展 6. 注释 7. 导入其他文件 8. 生态系统和社区支持 9. 其他特性 3.新建页面:要在page…

Transformer模型:scaled self-attention mask实现

前言 视频链接:20、Transformer模型Decoder原理精讲及其PyTorch逐行实现_哔哩哔哩_bilibili 文章链接:Transformer模型:WordEmbedding实现-CSDN博客 Transformer模型:Postion Embedding实现-CSDN博客 Transformer模型&#xff…

一文读懂近场通信NFC

近场通信(Near Field Communication,简称NFC),NFC是在非接触式射频识别(RFID)技术的基础上,结合无线互连技术研发而成. 是一种新兴的技术,使用了NFC技术的设备(例如移动电话)可以在彼…

基于vite的vue脚手架工具整合:ts、jsx、eslint、prettier、stylelint、tailwind...

为了帮助vue新手更高效的学习vue3的基础知识、组件开发以及项目方案整合,小卷给大家整理了一个10分钟搞定《基于vite的vue脚手架工具整合》的教程。所有工具都是目前最新的版本,实践和调试过,没有一行多余的配置。

数据库基本查询(表的增删查改)

一、增加 1、添加信息 insert 语法 insert into table_name (列名) values (列数据1,列数据2,列数据3...) 若插入时主键或唯一键冲突就无法插入。 但如果我们就是要修改一列信息也可以用insert insert into table_name (列名) values (列数据1&am…

【JVM基础03】——组成-详细介绍下Java中的堆

目录 1- 引言:堆1-1 堆是什么?(What)1-2 为什么用堆?堆的作用 (Why) 2- ⭐核心:堆的原理(How)2-1 堆的划分2-2 Java 7 与 Java 8 的堆区别 3- 小结:3-1 详细介绍下Java的堆?3-2 JVM …

FPGA:基于复旦微FMQL10S400 /FMQL20S400 国产化核心板

复旦微电子是国内集成电路设计行业的领军企业之一,早在2000年就在香港创业板上市,成为行业内首家上市公司。公司的RFID芯片、智能卡芯片、EEPROM、智能电表MCU等多种产品在市场上的占有率位居行业前列。 今天介绍的是搭载复旦微 FMQL10S400/FMQL20S400的…

Python从0到100(三十九):数据提取之正则(文末免费送书)

前言: 零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…

前端框架学习之 搭建vue2的环境 书写案例并分析

目录 搭建vue的环境 Hello小案例 分析案例 搭建vue的环境 官方指南假设你已经了解关于HTML CSS 和JavaScript的中级知识 如果你刚开始学习前端开发 将框架作为你的第一步可能不是最好的主意 掌握好基础知识再来吧 之前有其他框架的使用经验会有帮助 但这不是必需的 最…

基于双向长短时记忆神经网络(Bi-LSTM)的数据回归预测

代码原理 1.循环神经网络 循环神经网络(Recurrent Neural Network, RNN) 是深度学习领域一类具有内部自连接的神经网络能够学习复杂的矢量到矢量的映射。一个简单的循环神经网络结构,其结构包含三部分,分别为输入层、隐藏层和输出层,如图1所…

元器件基础学习笔记——磁珠

一、磁珠的作用及构造 1.1 磁珠的作用 磁珠是一种用于抑制高频噪声的被动电子组件,通常由铁氧体材料制成,这种材料具有高电阻率和高磁导率,使其能够在高频下有效地将干扰信号以热能的形式消耗掉。在电路设计中,磁珠被广泛用于信号…

红豆Cat 1开源|项目四: 从0-1设计一款TCP版本DTU产品的软硬件全过程

TCP版本DTU产品项目概述 远程终端单元( Remote Terminal Unit,DTU),一种针对通信距离较长和工业现场环境恶劣而设计的具有模块化结构的、特殊的计算机测控单元,它将末端检测仪表和执行机构与远程控制中心相连接。 产品定义&功能描述 硬件…

同时用到,网页,java程序,数据库的web小应用

具体实现功能:通过网页传输添加用户的请求,需要通过JDBC来向 MySql 添加一个用户数据 第一步,部署所有需要用到的工具 IDEA(2021.1),Tomcat(9或10),谷歌浏览器,MySql,jdk(17) 第二步,创建java项目,提前部…

Celery 是一个简单、灵活且可靠的分布式系统——python库

目录 引言 Celery 是什么? 安装 Celery 配置 Celery 创建任务 运行 Celery Worker 调用任务 更多示例 示例 1:发送电子邮件 示例 2:图片处理 示例 3:数据处理 结论 引言 今天我们来分享一个超强的 python 库&#xf…

微信小程序下载

首先进入微信网站链接:微信公众平台 (qq.com) 下载开发工具: 下载 / 稳定版更新日志 (qq.com) 下载稳定版

AV1技术学习:Translational Motion Compensation

编码块根据运动矢量在参考帧中找到相应的预测块,如下图所示,当前块的左上角的位置为(x0, y0),在参考帧中找到同样位置(x0, y0)的块,根据运动矢量移动到目标参考块(左上角位置为:(x1, y1))。 AV1…

C语言之带环链表

带环链表是数据结构链表中的一个经典问题,这里我们研究该问题分为两个方向:链表是否带环、返回链表的入环节点。 下面我们通过两个题目来分析带环链表: 1.判断链表是否带环 141. 环形链表 - 力扣(LeetCode) 那么我们…