跳转至

RoMa v2: Harder Better Faster Denser Feature Matching

会议: ECCV2026
论文: ECCV 原文
代码: https://github.com/Parskatt/RoMaV2
领域: 稠密特征匹配 / 多视图几何
关键词: 冻结视觉特征、多视图匹配、亚像素细化、预测协方差、分辨率鲁棒性

一句话总结

RoMa v2 用冻结 DINOv3 上的多视图粗匹配、解耦训练的高效细化和像素级不确定度预测,兼顾困难视角匹配与亚像素精度,在 AerialMegaDepth 上将 RoMa 的 EPE 从 25.05 降至 4.12 像素,但并未在极端跨模态泛化或绝对速度上全面领先。

研究背景与动机

视觉定位和 3D 重建需要知道两张照片中的哪些像素对应同一个空间点,而不只是判断两张照片是否语义相似。 稀疏方法先找可重复检测的关键点,再建立对应,因此容易遗漏纹理不足的区域;稠密匹配则直接预测每个像素在另一幅图像中的位置与可信程度。 RoMa 用冻结的基础视觉特征提高了外观变化下的鲁棒性,但其粗匹配主要依赖高斯过程和单视图解码,缺少充分的跨图像上下文交互。 遇到剧烈视角变化、空地视角差异或细小运动物体时,可靠匹配覆盖与局部定位精度仍然不足。

UFM 表明,结合光流式训练可以显著加快稠密对应估计,并改善小基线场景。 然而,微调预训练编码器可能削弱极端外观变化下的迁移能力,其亚像素精度也不如 RoMa。 这个差异会被几何估计放大:一组视觉上看似合理但略有偏差的对应点,可能明显拉低严格阈值下的相机位姿精度。 因此本文不是只让匹配更多或网络更快,而是同时处理粗匹配的鲁棒性、细匹配的偏差和实际执行开销。

作者保留冻结编码器的路线,用可学习的多视图交互补上上下文,再让不同阶段承担不同的训练与计算职责。 训练分布也从 RoMa 的 MegaDepth 单一来源扩展为宽基线与小基线混合,避免模型只能擅长某一种几何变化。 核心 idea:用更有信息量的粗匹配监督找到正确区域,再通过高效、低偏差且带方向性误差估计的细化恢复可信的亚像素对应。

方法详解

整体框架

输入是同一场景的两张图像,输出包含两个方向的稠密坐标映射、共视置信度,以及每个像素的二维误差精度矩阵。 这里的映射是“源像素对应到目标图像哪里”,置信度是“该空间点是否在另一视图中可见”,精度矩阵则描述“定位误差沿不同方向有多大”。 训练分布与分辨率设计贯穿训练;推理时,多视图粗匹配先输出步长 4 的坐标场,高效细化再按步长 4、2、1 逐级修正,并生成方向性不确定度。 相机位姿不是网络的直接输出,而是可由这些对应点和不确定度交给后续几何估计器求得。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
        Train["训练分布与分辨率"] -.->|训练采样与尺度约定| Match["多视图粗匹配"]
        Images["两张输入图像"] --> Match
        Match -->|步长 4 的映射与置信度| Refine["高效细化"]
        Train -.->|训练采样与位移尺度| Refine
        Refine --> Uncertainty["方向性不确定度"]
        Refine -->|双向映射与共视置信度| Output["稠密对应与几何估计"]
        Uncertainty -->|像素级精度矩阵| Output

关键设计

1. 训练分布与分辨率:让粗定位和精细运动都在训练范围内

大基线样本要求模型跨越外观和视角变化寻找同一结构,小基线样本则提供精细运动、边界和微小位移的监督。 作者混合 MegaDepth、AerialMD、BlendedMVS、Hypersim、TartanAir v2、Map-Free、ScanNet++ v2 等宽基线数据,以及 UnrealStereo4k、Virtual KITTI 2、FlyingThings3D 等小基线数据。 原文表 3 列出的总场景数为 5069;前述宽基线数据各自采样权重为 1,后 3 个数据集分别为 0.01、0.01、0.5。 这些是相对采样权重而不是百分比,不能直接解读为各数据集在训练中所占的百分数。 航拍数据针对旋转和空地视角变化,小基线数据则补足细小动态物体及精细结构;这解释了为什么多样数据不只是增加数量。

