DINOv2 - 无监督视觉特征的通用底座¶
2023 年 4 月 14 日,Meta AI Research 的 Maxime Oquab、Timothee Darcet、Theo Moutakanni、Huy V. Vo 等 26 位作者把 arXiv:2304.07193 上传到网上,三天后 Meta 开源 facebookresearch/dinov2。 这篇论文的反直觉之处在于,它没有用文字 caption 教模型“这是什么”,也没有用人工类别标签校准语义,而是从 1.2B 张候选 web 图里自动筛出 142M 张 LVD 图像,用 DINO+iBOT 式自监督把一个 1.1B 参数 ViT-g/14 训练成通用视觉特征。DINOv2 最锋利的信号不是某个单项 SOTA,而是冻结 backbone 后仍能在分类、检索、分割、单目深度上同时工作,证明“视觉基础模型”不一定必须走 CLIP 式图文对齐路线。
一句话总结¶
Oquab、Darcet、Moutakanni、Vo 等 26 位作者 2023 年发布的 DINOv2,把视觉基础模型从“图像-文字对比学习”拉回到纯视觉自监督:先用 25 个第三方数据集作 seed,从 1.2B web 图像中检索并平衡出 LVD-142M,再训练 1.1B 参数 ViT-g/14,使 student 去匹配 EMA teacher 的全图分布与 masked patch 分布,核心损失可写成 \(\mathcal{L}=\mathcal{L}_{DINO}+\mathcal{L}_{iBOT}+\lambda\mathcal{L}_{KoLeo}\)。它替代的失败 baseline 是三类:ImageNet-1k/22k 上调出来的 SSL 特征跨域不够稳,未整理 web 图像会让自监督学到噪声,CLIP/OpenCLIP 虽强却常丢失局部几何。关键数字很集中:DINOv2-g/14 冻结特征在 ImageNet-1k k-NN/linear 达 83.5/86.5,在 ADE20K linear/+ms 达 49.0/53.0 mIoU,在 NYUd 深度 RMSE 达 0.344/0.298/0.279;后续 SAM 负责 promptable segmentation,CLIP 负责语言语义,而 DINOv2 成了 2023 之后许多 VLM、机器人、3D、医学和遥感系统默认的“几何感视觉 backbone”。隐藏 lesson 是:数据整理和特征几何有时比更花哨的跨模态接口更像基础设施。
历史背景¶
2023 年春天的视觉基础模型分裂¶
2023 年 4 月 DINOv2 出现时,计算机视觉刚经历一轮路线分裂。一条线由 CLIP 和 OpenCLIP 代表:用图文对比学习把图像 embedding 拉进语言空间,零样本分类、检索和开放词汇识别因此突然可用。另一条线由 MAE、DINO、iBOT、BEiT 等自监督方法代表:不借助文字,而是从图像自身的增强、遮挡、patch 关系和 teacher-student 一致性里学习视觉结构。前者更像语义接口,后者更像视觉几何引擎。
问题在于,2021-2022 年的社区注意力明显偏向图文路线。CLIP 的 demo 太强,LAION/OpenCLIP 又把 web-scale 图文预训练变成开源基线;多模态大模型也很自然地把 CLIP 当成“眼睛”。但图文对齐有一个代价:caption 往往只说图里最容易命名的物体和属性,空间位置、部件边界、纹理、深度、可通行区域、遮挡关系很少被文字完整描述。一个 caption 可以写“a dog on a chair”,却不会告诉模型椅背和狗腿在像素层怎么交错。
DINOv2 的历史位置就在这个裂缝里。它不反对 CLIP,而是指出:如果视觉 backbone 要给分割、深度、检测、机器人、遥感和医学图像当基础设施,单靠文本语义不够。视觉模型必须保留 patch 级别的局部一致性和跨域几何感。Meta 在同一个月发布 SAM 和 DINOv2,也很说明问题:SAM 让“点一下就出 mask”成为产品形态,DINOv2 则回答“冻结视觉特征本身能不能足够通用”。
从 DINO 到 iBOT:自监督视觉的前史¶
DINOv2 不是凭空出现的。2021 年的 DINO 已经展示了一个很迷人的现象:Vision Transformer 用自蒸馏训练后,attention map 会自然贴住物体区域,patch token 似乎学到了某种前景-背景结构。DINO 的核心是 teacher-student 框架:student 看不同增强视图,teacher 是 student 的 EMA 版本,student 要匹配 teacher 经过 sharpening 和 centering 后的输出分布。这条线的优雅之处在于没有人工标签,也没有负样本队列,却能形成可用的类别和物体结构。
iBOT 接着把自蒸馏推到 patch 层。它不只看全图 class token,还对被 mask 的 patch token 做在线 tokenizer 式预测,让模型在局部区域上也学会一致表示。这个设计对 DINOv2 非常关键,因为 DINOv2 的目标不只是 ImageNet linear probing,而是分割和深度这类 dense prediction。一个只会输出全局语义的 backbone 再强,也很难在像素级任务上稳定泛化。
但早期 DINO/iBOT 仍有两个限制。第一,许多结果是在 ImageNet-1k 或 ImageNet-22k 这类高度整理的数据上调出来的,容易把“自监督方法好”与“ImageNet 分布干净”混在一起。第二,训练大 ViT 的稳定性和工程效率还不够,尤其是 teacher-student、multi-crop、masked patch、large batch、high resolution 同时上时,很容易遇到 NaN、显存峰值和吞吐瓶颈。DINOv2 的贡献不是发明全新 SSL 目标,而是把这些已知组件扩到“基础模型”规模。
Meta AI 当时在做什么¶
DINOv2 的作者团队来自 Meta AI Research / FAIR。这个团队在视觉上有两条长期积累:一条是 DINO、iBOT、SEER、self-supervised ViT,另一条是 Detectron、Mask R-CNN、SAM 等分割和 dense prediction 系统。Maxime Oquab、Timothee Darcet、Piotr Bojanowski、Armand Joulin 等作者的共同风格不是“为一个 benchmark 发明一个模块”,而是把数据、训练、模型和开源 release 拼成能被别人拿走复用的基础设施。
这也解释了 DINOv2 和 SAM 的互补关系。SAM 是交互式分割系统,重点是 promptable task、SA-1B 数据引擎和 mask decoder;DINOv2 是通用特征系统,重点是无标签预训练、冻结 backbone、linear/DPT/Mask2Former 等轻量下游头。两者都来自 Meta,但解决的是视觉基础模型的两个不同层面:一个是“如何让用户指定要哪个对象”,一个是“如何让模型本身看到稳健的视觉结构”。
工业界与开源生态的需求¶
2023 年的视觉产业已经很清楚地感到一个痛点:每个任务都微调一个 backbone 变得越来越不可持续。自动驾驶、AR、机器人、医疗、遥感、内容审核、商品理解都需要视觉表示,但标注成本、合规边界和域迁移问题各不相同。CLIP 可以给很多系统一个语义入口,却不一定给出足够好的深度、边界和局部对应。传统 supervised backbone 在 ImageNet 上很强,却需要密集标签或下游微调才能适应新任务。
DINOv2 把目标写得非常工程化:训练一次 backbone,冻结后直接服务多个下游任务;需要分类就接 linear head,需要语义分割就接 linear/multiscale 或 Mask2Former,需要深度就接 linear/DPT head,需要检索就用 nearest neighbor。它把视觉 foundation model 的评价标准从“某个任务最高分”改成“同一套特征在多种任务和分布上都不掉链子”。这正是它能在后续两年被机器人、3D、医学、遥感和 VLM 系统反复引用的原因。
研究背景与动机¶
核心矛盾:CLIP 会说名字,DINOv2 要保住结构¶
CLIP 的强项是把图像放进语言语义空间。它知道这张图像和“a red car”更接近,和“a green chair”更远;它也能把开放类别、文本检索和多模态对话接起来。但许多视觉任务并不只问“它叫什么”。分割问边界在哪里,深度问前后关系是什么,机器人问可抓取区域和接触面在哪里,3D 重建问跨视角 patch 如何对应。caption 里没有充分监督这些东西。
DINOv2 的动机正是给这类任务保留一个纯视觉、几何丰富、无需标签的 backbone。它不需要人类写 caption,也不需要类别 taxonomy;它需要的是足够多、足够多样、足够干净的图像,以及一个能同时塑造全局语义和局部 patch 的自监督目标。这里的“without supervision”不是浪漫口号,而是工程约束:很多真实领域没有足够标签,甚至没有可靠文字描述,但仍然有大量图像。
为什么关键不是“更多 web 图像”¶
如果只读摘要,DINOv2 很容易被误读成“把 DINO 放大到 142M 图”。论文实际更强调 curated data。早期 web-scale SSL 的一个反例是:数据越多不一定越好,未整理图像会把重复、低质、分布偏斜和无关样本一起灌进模型,最后得到的特征可能比 ImageNet-22k 还差。DINOv2 从 1.2B candidate pool 里构建 LVD-142M,不是为了追求最大规模,而是为了追求多样性、平衡性和评测安全。
这一步的思想很接近语言模型的数据清洗:同样是互联网数据,质量、去重、覆盖面和抽样策略决定了模型学到什么。DINOv2 用 25 个第三方数据集作 seed,计算自监督图像 embedding,用相似检索扩展,再做去重和平衡。这样做的结果是,训练集既不局限于 ImageNet 的物体分类语义,也不被原始 web 噪声淹没。它把“数据工程”提升到视觉自监督论文的中心位置。
目标:冻结特征,而不是赢一次微调¶
DINOv2 的目标并不是训练一个 end-to-end 在每个任务上微调到最高分的模型。论文反复强调 frozen features:分类用 k-NN 或 linear probe,分割用 frozen patch token 加线性/多尺度头,深度用简单线性或 DPT 解码器。这个评测选择非常克制,也非常有野心。克制在于它不把下游微调当作主要贡献;有野心在于它要求 backbone 本身足够通用,不能靠下游训练把缺陷补回来。
因此,DINOv2 的研究问题可以压成一句话:能否用无标签、纯视觉、自监督训练得到一套“开箱即用”的视觉特征,在图像级和像素级任务上同时超过最强开放图文模型 OpenCLIP?论文的答案是肯定的,但附带一个重要条件:必须同时做好数据整理、DINO+iBOT 目标、KoLeo 特征均匀性、高分辨率短训、可扩展 ViT-g 和蒸馏。少掉任何一块,DINOv2 都只是另一个大 SSL 模型;全部拼起来,它才成为基础设施。
方法详解¶
DINOv2 的方法价值不在于某个孤立新模块,而在于把“数据整理、DINO+iBOT 目标、训练稳定性、高分辨率适配、蒸馏和开源模型族”连成一条可复用流水线。它看起来像一篇自监督学习论文,实际更像一份视觉 backbone 的系统工程报告:如果目标是冻结特征在许多任务上直接用,训练目标、数据分布和工程吞吐必须同时成立。
整体框架¶
DINOv2 的训练主线是先训练一个大 teacher,再把它压缩成可部署模型族。大模型是 ViT-g/14,约 1.1B 参数;训练数据是 LVD-142M;预训练目标是 DINO 全图自蒸馏 + iBOT masked patch 自蒸馏 + KoLeo 正则;最后把 ViT-g 的知识蒸馏到 ViT-S/B/L/14。这样 release 出来的模型既有一个最大精度版本,也有面向下游部署的轻量版本。
| Model | Params | Backbone shape | Training role |
|---|---|---|---|
| ViT-S/14 distilled | 21M | small patch-14 ViT | mobile and fast feature extraction |
| ViT-B/14 distilled | 86M | base patch-14 ViT | common research baseline |
| ViT-L/14 distilled | 300M | large patch-14 ViT | strong practical backbone |
| ViT-g/14 | 1.1B | 40 layers, dim 1536, 24 heads | largest teacher and top accuracy model |
这个架构选择有两个细节。第一,patch size 14 是 DINOv2 释放模型的统一接口,后续 dense tasks 可以直接从 patch token 取特征。第二,ViT-g/14 没有照搬原始 giant ViT 的 1408/16-head 设计,而是用 dim=1536、24 heads、每头 64 维来提高硬件效率;FFN 使用 SwiGLU,distilled S/B/L 模型则使用常规 MLP。论文的关键词不是“神秘新结构”,而是“可训练、可评估、可发布”。
关键设计 1:LVD-142M 数据引擎¶
DINOv2 最容易被低估的部分是数据。论文不是把所有 web 图像都扔进 SSL,而是先从约 25 个第三方数据集构造 seed corpus,包括 ImageNet-22k、ImageNet-1k、Google Landmarks、细粒度分类、分割、深度等数据源;再从 1.2B unique web images 中检索与 seed embedding 接近的图像,最后去重、平衡并形成 LVD-142M。
这里 \(E\) 是用自监督 ViT-H/16 提取的图像 embedding,距离度量是 cosine similarity。这个公式当然简化了真实工程,但抓住了核心:DINOv2 的数据不是人工逐张标注,也不是盲目 web crawl,而是“用已有 curated domains 给 web 数据定形”。
| Stage | Operation | Why it matters |
|---|---|---|
| Seed corpus | collect curated third-party datasets | anchors useful visual concepts |
| Candidate pool | gather 1.2B unique web images | supplies scale and diversity |
| Embedding retrieval | search neighbors in SSL feature space | selects visually related images without labels |
| Dedup and balance | remove copies and cap overrepresented regions | avoids memorization and distribution collapse |
设计动机很直接:ImageNet-22k 够干净但覆盖窄,原始 web 数据够大但噪声重。LVD-142M 试图取两者中间点。论文的数据消融也支持这个判断:在相同 ViT-g/14 和相同迭代数下,LVD-142M 在多数 transfer benchmark 上优于 ImageNet-22k,尤其是那些不贴近 ImageNet taxonomy 的领域。
关键设计 2:DINO + iBOT + KoLeo 的训练目标¶
DINOv2 的 self-supervised objective 有三个部分。DINO 部分让 student 的全局表示匹配 teacher 的全局表示;iBOT 部分让 student 的 masked patch token 匹配 teacher 对应 patch token;KoLeo 正则鼓励 batch 内特征分布更均匀,避免最近邻空间塌缩。teacher 是 student 的 EMA 版本,输出经过 centering 和 sharpening。
| Component | Signal | Acts on | Main effect |
|---|---|---|---|
| DINO loss | teacher-student distribution matching | class token / global crops | global semantic invariance |
| iBOT loss | masked patch prediction from teacher tokens | patch tokens | dense and local structure |
| KoLeo regularizer | entropy-like feature spreading | batch features | stronger nearest-neighbor geometry |
| SwAV centering | moving output center | teacher logits | prevents collapse under self-distillation |
下面的伪代码只保留训练循环的骨架,帮助读者看清 DINOv2 并不是“一个 loss”,而是 teacher-student、多 crop、mask、centering 和 EMA 共同作用。
def dinov2_step(images, student, teacher, center, optimizer):
global_crops, local_crops, masks = augment_and_mask(images)
with torch.no_grad():
teacher_cls, teacher_patch = teacher(global_crops)
teacher_probs = sharpen_and_center(teacher_cls, center)
patch_targets = sharpen_and_center(teacher_patch[masks], center)
student_cls, student_patch = student(global_crops + local_crops, masks=masks)
dino_loss = cross_entropy(student_cls, teacher_probs)
ibot_loss = cross_entropy(student_patch[masks], patch_targets)
koleo_loss = koleo_regularizer(student_cls)
loss = dino_loss + ibot_loss + 0.1 * koleo_loss
loss.backward()
optimizer.step()
update_ema_teacher(student, teacher)
update_center(center, teacher_cls)
optimizer.zero_grad()
这个设计的关键平衡是:DINO 给全图语义,iBOT 给 patch 结构,KoLeo 给检索空间。DINOv2 的实验也把这个拆开验证:KoLeo 对 nearest-neighbor retrieval 有明显帮助,iBOT 的 masked image modeling term 对 ADE20K 这类 patch-level 任务更重要。它不是把旧目标简单相加,而是在“冻结特征要同时服务全局和局部任务”的目标下重新组合。
关键设计 3:高分辨率短训与可扩展 ViT-g¶
像素级任务需要高分辨率。224 训练出来的 patch token 对分类足够,但小物体、边界和深度细节容易丢失;从头用 518x518 训练又太贵。DINOv2 采用折中策略:主要阶段用较低分辨率训练,在预训练末尾短时间把输入提升到 518x518。论文的 ablation 说明,这种短高分辨率阶段接近全程高分辨率训练的效果,但只花一小部分计算。
训练 ViT-g/14 还需要大量工程修补。DINOv2 采用 PyTorch 2、FSDP、xFormers memory-efficient attention、efficient stochastic depth、mixed precision,并报告同等硬件下相比 iBOT 实现约 2 倍速度、只用 1/3 显存。这个数字不是边角料:teacher-student SSL 的每一步都很重,如果吞吐和显存不稳,LVD-142M 和 1.1B 参数只是纸面规模。
另一个稳定性选择是 LayerScale 和较高 stochastic depth。它们在某些 linear probe 指标上不一定立刻加分,但能降低大模型训练中的 NaN 和发散风险。DINOv2 的方法论很现实:基础模型训练先要活着跑完,再谈下游泛化。许多“看起来不提升最终表格”的工程设计,其实是在给后续更大的数据和模型开路。
关键设计 4:从 ViT-g 到 S/B/L 的蒸馏¶
如果只发布 ViT-g/14,DINOv2 会变成少数机构才能部署的模型。论文选择把 ViT-g 作为 frozen teacher,蒸馏出 ViT-S/B/L/14。蒸馏训练沿用同一类 teacher-student 循环,但去掉 masking 和 stochastic depth,用大模型输出指导小模型。最后 release 的 S/B/L 模型在速度、显存和精度之间形成梯度。
这个蒸馏很重要,因为 DINOv2 的实际影响来自“模型族”而不是单一最大模型。README 里的发布模型显示,ViT-S/14 distilled 只有 21M 参数,linear eval 已到约 81%;ViT-B/14 到 84.5%;ViT-L/14 到 86.3;ViT-g/14 到 86.5。许多下游系统不会加载 1.1B 模型,但可以把 B/L 版本作为默认视觉特征。
更微妙的是,蒸馏让小模型继承大模型在 LVD-142M 上学到的分布覆盖,而不必从头承受同等训练成本。论文消融里,distilled ViT-L 在 12 个 benchmark 上都超过从头训练的 ViT-L,有时甚至超过 teacher 的单项结果。这说明 DINOv2 的大模型不仅是最终产物,也是一个特征生成器和训练信号放大器。
失败案例¶
DINOv2 的失败案例不是“某个小 baseline 被大模型暴打”这么简单。它真正反驳的是 2023 年视觉基础模型里的几种默认直觉:web 图像越多越好、CLIP 特征足够通用、ImageNet 上调好的 SSL recipe 自然能扩展、只要最终能微调就不必关心 frozen 特征。这些路线都部分正确,但不足以产出 DINOv2 想要的 all-purpose visual features。
失败路线 1:未整理的大规模 web 图像¶
早期 self-supervised scaling 的自然想法是:既然不需要标签,那就把 web 图像尽可能多地喂给模型。DINOv2 的数据消融说明这条路不稳。原始 web pool 里有重复图、低质图、广告截图、近似模板、极端长尾和过度代表的概念;SSL 不会自动知道哪些视觉模式值得学。噪声足够大时,模型可能把容量浪费在分布偏差上。
LVD-142M 的存在就是对这条失败路线的修正。DINOv2 没有选择最大数据量,而是从 1.2B 图里挑 142M;没有只靠 metadata,而是用自监督 embedding 做视觉相似检索;没有让热门概念无限膨胀,而是做平衡和去重。这个 lesson 后来在视觉、视频和多模态数据集里反复出现:scale 是必要条件,curation 才是放大器。
失败路线 2:只靠文本监督的视觉语义¶
CLIP/OpenCLIP 是 DINOv2 必须正面比较的强 baseline。它们在 ImageNet、开放类别和图文检索上非常强,甚至常常超过监督或自监督模型。但 DINOv2 指出它们并不是所有视觉任务的通用解。caption 监督偏向可命名物体和语义类别,对 patch boundary、局部几何和深度关系的监督很弱。结果是,CLIP 特征可以很好地告诉你“这像什么”,却不一定告诉你“边界在哪里、表面怎么弯、哪些 patch 是同一对象”。
这个失败不是 CLIP 的失败,而是把 CLIP 当成唯一视觉 backbone 的失败。DINOv2 在 ImageNet linear 上只比 OpenCLIP-G 小幅领先,但在 dense prediction 和某些跨域检索上拉开差距。2023 年之后许多系统开始同时用两类视觉特征:CLIP/SigLIP 负责语言语义,DINOv2 负责局部几何和 patch-level matching。
失败路线 3:只在 ImageNet 上调自监督 recipe¶
DINO 和 iBOT 的早期 success 很容易让社区把 ImageNet validation 作为 debugging signal。问题是 ImageNet 太整洁了:物体居中、类别清晰、标注 taxonomy 稳定。一个在 ImageNet 上调好的 SSL recipe,未必知道显微图、遥感图、街景深度、室内布局或细粒度商品的结构。DINOv2 的实验证明,ImageNet-22k 训练的模型可以在 ImageNet-1k 上表现很好,但在许多 transfer benchmark 上不如 LVD-142M。
这条失败路线的本质是评价信号太窄。DINOv2 把分类、鲁棒性、视频、检索、语义分割、深度估计一起放进评估,逼迫 backbone 在多种视觉需求中保持一致。它不是说 ImageNet 不重要,而是说 ImageNet 不足以定义“通用视觉特征”。
DINOv2 自己承认的边界¶
DINOv2 也没有解决所有问题。它没有直接输出开放词汇类别,不能像 CLIP 那样把任意文本 prompt 变成分类器;它训练数据的完整来源、许可和潜在偏差仍需要外部审视;它的最大模型和完整训练仍是大厂级资源;它在 semantic segmentation 上用线性头已经很强,但要冲到绝对 SOTA 仍需要 Mask2Former/ViT-Adapter 这类专门头。DINOv2 最诚实的定位是“强视觉特征”,不是“完整视觉助手”。
| Failed route | Why it looked plausible | Where it breaks | DINOv2 correction |
|---|---|---|---|
| Raw web-scale SSL | labels are unnecessary, so more images should help | duplicates and noisy distributions dominate | curate LVD-142M from 1.2B candidates |
| Text-only visual pretraining | CLIP is strong on semantics and open vocab | captions underspecify local geometry | learn from image structure directly |
| ImageNet-tuned SSL | ImageNet gives clean debugging signal | transfer domains need broader coverage | train on diverse curated visual data |
| Downstream finetuning dependence | task heads can repair the backbone | frozen features reveal missing structure | optimize for k-NN, linear, dense frozen use |
实验关键数据¶
DINOv2 的实验价值在于覆盖面。论文没有只拿一个 ImageNet 表说事,而是同时看全局图像表示、跨域鲁棒性、细粒度分类、视频动作、实例检索、语义分割、单目深度和消融。下面只列最能说明历史位置的数字;它们共同指向同一个结论:DINOv2 的 frozen features 不只会分类,也更适合像素级和几何任务。
图像级别:分类、鲁棒性与检索¶
ImageNet linear probing 是最容易传播的指标。DINOv2-g/14 在 ImageNet-1k k-NN/linear 达到 83.5/86.5,超过 iBOT ViT-L/16 的 72.9/82.3,也略高于 OpenCLIP-G 的 83.2/86.2。更重要的是 ImageNet-V2:DINOv2 到 78.4,高于 OpenCLIP-G 的 77.2 和 EVA-CLIP 的 77.4,说明它不是只贴合 ImageNet validation。
| Setting | OpenCLIP-G | iBOT-L | DINOv2-g | Takeaway |
|---|---|---|---|---|
| ImageNet k-NN | 83.2 | 72.9 | 83.5 | SSL catches text-supervised global features |
| ImageNet linear | 86.2 | 82.3 | 86.5 | frozen features are competitive with OpenCLIP |
| ImageNet-V2 linear | 77.2 | 72.4 | 78.4 | better generalization to shifted validation |
| ImageNet-A linear | 63.8 | 41.5 | 75.9 | strong robustness to adversarial natural images |
检索表更能说明 DINOv2 的几何优势。论文在 Oxford/Paris 等实例级检索上报告 DINOv2-g/14 明显超过 OpenCLIP-G 和 iBOT-L。例如 Oxford-Hard 上 OpenCLIP-G 约 50.7、iBOT-L 约 39.0,而 DINOv2-g 到 73.6;Oxford-Medium 上 DINOv2-g 到 92.1。检索不是纯语义分类,要求局部结构和实例细节,这正是 DINOv2 想保住的能力。
像素级别:分割与深度¶
语义分割是 DINOv2 对 CLIP 路线最有力的反例之一。只用 frozen patch tokens 加线性头,DINOv2-g/14 在 ADE20K 达到 49.0 mIoU,OpenCLIP-G 是 39.3;加 multiscale 后 DINOv2 到 53.0,OpenCLIP-G 是 46.0。Cityscapes 和 Pascal VOC 也有类似趋势。论文还报告,如果在 frozen ViT-g 上接 Mask2Former/ViT-Adapter pipeline,ADE20K 可到 60.2 mIoU。
| Dense task | OpenCLIP-G | iBOT-L | DINOv2-g | Protocol |
|---|---|---|---|---|
| ADE20K segmentation | 39.3 | 44.6 | 49.0 | linear mIoU |
| ADE20K segmentation | 46.0 | 47.5 | 53.0 | multiscale mIoU |
| Cityscapes segmentation | 70.3 | 74.5 | 81.0 | multiscale mIoU |
| NYUd depth | 0.414 | 0.358 | 0.279 | DPT RMSE, lower is better |
| KITTI depth | 2.56 | 2.55 | 2.11 | DPT RMSE, lower is better |
单目深度尤其重要,因为它不是 caption 能直接教出来的任务。论文的 NYUd/KITTI/SUN RGB-D 结果显示,DINOv2 特征能被非常轻的 depth head 线性分离出几何信息;在 out-of-domain 样例上,OpenCLIP 预测常有碎片和错位,DINOv2 的深度图更平滑、更贴合物体结构。这解释了为什么后来的 Depth Anything、机器人和 3D 系统会频繁借用 DINOv2 表示。
消融:KoLeo、MIM、数据和蒸馏¶
DINOv2 的 ablation 不只是工程附录,而是论文说服力的一部分。它证明每个组件在不同任务上负责不同角色:KoLeo 改善 nearest-neighbor 几何,iBOT masked patch term 改善 ADE20K 这类局部任务,LVD-142M 比 ImageNet-22k 更适合跨域,短高分辨率训练几乎复制 full high-resolution 的 dense-task 好处,distillation 让小模型继承大 teacher 的覆盖面。
| Ablation | Reported signal | Interpretation |
|---|---|---|
| iBOT baseline | 72.9 k-NN / 82.3 linear on ImageNet | strong but not foundation-scale |
| Add KoLeo | retrieval improves and k-NN jumps in the staged ablation | feature space spreads better |
| Add iBOT MIM term | ADE20K benefits most clearly | patch supervision matters for dense tasks |
| LVD-142M vs ImageNet-22k | LVD wins most non-ImageNet benchmarks | curation plus diversity beats narrow cleanliness |
| Distilled ViT-L vs scratch ViT-L | distilled wins on all 12 checked benchmarks | large teacher transfers distributional coverage |
一个容易忽略的实验结论是“fine-tuning is optional”。ViT-g/14 在 ImageNet linear 是 86.5,finetuning 到 88.5,提升约 2 个点。对许多 supervised backbone 来说,冻结与微调差距会更大;DINOv2 的差距相对小,说明 backbone 自身已经把相当多的类别结构编码进特征里。它不是不要下游训练,而是把下游训练从“修复 backbone”变成“选择轻量接口”。
思想史脉络¶
DINOv2 在思想史上不像 Transformer 那样改写模块拓扑,也不像 CLIP 那样把语言直接接进视觉。它的影响更像一次基础设施修正:在大家几乎默认“视觉基础模型 = 图文对齐”时,DINOv2 证明纯视觉自监督仍然能在基础模型时代成立,而且在局部几何、像素级迁移和领域外视觉任务上有自己的不可替代位置。
flowchart LR
ViT[ViT 2020<br/>patch tokens as visual sequence]
DINO[DINO 2021<br/>self-distilled ViT features]
IBOT[iBOT 2021<br/>masked patch self-distillation]
CLIP[CLIP 2021<br/>image-text foundation features]
OpenCLIP[OpenCLIP 2022<br/>open LAION-scale baseline]
Data[LVD-142M 2023<br/>curated 142M image corpus]
DINOv2[DINOv2 2023<br/>robust SSL visual backbone]
Registers[ViT Registers 2023<br/>cleaner dense maps]
Depth[Depth Anything 2024<br/>DINOv2-style depth teacher]
DinoText[DINOv2 Meets Text 2024<br/>language-aligned dense features]
Robotics[Robotics / 3D / remote sensing 2024+<br/>frozen geometry-rich backbone]
Biology[Cell-DINO / XRay-DINO 2025<br/>domain-specific SSL backbones]
ViT --> DINO
DINO --> DINOv2
IBOT --> DINOv2
CLIP --> OpenCLIP
OpenCLIP -.failure baseline for dense detail.-> DINOv2
Data --> DINOv2
DINOv2 --> Registers
DINOv2 --> Depth
DINOv2 --> DinoText
DINOv2 --> Robotics
DINOv2 --> Biology
前世:谁逼出来的¶
DINOv2 的前世有三条线。第一条是 ViT 线:把图像切成 patch token 后,视觉模型第一次能像语言模型一样处理序列,也让 class token 和 patch token 的分工变得清晰。没有 ViT,DINO 的 object attention 和 iBOT 的 patch distillation 都很难以这种形式出现。第二条是 DINO/iBOT 线:DINO 证明自蒸馏 ViT 会自然长出物体区域感,iBOT 证明 masked patch 目标能把局部结构纳入训练。第三条是 CLIP/OpenCLIP 线:它们把“foundation model for vision”这个词推到中心,也暴露出 caption 对局部几何监督不足的问题。
DINOv2 的直接压力来自第三条线。OpenCLIP 太强了,强到任何纯视觉 SSL 模型都必须回答一个问题:如果不用文本,为什么还值得训练?DINOv2 的回答是:因为并非所有视觉任务都能被语言监督覆盖。分类和图文检索只是视觉的一部分,patch 对应、深度、分割、局部纹理、跨域几何也需要基础模型级别的特征。
数据线同样重要。ImageNet 时代的 SSL 往往把“干净数据”视为默认条件;LAION 时代的图文预训练又把“web-scale”变成默认方向。DINOv2 把这两者重新合并:不是 ImageNet 小而洁净,也不是 web 无限放大,而是 curated web-scale。这个思想后来对视觉/视频数据构建影响很大:大模型训练里,数据筛选本身就是方法。
今生:被谁继承¶
DINOv2 的继承者分两类。一类直接修补 DINOv2 的视觉问题。Darcet、Oquab、Mairal、Bojanowski 2023 年的 “Vision Transformers Need Registers” 发现大 ViT dense feature maps 中会出现 artifact tokens,于是加入 register tokens 作为额外汇聚槽,减少 patch map 中的异常高范数点。这个工作几乎可以看作 DINOv2 的后记:当 backbone 真正被用于 dense tasks,内部 token pathology 就从美学问题变成工程问题。
另一类把 DINOv2 作为默认视觉 backbone。Depth Anything 等深度模型用 DINOv2 风格的表示和大规模伪标签加强单目深度;DINOv2 Meets Text 试图把 DINOv2 的 dense visual features 接上语言;机器人和具身模型把 DINOv2 patch token 用作几何感知;3D、遥感、医学和生物图像系统则把它当成少标签领域的强初始表示。2024-2026 年大量论文标题里出现 “with DINOv2” 或 “DINOv2 features”,说明它已经从单篇 paper 变成工具箱零件。
这种继承很少表现为“完全复现 DINOv2 训练”。更多时候,DINOv2 被作为 frozen encoder、teacher、metric、retrieval feature、pseudo-label source 或局部 matching prior。它的影响方式因此更像 ImageNet/ResNet 早期的 backbone 角色:后续论文未必研究 DINOv2 本身,但默认它是一个可以信任的视觉表征。
误读:不是没有标签的 CLIP¶
最常见误读是把 DINOv2 看成“没有文本的 CLIP”。这个说法太粗。CLIP 的目标是把图像和文本拉进同一个语义空间,优势是开放词汇、文本检索和多模态接口;DINOv2 的目标是让图像自身形成稳定的全局和局部特征,优势是 frozen dense representation。二者的失败模式也不同:CLIP 可能语义对但边界差,DINOv2 可能几何好但不知道文本类别名。
另一个误读是把 DINOv2 归结为“142M 数据 + 大 ViT”。论文的 ablation 正好反驳这一点。未整理数据不是答案,ImageNet-22k 不是答案,单纯 iBOT baseline 也不是答案。DINOv2 的关键是系统组合:数据 curated、loss 覆盖 global/local、KoLeo 保持特征分布、短高分辨率服务 dense tasks、工程优化让大模型可训、蒸馏让小模型可用。
第三个误读是把它当成 2023 年视觉基础模型的终点。实际上 DINOv2 是一个很强的中间层:它不解决语言对齐,不解决开放词汇,不解决 task planning,也不解决所有数据合规问题。它更像给后续系统提供了一块可靠视觉皮层。2023 年之后的强系统往往不是 CLIP 或 DINOv2 二选一,而是把语言语义、视觉几何、分割 prompt、深度和 3D 表示组合起来。
当代视角¶
站不住的假设¶
从 2026 年回看,DINOv2 最先打掉的是一个隐含假设:视觉基础模型必须通过文字监督获得通用性。2023 年的多模态热潮让这个假设很诱人,因为 CLIP 到 GPT-4V 的路线看起来一路通畅。但 DINOv2 证明,图像自身也能提供足够丰富的监督信号,尤其是当任务关心局部结构、密集对应和几何关系时。语言是强接口,却不是视觉表征的唯一源头。
第二个站不住的假设是“自监督视觉已经过了黄金期”。2021 年之后,MAE、BEiT、DINO、iBOT 的增益在 ImageNet 表格上看似变小,社区转向图文数据和生成模型。但 DINOv2 说明,瓶颈不只是 objective novelty,而是数据整理和训练系统是否跟上基础模型规模。一个旧目标在更好的数据和更稳的工程下,可以重新变得有生命力。
第三个站不住的假设是“强 backbone 一定要靠下游微调证明”。DINOv2 的影响恰好来自 frozen use。后续许多机器人、3D、医学和遥感工作并不想从头微调一个巨大的视觉模型;它们想要一个可靠 feature extractor。DINOv2 把视觉基础模型的价值从“我能在某个 benchmark finetune 到多少”转向“我被冻结后还能给多少任务打底”。
如果今天重写 DINOv2¶
如果今天重写 DINOv2,第一处变化会是更透明的数据治理。2023 年论文已经强调去重、平衡和评测泄漏控制,但 2026 年读者会进一步要求可审计的数据来源、版权边界、地域/文化偏差报告、医疗和人脸等敏感域处理。视觉 foundation model 的数据合规压力已经比 2023 年更高。
第二处变化会是和语言/多模态接口更早耦合。DINOv2 原文有意保持纯视觉,这让它的几何性很强;但今天的系统通常需要“既懂文本又懂局部结构”。一个 2026 版 DINOv2 可能会把 dense visual SSL 作为第一阶段,再用轻量 language alignment、region-text grounding 或 mask-text 对齐作为第二阶段,而不是让社区事后再写 DINOv2 Meets Text。
第三处变化会是视频和 3D。DINOv2 主要在静态图像上训练和评测,但机器人、AR、自动驾驶和世界模型需要时间一致性、跨视角对应和可交互空间。今天重写这篇论文,很可能会把 video SSL、multi-view consistency、depth/normal/flow pseudo-task 和 3D-aware evaluation 放进同一个 backbone 目标里。DINOv2 已经证明“图像自身足够教很多东西”,下一步自然是“世界自身如何教视觉”。
局限与展望¶
盲点 1:语义类别和文本接口缺失¶
DINOv2 的几何和局部结构很强,但它没有 CLIP 那样自然的文本接口。用户不能直接写一个类别 prompt,让 DINOv2 零样本分类;模型也不会天然把 patch 与短语对齐。这意味着很多开放词汇检测、VQA、图文检索和多模态助手系统仍需要 CLIP/SigLIP 或额外 alignment。DINOv2 更像视觉皮层,不是完整语言接口。
这个盲点也给后续工作留下空间。DINOv2 Meets Text、region-level contrastive alignment、SAM + DINOv2 + text grounding 这类系统都在补同一个缺口:保留 DINOv2 的 dense geometry,同时接入语言语义。真正难的是不把 DINOv2 变成另一个只会 caption 的 encoder;语言对齐如果过强,可能会牺牲它最有价值的局部结构。
盲点 2:数据、许可与评测泄漏风险¶
LVD-142M 是 DINOv2 的核心资产,但它并没有作为完整数据集公开给社区复刻。论文说明了构建流程和部分来源,却不能让外部研究者逐张审计图像、许可、地域分布、人物敏感性和评测集重叠。这是大规模视觉 foundation model 的共同问题:数据质量决定模型质量,但数据本身常常最难开放。
评测也有隐性风险。DINOv2 用 curated seed datasets 扩展 web 图像,训练集需要避免和 downstream benchmark 过度重叠;论文做了去重和检查,但外部很难完全验证。随着模型被用于医疗、遥感、生态监测和人类图像,数据治理会从“论文复现问题”变成“部署责任问题”。后续视觉基础模型必须把这部分写得更清楚。
相关工作与启发¶
对 VLM、机器人和 3D 的启发¶
DINOv2 给多模态系统的启发是:不要把“会说出类别名”误当成“看清了世界”。很多 VLM 在文字问答上很强,却会在计数、空间关系、局部属性和几何推理上出错;把 DINOv2 这类 patch-level 视觉特征接入语言模型,是缓解这一问题的自然方向。后来的 LLaVA-like 系统、grounding 模型和 image-text alignment 方法都在探索这件事。
对机器人和 3D 来说,DINOv2 的意义更直接。一个冻结 backbone 如果能稳定提供对象部件、纹理、深度和跨域 patch 关系,就可以作为抓取、导航、视觉定位、场景重建和少样本识别的共用感知层。很多现实机器人系统没有百万级标注,也不可能为每个新环境从头训练视觉模型;DINOv2 这类无监督 backbone 正好填补这个空白。
对自监督研究的启发¶
DINOv2 给自监督研究留下的最大启发,是把“算法创新”重新放回“数据与工程”旁边。很多 SSL 论文习惯在同一个数据集上替换 loss 或 augmentation;DINOv2 说明,当目标是 foundation model,数据构建、去重、seed 选择、检索策略、batch 特征几何、高分辨率阶段、蒸馏路线和开源接口都属于方法。
它也提醒研究者不要只盯 ImageNet。一个好的视觉表征应当被实例检索、分割、深度、鲁棒性、视频和领域外任务共同检验。ImageNet linear 仍然有用,但已经不能独自代表视觉通用性。DINOv2 的评价矩阵虽然还不完美,却把自监督视觉从“分类预训练”推向“多任务基础特征”。
相关资源¶
论文与代码¶
- Paper: DINOv2: Learning Robust Visual Features without Supervision
- Code and models: facebookresearch/dinov2
- Meta blog: DINOv2: State-of-the-art computer vision models with self-supervised learning
- Demo: dinov2.metademolab.com
后续项目¶
- Vision Transformers Need Registers: 修复大 ViT dense feature maps 中的 artifact token,是 DINOv2 后续最直接的内部补丁。
- Depth Anything: 把 DINOv2 风格的视觉特征和大规模伪标签推向单目深度。
- DINOv2 Meets Text: 尝试把 DINOv2 的 image/pixel features 与语言对齐。
- Domain-specific DINO lines: Cell-DINO、XRay-DINO、Channel-Adaptive DINO 等项目说明 DINOv2 recipe 已经被迁移到生物、医学和多通道图像。
🌐 English version · 📚 awesome-papers project · CC-BY-NC