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) 可写为:
这里监督的是由真值决定的目标索引,不是拿当前相似度最大的预测作为真值。 注意力权重还用于聚合目标位置嵌入,将“匹配到哪里”的信息传给后续 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) 的高斯负对数似然可等价写成:
第一项约束残差与预测精度相符,第二项防止简单地把所有精度压低以逃避误差惩罚。 训练只在共视且残差小于 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。对需要高精度对应的视觉定位和重建流程有直接价值,同时给出了清晰的性能边界。