要把这种能力带到不同输入大小,还需避免位置表示只适应训练像素网格。 粗匹配的旋转位置编码采用归一化坐标,且只用于逐图像注意力,不用于全局注意力。 匹配嵌入使用低频绝对位置编码:将 RoMa 中初始为 8 且可学习的尺度改为固定 1,以减轻插值问题。 细化器的卷积仍绑定像素网格,因此输入位移相对一个标准分辨率重缩放,而不是把任意分辨率的像素位移直接混用。 粗匹配训练覆盖不同分辨率与宽高比,细化训练固定为 \(640\times640\);二者并非使用完全相同的尺度增强。

2. 多视图粗匹配:同时学会相关性与连续坐标回归

每张图先独立经过冻结的 DINOv3 ViT-L,所得特征再输入 ViT-B 多视图 Transformer,交替进行逐图像和全局注意力。 这样每个位置既能利用本图结构,也能参考另一张图像的候选对应;冻结骨干则保留预训练特征的迁移能力。 直接在 RoMa 的高斯过程前加入多视图 Transformer 并不奏效,作者观察到通过高斯过程传回的梯度信息不足且训练不稳定。 因此他们将高斯过程替换为单头注意力,并在两幅图的全部 patch 间建立相似度矩阵。 仅靠最终坐标误差仍可能不足以教会相关矩阵如何找点,于是增加了直接针对正确目标 patch 的负对数似然监督。

\(S\) 为 patch 相似度矩阵,\(n_m^*\) 为最接近源 patch \(m\) 的真值映射位置的目标 patch,原文式 (1) 可写为:

\[ \mathcal{L}_{\mathrm{NLL}}=-\sum_{m=1}^{M}\log\bigl(\operatorname{Softmax}(S_{m,:})_{n_m^*}\bigr). \]

这里监督的是由真值决定的目标索引,不是拿当前相似度最大的预测作为真值。 注意力权重还用于聚合目标位置嵌入,将“匹配到哪里”的信息传给后续 Dense Prediction Transformer(DPT)头。 DPT 联合使用最终 token、聚合的位置嵌入和 DINOv3 特征,输出连续坐标与共视置信度,而不是把离散 patch 分类直接当最终结果。 这让相关性监督负责形成可学习的匹配结构,鲁棒坐标回归负责几何位置,两者共同约束粗匹配器。 原文表 2 的 Hypersim 留出场景实验中,该匹配架构的 PCK@1px 为 30.5,UFM 架构为 11.2;这是指定训练设置下的架构对比,不等于完整系统的跨数据集总排名。

3. 高效细化:减少尺度开销,同时消除训练中的亚像素偏差

粗匹配现在直接达到步长 4,而 RoMa 的起点为步长 14,因此只需在步长 4、2、1 设置三个细化器。 每个细化器是类似 UNet 的卷积模块,以先前映射和置信度为条件,预测位移修正与置信度增量。 局部相关性围绕当前匹配位置搜索附近特征,适合校正粗定位,而不必重新进行全图候选比较。 作者针对局部相关性编写自定义 CUDA 内核,主要减少中间计算的显存占用;通道维度改为 2 的幂也有助于执行效率。 不能把整个速度提升都归因于该内核:表 8 中加入内核仅使吞吐量从 30.3 到 30.9 对/秒,更明显的变化是显存从 5.6 到 4.8 GB。

细化精度还受到一种不易在可视化中发现的偏差影响:训练中的预测会出现约 \(\pm0.1\) 像素的亚像素漂移,观察分辨率为 \(640\times640\)。 作者发现偏差随训练近似无规律波动,因此用衰减系数为 0.999 的指数移动平均(EMA)平滑模型权重。 这里平均的是训练过程中的参数状态,不是在推理时把多张图像的匹配结果混在一起。 表 9 显示,EMA 对严格依赖亚像素精度的 MegaDepth-1500 更有帮助,而 ScanNet-1500 的改善较小。 细化器在粗匹配器训练完成且被冻结后单独训练,这也避免每次修改细化设计都重做整个联合训练流程。

4. 方向性不确定度:区分“看得见”与“定位得准”

共视区域也可能定位不准,例如运动模糊会让一个方向上的对应位置不确定,却仍能确定垂直方向的位置。 单个共视概率不能表达这种方向差异,因此细化器额外预测每个像素的 \(2\times2\) 精度矩阵 \(P=\Sigma^{-1}\)。 网络输出三个数构成下三角 Cholesky 因子 \(L\),对角线经 Softplus 加 \(10^{-6}\) 保持正值,再令 \(P=LL^\top\),保证矩阵正定。 不同细化尺度的精度增量逐级相加,利用精度参数化下信息可累加的性质。 这不是给所有匹配附上同样大小的误差圆,而是允许误差分布表现为带方向的椭圆。

