作者:Prajnan Goswami, Tianye Ding, Feng Liu, Huaizu Jiang

单位:Northeastern University, Adobe Research

会议:CVPR 2026

链接:arXiv, Project, Code

研究动机

视觉对应关系是 3D 视觉里非常底层的一类能力:给定同一场景的不同观测,模型要找出一个点在另一个观测里的对应位置。传统上这件事会按输入模态拆成三类任务:图像到图像的 2D-2D matching、图像到点云的 2D-3D matching、点云到点云的 3D-3D matching。

UniCorrn-0

这篇论文想解决的问题不是单个 benchmark 的精度,而是一个更大的建模问题:

能否用一个共享权重的模型,同时处理 2D-2D、2D-3D 和 3D-3D 几何匹配?

作者认为已有路线有三个关键限制:

  1. 基于 cost volume / pyramid / recurrent refinement 的 2D 方法通常假设规则图像网格,并依赖局部范围内的相似度搜索。这个结构很适合图像,但对稀疏、不规则、长距离对应的点云并不自然。

  2. 基于 nearest neighbor 的特征匹配可以统一“相似度计算”这件事,但 NN search 往往是一次性的外部操作,不能自然嵌入多层网络里做端到端迭代 refinement。

  3. 直接回归 displacement 的方法在 2D 图像中可行,但论文的实验显示它在 2D-3D 和 3D-3D 上明显吃亏,因为 3D 对应关系需要更显式的几何推理。

所以 UniCorrn 的中心动机是:把 correspondence 的共同本质抽出来,即“一个 query keypoint 到目标模态位置的匹配分布”,再用 Transformer attention 作为可堆叠、可训练、跨模态共享的 matching cost。

核心方法

UniCorrn 的输入是源模态 $I_s$、目标模态 $I_t$,以及源模态里一组待查询关键点 $K_s$。源和目标可以是图像或点云,因此任务自然覆盖 2D-2D、2D-3D 和 3D-3D。输出是目标模态中的对应关键点 $K_t$,以及每个对应点的置信度 $C_t$。

整体结构分为四个部分:

UniCorrn-1

  1. 模态专属 backbone:图像使用 ViT,点云使用 Point Transformer v3。相同模态的源和目标共享 backbone 权重,并用 RoPE 编码相对位置信息。

  2. 共享 feature fusion encoder:不再区分 2D 或 3D,只把 backbone 输出视作 token 序列,通过 self-attention 和 cross-attention 交换信息。

  3. matching decoder:这是论文的核心。它接收源关键点 query、源/目标融合特征,并逐层更新关键点的外观特征和位置嵌入。

  4. 预测头:位置流用于回归目标坐标,外观流用于预测匹配置信度。

Attention as Matching Cost

论文最重要的观察是:Transformer attention 矩阵本身就可以看成一个归一化的 matching cost。给定源关键点特征和目标 token 特征,attention 的每一行描述“这个源 query 应该看向目标的哪些位置”。如果 attention 足够理想,那么每一行会接近 one-hot,对应目标里的真实匹配位置。

形式上,模型用位置增强后的 query/key 特征计算注意力:

这里作者没有用普通 dot-product attention,而是用基于 L2 距离的 Gaussian attention。直觉上,matching 更像度量空间里的 descriptor comparison;Gaussian kernel 比线性相似度更适合表达非线性的特征距离。

为什么需要 Dual-Stream Decoder

如果直接把目标位置编码作为 value,那么 attention 输出确实能携带匹配位置,但它会带来一个问题:输出基本是“位置特征”,下一层就缺少继续匹配所需的外观信息,Transformer 层难以堆叠。

UniCorrn 的解法是双流 decoder:

UniCorrn-2

  1. appearance stream 保存和更新外观特征 $F_k$,继续服务于下一层的相似度匹配。

  2. position stream 保存和更新位置嵌入 $P_k$,用于逐层逼近目标坐标。

  3. 两条流共享同一个 attention 矩阵,也就是同一个 matching cost,但更新到不同的 residual stream 中。

这样做的好处是:模型既能从 attention 里读取目标位置,又不会丢掉后续层继续匹配所需的 appearance descriptor。论文里的 ablation 显示,decoder 层数增加能持续提升 2D-2D matching,说明这种设计确实支持逐层 refinement。

UniCorrn-3

训练目标

总损失把三个任务放在一起训练:

每个任务里又包含三类监督:

  1. confidence-aware L1 loss:监督预测坐标,同时让置信度表达遮挡、透明区域、天空等不确定位置。

  2. InfoNCE descriptor loss:约束源/目标对应点的 descriptor 更接近,让 attention matrix 的匹配基础更稳。

  3. auxiliary supervision:每一层 matching decoder 都输出中间对应点并接受监督,避免深层 decoder 才学到匹配,增强逐层 attention 的可解释性和稳定性。

数据集

