CVPR2024 | 最强大的特征匹配!RoMa论文精读

论文地址:RoMa: Robust Dense Feature Matching

源代码:GitHub - Parskatt/RoMa: [CVPR 2024] RoMa: Robust Dense Feature Matching; RoMa is the robust dense feature matcher capable of estimating pixel-dense warps and reliable certainties for almost any image pair.

图1:RoMa具有鲁棒性,即能够在极端变化下进行匹配。我们提出了RoMa,这是一个用于密集特征匹配的模型,能够在尺度、光照、视角和纹理等现实世界中各种具有挑战性的变化下进行匹配。我们在极具挑战性的基准测试WxBS上展示了RoMa估计的对应关系,大多数先前的方法在此基准上都失败了,而我们在其上取得了36%的平均准确率(mAA)提升,创造了新的最佳性能。通过从另一张图像中双线性采样坐标,并使用估计的变换和置信度进行乘法运算,可视化估计的对应关系。

摘要

        特征匹配是计算机视觉中的一个重要任务,它涉及估计两张三维场景图像之间的对应关系,而密集方法则估计所有这样的对应关系。我们的目标是学习一个鲁棒的模型,即能够在现实世界中的各种挑战性变化下进行匹配的模型。在本工作中,我们提出了这样一个模型,利用了来自基础模型DINOv2的预训练冻结特征。尽管这些特征比从头开始训练的局部特征要鲁棒得多,但它们本质上是粗糙的。因此,我们将它们与专门的ConvNet细特征相结合,创建了一个能够精确定位的特征金字塔。为了进一步提高鲁棒性,我们提出了一个定制的Transformer匹配解码器,它预测锚点概率,从而能够表达多模态性。最后,我们通过回归分类和随后的鲁棒回归改进了损失函数的表述。我们进行了一系列全面的实验,结果表明,我们的方法RoMa取得了显著的进展,并创造了新的最佳水平。特别是在极具挑战性的WxBS基准测试中,我们实现了36%的改进

1. 引言

特征匹配是计算机视觉中的一个重要任务,其目标是从两张图像中估计出对应于同一三维点的像素对。这一任务对于下游任务(如三维重建和视觉定位)至关重要。密集特征匹配方法旨在找到图像之间所有匹配的像素对。这些密集方法采用从粗到精的方法,首先在粗略级别上预测匹配,然后在更精细的分辨率上逐步细化。以往的方法通常使用三维监督来学习粗特征。虽然这可以实现专门化的粗特征,但也存在一些缺点。特别是,由于收集现实世界的三维数据集成本高昂,可用数据量有限,这意味着模型可能会过度拟合训练集。这反过来又限制了模型对与训练期间所见场景差异较大的场景的鲁棒性。一种众所周知的限制过拟合的方法是冻结所使用的骨干网络。然而,使用在ImageNet分类上预训练的冻结骨干网络时,其开箱即用的性能对于特征匹配是不够的(见表1中的实验)。最近,一个有前景的方向是利用大规模自监督预训练,特别是使用掩码图像建模(MIM)的预训练。这些方法(包括DINOv2)比分类预训练更好地保留了局部信息,并已被证明在密集视觉任务中具有良好的泛化能力。然而,由于缺乏用于细化的细特征,DINOv2在密集特征匹配中的应用仍然存在复杂性。

我们通过使用冻结的DINOv2编码器来解决粗特征的问题,同时利用提出的专门的ConvNet编码器来生成细特征。这样做的好处是结合了DINOv2的优秀通用特征,同时又具备高精度的细特征。我们发现,专门用于粗匹配或细化的特征比联合训练用于两种任务的特征表现更好。这些贡献将在第3.2节中详细介绍。我们还提出了一个基于Transformer的匹配解码器,它不仅提高了基线性能,尤其在与DINOv2粗编码器结合时,通过预测锚点概率而不是直接回归坐标来提高性能。这一贡献将在第3.3节中进一步阐述。

最后,我们研究了如何最好地训练密集特征匹配器。最近的顶级密集方法(如DKM)在粗匹配和细化阶段都使用了非鲁棒回归损失。我们认为这并不理想,因为粗匹配阶段的匹配分布通常是多模态的,而条件细化更可能是单模态的。因此,需要不同的训练方法。我们在第3.4节中从理论框架中对这一观点进行论证。我们的框架动机是将粗匹配和细匹配的损失分为不同的范式:使用回归分类来处理全局匹配中的粗特征,而使用鲁棒回归来处理细化阶段的细特征。

