枢纽

DINOv2:自监督视觉特征「开箱即用」的时代开始

Maxime Oquab, Timothée Darcet, Théo Moutakanni 等(Meta AI Research + Inria)。TMLR 01/2024;arXiv:2304.07193(v1 2023 年 4 月,v2 2024 年 2 月)。 代码+权重 · Apache 2.0 · vision foundation modelself-supervised

🧠 一句话心智模型:在 NLP 里 GPT/BERT 早就能「预训练一次、下游用线性头」。在视觉里这件事一直被 CLIP 这种「图文配对」弱监督垄断——纯自监督(不靠文本)始终差一截。DINOv2 的回答:不是自监督方法不行,是以前没把数据 + 模型 + 训练 trick 同时做到足够大。把 iBOT 换骨干、加 KoLeo 正则、Sinkhorn-Knopp 归一化、自动数据筛选 LVD-142M、ViT-g 1.1B 参数——一套组合拳后,不靠任何文本就把 ImageNet linear probe 打到 86.5%,与 OpenCLIP ViT-G/14(86.2%)持平甚至略胜。

🎯 为什么重要:视觉终于等来「不靠文本」的通用特征

视觉预训练此前有两条路(论文 §1):

核心矛盾
文本弱监督(CLIP / OpenCLIP / SWAG):用「图-文」对学,特征通用但受限于 caption 的描述力——精细的像素级信息(分割、深度)很难从文本里学出来;且需要亿级对齐语料。
纯自监督(MAE / DINO / iBOT):从图像本身学,理论上更通用。但此前大多在 ImageNet-1k(130 万张)上训,一放到下游任务就要 fine-tune,否则远不如 CLIP。
困境:自监督方法「概念上更对」,但在工程上一直输。

DINOv2 论文的核心 claim(§1 末):已有的自监督方法(尤其 iBOT)只要训在足够多、足够多样的筛选过的数据上,就能产出开箱即用的通用视觉特征。瓶颈不在算法新颖性,而在「scaling 的工程化」。这把 CV 的「foundation model」从「必须图文配对」拉回到「图像本身够用」。

💡 核心思想:四件已有零件 + 一个新数据集

DINOv2 的方法部分没有发明新 loss。它把已有的自监督组件拼到一起,并把每一个都调到「scale 后才显出价值」的版本(论文 §4):

DINOv2 = DINO + iBOT + SwAV 正则 + KoLeo,训在 LVD-142M 上 图像 x + 多裁剪 + 随机 mask Student ViT θ 可学 Teacher ViT EMA of student DINO loss [CLS] 图像级 iBOT loss [patch] 像素级 KoLeo + Sinkhorn-Knopp 通用特征 ViT-g/14 LVD-142M(自动筛选) 1.2B 原图 → 检索 → 142M
图 1:DINOv2 训练管线。Student-Teacher 蒸馏框架(teacher 是 student 的 EMA),同时优化图像级(DINO)和patch 级(iBOT)的判别损失;KoLeo 让特征均匀铺开,Sinkhorn-Knopp 防止 teacher 塌缩。没有新 loss,全是已有零件的规模化组合

🛠️ 五个让「自监督 scale 起来」的工程关键

设计心智为什么必要(论文依据)
① 自动数据筛选 LVD-142M用自监督 ViT-H/16 嵌入 → 对 1.2B 网络爬取图做 k-means → 对每个 query 图像检索 4 个近邻 → 拼 142M 多样化数据集§3:自监督方法对数据质量极敏感。uncurated 数据掉点严重(Table 2:83.3 vs 85.8)
② iBOT patch-level loss + untied heads随机 mask 学生分支的 patch,让教师头预测被遮 patch 的 prototype 分布§4:patch 级目标对密集预测(分割、深度)至关重要;§4 解开 DINO/iBOT 头权重共享后scale 上反而更好
③ Sinkhorn-Knopp centering用 SwAV 的 SK 算法(3 步迭代)替代 teacher 的 softmax+EMA centering§4:避免 teacher 输出塌缩到少数 prototype,提升 batch 内分布均衡
④ KoLeo 正则$L_{\text{koleo}}=-\frac{1}{n}\sum_i\log d_{n,i}$,鼓励 batch 内特征均匀铺开§4 + Table 3a:让 instance retrieval(Oxford-M)mAP 涨 +8.3%
⑤ 高分辨率短期 fine-tune224×224 训练主体,最后 10k iter 切到 518×518§6.6 Fig.6:达到接近全程高清训练的效果,但只花很少算力
🔮 工程加速(§5):自研 FlashAttention + sequence packing(NLP 借来的)+ 高效 stochastic depth(跳过整块而不是 mask)+ PyTorch FSDP(参数分片到多 GPU)。整体比 iBOT 实现快 2×、只用 1/3 显存——这是把 ViT-g(1.1B 参数)训到底的物理前提。
📦 蒸馏出小模型(§5 末):作者只训一个 ViT-g/14,然后用知识蒸馏把 ViT-S/B/L 全部从 ViT-g 蒸出来。Table 1 ablation 证明「蒸馏 > 从头训」——在 12 个 benchmark 上 ViT-L/14 蒸馏版全方位超越同架构从头训版(Fig.5)。