训练数据被设计成三类任务的混合:

  1. 2D-2D:ARKitScenes、BlendedMVS、CO3D-v2、MegaDepth、StaticThings3D、ScanNet++、Waymo。

  2. 2D-3D:7Scenes、RGB-D Scenes V2,并补充由 ScanNet++ 深度图生成的伪点云数据。

  3. 3D-3D:3DMatch、ModelNet,并补充由 ARKitScenes、MegaDepth、ScanNet++ 深度图投影得到的伪点云数据。

评估覆盖的范围也比较宽:

  1. 2D-2D:MegaDepth-1500、ScanNet-1500、InLoc。

  2. 2D-3D:7Scenes、RGB-D Scenes V2。

  3. 3D-3D:3DMatch、3DLoMatch、ModelNet。

伪点云数据是这篇论文里很关键的工程补丁。2D-2D 数据天然丰富,但 2D-3D 和 3D-3D 的高质量对应标注少得多。作者用深度图投影出 dense 3D point map,再按固定 stride 采样成类似 benchmark 的稀疏点云,从而让统一模型在跨模态任务上有足够训练信号。

附录里的 ablation 很直接:不使用伪点云时,7Scenes 的 RR 只有 15.4,加入伪点云后升到 77.8;3DLoMatch 的 RR 从 73.2 升到 81.8。这说明 UniCorrn 并不是只靠结构创新,数据构造同样是成功条件。

算力

论文训练了 small-scale 和 large-scale 两个版本。最终 large-scale UniCorrn 大约 600M 参数:

  1. 图像 backbone:ViT-L,24 层,embedding 维度 1024。

  2. 点云 backbone:PTv3,多尺度深度为 [3, 6, 6]。

  3. feature fusion encoder:12 层 cross-view Transformer。

  4. matching decoder:8 层 dual-stream decoder,单头 attention,embedding 维度 256。

大模型分两阶段训练:

  1. Stage 1:用 CroCo v2 初始化,在 2D-2D 和 3D-3D 上联合训练 40 epoch;每个 epoch 使用 384k 2D-2D pairs 和 384k 3D-3D pairs。

  2. Stage 2:从 Stage 1 初始化,在 2D-2D、2D-3D、3D-3D 三个任务上训练 30 epoch;每个任务每个 epoch 约 60k samples。

训练使用 8 张 H100,Stage 1 约 7 天,Stage 2 约 4 天。2D-2D 和 2D-3D 输入图像 resize 到 $512 \times 384$。

推理方面,附录在 RTX A5000 上统计了 5000 个 keypoint queries 的时间:ScanNet 2D-2D 约 329 ms,7Scenes 2D-3D 约 390 ms,3DMatch 3D-3D 约 320 ms。论文还报告统一模型显存占用约 2.6GB,比组合多个专用模型低很多。

实验结果

匹配范式消融

论文首先比较了几种 matching paradigm:nearest neighbor、global matching、direct regression、sequence concatenation,以及 UniCorrn 的 queryable dual-stream matching decoder。

核心结论是:

  1. direct regression 和 sequence concatenation 在三个任务上都明显较弱,尤其是 2D-3D 和 3D-3D。

  2. nearest neighbor 在 2D-2D 上不差,但在 2D-3D 和 3D-3D 上弱于 UniCorrn,说明一次性 descriptor search 不够。

  3. global matching 接近 UniCorrn,但依赖更高分辨率的 dense matching,训练耗时约为 UniCorrn 的 2 倍。

  4. UniCorrn 在 small-scale 单任务实验中取得 MegaDepth AUC@5 = 50.6,7Scenes RR = 77.8,3DMatch RR = 96.9。

模块设计消融

从 baseline 到最终设置,MegaDepth-1500 的 AUC@5 从 36.4 提升到 50.6:

  1. Gaussian attention:36.4 -> 37.3。

  2. 训练 keypoint queries 从 100 增加到 800:37.3 -> 38.2。

  3. 单头 attention:38.2 -> 39.5。

  4. contrastive loss:39.5 -> 43.9。

  5. 4 倍特征上采样:43.9 -> 48.5。

  6. 上采样后保持 $D=256$:48.5 -> 50.6。

UniCorrn-4

UniCorrn-5

辅助监督也很关键。只有 1 层 decoder 时,加入 $\mathcal{L}_{aux}$ 后 MegaDepth AUC@5 从 28.8 提升到 47.7;5 层 decoder 时从 48.5 提升到 50.6。这说明中间层监督不是装饰,而是在帮助每一层 attention 学会稳定地指向正确位置。

2D-2D

在 MegaDepth-1500 上,UniCorrn stage 1 达到 55.5 / 71.1 / 82.8 的 AUC@5/10/20;stage 2 为 54.2 / 69.8 / 81.8。这个结果强于同样 coarse-to-fine 推理下的 MASt3R,但弱于 RoMa、DKM 这类利用高分辨率图像 warping 做亚像素 refinement 的专用 2D matcher。

这个差距不算意外:高分辨率 2D warping 很适合图像网格,但不能直接迁移到 2D-3D,因为 2D grid 到 3D point cloud 没有自然的 dense warp。