图2展示了我们提出的鲁棒方法RoMa的示意图。我们的贡献用绿色突出显示并带有勾号,而之前的方法用灰色突出显示并带有叉号。我们的第一个贡献是使用冻结的基础模型(如DINOv2)来提取粗特征,而不是微调或从头开始训练。DINOv2缺乏用于精确定位的细特征,这是实现精确匹配所必需的。为了解决这个问题,我们将DINOv2的粗特征与专门的细特征(来自ConvNet)相结合(见第3.2节)。第二个贡献是提出了一个改进的粗匹配解码器Dθ​,通常是一个ConvNet。我们用一个坐标无关的Transformer解码器替代了它,该解码器预测锚点概率而不是直接回归坐标(见第3.3节)。第三个贡献是重新审视了用于密集特征匹配的损失函数。我们从理论模型出发,认为全局匹配阶段需要建模多模态分布,因此使用回归分类损失而不是L2损失。对于细化阶段,我们使用鲁棒回归损失,因为匹配分布在此阶段是局部单模态的。这些损失函数在第3.4节中进一步讨论。我们在第4节的广泛消融研究(见表2)中验证了这些贡献的影响。

        我们的完整方法被称为RoMa,它对现实世界中的极端情况具有鲁棒性,如我们在图1中所展示的。我们在图2中以示意图的形式展示了我们的方法。总的来说,我们的贡献如下:
(a) 我们将DINOv2基础模型的冻结特征集成到密集特征匹配中。我们将DINOv2的粗特征与专门的ConvNet细特征相结合,生成一个既具有精确可定位性又鲁棒的特征金字塔。详见第3.2节。
(b) 我们提出了一个基于Transformer的匹配解码器,它预测锚点概率而不是坐标。详见第3.3节。
(c) 我们改进了损失函数的表述。特别是,我们对粗全局匹配使用回归分类损失,而对细化阶段使用鲁棒回归损失,这些改进都基于我们的理论分析。详见第3.4节。
(d) 我们对我们的贡献进行了广泛的消融研究,并在一系列多样化且具有竞争力的基准测试中进行了顶级实验,发现RoMa创造了新的最佳水平。特别是在困难的WxBS基准测试中,我们取得了36%的提升。详见第4节。

2. 相关工作

2.1 Sparse → Detector Free → Dense Matching

特征匹配传统上通过关键点检测和描述符匹配来实现 [4, 14, 33, 39, 41, 53]。最近,无检测器的方法 [7, 12, 44, 46] 用粗尺度的密集匹配取代了关键点检测,随后通过互为最近邻提取来完成匹配,最后进行细化。密集匹配方法 [17, 34, 36, 50, 51, 63] 则进一步发展,通过估计密集的变换来估计每一对可匹配的像素对。

2.2 自监督视觉模型

受语言模型中Transformer的启发 [15],基于基础模型的视觉模型 [8] 近期通过自监督学习在大规模数据上训练,展示了在各种视觉任务中学习通用特征的潜力。Caron等人 [11] 观察到,自监督的ViT特征比监督模型捕获了更多的区分性信息,这通过无标签的自蒸馏得到了验证。iBOT [62] 在自蒸馏框架内探索了掩码图像建模(MIM),开发出语义丰富的视觉标记器,适用于各种密集下游任务。DINOv2 [37] 表明,自监督方法可以在足够大的数据集上训练,无需微调即可生成适用于各种图像分布和任务的通用视觉特征。

2.3 鲁棒损失公式

鲁棒回归损失:鲁棒损失函数为内点分布(通常高度集中)和外点分布(宽且平)之间提供连续过渡。鲁棒损失已被用于光流的正则化 [5, 6]、鲁棒平滑 [18] 以及作为损失函数 [3, 32]。
回归分类:回归分类 [48, 57, 58] 通过将回归问题转化为分类问题(例如通过分箱)来解决。这对于运动中存在尖锐边界的回归问题(如立体视差)特别有用 [19, 22]。Germain等人 [20] 使用回归分类损失进行绝对姿态回归。
分类后回归:Li等人 [27] 和Budvytis等人 [9] 提出了用于视觉定位的层次化分类-回归框架。Sun等人 [44] 优化了模型对互为最近邻的对数似然,随后通过基于L2回归的细化进行特征匹配。

3. 方法