\(r\) 为预测映射减去真值映射的二维残差,原文式 (4) 的高斯负对数似然可等价写成:

\[ \mathcal{L}_{\mathrm{prec}}=\frac{1}{2}r^\top P r-\frac{1}{2}\log\det P+\log(2\pi). \]

第一项约束残差与预测精度相符,第二项防止简单地把所有精度压低以逃避误差惩罚。 训练只在共视且残差小于 8 像素的位置监督该项,并对残差停止梯度,避免不确定度损失反过来改变坐标预测的优化目标。 这个有效范围意味着它首先描述成功匹配附近的定位误差,不应直接被理解为任意大错配都校准良好的概率模型。 推理后的几何估计可用该矩阵加权残差,既可用于 RANSAC 后的位姿细化,也可进入 RANSAC 内部的模型评分。 图中将它单独画出是为了区分输出语义;实现上它由细化器生成,不是额外运行一个独立匹配网络。

一个完整示例

设输入是一对包含道路与建筑的宽基线图像,先以 \(640\times640\) 尺寸说明网络内的数据流;这是机制示例,不是新增实验。 冻结特征与多视图交互先找出建筑结构的近似对应,并生成步长 4 的映射场。 细化器随后沿步长 4、2、1 逐步修正位置,对建筑边缘作精细定位,同时更新道路区域的共视置信度。 如果目标图沿某方向模糊,预测协方差应允许该方向有更大误差,而不是仅将整个点判成不可见。 下游求位姿时,几何估计器仍需排除错配;对保留下来的点,再按方向性误差加权,避免把模糊方向当成同样可靠的几何约束。

损失函数 / 训练策略

粗匹配器训练 300k 步,批量为 128,累计约见到 38M 对图像;随后冻结它,细化器训练 300k 步,批量为 64,累计约 19M 对。 这两个累计数表示训练曝光量,不代表互不重复的图像对数量;两阶段学习率均为 \(4\times10^{-4}\)。 粗匹配损失包括上述相关性 NLL、鲁棒坐标回归和共视损失,共视项权重为 0.1。 细化损失在三个尺度上累加鲁棒坐标回归、逐像素共视二元交叉熵和精度 NLL,后两者权重分别为 \(10^{-2}\)\(10^{-3}\)。 真值共视关系来自多视图立体数据中的深度一致性,或光流数据中的映射循环一致性。 原文采用广义 Charbonnier 回归损失,但缓存中的该公式有字符错位;这里不将无法可靠辨认的表达式重构成作者的精确公式。

实验关键数据

主实验

下表摘录原文表 6、7(第 12、13 页),EPE 是端点欧氏误差的平均值,单位为像素,越低越好;PCK@1px 是误差低于 1 像素的匹配比例,越高越好。 评测图像为 \(640\times640\);RoMa 和 RoMa v2 直接使用该尺寸,UFM 先缩放到推荐的 \(560\times420\),再将预测双线性上采样回评测尺寸。

数据集 方法 EPE(像素) PCK@1px(%)
MegaDepth RoMa 2.34 74.8
MegaDepth UFM 3.15 55.3
MegaDepth RoMa v2 1.47 79.6
AerialMegaDepth RoMa 25.05 39.0
AerialMegaDepth UFM 17.44 29.3
AerialMegaDepth RoMa v2 4.12 55.9
FlyingThings3D RoMa 5.68 78.0
FlyingThings3D UFM 1.33 83.4
FlyingThings3D RoMa v2 0.93 89.4

相机相对位姿评测是另一组设置:粗分辨率 \(800\times800\)、细分辨率 \(1024\times1024\),并按 RoMa 的方式做双向匹配采样与密度均衡。 原文表 4(第 12 页)中,RoMa v2 在 MegaDepth-1500 的 AUC@5°/10°/20° 为 62.8/77.0/86.6,RoMa 为 62.6/76.7/86.3。 这些小幅提升与上表困难数据上的大幅 EPE 改善并不矛盾:任务、数据分布和指标均不同。

消融实验

原文表 8(第 13 页)在 H200、批量 8 下测吞吐与显存;RoMa v2 输入为 \(640\times640\),RoMa 和 UFM 因 patch 大小为 14 而使用 \(644\times644\)。 K 表示自定义局部相关性 CUDA 内核,吞吐量不是单对图像的端到端延迟。

