XFeat:速度精度远超superpoint的轻量级图像匹配算法

代码地址:https://github.com/verlab/accelerated_features?tab=readme-ov-file

论文地址:2404.19174 (arxiv.org)

XFeat (Accelerated Features)重新审视了卷积神经网络中用于检测、提取和匹配局部特征的基本设计选择。该模型满足了对适用于资源有限设备的快速和鲁棒算法的迫切需求。由于准确的图像匹配需要足够大的图像分辨率,算法在限制网络中通道数量的同时保持尽可能大的分辨率。

该模型提供稀疏或半密集级别的匹配选择,每种匹配可能更适合不同的下游应用,例如视觉导航和增强现实。并且是第一个提供有效半稠密匹配的模型,它利用了一个依赖于粗略局部描述符(coarse local descriptors)的新型匹配细化模块。

XFeat是全面的并且不依赖于硬件,在速度上超越了当前基于深度学习的局部特征模型(速度提高了 5 倍),具有相当或更好的准确性,在姿势估计和视觉定位方面得到了验证。


1.Introduction

图像特征提取在移动机器人、增强现实等领域起着至关重要的作用,而在计算资源受限的平台上提取特征点需要对现有架构进行硬件级优化。而本工作致力于通过设计高效特征提取的架构,实现在资源有限的设备中快速和鲁棒的特征匹配算法。本文提出XFeat,被设计为与硬件无关,使用精心设计的策略执行关键点检测和局部特征提取,以尽可能减少计算占用空间,同时保持鲁棒性和准确性。

本文的主要贡献如下:

1、一种新颖的轻量级 CNN 架构,可以部署在资源受限的平台和需要高吞吐量或计算效率的下游任务上,而无需耗时的硬件特定优化

2、设计了一种极简、可学习的关键点检测分支,该分支速度快,适用于小型特征提取骨干网络,展示了其在视觉定位、相机姿态估计和单调配准方面的有效性

3、提出了一种用于从粗半稠密匹配中获得像素级偏移的匹配细化模块。与现有技术相比,该新策略除了局部描述子本身外,不需要高分辨率特征,大大减少了计算量


匹配效果如下:

2.XFeat: Accelerated Features

局部特征提取精度很大程度上取决于输入图像分辨率。例如,在相机姿势、视觉定位和 SfM 任务中,对应关系应该足够细粒度,以允许像素级匹配。然而,将高分辨率图像输入网络主干网会将计算要求提高到不希望的水平,即使对于简单的小型网络主干,如类似SuperPoint VGG-like的架构。在本节中,介绍如何使用最小化计算预算的策略来显着降低计算成本,同时减轻由于更小的 CNN backbone而导致的鲁棒性损失。

2.1. Featherweight Network Backbone

I\in \mathbb{R}^{H\times W\times C}表示一张灰度图,其中H是高度,W是宽度(以像素为单位),C=1表示通道数。为了降低CNN的处理成本,一种常见的方法是从浅层卷积开始,逐渐将空间维度(H,W)减半,同时将第i个卷积块中的通道数C加倍。假设卷积层具有单位步幅、填充、无偏置项和k\times k大小的核,则第i层的浮点运算(F_{ops}) 的卷积计算成本可以表示为:

在整个网络中修剪通道C会损害其处理照明和视角变化等挑战的能力。

在一些使用深度可分离卷积的高效网络中,在3*3卷积的情况下将F_{ops}减少了9倍之多,但是在局部特征提取中,在较浅的网络处理较大分辨率图像的情况下,与分类和目标检测等低分辨率输入场景相比,使用深度可分离卷积这种方法的效果较差。这导致浅层网络的表示能力有限,局部特征提取的速度增益很小。

在上式(1)中,H_{i} *W_{i}成为影响CNN的主要计算瓶颈。SuperPoint和 ALIKE均匀地减小通道深度和层数以缓解该问题。本文深入研究了问题的核心,制定了一种策略来最小化早期层深度并重新配置通道分布,从而显着改善了精度计算的权衡(accuracy-compute trade-of)。由于空间分辨率高,该策略尽可能减少初始卷积层中的通道数。为了平衡参数减少,随着空间分辨率的降低,将通道数增加两倍,而不是坚持传统的类似VGG的方法,直到达到足够数量的通道(通常为128个局部特征主干)。