在本节中,我们将详细介绍我们的方法。我们首先介绍密集特征匹配的预备知识和符号表示(第3.1节),然后讨论如何将DINOv2 [37] 作为粗特征编码器整合到我们的方法中,并引入专门的细特征(第3.2节)。接下来,我们介绍我们提出的基于Transformer的匹配解码器(第3.3节)。最后,我们将介绍我们提出的损失函数公式(第3.4节)。我们的完整方法的总结和可视化展示在图2中。关于具体架构的更多细节,我们会在附录中提供。

3.1. 密集特征匹配的预备知识

密集特征匹配的任务是,给定两张图像I^{A}I^{B},估计一个密集的变换W^{A\rightarrow B} ​(将图像I^{A} 中的坐标x^{A}映射到图像 I^{B}中的坐标 x^{B}​),以及每个像素的匹配可能性分数 p(x^{A})。从概率的角度来看,p(W^{A\rightarrow B}​)=p(x^{B}x^{A}​) 是条件匹配分布。将 p(x^{B}x^{A}​) 与 p(x^{A}​) 相乘可以得到联合分布。我们将模型分布表示为 pθ​(x^{A}​,x^{B}​)=pθ​(x^{B}x^{A}​)pθ​(x^{A}​)。当处理变换时,即 pθ​(x^{B}x^{A}​) 被转换为确定性映射时,我们用 W^{A\rightarrow B} 表示模型变换。从概率分布的角度来看,变换在高分辨率下可以被视为确定性映射,但在粗尺度下,由于多模态性,将其视为概率分布更为自然。最终目标是获得图像 I^{A}​ 中的坐标 x^{A} 和图像 I^{B}​ 中的坐标 x^{B}​ 之间对应关系的良好估计。对于密集特征匹配器,这些对应关系的估计通常是通过一次性的粗全局匹配阶段(使用粗特征)完成的,随后通过细化阶段对估计的变换和置信度进行优化(使用细特征)。我们以最近的顶级密集特征匹配模型DKM [17] 作为我们的基线。为了保持一致性,我们采用了该文献中使用的术语。我们将用于估计初始变换的粗特征,以及用于细化变换的细特征表示为:

其中 Fθ​ 是一个神经网络特征编码器。我们将使用DINOv2来提取 ​​ \varphi _{coarse}^{A}\varphi _{coarse}^{B}​​,然而,DINOv2特征无法精确定位,我们将在第3.2节中详细讨论如何解决这一问题。粗特征通过全局匹配器 Gθ​ 进行匹配,该匹配器由匹配编码器 Eθ​ 和匹配解码器 Dθ​ 组成:

我们在基线方法中使用高斯过程 [38] 作为匹配编码器 Eθ​,然而,基线方法使用ConvNet来解码匹配,我们提出使用一个基于Transformer的匹配解码器 Dθ​,该解码器预测锚点概率而不是直接回归变换。这种匹配解码器在我们的最终方法中特别有益(见表2)。我们将在第3.3节中描述我们提出的匹配解码器。粗变换 \widehat{W}_{coarse}^{A\rightarrow B}​​ 的细化由细化器 Rθ​ 完成:

与之前的工作类似,细化器由一系列ConvNets组成(使用步长 {1,2,4,8}),并且可以递归分解为:

其中步长为 2i。细化器预测估计变换的残差偏移量以及置信度的对数偏移量。与基线方法一样,它们通过使用之前估计的变换来堆叠图像的特征图,并构建围绕之前目标的局部相关体积,从而对之前细化器的输出进行条件化。该过程会一直重复,直到达到全分辨率。我们使用与基线方法相同的架构。按照DKM的方法,我们在细化器之间切断梯度,并将变换双线性上采样以匹配更细步长的分辨率。为了在后续定义损失函数时方便起见,我们在这里首先引入概率符号。我们将全局匹配器建模的概率分布表示为:

这里,为了符号简洁,我们省略了对特征和之前估计的边际分布的显式依赖。需要注意的是,全局匹配器的输出有时会被视为离散化分布的锚点,或者被解码为变换。为了避免符号过于复杂,我们没有为这两种不同情况使用单独的符号。我们将由细化器在尺度 s=c2^{i} 处建模的概率分布表示为:

基本情况 \widehat{W}_{coarse}^{A\rightarrow B}是通过解码 pθ​(x_{coarse}^{B}​​∣x_{coarse}^{A}​​) 计算得到的。与全局匹配器一样,我们省略了对特征的显式依赖。

表1. 在MegaDepth数据集上对冻结特征的评估。我们在MegaDepth数据集上比较了在特征匹配中常用的VGG19和ResNet50骨干网络与DINOv2的通用特征。

3.2. 鲁棒且可精确定位的特征