方法 吞吐量(对/秒) 显存(GB)
UFM 43.0 16.2
RoMa 18.5 4.7
RoMa v2,无 K 30.3 5.6
RoMa v2,有 K 30.9 4.8

原文表 9(第 14 页)的 EMA 消融使用与表 4 相同的位姿指标,三元组依次为 AUC@5°/10°/20°。 这里比较的是细化器是否采用 EMA,而不是替换训练数据或骨干。

配置 MegaDepth-1500 ScanNet-1500
无 EMA 61.4 / 75.8 / 85.7 33.6 / 56.1 / 73.5
EMA 62.8 / 77.0 / 86.6 33.6 / 56.2 / 73.8

关键发现

  • 困难几何变化的改善比已较成熟的标准位姿基准更显著:AerialMegaDepth 的 EPE 从 25.05 到 4.12,原文概括为约 84% 的下降。
  • 速度收益有明确边界:30.9 对/秒高于 RoMa 的 18.5,但低于 UFM 的 43.0;4.8 GB 显存也并未低于 RoMa 的 4.7 GB。
  • 方向性误差可转化为几何收益:表 12(第 15 页)在 Hypersim 上的 AUC@1° 从不使用协方差的 54.9,到仅在细化时使用的 75.8,再到 RANSAC 评分与细化都使用的 76.4。
  • 并非所有泛化指标都提升:表 11(第 14 页)的 WxBS mAA@10px 为 RoMa 60.8、RoMa v2 55.4、UFM 42.3;正文指出 IR-to-RGB 子集仍有困难。

亮点与洞察

  • 将“学会看哪里”和“回归精确位置”放进同一个粗匹配器,但给前者显式相关性监督,避免只从末端误差期待中间匹配结构自行形成。
  • EMA 在这里不只是一般性的泛化技巧,还用于抵消训练中摆动的亚像素偏差;对几何任务,微小系统偏差可能比视觉效果更重要。
  • 共视概率与协方差承担不同职责。把可见性判断和几何测量精度分开,能让下游估计器更充分地利用网络输出。
  • 数据分布、位置编码和执行内核共同决定可用性。本文的收益不能缩减为“换成 DINOv3”这一项骨干升级。

局限与展望

  • 作者明确承认极端模态变化下的鲁棒性略逊于 RoMa;冻结更强骨干并不保证所有分布外任务同步提升。
  • 精度学习排除了残差大于等于 8 像素的位置,因此严重错配的不确定度质量仍需单独校准与验证,这是由训练范围推导出的限制。
  • 运行结果来自 H200 和批量 8,自定义 CUDA 内核也依赖相应执行环境;不能直接推断消费级硬件、批量 1 或其他后端上的相同比例收益。
  • 本文缓存只有主论文,附录中更细的网络结构、数据构建与协方差实验配置未能核验;本文只保留主文可确认的信息。
  • 可进一步研究跨模态训练分布如何影响精细定位,以及在更广泛真实模糊和大错配场景中评估协方差校准,而不只比较位姿 AUC。

相关工作与启发

  • RoMa / DKM:沿用粗到细稠密匹配,但以多视图交互和显式相关性损失替代高斯过程主导的粗匹配,且将训练阶段真正拆开。
  • UFM:借鉴匹配后细化的解耦训练与宽窄基线混合思路,但保留冻结编码器,并加入相关性辅助目标和更细的几何精度建模。
  • LoFTR:同样利用跨图像上下文及匹配监督;本文仍保留连续映射回归与全分辨率细化,而不是以半稠密对应作为最终形式。
  • VGGT / MASt3R:多视图结构提供了架构启发,但本文直接优化二维稠密对应,不把前馈 3D 重建当作必须的中间步骤。
  • 可迁移启发:在光流或几何配准任务中,可分别审计可见性、局部精度与误差方向性,避免用一个置信度同时代理所有失败原因;这是读者推论,并非本文额外实验。

评分

  • 新颖性: 4/5。贡献主要是有针对性的系统设计,显式相关性监督与方向性精度输出使其不只是骨干替换。
  • 实验充分度: 4/5。覆盖位姿、定位、稠密匹配及效率,但大错配协方差校准和跨硬件部署仍有缺口。
  • 写作质量: 4/5。问题、机制和消融关系清楚,部分复现细节依赖未包含在缓存中的补充材料。
  • 价值: 5/5。对需要高精度对应的视觉定位和重建流程有直接价值,同时给出了清晰的性能边界。