这种策略的特点是随着分辨率减半,卷积深度增加了三倍,有效地重新分配了网络的卷积深度。它确保了早期层的最小深度,同时补偿了整个网络主干参数量的减少。这种方法不仅显著降低了早期阶段的计算负载,特别是对于高分辨率图像,而且还通过更有效地管理卷积深度来优化网络的整体容量。从C=4通道开始,到最终编码器模块中的C=128结束,实现了H/32\times W/32的空间分辨率,在精度和加速增益之间有很好的权衡。

网络的简单性体现在称为基本层的块中,一个卷积核大小从 1 到 3 的 2D 卷积,ReLU + BatchNorm,以及用于分辨率降低的步幅为2 ,形成卷积块,每个卷积块都是基本层的复合体。主干具有六个块,分辨率减半并依次增加深度:{4、8、24、64、64、128},以及一个用于多分辨率特征的融合块。

2.2. Local Feature Extraction

在本节中,将介绍如何使用backbone来提取局部特征并执行密集匹配。

Descriptor head.Descriptor head提取密集的特征图F\in \mathbb{R}^{H/8\times W/8\times 64},通过合并来自编码器的多尺度特征而获得。通过使用特征金字塔策略,并通过应用连续卷积块来廉价地增加网络的感受野,直到达到原始分辨率的1/32,这种策略在局部特征提取方面取得了成功,提高了对视点变化的鲁棒性,并且是小型网络backbones在实践中良好工作的关键因素。合并了三个不同尺度级别的中间表示:{1/8,1/16,1/32},通过双向上采样将所有中间表示投影到 H/8 × W/8 × 64,然后进行元素求和。最后,利用由三个基本层组成的卷积融合块,将表示组合成最终的特征表示F。使用额外的卷积模块对可靠性映射R\in \mathbb{R}^{H/8\times W/8}进行回归,该映射对给定局部特征F_{i,j}可以可靠匹配的无条件概率R_{i,j}进行建模。如图3所示

Keypoint head. 一般来说,局部特征提取的主干依赖于UNet、VGG和ResNets。SuperPoint中使用的策略提供了提取像素级关键点的最快方法。它使用最终编码器中具有原始图像分辨率 1/8 的特征,并通过从特征嵌入中对 8×8 网格中的关键点坐标进行分类来提取像素级关键点。本文采用类似于 SuperPoint 的策略,区别在于本文引入了一种新的方法,该方法采用专用的并行分支进行关键点检测,专注于low-level图像结构。如消融实验(第 4.4 节)所示,通过在单个神经网络主干中联合训练描述子和关键点回归器,显着降低紧凑 CNN 架构的半稠密匹配性能。

通过极简卷积分支有效地利用低级特征。为了在不牺牲速度的情况下保持空间分辨率,将输入图像表示为每个网格单元上由8×8个像素组成的2D网格,并将每个单元重塑为64维特征。这种表示保留了单个网格单元内的空间粒度,同时利用快速的 1 × 1 卷积来回归关键点坐标。在四个卷积层之后,获得了一个关键点嵌入K\in \mathbb{R}^{H/8\times W/8\times (64+1)},编码单元k_{i,j} \in K内的关键点分布的logits,并将该关键点分类为k_{i,j} \in \mathbb{R}^{65}内的64个可能位置之一,加上一个dustbin以考虑没有发现关键点的情况。在推理过程中,dustbin被丢弃,热图被重新解释为 8 × 8 单元格。如图3所示。

Dense matching. 最近的一些研究证明了密集图像区域匹配的好处,提高了覆盖范围和鲁棒性。本文提出了一种用于密集特征匹配的轻量级模块,与其他detector-free方法在两个方面有所不同。首先,通过根据可靠性得分R_{i,j}选择top-K个图像区域来控制内存和计算占用空间,并将它们缓存以备将来匹配。其次,提出了一种简单轻量级的多层感知器(MLP),可以在没有高分辨率特征图的情况下进行coarse-to-fine匹配,使我们能够在资源受限的环境中进行半稠密匹配。

给定密集的局部特征图F,输入空间分辨率的 1/8或子集F_{s} \in F,本文提出了一种简单的细化策略来恢复像素级偏移。设f_{a} \in F_{1}f_{b} \in F_{2}两个匹配特征,通过从图像对(I_{1},I_{2})的传统最近邻匹配获得。预测偏移量o =MLP(concat(f_{a},f_{b})),对偏移量(x,y)进行分类,从而在原始图像分辨率下实现正确的像素级匹配:

其中 o\in \mathbb{R}^{8\times 8}是可能偏移量上概率分布的对数。