我们首先研究了DINOv2在MegaDepth [28]数据集上对视角和光照变化的鲁棒性,将其与VGG19和ResNet50进行了比较。为了将骨干网络与匹配模型解耦,我们为每种方法训练了一个单一线性层,随后使用核最近邻匹配器。我们通过在标准化分辨率448×448上测量平均端点误差(EPE)以及我们所称的“鲁棒性%”来衡量性能。我们定义“鲁棒性%”为误差小于32像素的匹配对的百分比。我们称其为鲁棒性,因为尽管这些匹配不一定准确,但通常足以让细化阶段产生正确的调整。我们在表1中给出了结果。我们发现,与ResNet和VGG19相比,DINOv2特征对视角变化的鲁棒性显著更强。有趣的是,我们发现尽管VGG特征被广泛用作局部特征 [16, 42, 52],但VGG19特征对于粗匹配来说比ResNet特征更差。关于该实验的更多细节,我们会在附录材料中提供。

在DKM [17]中,特征编码器F_{\theta }​被假设为由一个单一网络构成,该网络产生用于全局匹配和细化的粗特征和细特征金字塔。当使用DINOv2特征时,这会成为一个问题,因为DINOv2只有步长为14的特征存在。因此,我们将F_{\theta }​分解为\left \{ {F_{coarse,\theta },F_{fine,\theta }}\right \},并设置F_{coarse,\theta }​=DINOv2。粗特征的提取方式如下:

我们在整个训练过程中保持DINOv2编码器冻结。这样做的主要好处是,保持表示固定可以减少对训练集的过拟合,从而使RoMa更具鲁棒性。此外,它在计算上也更便宜,且需要的内存更少。然而,DINOv2无法提供细特征。因此,需要选择一个F_{fine,\theta }。尽管可以选择与DKM中相同的ResNet50 (RN50) [23]作为细特征的编码器,但事实证明这并非最佳选择。我们首先研究了仅仅将粗特征和细特征编码器解耦的情况,即即使使用相同的网络,也不共享权重。我们在表2的设置II中发现,这显著提高了性能。这是由于特征提取器能够专注于各自的任务,因此我们称其为“专业化”。这引发了一个问题:尽管VGG19粗特征(见表1)比RN50更差,但VGG19可能更适合用于细局部特征。我们通过在表2的设置III中设置F_{fine,\theta }=VGG19来研究这一点。有趣的是,尽管VGG19粗特征显著不如RN50,但我们发现,当作为细特征使用时,它们的表现显著优于RN50特征。我们的发现表明,细局部化和粗鲁棒性之间存在内在的张力。因此,在我们的完整方法中,我们使用VGG19细特征。

3.3. Transformer匹配解码器 D_{\theta }

回归分类:我们提出使用回归分类公式来设计匹配解码器,通过离散化输出空间来实现。具体公式如下:

其中,K 是量化级别,\pi _{k}是每个分量的概率,B 是某个二维基础分布,\left \{ m_{k} \right \}_{1}^{K} 是锚点坐标。在实际应用中,我们使用了 K=64×64 的分类锚点,这些锚点均匀分布在整个图像网格上,并且 B=U,即均匀分布。我们将锚点的概率记为 \pi _{k},其对应的网格坐标记为 m _{k}

        对于细化阶段,条件分布被转换为每个像素的确定性变换。我们通过对分类锚点进行 argmax 操作来解码变换,随后进行局部调整,可以视为局部的软argmax操作。从数学上来说,

其中,N_{4}​(k^{\ast }) 表示 k^{\ast } 及其上下左右四个最近的锚点。我们在表2中对Transformer匹配解码器进行了消融实验,发现它在使用我们在第3.4节中提出的损失公式时,尤其是在完整方法中,显著提高了结果。解码器架构:在早期实验中,我们发现ConvNet粗匹配解码器容易过拟合到训练分辨率。此外,它们倾向于过度依赖局部性。虽然局部性对于细化是一个强大的线索,但它会导致粗变换的过度平滑。为了解决这个问题,我们提出了一种不使用位置编码的Transformer解码器。通过限制模型仅通过特征相似性进行传播,我们发现模型变得更加鲁棒。所提出的Transformer匹配解码器由5个ViT块组成,每个块有8个头,隐藏层大小为1024,MLP大小为4096。输入是DINOv2 [37] 特征的投影(维度为512)和GP模块的512维输出,这对应于DKM [17] 中提出的匹配编码器 E_{\theta }​。输出是一个 B×H×W×(K+1) 的向量,其中 K 是分类锚点的数量(参数化条件分布 p(x^{B}​∣x^{A}​)),额外的1是匹配可能性分数 p^{A}​(x^{A})。

