• 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

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

    在整个网络中修剪通道C" role="presentation" style="position: relative;">C会损害其处理照明和视角变化等挑战的能力。

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

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

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

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

    2.2. Local Feature Extraction

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

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

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

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

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

    给定密集的局部特征图F" role="presentation" style="position: relative;">F,输入空间分辨率的 1/8或子集FsF" role="presentation" style="position: relative;">FsF,本文提出了一种简单的细化策略来恢复像素级偏移。设faF1" role="presentation" style="position: relative;">faF1fbF2" role="presentation" style="position: relative;">fbF2两个匹配特征,通过从图像对(I1,I2)" role="presentation" style="position: relative;">(I1,I2)的传统最近邻匹配获得。预测偏移量o=MLP(concat(fa,fb))" role="presentation" style="position: relative;">o=MLP(concat(fa,fb)),对偏移量(x,y)" role="presentation" style="position: relative;">(x,y)进行分类,从而在原始图像分辨率下实现正确的像素级匹配:

    其中 oR8×8" role="presentation" style="position: relative;">oR8×8是可能偏移量上概率分布的对数。

    匹配细化模块与网络backbone一起以端到端的方式进行训练,确保中间特征表示在紧凑的嵌入空间中保留细粒度的空间细节。偏移预测以粗略匹配的特征对(fa,fb)" role="presentation" style="position: relative;">(fa,fb)为条件,从而减少了搜索空间。图 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% 推理成本。

  • 相关阅读:
    vue3的单组件的编写(三)【响应式 API 之 toRef 与 toRefs】
    什么是继承?什么是组合?为何说要多用组合少用继承?
    Fastflow——基于golang的轻量级工作流框架
    【博客498】k8s kubelet device-plugins
    物联网卡的计费方法,初入物联网的小白需要掌握的
    【2023CANN训练营第二季】——通过一份入门级算子开发代码了解Ascend C算子开发流程
    Spring——AOP
    vue3 也有总线传值 (mitt使用闭坑指南)
    【网络服务&数据库教程】09 Tomcat 与 Rsync 服务
    vue、react中虚拟的dom
  • 原文地址:https://blog.csdn.net/athrunsunny/article/details/139381482