匹配细化模块与网络backbone一起以端到端的方式进行训练,确保中间特征表示在紧凑的嵌入空间中保留细粒度的空间细节。偏移预测以粗略匹配的特征对(f_{a},f_{b})为条件,从而减少了搜索空间。图 4 展示了轻量级匹配细化模块。


3. Experiments

作者在相对相机姿态估计、视觉定位和单应性估计(homography estimation)方面评估了XFeat。通过消融实验证明本文设计的决策是合理的,并在无 GPU 设置中进行了全面的耗时分析。

3.1. Relative pose estimation

Setup. Megadepth和 ScanNet测试集的使用与之前的工作相同,在与本文的训练集不重叠的场景中提供相机姿势。这些场景同时包含显着的视点和照明变化,并呈现重复的结构。LO-RANSAC用于估计essential matrix。作者搜索每种方法的最佳阈值,并调整图像大小,在Megadepth使最大尺寸变为 1,200 像素,并在ScanNet使用默认 (VGA) 分辨率。

Metrics. 使用阈值为 {5, 10, 20}的曲线下面积(AUC)。此外,本文还报告了Acc@10°,即最大角度误差低于 10 度的姿势比例、平均内点比 (MIR),即符合 RANSAC 后估计模型的匹配点的比率,以及内点的数量 (#inliers)。最后,在没有 GPU 和 Intel(R) i5-1135G7 @ 2.40GHz CPU 的预算友好型笔记本电脑上测量每种方法的每秒帧数 (FPS)。还指出描述子是浮点(用 f 表示)还是基于二进制(用 b 表示)并报告描述子维数 (dim)。

Results. 表 1 显示了 Megadepth-1500 上相对相机姿态估计任务的指标。

本文的方法比最快的基于学习的解决方案(ALIKE)快得多(5×),并且在稀疏设置中在几个指标上取得了有竞争力的结果。此外,考虑到相同数量的描述子,它可以在 AUC@20°、Acc@10° 和 MIR 上使用 10000 个描述子为密集匹配配置提供最先进的结果,与DISK*相比,DISK*是一个更大的模型。图 5 显示了 XFeat 在现有解决方案中脱颖而出的示例。

与 DISK 和 SuperPoint 相比,本文的方法还允许与低维描述子 (64-f) 进行更有效的匹配。补充材料中提供了详细的时间分析,并与最近流行的学习匹配器进行了额外的定量比较。值得一提的是,由于需要对描述子进行插值并在更粗的分辨率下预测偏移量,因此本文在更宽松的阈值中获得了最先进的结果。表 2 显示了 ScanNet-1500 室内影像中最具竞争力的方法的 AUC 值。请注意,没有重新训练任何方法。DISK和ALIKE显示出偏向地标数据集的迹象,而本文的方法则表现出卓越的泛化性。补充材料中提供了有关ScanNet和Megadepth的更详细的讨论和定性结果。


3.2. Homography estimation

Setup.本文使用了广泛采用的HPatches数据集,其中包含来自平面场景的图像序列,具有中等到强烈的视角和照明变化。与相对姿态估计类似,本文使用 MAGSAC++在给定每种方法的对应关系的情况下稳健估计单应性变换。

Metrics. 遵循ALIKE协议并估计平均单应性准确度(MHA)。使用预定义的阈值为 {3, 5, 7} 像素。通过使用GT单应性和估计值将四个参考图像角变形到目标图像,考虑了以像素为单位的平均角误差来计算精度。

Results. 表 3 显示本文的方法与最准确的描述符相当,加强了本文提出的关键点和描述符头的鲁棒性。相比之下,ORB 和 SiLK 等其他轻量级解决方案的性能在照明和视点分割方面受到严重影响,因为它们在处理难例图像对中存在的激进视点和照明变化方面的能力有限。本文的方法也适用于不太严格的阈值。


3.3. Visual localization

Setup.HLoc用于定位来自Aachen数据集的昼夜场景图像。给定提供的关键点对应关系,HLoc 使用可用的GT相机姿势对 SfM 地图进行三角测量。然后,使用关键点匹配在 3D 地图中定位一组单独的查询图像。为了公平地进行比较,作者调整了图像的大小,使最大尺寸保持在 1024 像素,并提取了所有方法的前 4096 个关键点。

Metrics. 使用 HLoc 提供的标准指标,即在位置误差 {0.25m, 0.5m, 5m} 和旋转误差 {2°, 5°, 10°} 的阈值内正确估计的相机姿势的准确性。

Results. 表4显示了视觉定位实验的结果。本文的方法表现出与SuperPoint和DISK等领先方法相似的性能,同时实现了显着的速度优势,速度至少快了9倍,描述子也更紧凑。这些发现挑战了文献中的普遍趋势,即为下游任务采用更大、更复杂的模型。相反,它们强调了更简单模型的功效,这些模型不仅与精度相匹配,而且还提供了在资源受限系统上高效运行的好处。


3.4. Ablation

在表 5 中列出了几种配置来消融对比本文的架构。

评估了使用额外的synthetic warps(i) 进行训练是否有助于模型对具有挑战性的图像对变得更加鲁棒。真实变形和合成变形数据集上训练都是有益的,尤其是对于密集匹配设置。

其次,评估是否可以进一步减少网络中的通道数(ii)。作者将最后三个卷积块的通道减半为 32 个,而不是 64 个,但对于稀疏和密集设置,性能都会显著下降。作者还演示了为关键点检测设计并行分支背后的基本原理。

如果没有本文提出的keypoint head (iii),在类似于SuperPoint的输出描述子嵌入之上使用额外的卷积块。如表 5 所示,在这种特定设置下训练时,XFeat*的性能会下降,因为有限的网络大小限制了中间嵌入的容量,使它们在不可重复区域中的半稠密匹配效率降低,从而对匹配细化任务产生不利影响。因此,作者选择设计一个并行分支,在稀疏匹配和稠密匹配之间提供很好的权衡,如表 5 – Default和 (iii) 所示。

最后,作者评估了所提出的匹配细化模块的好处。对于XFeat*来说,匹配细化步骤对于提高准确性至关重要。在作者的基准测试中,与平均 10,000 个描述子的 MNN 匹配相比,该模块仅会产生额外的 11% 推理成本。

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

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

相关文章

sqlite基本操作

简介 文章目录 简介1.数据库的安装2.数据库命令:API,创建表单代码 csprintf()getchar和scanf() 1.数据库的安装 sudo dpkg -i *.deb这个报错表明出现依赖问题 用这个命令后再试试sudo apt --fix-broken in…

Nocobase快速上手 - 开发第一个插件

在前面的几篇博文中,记录了在Nocobase中配置collection和界面,这篇文章开始插件的开发。插件可以扩展Nocobase的业务能力,解锁更强大的功能。 环境搭建 创建插件需要配置nocobase的开发环境,笔者采用的是clone 官方代码repo的方…

【Centos7】解决 CentOS 7 中出现 “xx: command not found“ 错误的全面指南

【Centos7】初探xx:command not found解决方案 大家好 我是寸铁👊 【Centos7】解决 CentOS 7 中出现 “xx: command not found” 错误的全面指南✨ 喜欢的小伙伴可以点点关注 💝 前言 经常有小伙伴问我,xx:command not found怎么办&#xff1…

GPT-4o如何重塑AI未来!

如何评价GPT-4o? 简介:最近,GPT-4o横空出世。对GPT-4o这一人工智能技术进行评价,包括版本间的对比分析、GPT-4o的技术能力以及个人感受等。 GPT-4o似乎是一个针对GPT-4模型进行优化的版本,它在性能、准确性、资源效率以及安全和…

http请求方法get和post的区别

T04BF 👋专栏: 算法|JAVA|MySQL|C语言 🫵 今天你敲代码了吗 目录 关于http请求方法get和post的区别真正区别存在问题的区别 关于http请求方法get和post的区别 真正区别 实际上二者差异不大,在http里面,使用get的场景,使用post也可以;同样,使用post的场景…

22 、系统安全

新的服务器到手,部署服务器初始化。 1、配置ip地址 网关dns解析(static)内网和外网。 2、安装源,外网(在线即可),内网(只能用源码包编译安装)。 3、磁盘分区&#xff…

浅谈安科瑞ASJ10-LD1A智能漏电继电器的设计与应用-安科瑞 蒋静

一 产品简介 功能 ASJ10-LD1A安科瑞智能电力继电器 剩余电流保护可与低压断路器或低压接触器等组成组合式的剩余电流动作保护器,主要适用于交流50Hz,额定电压为400V及以下的TT或TN系统配电线路,防止接地故障电流引起的设备和电气火灾事故&a…

数字水印 | 盲水印嵌入:量化索引机制 QIM

目录 1 什么是量化索引调制?1.1 为什么使用 QIM?1.2 QIM 的算法思想1.3 什么是量化操作?1.4 论文中对 QIM 的介绍 2 盲水印论文中的实际应用2.1 均匀量化器2.2 对论文的分析 😇说明:本文中的载体信息 原始信息…

VS远程调试步骤

1、背景 生产环境是没有开发环境的,,那生产环境上运行的程序,出了问题,如何远程调试它? 可以借助VS的远程调试。 2、步骤 1)将E:\VS2019\install\Common7\IDE\Remote Debugger目录整体拷贝到生产环境机器…