图3. 匹配可定位性的说明。在无限分辨率下,匹配分布可以被视为一个二维表面(在图中用一维线表示),然而在较粗的尺度 s 下,由于运动边界的存在,这种分布变得模糊。这意味着需要使用能够表示多模态分布的模型和目标函数。

3.4. 鲁棒损失公式

直觉:在粗尺度下,条件匹配分布更有可能表现出多模态性,而在细化阶段,条件分布是基于之前的变换进行的,因此更可能是单模态的。这意味着粗匹配器需要建模多模态分布,这促使我们采用回归分类的方法。相比之下,变换的细化只需要表示局部单模态分布,这促使我们采用鲁棒回归损失。

理论模型:我们将尺度 s 下的匹配可能性建模为

其中 p(x^{A}​,x^{B}​;0) 对应于无限分辨率下的精确映射。这可以被解释为在定位匹配时的扩散过程。当场景中的多个物体被投影到图像中时,会产生所谓的运动边界。这些是匹配中的不连续性,我们在图3中进行了说明。在这些运动边界附近的扩散导致条件分布变得多模态,解释了粗全局匹配中多模态的必要性。给定一个初始选择 (x^{A},x^{B}​),在细化阶段,条件分布是局部单模态的。然而,如果这个初始选择远离分布的支持区域,使用非鲁棒损失函数是存在问题的。因此,对于这个阶段,使用鲁棒回归损失是有动机的。

损失公式:基于直觉和理论模型,我们现在从概率的角度提出我们的损失公式,目标是最小化每个尺度上估计的匹配分布与该尺度上的理论模型分布之间的Kullback-Leibler散度。我们首先制定粗损失。根据第3.3节中定义的非重叠区间,忽略与 θ 无关的项,Kullback-Leibler散度为

对于 ,即离 x 最近的锚点的索引。按照DKM [17] 的方法,我们添加了一个超参数 λ,用于控制边缘分布与条件分布之间的权重平衡,具体公式如下:

在实践中,我们用离散的已知对应点集 { x^{A}​,x^{B}​} 来近似 q。此外,为了与之前的工作 [17, 52] 保持一致,我们在 pcoarse,θ​(x^{A}) 上使用二元交叉熵损失。我们称这个损失为 Lcoarse​。接下来,我们讨论细损失 Lfine​。

图4. 损失函数梯度的比较
图4比较了不同损失函数的梯度。我们使用广义Charbonnier损失 [3] 进行细化,这种损失函数在局部与L2损失的梯度相匹配,但在全局上会随着 ∣x∣^ −1/2 衰减至零。

        我们对每个细化尺度 i 的输出建模为一个广义Charbonnier分布 [3](α=0.5),细化器估计其均值 μ。广义Charbonnier分布局部表现得像正态分布,但其尾部更平坦。当用作损失函数时,其梯度局部表现得像L2,但随着误差的增大而衰减至0,见图4。忽略不贡献梯度的项,并忽略比例因子,其对数为

其中是分布的估计均值,s=2^{i}c。在实践中,我们选择 c=0.03。每个细尺度 i∈{0,1,2,3} 的Kullback-Leibler散度(忽略与 θ 无关的项)为

在实践中,我们用离散的已知对应点集 { x^{A}​,x^{B}​} 来近似 q,并在 上使用二元交叉熵损失。我们将所有细尺度的损失相加得到 Lfine​。

        我们的总损失为

        注意,我们不需要调整这两个损失之间的任何比例因子,因为粗匹配和细阶段是解耦的,梯度在匹配时被切断,并且编码器不共享。

表2. 消融研究。我们系统地研究了我们贡献的影响,详细分析见第4.1节。使用100减去正确关键点的百分比(PCK)进行衡量(数值越低越好)。

4. 实验

在本节中,我们通过一系列实验来验证我们提出的RoMa方法的有效性,并与其他现有方法进行比较。实验涵盖了多个基准测试,包括两视图几何、视觉定位等任务。我们详细分析了各个实验设置和结果。

4.1. 消融研究

