MARCO:探索语义对应中未见的特征空间 MARCO: Navigating the Unseen Space of Semantic Correspondence
基于 DINOv2 的统一对应模型,用粗到细目标+稠密自蒸馏实现 SOTA 且小 3 倍快 10 倍。
前置知识
语义对应(Semantic Correspondence)
指在两张图像之间建立像素级匹配关系,使得语义上等价的部位(如猫的左眼对应到另一只猫的左眼)能够被正确关联。它和传统图像匹配(如 SIFT 匹配同名点)的关键差别在于:语义对应要求在显著的外观、姿态、视角变化下仍能找到同一语义部位。任务通常以关键点监督形式给出,每张图标注少量(如 10-20 个)landmark,目标是给查询点预测出目标图上的对应位置。
这是 MARCO 论文直接研究的核心问题。理解它如何评估(PCK@α 指标)和它的稀疏监督特性是把握 MARCO 设计动机的前提。
DINOv2 视觉基础模型
Meta 在 2023 年发布的自监督 ViT 模型,使用大规模无标注图像预训练得到。它在多种下游任务上展现出强大的语义对齐能力:相似语义的图像块在特征空间里彼此接近,且对姿态/纹理变化有较好的鲁棒性。MARCO 直接以 DINOv2 ViT-L/14 作为 backbone,冻结其大部分权重,仅通过轻量适配模块微调。
MARCO 的整体思路建立在 DINOv2 已经具备“语义骨架但缺乏空间一致性”这一观察之上。理解这一点才能理解为什么需要 coarse-to-fine 目标、为什么需要自蒸馏来恢复被稀疏监督破坏的几何结构。
AdaptFormer(适配器微调)
一种参数高效的迁移学习方法,在 Transformer 的每个 block 内插入一个轻量“瓶颈”模块:先用下投影把 $D$ 维特征压缩到 $d$ 维($d \ll D$),再非线性激活后上投影回 $D$ 维,最后残差加回主分支。这种设计只增加约 5% 的额外参数,但能高效适配新任务。MARCO 把它放在 DINOv2 的 15-24 层(高层语义层)。
MARCO 的关键架构选择之一就是用 AdaptFormer 而不是全量微调。论文消融显示:全量微调会让 SPair-71k 涨到 67.0 PCK@0.10,但会让 SPair-U 跌到 43.9(冻结 DINOv2 时是 54.9),说明过度微调会破坏预训练结构。AdaptFormer 是精度和泛化的最佳折中。
Gaussian RBF 分布匹配(vs 坐标回归)
对关键点预测有两种主流范式:(1) 坐标回归——用 soft-argmax 提取峰值坐标,再用 L2 损失监督,缺点是 soft-argmax 在多模态分布下会平均化所有模式,导致响应过平滑;(2) 分布匹配——把目标位置编码为以真值点为中心的高斯 RBF 核 $G_\sigma(u; p_t^i) \propto \exp(-\|u - p_t^i\|^2 / 2\sigma^2)$,用交叉熵让预测相似度图整体拟合这个分布。MARCO 选择了后者,并发现 $\sigma$ 的选取对学习动力学影响极大。
这是 MARCO coarse-to-fine 损失的理论基础。论文的关键洞察是:大 $\sigma$ 学粗语义对齐但细节差,小 $\sigma$ 局部精准但牺牲粗匹配——而 cosine 退火调度能同时拿到两种好处。
Delaunay 三角剖分 + 分段仿射 warp
给定一组源点 $\{u_i\}$ 和对应的目标点 $\{v_i\}$,在源点集上做 Delaunay 三角剖分得到一组非重叠三角形;对每个三角形,将三个顶点替换为目标点得到对应的“目标三角形”;再对每个三角形对估计一个仿射变换 $W_{\tau \to \tau'}$。所有局部仿射 warp 的并集形成一个连续的分段仿射 warp $\hat{W}$,覆盖整个凸包,将稀疏点对应提升为稠密的位移场 $D(u) = \hat{W}(u) - u$。
这是 MARCO 把稀疏 MNN 匹配“扩展”为物体表面稠密伪标签的核心几何工具。理解它才能理解 self-distillation 是怎么把“几十个点”变成“一万多个点”的监督信号。
研究动机
近年来语义对应领域被“DINOv2 + Stable Diffusion”双编码器主导(如 Geo-SC、Jamais Vu),在 SPair-71k 等标准基准上把 PCK@0.10 推到 83% 上下,但有三痛点:(1) **参数巨大**——SD+DINOv2 双塔合计约 950M 参数,RTX 4090 上仅 0.85 FPS;(2) **泛化失败**——SPair-U 显示在训练时未标注的“未见关键点”上 Geo-SC PCK@0.10 从 83.2 暴跌到 56.9,只比冻结 DINOv2(54.9)多 2 个点,几乎等于没学到新东西;(3) **类别级失败**——把模型放到完全未见过的物体类别(如 home furniture、animal face)表现同样急剧下降。此外论文给出一个关键可视化:frozen DINOv2 的稠密光流其实“部分连贯”(沿物体表面大致平滑),但用稀疏关键点监督微调后光流向关键点“收缩”,几何一致性反被破坏。
本文的目标是论文追求一个“统一(unified)”的语义对应模型,三个目标必须同时满足:(i) 在监督关键点上达到像素级的空间精度(PCK@0.01 这种 strict 指标要领先),(ii) 对未见关键点和未见类别都要强泛化(SPair-U 和作者新提出的 MP-100 基准都要 SOTA),(iii) 保持紧凑与高效(要明显小于双编码器、明显快于双编码器),最终目标是把“benchmark 性能”和“真实世界可用性”之间的鸿沟填上。
与已有工作不同的是,MARCO 与已有方法的本质差异在于它对“稀疏监督导致的几何崩塌”采取了一种完全不同的解决思路。并发工作 Jamais Vu 的做法是把物体点提升到 3D canonical 模板(用单目深度模型)来缓解监督的稀疏性,但这条路线有三个内在局限:(a) 仍然绑定到训练时的物体类别,跨类别时 canonical 空间不通用;(b) 对高度可形变物体(如动物身体)建模困难;(c) 依赖外部深度估计模型。MARCO 放弃了 3D 模板、放弃了 category prior、放弃了外部深度,直接从 DINOv2 自身随训练演化的特征空间里挖掘可靠匹配,再用 Delaunay 三角剖分把稀疏匹配扩展为物体表面稠密伪标签,等于把“模型自己学到的结构”变成自监督信号源。配合 coarse-to-fine 目标、AdaptFormer 适配器、轻量 4× 上采样头,MARCO 走出了一条“单一 DINOv2 backbone + 训练框架”的精简路线。
核心方法
MARCO 思路是“最小化架构 + 智能化训练”。架构:仅在冻结的 DINOv2 ViT-L/14 15-24 层插入 AdaptFormer 瓶颈适配器,最后接 4× 轻量上采样头(ConvTranspose2×2 + DepthwiseConv3×3),附加参数 <5%。训练框架两个互补目标:(1) **粗到细监督目标**——GT 关键点编码为高斯 RBF 核 $G_\sigma(u; p_t^i) \propto \exp(-\|u - p_t^i\|^2/2\sigma^2)$,交叉熵监督相似度图,$\sigma$ 按 cosine 从 $\sigma_{max}=3$ 退火到 $\sigma_{min}=1$,先学粗对齐再学精细;(2) **稠密自蒸馏**——EMA teacher 挖 mutual nearest neighbor 匹配,与 GT 合并成 seed 集;Delaunay 三角剖分 + 分段仿射 warp 把稀疏匹配扩展为稠密位移场;k-means + BIC 聚类把含 GT 关键点的“运动相干”区域保留为伪标签;student 用 L2 回归。直觉:监督损失把“几个点”标定准,自蒸馏把它们扩展为“一万多个点”的稠密监督,迫使特征在物体表面保持几何连贯。
MARCO 与已有方法的本质区别在于“以特征空间自身为监督源”的稠密自蒸馏。已有方案(含双编码器和 Jamais Vu 的 3D canonical)都依赖“外部结构”(扩散特征、深度图、canonical 模板)补足稀疏监督;MARCO 观察到 DINOv2 frozen 特征已含部分连贯稠密光流(Fig. 2a),把这个隐式结构显式挖出:MNN 抓稀疏可靠匹配 → Delaunay+warp 扩展到整个物体表面 → GT 关键点“锚定”剔除对称/遮挡错误。模型“自我验证”形成正反馈。coarse-to-fine $\sigma$ 退火是独立 insight:固定 $\sigma=1$(27.8@0.01 / 81.0@0.10)和 $\sigma=3$(19.5@0.01 / 86.8@0.10)都顾此失彼,cosine 退火在两端间取光滑中间轨迹(27.0@0.01 + 87.2@0.10)。
方法步骤详情
MARCO 训练流程 7 步:(1) **特征提取**:图像对 $(I_s, I_t)$ 送入 student $\Phi_{\theta_S}$ 和 EMA teacher $\Phi_{\theta_T}$($\beta=0.999$),得 $F_s, F_t$,再 4× 上采样得 $\hat{F}$。(2) **粗到细监督**:对 GT 对 $(p_s^i, p_t^i)$,算相似度图 $S(p_s^i, u) = \langle \hat{F}_s[p_s^i], \hat{F}_t[u]\rangle$,交叉熵让 softmax($S$) 拟合高斯 RBF 目标 $G_{\sigma(t)}$,$\sigma(t)$ 按 cosine 从 $\sigma_{max}=3$ 退火到 $\sigma_{min}=1$。(3) **MNN 挖掘**(Fig. 3a):teacher 特征做双向最近邻取交集 $P_{MNN}$,与 GT 合并为 seed 集 $P_{seed}$,SAM mask 过滤背景。(4) **Delaunay+warp**(Fig. 3b):对 $P_{source}$ 三角剖分,每个 $\tau$ 替换顶点得 $\tau'$ 估仿射变换 $W_{\tau\to\tau'}$,联合为 $\hat{W}$,输出稠密位移场 $D(u) = \hat{W}(u) - u$。(5) **Flow 聚类+GT 锚定**(Fig. 3c):$D$ 用 k-means($k=15$)+ BIC 合并得相干簇 $\{\Omega_n\}$,只保留含 GT 关键点的簇形成伪标签 $P_{self}$。(6) **自蒸馏损失**:$\mathcal{L}_{self} = \frac{1}{|P_{self}|} \sum \|\text{soft-argmax}(S(\hat{u},\cdot)) - \hat{v}\|^2$。(7) **总损失** = $\mathcal{L}_{sup} + \mathcal{L}_{self}$,Adam 训 10 epoch,batch 16,lr=1e-4,推理用 window soft-argmax。
技术新颖性
MARCO 新颖性集中在三层面。**方法论**:把“自监督稠密对应”从“零起点训练”(SCorrSAN、NCNet)转向“在预训练特征空间内挖掘”——把冻结 DINOv2 当“现成的对应预言机”,输出“反向”蒸馏回自己,避开从头学习。**目标函数**:coarse-to-fine $\sigma$ cosine 退火是简单但被忽视的技巧——Tab. 4 显示固定 $\sigma$ 整体 trade-off 差;cosine 调度用单一超参同时逼近两侧(27.0@0.01 + 87.2@0.10),“调度胜于单点”的思路在关键点学习中较新。**几何处理**:Delaunay+warp 扩 MNN 为稠密 flow 是经典方法,但与“GT 锚定的 k-means 聚类”组合形成“先扩展、再过滤”的伪标签 pipeline 是本文特有——只用 MNN 仅 52.5 PCK@0.10,加 Delaunay+warp 跳到 64.7(+12.2),再锚定到 67.5。
实验结果
MARCO 在所有基准同时 SOTA。**标准基准(Tab. 1)**:SPair-71k 87.2 PCK@0.10 / 77.6 @0.05 / 27.0 @0.01,比 Geo-SC 提升 +4.0/+4.8/+5.3(“fine-grained 增益放大”);AP-10K 跨家族 83.4 PCK@0.10(+4.9);PF-PASCAL PCK@0.05 达 91.1(+5.8)。**未见关键点(Tab. 3)**:SPair-U 平均 67.5 PCK@0.10,超越 Jamais Vu 62.4(+5.1)和 Geo-SC 56.9(+10.6)。**未见类别(Tab. 2)**:MP-100 上 human face 87.5(+2.0)、apparel items 55.9(+10.2)、animal body 42.3(+3.0)、home furniture 60.4(+7.7)、animal face 52.6(+4.9),平均 +4.7;sling dress +14.6、sling +10.0 是最显著单项。**效率(Tab. 12)**:323M 参数(vs 950M,3× 缩小),8.3 FPS(vs 0.85,10× 加速)。**消融(Tab. 4)**:AdaptFormer 让 SPair-71k PCK@0.10 从 53.9→76.9(+23.0),4× upsampling 再 +10.3;去 dense loss 后 SPair-U 暴跌 41.8(-25.7),Delaunay 贡献 +12.2、GT 锚定 +2.8。**可迁移性(Tab. 5, 11)**:flow-anchoring 损失外挂到 Geo-SC 让 SPair-U 56.9→63.4(+6.5);GT bbox 替 SAM mask 性能几乎不变(87.2→86.7)。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| SPair-71k 语义对应(标准基准) | PCK@0.01 / 0.05 / 0.10(百分比,越高越好) | 27.0 / 77.6 / 87.2(带 mask 训练变体) | 21.7 / 72.8 / 83.2(Geo-SC,2024 SOTA) | +5.3 / +4.8 / +4.0 |
| AP-10K 跨家族语义对应(最难的 AP-10K split) | PCK@0.01 / 0.05 / 0.10 | 28.5 / 71.1 / 83.4 | 18.3 / 63.2 / 78.5(Geo-SC) | +10.2 / +7.9 / +4.9 |
| PF-PASCAL 语义对应 | PCK@0.05 / 0.10 / 0.15 | 91.1 / 96.9 / 98.6 | 85.3 / 95.0 / 97.4(Geo-SC) | +5.8 / +1.9 / +1.2 |
| SPair-U(未见关键点,SPair-71k 上扩展的 4 个/类新 landmark) | PCK@0.10 平均(18 类) | 67.5 | 62.4(Jamais Vu)/ 56.9(Geo-SC) | +5.1 / +10.6 |
| MP-100 Apparel items(未见关键点,12 类,282 个新 landmark 定义) | PCK@0.10 | 55.9 | 45.7(Jamais Vu) | +10.2 |
| MP-100 Home furniture(未见类别,4 类:couch/table/bed/swivel chair) | PCK@0.10 | 60.4 | 52.7(Jamais Vu) | +7.7 |
| MP-100 Animal body(未见类别,32 种动物 species) | PCK@0.10 | 42.3 | 39.3(Jamais Vu) | +3.0 |
| MP-100 Animal face(未见类别,26 种动物脸) | PCK@0.10 | 52.6 | 47.7(Jamais Vu) | +4.9 |
| MP-100 Human face(未见关键点,68 面部 landmark) | PCK@0.10 | 87.5 | 85.5(Jamais Vu) | +2.0 |
| 推理效率(单卡 RTX 4090) | FPS(每秒帧数,越高越好) | 8.3 FPS / 323M 参数 | 0.85 FPS / 950M 参数(Geo-SC, Jamais Vu) | 约 10× 加速、约 3× 缩小 |
局限与改进
MARCO 局限性分“作者承认”和“自观察”两类。**作者承认的**:(1) 自蒸馏依赖 SAM mask 过滤背景——Tab. 11 显示换成 GT bbox 性能略降(87.2→86.7, 67.5→66.9);(2) 840p 分辨率下推理仅 8.3 FPS,对实时应用偏慢;(3) 训练需 10 epoch SPair-71k 标注,希望减少稀疏监督依赖。**自观察的**:(1) MP-100 某些类(fly、locust)所有方法仅 65-67 PCK@0.10,极端尺寸/姿态细粒度对应仍是开放问题;(2) 所有监督实验基于 SPair-71k,未验证 self-distillation 在更大数据上的放大效果;(3) PCK@0.15 宽松阈值上 MARCO 提升最小(PF-PASCAL +1.2),主要优势在精细阈值;(4) 未报告 ViT-S/14 等小模型性能;(5) MP-100 评估集是作者采样的 2k pairs/domain,复现需严格遵循补充材料过滤规则。
独立分析的弱点
独立分析下 MARCO 仍有几个具体弱点。(1) **稀疏 landmark 偏置**:依赖 SPair-71k 的 20 个 landmark 作监督锚点,未标注部位(爪垫、羽冠)被 self-distillation 忽略。改进:引入 Grounding DINO 自动扩展 anchor。(2) **Delaunay 依赖凸包**:分段仿射 warp 只覆盖 $P_{source}$ 凸包,凹形物体或遮挡形成“死区”。改进:改用 RBF 薄板样条做全局非刚性 warp。(3) **Backbone 不可替换**:所有实验基于 DINOv2 ViT-L/14,323M 参数含冻结 backbone。改进:把适配器设计 backbone-agnostic。(4) **MP-100 标注歧义**:home furniture 的 table 在所有方法上 PCK@0.10 都低于 30%。改进:设计针对性指标(对称不变性、遮挡鲁棒性)。(5) **MNN 对初始特征敏感**:训练早期 MNN recall 低,过早陷入的伪标签噪声污染训练。改进:warm-up 策略先训监督目标再开启自蒸馏。
未来方向
作者明确了几条未来方向。(1) **减少对稀疏监督的依赖**:最终让模型在完全无关键点标注的大规模数据(如 LAION、图像-文本对)上自训练,“让模型直接从视觉数据中推断几何关系”。(2) **扩展到其他 correspondence 任务**:方法 task-agnostic,任何提供“稀疏 anchor + 图像对”的场景可套用(图像编辑、姿态估计、affordance 理解)。(3) **MP-100 benchmark 推广**:推动社区关注“未见关键点 + 未见类别”的双重泛化评估。基于成果的延伸:(4) **2D → 2D-3D 对应**:piecewise-affine warp 是 2D 几何,可结合单目深度做稠密 2D-3D lifting。(5) **视频时序自蒸馏**:当前只在静态图像对,可引入光流一致性约束。(6) **联合其他自监督目标**:contrastive learning、masked image modeling 与 MARCO 联合预训练。
复现评估
MARCO 复现性较好。**代码与数据**:项目主页 https://visinf.github.io/MARCO 公开代码、权重、评估脚本;PyTorch 实现,依赖 SAM 做 mask 提取。**数据规模**:训练 SPair-71k(53.4k 训练对、18 类),评估扩展到 SPair-U(额外 4 个/类新关键点)和自建 MP-100(5 个 macro-domain,各 2k pairs)。**算力**:训练 10 epoch、batch 16、DINOv2 ViT-L/14 + 适配器,单卡 A100/A6000 即可(作者用 CINECA HPC);推理单卡 RTX 4090 实测 8.3 FPS。**关键超参**:lr=1e-4、Adam、EMA $\beta=0.999$、$\sigma_{max}=3$、$\sigma_{min}=1$、cosine 退火、AdaptFormer 15-24 层、bottleneck ×0.5、聚类 $k=15$ + BIC。**难度中等**:DINOv2、SAM 现成,主要工程难点是 Delaunay+warp 高效实现、EMA teacher 管理、k-means+BIC 循环、mask 离线生成。具备 DINOv2 微调经验的实验室 1-2 周可复现主要结果。
论文图表