📊 关键结果:在 8 大视觉任务上全面追平 / 超越弱监督

ImageNet-1k linear probe(论文 Table 4,frozen 特征 + 线性头)

方法架构数据文本监督kNN vallinear val
OpenCLIPViT-G/14LAION-2B83.286.2
EVA-CLIPViT-g/14custom83.586.4
iBOT(prior SSL SOTA)ViT-L/16INet-22k72.982.3
DINOv2ViT-g/14LVD-142M83.586.5

相对此前自监督 SOTA(iBOT)+4.2%,并在不使用任何文本的前提下追平/略胜 OpenCLIP ViT-G(+0.3%)和 EVA-CLIP(+0.1%)。

鲁棒性 / 分布外泛化(论文 Table 6,linear probe)

方法架构Im-A ↑Im-R ↑Im-C ↓Sketch ↑
OpenCLIPViT-G/1463.887.845.366.4
iBOTViT-L/1641.551.043.938.5
DINOv2ViT-g/1475.978.828.262.5

DINOv2 在 ImageNet-A 上比 iBOT 涨 +34.4%,比 OpenCLIP 涨 +12.1%。论文 §7.1:「+29.6% on A, +22.1% on R, +23.0% on Sketch vs iBOT」。

实例检索(论文 Table 9,Oxford/Paris)

方法Oxford-MOxford-HardParis-Hard
OpenCLIP ViT-G/1450.719.760.2
iBOT ViT-L/1639.012.747.0
DINOv2 ViT-L/1475.154.083.5

Oxford-Hard mAP 相对 iBOT +41%、相对 OpenCLIP +34%。SSL 特征在实例级粒度上反超弱监督。

视频 / 细粒度分类(论文 Table 7)

方法iNat2018iNat2021K400SSv2
OpenCLIP ViT-G/1473.076.078.335.8
iBOT ViT-L/1666.374.672.638.7
DINOv2 ViT-g/1481.685.778.438.3

在 iNaturalist(细粒度动植物)上 DINOv2 比 OpenCLIP +8.6 / +9.7%——「文本描述不出来的细节」正是自监督的强项。

🌐 在领域中的位置

MoCo / SimCLR(对比学习,实例分类) DINO(self-distill,无负样本) iBOT(DINO + BEVT masked patch) DINOv2(scale + 数据 curation)⭐ DINOv3 / 视觉-语言统一基础模型(=vision encoder 标准)

DINOv2 之后,「视觉编码器」在大多数机器人 / VLA / 世界模型工作里成了默认选择:作为感知 backbone 接到 policy 上,几乎取代了 CLIP 的视觉部分。它证明了「scaling + 工程化」比「新算法」更关键——论文 §1 原话:「existing pretraining methods, especially self-supervised methods, can produce such features if trained on enough curated data」。

❓ 常见误区

DINOv2 是不是就是「放大了的 iBOT」?

本质上是,但放大过程中每一处都得调对。Table 1 ablation 显示:从 iBOT 到 DINOv2 总共 +9.1% kNN 提升,分别来自 LayerScale+StochDepth(+0.9)、KoLeo(+2.3)、batch size 3k(+1.2)、untie heads(+0.3)等十几处叠加。没有任何单点能解释一半的提升——是工程化的总和。

它真的不需要任何文本吗?

训练阶段不需要。但 LVD-142M 的数据来源包括 ImageNet-22k、Google Landmarks 等本身最初是带标签的,DINOv2 没用这些标签,只是把它们当作图像集合筛选。所以严格说是「训练时不用任何监督信号」,不是「数据来源完全无标签」。

为什么下游评估只用 linear probe / kNN,不 fine-tune?

这正是 foundation model 的「开箱即用」检验。Table 5 显示 fine-tune 还能再涨 +2% 以上(88.9% on INet-1k),但 fine-tune 是「可选」而非「必需」——这才是 DINOv2 区别于 MAE(必须 fine-tune)的关键。

为什么 ViT-g 只有 1.1B 参数?比 LLM 小多了。

论文 §5 解释:embedding dim 选 1536(24 heads × 64),是为了GPU 计算效率最优(multiple of 64/256)。比 Zhai 2022 的 1408/16 heads 略改,参数量与精度都几乎一致。

DINOv2 能用在视频 / 3D / 机器人吗?

能。Table 7 显示在 K400 / UCF / SSv2 上即使从未训过视频也接近 SOTA。在机器人领域,DINOv2 已是 RT-2 / OpenVLA / π0 等的常见视觉 backbone——这正是它成为「vision foundation model」的实际证据。