在消融研究中,我们系统地分析了我们方法中各个贡献模块的影响。所有消融实验均在我们创建的验证集上进行。该验证集由MegaDepth场景[0015, 0022]中的随机图像对组成,且这些图像对的重叠区域大于0.3。为了衡量性能,我们使用了百分比正确关键点(PCK)指标,该指标计算估计匹配点的端点误差(EPE)低于特定像素阈值的比例。具体实验设置如下:

  • 设置I:与DKM [17]相同,重新训练。

  • 设置II:不共享粗特征和细特征的权重,性能因特征专业化而提升。

  • 设置III:将细特征从ResNet50替换为VGG19,进一步提升性能。

  • 设置IV:加入Transformer匹配解码器,但使用基线回归方法。

  • 设置V:引入DINOv2粗特征,显著提升性能,归功于其强大的鲁棒性。

  • 设置VI:将Transformer匹配解码器的输出表示和损失函数改为回归分类。

  • 设置VII:使用鲁棒回归损失,进一步提升性能。

  • 设置VIII:将Transformer匹配解码器替换回ConvNet,性能显著下降,证明了Transformer匹配解码器的重要性。

最终,我们的完整方法RoMa在设置VII中达到了最佳性能。表2展示了不同设置的详细结果。

4.2. 训练设置

我们采用了与DKM [17]相同的训练设置。遵循DKM,我们为解码器设置了一个标准学习率(对于批量大小为8时为10−4),而对于编码器则为5×10−6。我们使用了与DKM相同的训练分割,该分割由MegaDepth和ScanNet数据集中的随机采样对组成,排除了用于测试的场景。监督变换是从多视图立体(MVS)重建的密集深度图(对于MegaDepth)和RGB-D数据(对于ScanNet)中导出的。遵循之前的工作 [12, 17, 44],我们在ScanNet训练集上训练的模型用于在ScanNet-1500上的评估。所有其他评估均使用仅在MegaDepth上训练的模型。与DKM一样,我们联合训练了粗匹配和细化网络。需要注意的是,由于我们在粗匹配和细化之间切断了梯度,网络也可以分阶段进行训练。对于消融研究中使用的实验结果,我们采用了448×448的分辨率,而对于最终方法,我们则在560×560的分辨率上进行了训练。

表3. 在IMC2022 [25]上的最新方法(SotA)比较。使用平均准确率(mAA)进行衡量(数值越高越好)。

表4. 在WxBS [35]上的最新方法(SotA)比较,使用10像素阈值下的平均准确率(mAA)进行衡量(数值越高越好)。

表5. 在MegaDepth-1500 [28, 44]上的最新方法(SotA)比较。使用面积曲线下值(AUC)进行衡量(数值越高越好)。

表6. 在ScanNet-1500 [13, 41]上的最新方法(SotA)比较。使用面积曲线下值(AUC)进行衡量(数值越高越好)。

表7. 在MegaDepth-8-Scenes [17]上的最新方法(SotA)比较。使用面积曲线下值(AUC)进行衡量(数值越高越好)。

4.3. 两视图几何

我们在多个两视图几何基准测试中进行了评估。我们遵循DKM [17]的方法,采用平衡采样方法生成对应点,产生10,000个匹配点,用于估计。我们在多个基准测试中均取得了优于以往方法的结果,特别是在极具挑战性的WxBS基准测试中,我们的方法取得了36%的性能提升。以下是具体实验结果:

  • Image Matching Challenge 2022:我们在2022年图像匹配挑战赛 [25] 中提交了结果,该挑战赛包含了一个隐藏的街景图像测试集,任务是估计图像之间的基本矩阵。我们在表3中展示了结果,RoMa相较于以往的方法取得了显著的改进,与之前最佳方法相比,相对误差降低了26%。

  • WxBS基准测试:我们在极具挑战性的WxBS基准测试 [35]上进行了评估,该测试的版本为1.1,更新了真值和评估协议。所有方法均使用OpenCV中实现的MAGSAC++ [2]。我们在表4中展示了结果,RoMa相较于以往的方法取得了36%的性能提升,这主要归功于RoMa的卓越鲁棒性。

  • MegaDepth-1500姿态估计:我们使用了MegaDepth-1500测试集 [44],该测试集包含来自场景0015(圣彼得大教堂)和0022(勃兰登堡门)的1500对图像。我们遵循了[12, 44]中的协议,并使用了0.5的RANSAC阈值。我们在表5中展示了结果。

  • ScanNet-1500姿态估计:ScanNet [13]是一个大规模室内数据集,包含具有低纹理区域和大视角变化的挑战性序列。我们遵循了SuperGlue [41]中的评估方法。我们在表6中展示了结果,RoMa在该测试中取得了优于以往方法的结果,首次在AUC@20°指标上超过了70。

  • MegaDepth-8-Scenes:我们在MegaDepth-8-Scenes基准测试 [17, 28]上进行了评估。我们在表7中展示了结果,RoMa在该测试中也优于以往的方法。