vs2019 c++20 规范的 STL 库的智能指针 shared、unique 、weak 、auto 及 make_** 函数的源码注释汇总,和几个结论

智能指针的源码都在 《memory》 头文件中。因为头文件太长,再者本次整理是基于以前的零散的模板分析。故相当于抽取了该头文件中关于智能指针的源码进行分析,注释。 (1 探讨一)当独占指针指向数组时,其默认的删除器是…

微服务-Nacos-安装-集成SpringBoot

微服务-SpringCloud-ALibaba-Nacos Nacos 是阿里巴巴推出的 SpringCloud的组件 官网:什么是 Nacos 主要是为了解决微服务的架构中 服务治理的问题服务治理就是进行服务的自动化管理,其核心是服务的注册与发现。 服务注册:服务实例将自身服务信息注册…

【vue】vue2项目将npm包管理器修改为yarn包管理器

【vue】vue2项目将npm包管理器修改为yarn包管理器 1.删除node_modules文件夹、package-lock.json文件 2.全局安装yarn npm install -g yarn3.安装项目依赖 yarn install如果执行yarn install 报类似以下这种版本不兼容错误,执行 yarn config set ignore-engines …

[SWPUCTF 2023 秋季新生赛]Junk Code

方法一:手动去除 将所有E9修改为90即可 方法二:花指令去除脚本 start_addr 0x0000000140001454 end_addr 0x00000001400015C7 print(start_addr) print(end_addr) for i in range(start_addr,end_addr):if get_wide_byte(i) 0xE9:patch_byte(i,0x9…

【激光雕刻机上位机的成品软件】核心功能 - 参考wecreat

Software | WeCreat MakeIt! https://wecreat.com/pages/software 体验软件如上,自行下载体验。 价格5W,本人为 wecreat 创立之初上位机软件开发的核心员工,详细内容私信我。 由于该公司快3个月未给我竞业补偿了,对我不仁那我…

华为昇腾310 ATC模型转换、CPP推理案例使用

参考: https://cnloong.blog.csdn.net/article/details/139293689 https://gitee.com/ascend/samples/tree/master/inference/modelInference/sampleResnetQuickStart/cpp https://developer.huawei.com/consumer/cn/forum/topic/0203148227811150357 官方图像分类案例下载: …

数据结构与算法笔记:基础篇 - 链表(上):如何实LRU缓存淘汰算法

概述 本章聊聊 “链表” 这个数据结构。学习链表有什么作用? 我们先来讨论一个经典的链表应用场景,那就是 LRU 缓存淘汰算法。 缓存是一种提高数据读取性能的技术,在硬件设计、软件开发中有着非常广泛地应用,比如场景的 CPU 缓…

字符串-将str1编辑成str2所需最小代价(hard)

一、题目描述 二、解题思路 该题目使用动态规划的思想来解决问题 刚开始我还在想,删除添加的操作可以等价为替换操作,如果替换操作的Cost大于删除添加组合操作的Cost之和就需要把 rcdcic。 但是在动态规划中,如果对三种不同的操作方式进行…

C++ 的 Tag Dispatching(标签派发) 惯用法

目录 1.概述 2.标准库中的例子 3.使用自己的 Tag Dispatching 3.1.使用 type traits 技术 3.2.使用 Type_2_Type 技术 4.Tag Dispatching的使用场景 5.总结 1.概述 一般重载函数的设计是根据不同的参数决定具体做什么事情,编译器会根据参数匹配的原则确定正确…

域内攻击--->基于资源的约束委派(RBCD)

不同于约束和非约束委派,基于资源的约束性委派可以就难的多了!! 前方高能 ,准备上车!! 目录 1.基于资源的约束性委派(RBCD) 2.谁能设置RBCD 3.机器入域账号的普及 4.域树的搭建 5.配置RBCD 6.通过域创…

【前端部署——vercel】部署next.js使用了prisma的项目

部署流程参考 https://blog.csdn.net/qq_51116518/article/details/137042682 问题 PrismaClientInitializationError: Prisma has detected that this project was built on Vercel, which caches dependencies. This leads to an outdated Prisma Client because Prisma’s …