在 ScanNet-1500 上,UniCorrn stage 2 的 AUC@20 为 71.3,对没有直接用 ScanNet 训练的一类方法来说很有竞争力。InLoc 上 stage 2 也能达到接近 SOTA 的视觉定位结果。

UniCorrn-6

2D-3D

这是 UniCorrn 最亮眼的部分。7Scenes 上,UniCorrn stage 2 达到:

  1. IR = 82.4。

  2. FMR = 93.0。

  3. RR = 91.0。

相比 Diff-Reg 的 RR = 83.8,UniCorrn 有明显优势。RGB-D Scenes V2 上 UniCorrn 的 RR = 92.5,也高于 Diff-Reg 的 87.4。

这组结果说明统一模型并没有因为共享权重而牺牲跨模态匹配,反而受益于 2D-2D 数据和伪点云数据带来的共享几何先验。

3D-3D

在 3DMatch 上,UniCorrn stage 2 的 RR = 97.5;在低重叠更难的 3DLoMatch 上,stage 1 RR = 86.7,stage 2 RR = 83.2。论文摘要里强调对 3DLoMatch 的提升,主要来自 stage 1 相比之前最强方法的优势。

这里有一个值得注意的现象:加入 2D-3D 任务的 stage 2 并没有让所有任务都变强。stage 2 在 7Scenes 上大幅提升,但 MegaDepth 2D-2D 和 3DLoMatch 都比 stage 1 略有回落。作者用 gradient conflict 分析指出,冲突主要集中在 normalization layers,说明 2D 图像特征和 3D 点特征的统计分布仍然不好共享。

UniCorrn-7

优势与不足

优势

  1. 统一问题定义很干净。把 2D-2D、2D-3D、3D-3D 都写成 query keypoints 到 target coordinates 的对应估计,避免了每个任务都单独设计一套输出接口。

  2. dual-stream decoder 解决了一个真实矛盾。如果只输出位置,下一层无法继续匹配;如果只保留外观,又不能显式读出坐标。appearance stream 和 position stream 的拆分让 attention 既能当 matching cost,又能被堆叠 refinement。

  3. 跨模态数据策略很务实。论文没有假装 3D correspondence 标注足够多,而是用深度图生成伪点云,把 DUSt3R / ScanNet++ / ARKitScenes 这类数据的几何监督转化成跨模态匹配信号。

  4. 实验面比较完整。从 matching paradigm、decoder 组件、辅助监督、伪点云,到三个任务的 benchmark,都能看到设计选择对应的收益。

不足

  1. 统一还不是完全模态无关。backbone 和 prediction head 仍然是模态专属的,真正共享的是 fusion encoder 和 matching decoder。它已经统一了核心 correspondence reasoning,但不是一个完全单体的 token-to-token 基础模型。

  2. 2D-2D 专用精度仍有差距。在 MegaDepth 上,RoMa / DKM 这类高分辨率图像专用方法仍然更强。UniCorrn 的价值更偏“一个模型覆盖多类几何匹配”,而不是纯 2D matching 榜单第一。

  3. 联合训练存在任务干扰。Stage 2 明显提升 2D-3D,但会让部分 2D-2D 和 3D-3D 指标下降。论文把问题指向 normalization layers,这也是后续工作很自然的切入点。

  4. 部分评估依赖 ground-truth keypoints。2D-3D 和 3D-3D benchmark 中,作者使用 ground-truth keypoints 查询模型。虽然论文解释这并不一定让 UniCorrn 获得不公平优势,但真实系统里仍然需要考虑 keypoint proposal 或 dense querying 的完整 pipeline。

  5. 训练成本不低。600M 参数、8 张 H100、两阶段共 11 天,说明这条路线更接近基础模型训练,而不是轻量任务模型。

UniCorrn-8

记忆点

  1. Transformer attention 可以被重新解释成 matching cost。这不是简单“把 Transformer 用到 matching”,而是把 attention matrix 当作 correspondence distribution 来用。

  2. 位置流和外观流必须分开。位置流负责把 attention 读成坐标,外观流负责让下一层还能继续匹配。这个设计比直接 regression 或 sequence concatenation 更贴近 correspondence 的结构。

  3. Gaussian attention 是一个小但有效的改动。用 L2 距离计算 similarity,更像传统 descriptor matching,也减少了普通 dot-product 对特征尺度的敏感性。

  4. 伪点云数据是跨模态统一的桥。如果没有从深度图投影来的 pseudo point cloud,2D-3D / 3D-3D 的训练信号远远不够。

  5. 统一模型的难点会从 architecture 转向 optimization。UniCorrn 已经证明共享 decoder 可行,但 stage 2 的任务干扰说明不同模态的特征统计仍然需要更好的 normalization 或 routing 机制。

  6. 这篇论文的实际启发:未来的 3D matching 系统可能不再按 2D-2D、2D-3D、3D-3D 分成三套模型,而是先抽象成“任意模态 token 之间的 queryable correspondence”,再用共享几何先验做跨任务推理。