表8. 在InLoc [45]上的最新方法(SotA)比较。我们报告在0.25/0.5/1.0米和2°/5°/10°范围内定位到真实姿态的查询图像的百分比(数值越高越好)。

4.4. 视觉定位

我们在InLoc [45]视觉定位基准测试上对RoMa进行了评估,使用了HLoc [40]流程。我们遵循了DKM [17]中的方法来采样对应点。我们在表8中展示了结果,与以往的所有方法相比,RoMa取得了显著的改进,创造了新的最佳水平。

4.5. 运行时间比较

我们比较了RoMa和基线DKM在560×560分辨率下、批量大小为8的RTX6000 GPU上的运行时间。我们观察到RoMa的运行时间略有增加,从186.3ms增加到198.8ms每对图像,增加了约7%。

5. 结论

我们提出了RoMa,这是一个鲁棒的密集特征匹配模型。我们的模型利用了来自基础模型DINOv2的冻结预训练粗特征,结合专门的ConvNet细特征,构建了一个既具有精确可定位性又鲁棒的特征金字塔。我们进一步通过提出的定制Transformer匹配解码器提高了性能,该解码器预测锚点概率而不是直接回归坐标。最后,我们通过回归分类和随后的鲁棒回归改进了损失函数的表述。我们的全面实验表明,RoMa在多个基准测试中均取得了显著的性能提升,特别是在最具挑战性的基准测试中,我们的方法取得了36%的性能提升,突出了我们方法的鲁棒性。

局限性与未来工作

