论文题目
XFeat: Accelerated Features for Lightweight Image Matching
摘要
我们为资源高效的视觉通信引入了一个轻量级和精确的体系结构。我们的方法被称为XFeat(加速特征),重新审视了卷积神经网络中用于检测、提取和匹配局部特征的基本设计选择。我们的新模型满足了对适用于资源有限设备的快速鲁棒算法的关键需求。特别是,准确的图像匹配需要足够大的图像分辨率—因此,我们在限制网络中的通道数量的同时保持尽可能大的分辨率。此外,我们的模型旨在提供稀疏或半密集级别的匹配选择,每种匹配可能更适合不同的下游应用,例如视觉导航和增强现实。我们的模型是第一个有效地提供半密集匹配的模型,它利用了一种依赖于粗糙局部描述符的新型匹配细化模块。XFeat是通用的,与硬件无关,在速度上超过了目前基于深度学习的局部特征(快5倍),具有相当或更好的精度,在姿势估计和视觉定位方面得到了证明。我们展示了它在没有专门硬件优化的廉价笔记本电脑CPU上实时运行。
欢迎加入自动驾驶实战群
1. 介绍
作为许多高级视觉任务的关键步骤,局部图像特征提取一直是一个非常活跃的研究课题。尽管最近取得了进展,但最近的图像匹配方法[5,8,40,41]所取得的巨大改进大多是以高计算需求和增加的实现复杂性为代价的。由于图像特征提取对无数任务至关重要[1,25,27,29,35,38,44],因此非常需要高效的解决方案,特别是在资源受限的情况下诸如移动机器人、增强现实和便携式设备等平台,在这些平台上,稀缺的计算资源通常同时分配给多个任务。虽然具体的工作是针对现有架构进行硬件层面的优化[13],但在实践中仍然是针对硬件的,而且很麻烦,很少有工作是针对架构设计进行高效的特征提取[46]。
从图像匹配的几个前沿的最新发展中获得灵感,我们提出了XFeat:一种新颖的卷积神经网络(CNN)架构,它使用精心设计的策略执行关键点检测和局部特征提取,以尽可能减少计算足迹,同时保持鲁棒性和准确性。XFeat被设计为与硬件无关,确保跨平台的广泛适用性这并不排除在特定硬件配置上优化XFeat的可能性。此外,XFeat既适合进行基于关键点的稀疏特征匹配,也适合进行粗特征映射的密集匹配。这种多功能性带来了两全其美的效果:基于关键点的方法更适合基于结构-运动(SfM)地图的高效视觉定位[35],而密集特征匹配对于纹理较差的场景中的相对相机姿态估计更有效[5,40]。
与目前可用的图像对应方法相比,我们的方法显著提高了匹配精度和计算效率之间的权衡比率,如图1所示,在速度上优于所有轻量级深度学习局部特征替代方案高达5倍,而在精度上可与SuperPoint[7]和DISK[42]等更大的模型相媲美。
为了降低计算成本,同时保持具有竞争力的准确性,我们的工作带来了三个主要贡献:
•一种新颖的轻量级CNN架构,可以部署在资源受限的平台和需要高吞吐量或计算效率的下游任务上,而不需要耗时的特定硬件优化。在视觉定位和相机姿态估计等下游任务中,我们的方法可以很容易地取代现有的轻量级手工解决方案[34]、昂贵的深度模型[7,42]和轻量级深度模型[46];
•我们设计了一个极简的、可学习的关键点检测分支,该分支快速且适用于小型提取器主干,显示了其在视觉定位、相机姿态估计和单应性配准方面的有效性;
•最后,提出了一种新的匹配细化模块,用于从粗糙的半密集匹配中获得像素级偏移。与现有技术相比[5,40],我们的新策略除了局部描述符本身之外不需要高分辨率特征,大大减少了计算量,实现了如图1和图2所示的高精度和匹配密度。
2. 相关工作
图像匹配。现代图像匹配技术包括使用经典关键点检测[10,21]结合基于深度学习的局部补丁描述[23,24,26,30,31],以及在同一CNN主干中执行联合关键点检测和描述[7,32,33,42]。最近,被称为学习匹配器[14,20,36]的中端方法,以及端到端半密集[5,40]和密集[8,41]的方法,在匹配宽基线图像对的鲁棒性和准确性方面表现出了显著的提高,特别是随着变压器架构的最新进展[43]。然而,最近的方法在很大程度上强调图像匹配的准确性和鲁棒性,从而将计算需求膨胀到不希望的水平,即使对于具有中等GPU资源的系统也是如此。它们需要显著的适应性才能在大规模下游任务中高效地工作,如视觉定位[35]、同时定位和绘图[25]以及运动结构[38]。相比之下,在本文中,我们表明,在稀疏关键点提取和像素级半密集匹配中,有可能大幅降低计算利用率,同时获得与计算成本更高的方法相似甚至更好的性能。
高效的描述和匹配。最近的工作强调了对描述和匹配的计算效率的日益重视。SuperPoint[7]提出了一种自监督CNN,用于关键点检测和描述。然而,使用SuperPoint的一个主要缺点是,当应用于图像匹配中常见的图像大小时,它仍然会产生大量的计算成本。SiLK[9]重新评估了学习到的特征提取元素,提出了一种有效而简单的关键点和描述符学习策略,实现了与现有方法相当的性能。强调SiLK竞争力的关键方面—它对描述符提取的原始图像大小的依赖—也是它在计算成本方面的主要缺点,因为它大大降低了推理速度。ALIKE[46]引入了一种平衡鲁棒性和速度的轻量级网络,具有可微分的关键点检测和神经重投影损失。但是,它对最终特征映射中的原始图像分辨率的依赖大大增加了内存和计算占用。ZippyPoint[13]在CNN中结合了量化和二值化。尽管它取得了显著的速度改进,但它需要自定义编译和特定的低级处理器算术操作,限制了它在不同硬件上的适用性。
考虑极简CNN架构的作品可以在卷积块中使用固定的手工滤波器和学习滤波器[4]。除了特征提取之外,特征匹配方面的最新进展也强调了快速推理速度的必要性。与SuperGlue相比,LightGlue[20]加快了可学习特征匹配的速度,并保持了较高的准确性[36]。尽管如此,LightGlue基于变压器的架构对于计算效率至关重要的任务来说仍然是昂贵的。与现有方法相比,我们专注于高效和鲁棒的图像匹配,用于无处不在的部署:从资源有限的设备,如低预算板和嵌入式系统到智能手机和云应用程序。
3. XFeat:加速特征
局部特征提取的精度很大程度上取决于输入图像的分辨率。例如,在相机姿势、视觉定位和SfM任务中,对应应该足够细粒度,以允许像素级匹配。然而,将高分辨率图像输入网络骨干网会将计算需求增加到不希望的水平,即使对于简单的小型网络骨干网,如SuperPoint VGG-like架构[7,39]。在本节中,我们描述了如何使用最小化计算预算的策略来显著降低计算成本,同时减轻由于相当小的CNN主干而造成的鲁棒性损失。
3.1. 轻量级网络骨干
设I∈RH×W ×C为灰度图像,其中H为高度,W为宽度(以像素为单位),C = 1为通道数。为了降低CNN的处理成本,一种常见的方法是从浅卷积开始,然后逐渐将空间维度(Hi, Wi)减半,同时将第i个卷积块中的通道计数Ci加倍[39]。假设一个单位步长、填充、无偏置项、平方核大小为k × k的卷积层,则第i层的卷积代价以浮点运算次数(Fops)表示为:
如消融实验所示,在整个网络中修剪通道C会损害其处理不同光照和视点等挑战的能力(第4.4节)。
高效网络[12,45]使用深度可分离卷积,以比标准卷积更少的参数将Fops减少9倍(具有3 × 3内核大小)。然而,在局部特征提取中,其中比较浅网络处理更大的图像分辨率[7,9,22,33,46],这种方法在分类和目标检测等低分辨率输入场景中的效果不如最初使用的方法[11,12,39]。这导致局部特征提取的浅层网络的表示能力有限,速度增益较小。
在Eq.(1)中,Hi∗Wi项成为影响cnn中Fops的主要计算瓶颈。SuperPoint[7]和ALIKE[46]统一减少通道深度和层数来缓解问题。我们深入研究了这个问题的核心,制定了一个最小化早期层深度和重新配置通道分布的策略,显著改善了精度与计算的权衡。由于高空间分辨率,我们提出的策略包括尽可能减少初始卷积层中的通道计数。为了抵消参数减少的影响,我们建议随着空间分辨率的降低,将通道数量增加三倍,直到达到足够数量的通道(对于局部特征主干通常为128个通道[22,33,42]),而不是坚持传统的类似vgg的倍增通道方法[39]。该策略的特点是,随着空间分辨率减半,卷积深度增加了三倍,有效地重新分配了网络的卷积深度。它保证了早期层的最小深度,同时补偿了骨干上减少的参数计数。这种方法不仅显著降低了早期阶段的计算负荷,特别是对于高分辨率图像,而且通过更有效地管理卷积深度,优化了网络的整体容量。我们发现空间精度和加速增益之间的良好权衡,从C = 4通道开始,在最终编码器块中以C = 128结束,实现H/32 × W/32的空间分辨率。
我们的网络的简单性被固定在称为基本层的块上,一个核大小从1到3的二维卷积,ReLU + BatchNorm,以及一个分辨率降低的2步,形成卷积块,每个块都是基本层的复合。该主干具有六个块,依次为{4,8,24,64,64,128},分辨率减半,深度增加,再加上一个多分辨率特征的融合块。关于架构的更多细节见补充材料。
3.2. 局部特征提取
在本节中,我们将描述如何使用主干提取局部特征并执行密集匹配。
Descriptor head。描述符头部提取密集特征映射F∈RH/8×W/8×64,该特征映射由编码器的多尺度特征合并得到。通过使用特征金字塔策略[19],我们通过应用连续的卷积块来低成本地增加网络的接受域,直到达到原始分辨率的1/32已经成功地在局部特征提取中增加了对视点变化的鲁棒性[22,42,46],这是小型网络骨干网在实践中良好工作的关键因素。我们在三个不同的尺度上合并中间表示:{1/ 8,1 / 16,1 /32},通过双线性上采样并将所有中间表示投影到H/8 × W/8 × 64,然后进行元素求和。最后,使用由三个基本层组成的卷积融合块将这些表示组合成最终的特征表示f。使用另外一个卷积块回归可靠性映射R∈RH/8×W/8,该映射模拟给定局部特征Fi,j可以自信匹配的无条件概率Ri,j。我们的方法概述如图3所示。
关键点的头。通常,用于局部特征提取的主干依赖于UNets[42]、VGG[7]和ResNets[22]。SuperPoint[7]中使用的策略提供了提取像素级关键点的最快方法。该算法在最终编码器中使用原始图像分辨率为1/8的特征,并通过从特征嵌入中对扁平8×8网格中关键点的坐标进行分类来提取像素级关键点。我们采用了类似于SuperPoint的策略,但有很大的不同。我们介绍了一种新颖的方法,该方法采用专用的并行分支来检测低级图像结构的关键点。如消融实验(第4.4节)所示,在单个神经网络主干内联合训练描述符和关键点回归量会显著降低紧凑CNN架构的半密集匹配性能。
我们的关键见解在于通过极简卷积分支有效地利用低级特征。为了在不牺牲速度的情况下保持空间分辨率,我们将输入图像表示为每个网格单元由8 × 8像素组成的2D网格,并将每个网格单元重塑为64维特征。这种表示保留了单个细胞内的空间粒度,同时利用快速的1 × 1卷积来回归关键点坐标。经过四层卷积后,我们得到一个嵌入K∈RH/8×W/ 8x(64+1)的关键点,对细胞ki,j∈K内关键点分布的对数进行编码,并将关键点分类为ki,j∈R65内64个可能位置中的一个,再加上一个箱,以考虑没有找到关键点的情况[7]。在推理过程中,垃圾箱被丢弃,热图被重新解释为8 × 8的单元格。图3描绘了关键点头的整个过程。
密集匹配。最近的研究[5,40]已经证明了密集图像区域匹配的好处,可以提高覆盖率和鲁棒性。我们的工作提出了一个用于密集特征匹配的轻量级模块,与其他无检测器方法在两个方面不同。首先,我们可以通过根据可靠性评分Ri,j选择top-K图像区域并缓存它们以备将来匹配来控制内存和计算内存占用。其次,我们提出了一种简单轻量级的多层感知器(MLP)来执行粗到细的匹配,而不需要高分辨率的特征图[9,40],使我们能够在资源受限的情况下执行半密集匹配。
给定密集的局部特征映射F(输入空间分辨率的1/8)或子集F∈F,我们提出了一种简单的细化策略来恢复像素级偏移。设fa∈F1, fb∈F2为对图像(I1, I2)进行传统最近邻匹配得到的两个匹配特征。我们预测偏移量o = MLP(concat(fa, fb)),对偏移量(x, y)进行分类,从而在原始图像分辨率下实现正确的像素级匹配:
其中o∈R8×8是概率分布对可能偏移量的对数。
匹配细化模块与骨干网络一起以端到端方式进行训练,确保中间特征表示在紧凑的嵌入空间内保留细粒度的空间细节。偏移量预测以粗匹配的特征对(fa, fb)为条件,减少了搜索空间。图4说明了轻量级匹配细化模块。
3.3. 网络训练
我们以监督的方式训练XFeat,具有像素级的地面真值对应。我们假设图像对(I1, I2)有N个匹配的象素MI1↔I2∈RN×4,其中MI1的前两列↔I2对I1中点的(x, y)坐标进行编码,最后两列对I2进行编码。
学习局部描述符。为了监督局部特征嵌入F,我们使用负对数似然(NLL)损失。描述符集F1和F2从密集映射F(·,·)中采样,每个描述符集在RN×64中表示,包含N个64维描述符。第i行F1(i,·)和F2(i,·)分别对应I1和I2中同一点的两个描述符。然后,相似矩阵S∈RN×N由:S = F1FT2得到。考虑到匹配的对称性,我们同时取两个匹配方向[40],得到双softmax损失ld,其中对应特征的相似性度量在S的主对角线Sii上,按行执行softmax:
学习可靠性。我们在训练过程中通过将dual-softmax概率解释为一个置信度度量来监督可靠性图,表示为¯R∈RN。用dual-softmax策略匹配F1和F2得到¯R1和¯R2:¯R1 = max(softmaxr(S)),¯R2 = max(softmaxr(ST)),类似于Eq.(3)。随着训练的进行,直观地,不同的特征将具有较高的置信度匹配概率。因此,在给定双softmax分数¯R1和¯R2的情况下,我们直接用L1损失监督可靠性映射:
其中σ为sigmoid激活函数,⊙为Hadamard积。注意,对于可靠性损失Lrel,我们只通过R反向传播梯度。
学习像素偏移。匹配细化模块由原始输入图像分辨率下从地真值对应MI1↔I2获得的像素级偏移进行监督。我们还使用了第3.2节中描述的对数上的NLL损失。在训练过程中,使用MI1↔I2(i,·)得到相应的描述符F1(i,·)和F2(i,·)及其真地偏移量(¯x,¯y),得到精细匹配损失Lfine:
学习关键点。我们的关键点检测分支是极简设计。虽然有可能用现有的关键点损失来监督关键点头部[33,42,46],但我们选择使用来自更大的教师网络的知识蒸馏来促进其学习。我们选择了ALIKE[46]从其微小骨干中获得的关键点来监督我们的模型。这种选择是战略性的,因为较小的主干倾向于集中于较低级别的图像特征,如角、线和斑点,考虑到我们设计的检测器分支的有限的接受域大小为8 × 8像素,这与我们设计的检测器分支很好地对齐。给定关键点原始logit映射K∈RH/8×W/ 8x(64+1),我们将每个单元ki,j∈R65内教师网络(tx, ty)中的关键点坐标映射到线性索引tidx = (tx + ty * 8), tidx∈{0,1,…63}。为了监督垃圾箱,当在单元格ki,j中没有检测到关键点时,我们设置tidx = 64。在训练过程中,我们为无关键点的情况设置了样本上限,以避免类不平衡。最后,利用NLL损耗计算关键点损耗Lkp:
最后的损失L是所有损失的线性组合:
其中{α, β, γ, δ}是调节不同损失大小的超参数。
4. 实验
我们在相对相机姿态估计、视觉定位和单应性估计上评估XFeat。我们还提供了一些示例来证明我们的设计决策,并在无gpu设置下进行了全面的运行时分析。
训练。XFeat在PyTorch[28]上实现,并在Megadepth[17]和合成扭曲的COCO[18]图像的混合上进行训练,使用6:4的比例,图像大小调整为(W = 800, H = 600)。在我们的实验中发现混合训练可以增强泛化(第4.4节),这与最近的研究结果一致[20]。训练涉及使用Adam优化器[15]的10个图像对的批次,导致在NVIDIA RTX 4090 GPU上36小时内收敛。关于计算资源利用和超参数细节的进一步细节在补充材料中提供。
XFeat推理。我们考虑了两种设置:稀疏匹配(XFeat)和半密集匹配(XFeat∗),两者都使用相同的预训练主干。在XFeat中,我们从关键点热图K中提取了多达4,096个关键点,使用从关键点和可靠性置信度中获得的分数:score = Ki,j·Ri,j。然后从F中对这些关键点位置的局部特征进行双次插值,并使用互近邻(MNN)搜索进行匹配。对于XFeat *,我们通过以2种不同的尺度(0.65和1.3,在接收到输入后内部调整图像大小)处理图像来增强特征,根据可靠性保留前10,000个特征。我们使用MNN搜索和偏移量细化来匹配特征,只保留偏移量预测置信度高于0.2的特征。
基线。在选择的基线中,DISK[42]以增加的计算需求为代价,在准确性方面设置了很高的基准。其次是SiLK[9]、SuperPoint[7]、ZippyPoint[7]和ALIKE[46]。对于SiLK和ALIKE,我们选择了它们最小的可用主干—ALIKE- tiny和VGGnp-µ——与我们对强调计算效率的模型的关注保持一致。最后,ORB[46]代表了速度的上限。因此,我们通过涵盖计算费用和准确性范围的各种基线,根据当前最先进的技术来评估XFeat。我们对所有基线使用前4096个检测到的关键点,除了那些标记为*的基线,其中使用前10,000个关键点。对于匹配,采用MNN搜索。由于缺乏明确的说明,ZippyPoint模型以作者提供的形式使用,没有特定于硬件的编译。
4.1. 相对姿态估计
设置。Megadepth[17]和ScanNet[6]测试集与之前的作品[20,40]一样使用,提供与我们的训练集不重叠的场景中的相机姿势。场景同时包含重要的视点和照明变化,呈现重复的结构,这是一个重大的挑战。LO-RANSAC[16]用于估计本质矩阵。我们为每种方法搜索最佳阈值,并调整图像大小,使最大尺寸成为Megadepth的1,200像素,并使用ScanNet的默认(VGA)分辨率。
指标。我们使用阈值为{5◦,10◦,20◦}的曲线下面积(AUC)[20,40]。此外,我们还报告了Acc@10◦,这是最大角度误差低于10度的姿势比例,平均inlier ratio (MIR),这是RANSAC后符合估计模型的匹配点的比例,以及inlier点的数量(#inliers)。最后,我们在没有GPU和Intel(R) i5-1135G7 @ 2.40GHz CPU的廉价笔记本电脑上测量了每种方法的每秒帧数(FPS)。我们还指出描述符是浮点的(用f表示)还是基于二进制的(用b表示),并报告描述符的维数(dim)。
结果。表1显示了Megadepth-1500上相对相机姿态估计任务的指标。我们的方法比最快的基于学习的解决方案(ALIKE)快得多(5倍),并且在几个指标的稀疏设置中获得了有竞争力的结果。此外,考虑到相同数量的描述符,它可以提供最先进的密集匹配配置,使用AUC@20◦,Acc@10◦和MIR上的10,000个描述符,。图5展示了XFeat在现有解决方案中脱颖而出的例子。与DISK和SuperPoint相比,我们的方法还允许更有效地匹配低维描述符(64-f)。在补充材料中提供了详细的时序分析,并与最近流行的学习匹配器进行了额外的定量比较[20,40,47]。
值得一提的是,由于需要在更粗的分辨率下插值描述符和预测偏移量,我们在更宽松的阈值下获得了最先进的结果。表2显示了ScanNet-1500室内图像中最具竞争力的方法的AUC值。注意,没有任何方法经过重新训练。DISK和ALIKE显示出对地标数据集的偏见,而我们的方法显示出优越的泛化。关于ScanNet和Megadepth的更详细的讨论和定性结果可在补充材料中找到。
4.2. 单应性估计
设置。我们使用了广泛采用的HPatches[2]数据集,其中包含来自平面场景的图像序列,这些图像序列具有中等到强烈的视点和照明变化。与相对姿态估计类似,我们使用MAGSAC++[3]在给定每种方法对应关系的情况下稳健地估计单应性变换。
指标。我们遵循ALIKE[46]方案并估计平均单应性准确性(MHA)。我们使用定义的阈值为{3,5,7}像素。利用真值单应性和估计单应性将参考图像的4个角点扭曲到目标图像,考虑像素的平均角点误差计算精度。
结果。表3显示,我们的方法与最准确的描述符相当,增强了我们提出的关键点和描述符头部的鲁棒性。相比之下,其他轻量级解决方案(如ORB和SiLK)的性能在照明和视点分割方面受到严重损害,因为它们在处理最硬图像对中出现的剧烈视点和照明变化方面的能力有限。我们的方法也适用于不太严格的阈值,如第4.1节-结果中所讨论的。
4.3. 定位可视化
设置。分层定位管道HLoc[35]用于定位来自Aachen数据集[37]的白天和夜景图像。给定提供的关键点对应关系,HLoc使用可用的地真相机姿势对SfM地图进行三角测量。然后使用关键点匹配在3D地图中本地化一组单独的查询图像。为了进行公平的比较,我们调整了图像的大小,使最大尺寸保持在1024像素,并为所有方法提取最前面的4096个关键点。
指标。我们使用HLoc提供的标准度量,即正确估计相机姿势的精度在位置误差{0.25m, 0.5m, 5m}和旋转误差{2◦,5◦,10◦}的阈值范围内。
结果。表4为视觉定位实验结果。我们的方法展示了与SuperPoint和DISK等领先方法相似的性能,同时实现了显著的速度优势,速度至少快9倍,描述符更紧凑。这些发现挑战了文献中使用大型和更复杂的下游任务模型的流行趋势。相反,它们强调了更简单的模型的有效性,这些模型不仅符合准确性,而且在资源受限的系统上提供有效操作的好处。
4.4. 消融
我们在表5中列出了几种配置,以简化我们的体系结构。我们评估使用额外的合成翘曲(i)训练是否可以帮助模型对具有挑战性的图像对变得更健壮。训练真实翘曲和合成翘曲都是有益的,特别是对于密集的匹配设置。其次,我们评估是否可以进一步减少网络中的通道计数(ii)。我们将最后三个卷积块的通道减半到32而不是64,但对于稀疏和密集设置,性能都会显著下降。我们还演示了为关键点检测设计并行分支的基本原理。如果没有建议的关键点头(iii),则在类似于SuperPoint的输出描述符嵌入之上使用额外的卷积块。如Tab5所示。在这种特定设置下训练时,XFeat *的性能会下降,因为有限的网络大小限制了中间嵌入的容量,使得它们在非重复区域的半密集匹配中效果较差,对匹配细化任务产生不利影响。因此,我们选择设计一个并行分支,它在稀疏匹配和密集匹配之间提供了很好的权衡,如表5所示。默认和(iii)。最后,我们评估我们提出的匹配细化模块的好处。对于XFeat *,匹配细化步骤对于提高精度至关重要。在我们的基准测试中,与平均10,000个描述符的MNN匹配相比,该模块仅产生11%的额外推理成本。请查看补充材料,以便进行全面的时间分析。
5. 结论
这项工作引入了XFeat,一种用于加速特征提取的轻量级CNN架构,适用于稀疏和半密集图像匹配。通过对三种不同任务的实验和消融分析,我们证明了无需借助高级低级硬件优化就可以实现快速准确的图像匹配。这与部署越来越大、越来越复杂的模型的流行趋势形成了对比。我们相信XFeat为增强现实和移动机器人的下一代应用铺平了道路,在这些应用中,高效和通用的数据驱动解决方案对于现实世界的部署仍然至关重要,特别是在移动应用中。
最后别忘了,帮忙点“在看”。
您的点赞,在看,是我创作的动力。
AiFighing是全网第一且唯一以代码、项目的形式讲解自动驾驶感知方向的关键技术。
长按扫描下面二维码,加入知识星球。