(a) 我们的方法依赖于监督对应点,这限制了可用数据的数量。我们通过使用预训练的冻结基础模        型特征来缓解这一问题,从而提高了泛化能力。  (数据依赖性

(b) 我们在密集特征匹配任务上进行训练,这是一种优化下游任务(如两视图几何、定位或三维重        建)的间接方式。直接针对下游任务进行训练可能会进一步提高性能。   (任务间接性

附加材料

在本文的补充材料中,我们提供了无法在主文中完整展示的进一步细节和定性示例。

A. 冻结特征评估的进一步细节
我们使用与DKM [17]相同的指数余弦核,逆温度为10。我们使用与主实验中相同的训练分割进行训练,使用相同的初始学习率(注意,我们只训练一个单一线性层,因为骨干网络是冻结的)。我们使用我们在第3.4节中提出的回归分类损失。我们在图5中展示了一个定性的示例,展示了从冻结特征估计的变换。

B. 进一步的架构细节
编码器:我们通过在每个2×2最大池化层之前提取输出来获取步长为{1, 2, 4, 8}的细特征。这些特征的维度分别为{64, 128, 256, 512}。我们使用线性层(后接批量归一化)将它们投影到维度{9, 64, 256, 512}。我们使用DINOv2 [37]的patch特征,不使用cls token。我们使用ViT-L-14模型,patch大小为14,维度为1024。我们通过线性投影(带批量归一化)将这些特征的维度降低到512。
全局匹配器:我们使用与DKM [17]相同的高斯过程匹配编码器。我们使用指数余弦核 [17],逆温度为10。与DKM一样,高斯过程预测另一张图像中嵌入坐标的后验分布。我们使用512维的嵌入空间。关于Dθ​的详细信息,请参见第3.3节。
细化器:按照Edstedt等人 [17]的描述,我们使用5个细化器,步长分别为{1, 2, 4, 8, 14}。每个细化器包含8个卷积块。内部维度分别设置为{24, 144, 569, 1137, 1377}。细化器的输入包括堆叠的特征图、围绕前一次变换的局部相关性(大小分别为{0, 0, 5, 7, 15}),以及前一次变换的线性编码。输出是一个B×Hs​×Ws​×(2+1)的张量,包含变换和置信度的对数偏移量。

C. 在WxBS上的定性比较
我们在图6中定性地比较了RoMa和DKM在WxBS基准测试上的估计匹配结果。DKM在该数据集的多个图像对上失败了,而RoMa更具鲁棒性。特别是,RoMa即使在季节变化(右下角)、极端光照(左下角和左上角)以及极端尺度和视角变化(右上角)的情况下,也能够成功匹配。

D. 关于评估指标的进一步细节
Image Matching Challenge 2022:平均准确率(mAA)指标是在估计的基本矩阵和隐藏的真实值之间计算的。以度为单位的旋转误差和以米为单位的平移误差分别给出。给定一对阈值,如果一个姿态同时满足这两个阈值,则该姿态被分类为准确。这一过程在十个均匀间隔的阈值对上进行。mAA则是对这些阈值对以及图像的平均值(按场景平衡)。
MegaDepth/ScanNet:所使用的AUC指标衡量估计的本质矩阵与真实值之间的误差。每对图像的误差是旋转误差和平移误差中的最大值。由于没有可用的度量尺度,平移误差以余弦角度来衡量。给定一个阈值\tau,召回率是在该阈值下误差小于\tau的图像对的百分比。AUC@\tau^{^{\circ}}是通过将召回率作为阈值的函数进行积分,并除以\tau来计算的。在实践中,这通过梯形法则近似,使用数据集上该方法的所有误差。

E. 关于理论模型的进一步细节
这里我们讨论一个简单的与尺度空间理论的联系,这在主文中没有提及。我们在第3.4节中提出的匹配可能性的理论模型与尺度空间理论 [26, 30, 59] 有一个直接的联系。图像的尺度空间由参数s参数化,定义为:

是一个高斯核。将这个核同时应用于匹配分布,就得到了论文中描述的扩散过程。

F. 关于匹配采样的进一步细节
密集特征匹配方法产生一个密集的变换和置信度。然而,大多数鲁棒的相对姿态估计器(用于下游的两视图姿态估计评估)假设有一组稀疏的对应点。虽然原则上可以使用变换中的所有对应点,但在实践中这是非常昂贵的。相反,我们遵循DKM [17]中的方法,使用平衡采样方法来生成一组稀疏的匹配点。平衡采样方法使用匹配分布pθ​(x^{A}​,x^{B}​)的核密度估计(KDE)来重新平衡样本的分布,通过用KDE的倒数对样本进行加权。Edstedt等人 [17]证明,这增加了在置信度较低区域的匹配数量,从而提高了性能。

图5. 冻结特征的评估。从上到下依次为:图像对、VGG19匹配结果、ResNet50(RN50)匹配结果、DINOv2匹配结果、RoMa匹配结果。DINOv2比VGG19和ResNet50更具鲁棒性。定量结果见表1。
图6. 定性比较。RoMa在应对极端视角和光照变化时,比DKM更具鲁棒性。
### CVPR 2024 论文代码与资源 CVPR(Computer Vision and Pattern Recognition)作为计算机视觉领域的重要会议,其每年发布的论文通常会伴随相应的开源实现。对于CVPR 2024的相关论文及其对应的GitHub仓库,可以采取以下方法来查找: #### 方法一:官方链接 CVPR官网通常会在会议结束后提供一个专门的页面用于汇总所有被接收论文以及它们的代码链接。可以通过访问CVPR 2024官方网站并导航至“Accepted Papers”部分获取更多信息[^1]。 #### 方法二:社区整理 许多研究者和开发者会对每届CVPR中的重要工作进行总结,并将其发布到个人博客或者GitHub上。例如,《Big Data Resources》这类集合了大量机器学习、数据挖掘等领域资料的仓库可能也会收录CVPR 2024的内容[^3]。 #### 方法三:特定主题搜索 如果关注的是某些具体方向的研究成果,则可以直接利用关键词加上限定条件来进行检索。“Mask RCNN”的源码库就是一个很好的例子,它专注于实例分割任务,在类似的细分领域内寻找可能会更加高效[^2]。 #### 示例脚本 - 自动化爬取工具 下面给出一段简单的Python程序用来自动化查询指定年份下的cvpr文章关联git地址: ```python import requests from bs4 import BeautifulSoup def fetch_cvpr_papers(year=2024): url = f"http://openaccess.thecvf.com/CVPR{year}.py" response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') paper_links = [] for link in soup.find_all('a'): href = link.get('href') if "/content_CVPR_" + str(year) in href: title = link.string.strip() pdf_link = "http://openaccess.thecvf.com/" + href.replace(".html", ".pdf") github_search_url = f"https://github.com/search?q={title}+repo%3A*&type=repositories" paper_links.append((title, pdf_link, github_search_url)) return paper_links papers = fetch_cvpr_papers(2024)[:5] for idx,(t,p,g)in enumerate(papers,start=1): print(f"{idx}. Title:{t}\n Paper Link:{p}\n Github Search URL:{g}") ``` 此段代码通过解析OpenAccess平台上的HTML文档提取出了前几篇论文的名字连同他们的PDF下载路径还有基于这些名字构建出来的针对Github搜索引擎入口网址列表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值