论文标题: DINOv2: Learning Robust Visual Features without Supervision
作者: Maxime Oquab, Timothée Darcet, Théo Moutakanni, Huy V. Vo, Marc Szafraniec, Vasil Khalidov, Pierre Fernandez, Daniel Haziza, Francisco Massa, Alaaeldin El-Nouby, Mahmoud Assran, Nicolas Ballas, Wojciech Galuba, Russell Howes, Po-Yao Huang, Shang-Wen Li, Ishan Misra, Michael Rabbat, Vasu Sharma, Gabriel Synnaeve, Hu Xu, Hervé Jegou, Julien Mairal, Patrick Labatut, Armand Joulin, Piotr Bojanowski
机构: Meta AI(FAIR),部分作者来自 Inria、PSL University、Columbia University 等合作机构
发表: TMLR 2024(Transactions on Machine Learning Research)
arXiv: https://arxiv.org/abs/2304.07193
code:https://github.com/facebookresearch/dinov2
DINOv2是一种基于图像自监督学习的模型,其训练过程不需要依赖人工标注的数据。它通过捕捉图像之间的关联来学习到丰富的视觉特征,从而克服了传统文本描述图像不够全面的局限性。DINOv2的模型结构基于Vision Transformer(VIT),通过自监督学习的方式,可以产生高性能的视觉特征,为不同的下游视觉任务如分类、分割、图像检索和深度估计等提供支持。
Abstract(摘要)
自然语言处理领域近期在"海量数据上预训练模型"方面的突破,为计算机视觉中类似的基础模型(foundation models)开辟了道路。这类模型若能产出通用视觉特征 ------即无需微调即可跨图像分布、跨任务工作的特征------便可极大地简化任何系统中对图像的使用。本工作表明:现有的预训练方法,尤其是自监督方法 ,只要在足够多、经过精心筛选(curated)的多源数据上训练,就能产出这样的特征。我们重新审视了已有方法,并组合不同的技术,在数据规模和模型规模两个维度上扩展我们的预训练。大部分技术贡献旨在加速并稳定大规模训练 。在数据方面,我们提出了一个自动化流水线来构建一个专门、多样、经过筛选的图像数据集,而非像自监督文献中通常那样使用未经筛选的数据。在模型方面,我们训练了一个 10 亿参数的 ViT 模型(Dosovitskiy 等,2021),并将其蒸馏到一系列更小的模型中;这些模型在大多数图像级与像素级基准上超越了当前最佳的通用特征------OpenCLIP(Ilharco 等,2021)。
| 要点 | 内容 |
|---|---|
| 目标 | 产出"通用视觉特征":无需微调即可跨分布、跨任务使用 |
| 核心论断 | 现有预训练方法(尤其自监督)+ 足够多且精心筛选的多源数据 = 通用视觉特征 |
| 技术贡献重心 | 加速 + 稳定大规模训练(多数贡献是工程向的) |
| 数据贡献 | 自动化流水线构建专门、多样、筛选过的图像数据集(对抗自监督领域惯用的未筛选数据) |
| 模型贡献 | 训练 1B 参数的 ViT(ViT-g),再蒸馏出一系列小模型 |
| 对比基线 | 在大多数图像级 + 像素级基准上超越 OpenCLIP |
- "筛选数据"是本文与之前自监督工作(DINO、MoCo 等)最大的分野:从"有多少数据用多少"转向"质量优先的自动化筛选",这一思想与 CLIP 的数据工程异曲同工。
- "大模型训练 + 蒸馏小模型"是落地友好的设计:ViT-g 负责上限,蒸馏出的 S/B/L 负责部署,直接照顾了算力受限的实际应用。
- 选择 OpenCLIP 作对比很聪明:用无文本监督的方法打赢有文本监督的通用特征,凸显了自监督路线的潜力,也为"是否需要语言监督"之争提供了关键证据。
- 像素级评测是伏笔:强调 pixel-level 基准,暗示其特征在密集预测任务(分割、深度)上可用------这是 CLIP 类全局特征难以做到的。
1 INTRODUCTION(引言)

NLP 的范式背景:学习与任务无关的预训练表征(task-agnostic pretrained representations)已成为自然语言处理(NLP)的标准做法(Radford 等,2019;Raffel 等,2020;Chowdhery 等,2022;Hoffmann 等,2022;Touvron 等,2023)。这些特征可以"拿来即用"(as they are),即不做微调,就能在下游任务上取得显著优于专用任务模型的性能(Brown 等,2020)。这一成功得益于在海量原始文本上用**无需监督的代理目标(pretext objectives)**进行预训练,例如语言建模(Radford 等,2017)或词向量(Devlin 等,2019)。
视觉基础模型的期待与文本路线的局限 :跟随 NLP 的这一范式转变,我们预期计算机视觉中也会出现类似的"基础"模型(Bommasani 等,2021)。这些模型应当产生开箱即用的视觉特征,适用于任何任务------无论是图像级(如图像分类)还是像素级(如分割)。目前通向这类基础模型最有希望的努力聚焦于文本引导的预训练(text-guided pretraining) ,即用某种形式的文本监督来指导特征的学习(Joulin 等,2016;Mahajan 等,2018;Radford 等,2021)。但这种文本引导的预训练限制了可以从图像中保留的信息量 :因为描述文本(captions)只是对图像丰富信息的近似,复杂的像素级信息可能无法在这种监督下浮现出来。此外,这类图像编码器需要对齐的图文语料,因此不具备文本模型的灵活性------即仅从原始数据中学习。
自监督路线的优势与现状 :文本引导预训练的替代方案是自监督学习(Caron 等,2018;Chen 等,2020;He 等,2022),特征仅从图像本身学习。这些方法在概念上更接近语言建模等代理任务,且能捕捉图像级和像素级的信息(Caron 等,2021)。此外,自监督模型输出的特征已被证明具有多种有用性质,支撑了广泛的应用(Amir 等,2022;Tumanyan 等,2022;Ofri-Amar 等,2023;Hamilton 等,2022)。然而,尽管自监督学习具有学习通用特征的潜力,其大多数进展都是在小而精的数据集 ImageNet-1k (Russakovsky 等,2015)上预训练取得的。也有一些把这些方法扩展到 ImageNet-1k 之外的尝试(Caron 等,2019;Goyal 等,2021;2022a),但它们聚焦于未经筛选的数据集,通常导致特征质量显著下降。原因在于无法控制数据的质量与多样性,而这两者恰恰是产出好特征的关键。
本文的探索 :在本工作中,我们探索自监督学习在大量筛选过的数据 上预训练时,是否有潜力学到通用视觉特征。我们重新审视了现有的判别式自监督方法------它们在图像级和 patch 级学习特征,例如 iBOT(Zhou 等,2022a)------并在更大数据集的视角下重新考察其中的一些设计选择。我们的大多数技术贡献都针对在模型和数据规模扩展时稳定并加速判别式自监督学习 。这些改进使我们的方法比类似的判别式自监督方法快约 2 倍、内存需求少 3 倍,从而支持更长的训练时间和更大的 batch size。
数据流水线 :关于预训练数据,我们构建了一个自动化流水线,从大量未筛选图像中对数据集进行过滤与再平衡。该流水线受 NLP 中流水线(Wenzek 等,2020)的启发,用数据之间的相似性代替外部元数据,不需要人工标注。处理野外(in the wild)图像时的一个主要难点是重新平衡概念分布、避免过拟合到少数主导模式(dominant modes) 。本工作中,一个朴素的聚类方法就能较好地解决这一问题。我们汇集了一个小而多样的 1.42 亿张图像 语料来验证我们的方法。

模型发布与验证 :最后,我们在该数据上用不同规模的 Vision Transformer(ViT)(Dosovitskiy 等,2016)架构训练了一系列预训练视觉模型,称为 DINOv2 。我们发布了所有模型以及可在任意数据上重训 DINOv2 的代码。随着模型规模扩大,我们在图像级和像素级的多个计算机视觉基准上验证了 DINOv2 的质量,如图 2 所示。我们的结论是:仅靠自监督预训练,就是学习可迁移冻结特征的有力候选,其表现可与当前最佳公开可得(best openly available)的弱监督模型相媲美。
| 要点 | 内容 |
|---|---|
| NLP 范式参照 | 任务无关预训练表征 + "拿来即用"免微调,靠无监督代理目标(语言建模等)实现 |
| 文本引导路线的两大局限 | ① caption 只是图像信息的近似,像素级信息难以浮现;② 依赖对齐图文语料,不能像文本模型那样仅从原始数据学习 |
| 自监督路线的优势 | 仅用图像学习,概念上对应语言建模,可同时捕捉图像级 + 像素级信息 |
| 自监督路线的瓶颈 | 进展多限于小而精的 ImageNet-1k;扩展到未筛选大数据时特征质量显著下降(数据质量与多样性失控) |
| 本文核心假设 | 自监督 + 大量筛选过的数据 → 通用视觉特征 |
| 技术贡献 | 重新审视 iBOT 等判别式方法的设计;工程改进实现 约 2× 提速、3× 省内存,支持更长训练 + 更大 batch |
| 数据贡献 | 自动化过滤 + 再平衡流水线(借鉴 NLP,用数据相似性替代元数据,免人工标注);朴素聚类解决概念失衡问题;最终构建 142M 小而多样的图像语料(LVD-142M) |
| 产出与结论 | 发布 DINOv2 系列 ViT 模型 + 可重训代码;图像级 + 像素级基准验证;自监督冻结特征可媲美最佳公开弱监督模型 |
- 本文对 CLIP 路线的批评点很精准:caption 无法覆盖像素级细节,这正是 CLIP 在分割/深度等密集任务上表现受限的根源;DINOv2 用自监督补上了这一缺口,两条路线互补而非替代。
- "未筛选大数据反而掉点"是关键观察:它把问题从"模型/算法"转向"数据质量",解释了为何前人扩展自监督失败,也奠定了全文"数据筛选流水线"这一核心贡献的合法性。
- 工程账算得很实在:2× 提速、3× 省内存直接换算成更长训练、更大 batch 的可行性------大规模自监督的成败往往取决于这类训练系统的优化。
- "小而多样(142M)"对抗"越大越好"的直觉:与 CLIP 的 4 亿对、LAION 的 50 亿对形成鲜明对比,DINOv2 证明精选 1.42 亿即可,呼应了"质量 > 数量"。
2 Related Work(相关工作)
图像内自监督训练(Intra-image self-supervised training) :自监督方法的第一大家族聚焦于从图像内部构建代理任务 ------即从图像中提取一个信号,再用图像的其余部分去预测它。这一思想因 Doersch 等人(2015)的工作而流行,他们通过预测给定 patch 的上下文来训练模型。此后出现了许多其他代理任务,例如图像重着色(Zhang 等,2016)、预测变换(Gidaris 等,2018)、图像修复/inpainting(Pathak 等,2016)、patch 重排序(Noroozi & Favaro,2016;Misra & Maaten,2020)。近期,随着 ViT 等基于 patch 的架构兴起,人们重新审视了用 inpainting 做预训练(He 等,2022;Bao 等,2021;El-Nouby 等,2021),甚至可以在特征空间中进行(Assran 等,2023;Baevski 等,2022)。尤其值得关注的是,He 等人(2022)表明掩码自编码器(MAE)学到的特征在下游任务微调后能带来大幅提升。MAE 的这一性质已在视频(Tong 等,2022)、音频(Xu 等,2022)及其他模态(Girdhar 等,2023)上得到进一步验证。然而,MAE 的特征需要有监督微调才能使用,而我们的特征开箱即用(out of the box)。
判别式自监督学习(Discriminative self-supervised learning) :第二条研究路线与本文更为接近,它利用图像之间或图像组之间的判别信号 来学习特征。这一方法家族可追溯到早期深度学习工作(Hadsell 等,2006),并随着实例分类(instance classification)方法的兴起而流行(Dosovitskiy 等,2016;Bojanowski & Joulin,2017;Wu 等,2018)。后续改进分为两类:基于实例级目标的(Hénaff 等,2019;He 等,2020;Chen & He,2021;Chen 等,2020;Grill 等,2020;Caron 等,2021)和基于聚类的(Caron 等,2018;Asano 等,2020;Caron 等,2020)。这些方法在 ImageNet(Russakovsky 等,2015)等标准基准上能提供高性能的冻结特征,但难以扩展到更大的模型规模(Chen 等,2021)。本工作中,我们在大规模预训练数据集与大模型的背景下重新审视这些方法的训练,特别是建立在 Zhou 等人(2022a,即 iBOT)之上------我们发现它特别适合做规模化扩展。
自监督预训练的扩展(Scaling self-supervised pretraining) :越来越多的工作聚焦于自监督学习在数据规模和模型规模上的扩展能力(Caron 等,2019;Goyal 等,2019;Tian 等,2021;Goyal 等,2022a)。这些工作大多使用海量未经筛选 的数据来无监督训练模型。它们提供了判别式方法随数据扩展的证据,但由于预训练数据质量差,大多数结果仍依赖对特征做微调才能获得。尤其值得关注的是,Goyal 等人(2021)还表明:在预训练数据足够的情况下,这些方法能从模型规模扩展中获益。这条研究线质疑的是自监督方法在"任意数据"上工作的能力,而我们聚焦于产出最佳的预训练编码器。
自动化数据筛选(Automatic data curation) :我们的数据集构建借鉴了图像检索社区(Weinzaepfel 等,2021;Radenović 等,2018b;Berman 等,2019;Douze 等,2009;Tolias 等,2016;Revaud 等,2019)。特别是"用检索来扩充训练集"的做法已在半监督学习的背景下被研究过(Yalniz 等,2019)。类似地,其他工作使用标签(hashtags)或其他元数据(Mahajan 等,2018;Radford 等,2021),或使用预训练视觉编码器(Schuhmann 等,2021;2022)来过滤未筛选数据集。与这些工作不同,我们不用预训练编码器、不用元数据、也不用任何监督信号来过滤图像,而是利用图像之间的视觉相似性。我们的方法受文本筛选流水线(Wenzek 等,2020)的启发:在该流水线中,先在 Wikipedia 上训练一个语言模型,再用它给从未筛选来源提取的文本打分。
| 工作类别 | 代表方法 | 与 DINOv2 的关系 |
|---|---|---|
| 图像内代理任务 | 上下文预测、重着色、旋转预测、inpainting、patch 重排序 | 早期自监督范式,信号来自图像内部 |
| MAE 系(生成式) | MAE、BEiT、I-JEPA | patch 重建类方法,特征需微调才能用------DINOv2 强调自己是"冻结即好用" |
| 判别式自监督 | 实例分类(MoCo/SimCLR/BYOL/DINO)、聚类(SwAV、DeepCluster) | 本文所在路线;能提供冻结特征,但难扩展到大模型 |
| 直接基座 | iBOT(Zhou 2022a) | DINOv2 在其之上改进,认为它最适合规模化 |
| 已有 scaling 工作 | Caron 2019、Goyal 2021/2022a 等 | 用未筛选大数据扩展,结果依赖微调;DINOv2 目标是"最佳冻结编码器" |
| 数据筛选先例 | 检索扩充训练集、hashtag/元数据过滤、CLIP/LAION 式编码器过滤 | DINOv2 的独特性:零监督、零元数据、零外部编码器,仅靠图像间视觉相似性 |
| 方法论灵感 | NLP 文本筛选流水线(Wenzek 2020,Wikipedia 训练打分器) | 类比迁移到图像域 |
- "冻结可用"是贯穿全文的评判标准:与 MAE(需微调)和未筛选数据的 scaling 工作(需微调)划清界限,这个标准直接定义了"通用视觉特征"的实用含义。
- 对 CLIP 类方法的隐性批评再次出现:前人用预训练编码器过滤数据(如 LAION),存在循环依赖和偏差传递问题;DINOv2 坚持纯视觉相似性筛选,数据流水线的"自举污染"更少。
- 选 iBOT 作底座有讲究:iBOT 的 patch 级在线蒸馏目标天然适合产生密集特征,这为后文像素级任务的优势埋下伏笔。
- "在任意数据上工作"vs"产出最佳编码器"的目标区分很清醒:作者不追求数据的普适性,只追求特征上限,避免了与 CLIP 路线正面比较通用性,而是比"冻结特征质量"。
3 Data Processing(数据处理)

我们通过以下方式构建筛选后的 LVD-142M 数据集:从一个大规模未筛选数据池中,检索出与若干已筛选数据集中图像接近 的图像。下文介绍数据流水线的主要组件,包括筛选/未筛选数据源、图像去重步骤和检索系统。如图 3 所示,我们的流水线不需要任何元数据或文本,直接对图像本身进行操作。方法的更多细节见附录 A。
数据源(Data sources) :我们选用的筛选数据集详见附录(表 15),包含 ImageNet-22k、ImageNet-1k 的训练集、Google Landmarks 以及若干细粒度数据集。对于未筛选数据源,我们从一个公开可得的网络爬取数据仓库中收集未经过滤的原始图像数据集:从仓库中每个网页的 <img> 标签中提取图像的 URL 链接,丢弃不安全或被域名限制的 URL,并对下载的图像做后处理(PCA 哈希去重、NSFW 过滤、对可识别人脸做模糊处理)。由此得到 12 亿张唯一图像。
去重(Deduplication):我们对未筛选数据应用 Pizzi 等人(2022)的拷贝检测流水线,移除近重复图像。这降低了冗余、提升了图像间的多样性。我们还移除与本文所用任何基准的测试集或验证集近重复的图像。
自监督图像检索(Self-supervised image retrieval) :我们从未筛选数据源中检索与筛选数据源中图像接近的图像,以此构建筛选后的预训练数据集。为此,我们首先用一个在 ImageNet-22k 上预训练的自监督 ViT-H/16 网络计算图像嵌入,并使用余弦相似度作为图像间的距离度量。然后,对未筛选数据执行 k-means 聚类 。给定一个用于检索的查询数据集:如果它足够大,就为每张查询图像检索 NNN(通常为 4)个最近邻;如果它很小,就从每张查询图像对应的聚类中采样 MMM 张图像。虽然目视检查表明 NNN 远大于 4 时检索质量也很好,但这会导致更多冲突(collisions) ------即同一张图像成为多个查询的最近邻。我们选择 N=4N = 4N=4,因为它在此意义上提供了良好的权衡。
实现细节(Implementation Details) :流水线中的去重和检索阶段依赖 Faiss 库(Johnson 等,2019)来高效索引并批量计算最近嵌入搜索。我们大量利用其对 GPU 加速索引的支持,使用带乘积量化码(product quantization codes)的倒排文件索引(inverted file indices,Jegou 等,2010)。整个处理分布在一个由 20 个节点组成的计算集群上进行,每节点配备 8 块 V100-32GB GPU,不到两天即可产出 LVD-142M 数据集。
| 环节 | 内容 |
|---|---|
| 总体思路 | 以精选数据集为"锚点",从未筛选大池中检索邻近图像 → 把"质量"从精选集扩散到大规模数据;全程零元数据、零文本 |
| 精选数据源(锚点) | ImageNet-22k、ImageNet-1k train、Google Landmarks、若干细粒度数据集 |
| 未筛选数据源 | 公开网络爬取仓库 → <img> 标签提 URL → 安全过滤 + PCA 哈希去重 + NSFW 过滤 + 人脸模糊 → 12 亿唯一图像 |
| 去重 | Pizzi 2022 拷贝检测流水线移除近重复(降冗余、增多样性);同时清除与所有评测集近重复的图像(防泄漏) |
| 检索机制 | 自监督 ViT-H/16(ImageNet-22k 预训练)算嵌入 + 余弦相似度;未筛选池做 k-means 聚类;大查询集取 N=4N=4N=4 近邻,小查询集从对应聚类采样 MMM 张;N=4N=4N=4 是质量与冲突的权衡点 |
| 工程实现 | Faiss + GPU 加速倒排索引 + 乘积量化;20 节点 × 8×V100,<2 天产出 142M 数据集 |
- "用精选集定义质量、用检索扩散规模"是全文最核心的方法创新:它把数据筛选从"规则过滤"升级为"以好数据为锚的相似度传播",概念简单但非常有效。
- N=4N=4N=4 的权衡细节体现工程严谨:最近邻取多了会产生 collisions(一图对多查询),造成隐性重复------这类细节往往决定数据流水线的实际质量。
- 评测集去重容易被忽略但至关重要:明确移除与测试/验证集近重复的图像,保证了后文"冻结特征"评测结论的可信度。
- 流水线成本极低是复现友好性的体现:20 节点 GPU 两天完成 12 亿→1.42 亿的筛选,说明数据工程不需要天量算力,方法本身可迁移到其他领域数据(如工业、医疗影像的自建预训练集)。
4 Discriminative Self-supervised Pre-training(判别式自监督预训练)
我们用一种判别式自监督方法学习特征,它可以看作是 DINO 与 iBOT 损失的组合,外加 SwAV 的居中(centering)操作(Caron 等,2020)。我们还加入了一个用于使特征展开分布的正则项,以及一个短暂的高分辨率训练阶段。下面快速介绍这些方法的各个组成部分,更多细节可参阅相关论文或我们开源的代码。
• 图像级目标(Caron 等,2021) :我们计算学生网络与教师网络所提取特征之间的交叉熵损失。二者的特征均来自 ViT 的 class token,取自同一图像的不同裁剪(crops)。学生的 class token 经过学生 DINO head------这是一个 MLP 模型,输出一个分数向量,我们称之为"原型分数(prototype scores)";再施加 softmax 得到 psp_sps。类似地,将教师 DINO head 应用于教师 class token 得到教师原型分数,然后施加 softmax,并跟上一个滑动平均居中操作(或后文详述的 Sinkhorn-Knopp 居中),得到 ptp_tpt。DINO 损失项为:
LDINO=−∑ptlogps L_{\text{DINO}} = - \sum p_t \log p_s LDINO=−∑ptlogps
我们学习学生网络的参数,并用历史迭代的指数滑动平均(He 等,2020)构建教师 head。
• Patch 级目标(Zhou 等,2022a):我们随机掩码(mask)部分输入 patch------只掩码学生的输入,不掩码教师。然后将学生 iBOT head 应用于学生的被掩码 token;类似地,将教师 iBOT head 应用于与学生被掩码位置对应的(可见的)教师 patch token。接着如上施加 softmax 和居中步骤,得到 iBOT 损失项:
LiBOT=−∑iptilogpsi L_{\text{iBOT}} = - \sum_{i} p_{ti} \log p_{si} LiBOT=−i∑ptilogpsi
其中 iii 是被掩码 token 的 patch 索引。与上面类似,我们学习学生的参数,并通过指数滑动平均构建教师 head。
• 两个目标之间不共享 head 权重 :DINO 和 iBOT 损失都使用一个可学习的 MLP 投影 head,施加在输出 token 上并在其上计算损失。在 Zhou 等人(2022a)中,消融实验表明 DINO 与 iBOT head 共享参数能带来更好的性能。但在大规模设置下,我们观察到的恰恰相反,因此在所有实验中使用两个独立的 head。
• Sinkhorn-Knopp 居中(Caron 等,2020):Ruan 等人(2023)建议把 DINO 和 iBOT 中教师的 softmax 居中步骤替换为 SwAV(Caron 等,2020)的 Sinkhorn-Knopp(SK)批归一化。我们运行 Sinkhorn-Knopp 算法 3 次迭代;对学生端则施加 softmax 归一化。
• KoLeo 正则项(Sablayrolles 等,2019) :KoLeo 正则项源自 Kozachenko-Leonenko 微分熵估计器(见 Beirlant 等,1997;Delattre & Fournier,2017),鼓励特征在一个 batch 内均匀铺开(uniform span)。给定向量集合 (x1,...,xn)(x_1, \dots, x_n)(x1,...,xn),其定义为:
Lkoleo=−1n∑i=1nlog(dn,i) L_{\text{koleo}} = - \frac{1}{n} \sum_{i=1}^{n} \log\left(d_{n,i}\right) Lkoleo=−n1i=1∑nlog(dn,i)
其中 dn,i=minj≠i∥xi−xj∥d_{n,i} = \min_{j \neq i} \| x_i - x_j \|dn,i=minj=i∥xi−xj∥ 是 xix_ixi 与 batch 内其他任意点之间的最小距离。在计算该正则项之前,我们还会对特征做 ℓ2\ell_2ℓ2 归一化。
• 分辨率适配(Touvron 等,2019) :提高图像分辨率对像素级下游任务(如分割、检测)至关重要,因为小目标在低分辨率下会消失。然而,高分辨率训练在时间和内存上都很昂贵,因此我们只在预训练末期的一小段时间 内将图像分辨率提高到 518×518518 \times 518518×518。这也类似于 Likhomanenko 等人(2021)的 UniViT 训练和 Beyer 等人(2023)的 FlexiViT 训练。
| 组件 | 作用与设计 |
|---|---|
| 总体框架 | DINO 损失(图像级)+ iBOT 损失(patch 级)+ SwAV 居中 + KoLeo 正则 + 末期高分辨率训练 |
| 图像级目标(DINO) | 同一图像不同裁剪的学生/教师 class token → 各自 MLP head → softmax(教师加居中)→ 交叉熵;教师由学生 EMA 更新 |
| Patch 级目标(iBOT) | 学生输入随机掩码、教师不掩码;学生 head 作用于被掩码 token,教师 head 作用于对应可见 token;预测被掩码 patch 的特征分布 |
| 关键设计 ①:双 head 分离 | 原 iBOT 论文称共享 head 更好,但大规模下相反 → DINOv2 用两个独立 head(规模改变消融结论的实例) |
| 关键设计 ②:SK 居中 | 教师端用 Sinkhorn-Knopp 批归一化(3 次迭代)替代 softmax + 滑动平均居中,学生端保持 softmax------防止表征坍塌、均衡原型使用 |
| 关键设计 ③:KoLeo 正则 | −1n∑ilog(minj≠i∣xi−xj∣)-\frac{1}{n}\sum_i \log(\min_{j\neq i}|x_i - x_j|)−n1∑ilog(minj=i∣xi−xj∣),基于最近邻距离的最大化,迫使特征在 batch 内均匀铺开,避免聚团 |
| 关键设计 ④:末期高分辨率 | 仅在预训练末期短暂升至 518×518518 \times 518518×518,兼顾像素级任务收益与训练成本 |
- 这节是"组合式创新"的典范:没有全新的损失函数,而是把 DINO、iBOT、SwAV、KoLeo 等已验证组件重新拼装,并在规模化场景下修正设计选择------贡献在于"规模化的正确姿势"而非新算法。
- "规模改变消融结论"是最有警示性的发现:双 head 在小规模与大规模下结论相反,提醒我们引用他人消融结论时必须确认规模条件是否一致。
- KoLeo 正则的思想很直观:让每个特征尽量远离最近邻,等价于最大化特征空间的利用率,是防止自监督表征坍塌的廉价有效手段。
- 末期高分辨率是成本收益的精打细算:把最贵的训练阶段压缩到极短窗口,与 ViT 论文"高分辨率微调"的思路一脉相承,但前移到了预训练阶段,使冻结特征本身就具备密集任务能力。
5 Efficient implementation(高效实现)
为了在更大规模上训练模型,我们考虑了若干改进。我们在 A100 GPU 上使用 PyTorch 2.0 训练模型,代码与预训练模型以 Apache 2.0 许可开源,模型细节见附录表 17。在相同硬件下,与 iBOT 的实现相比,DINOv2 的代码快约 2 倍,内存仅用其 1/3。
快速且省内存的注意力(Fast and memory-efficient attention) :我们实现了自己版本的 FlashAttention(Dao 等,2022),以改善自注意力层的内存占用和速度。在所有考察的场景下,我们的版本与原版持平或更好,同时覆盖更多使用场景和硬件。由于 GPU 硬件的特性,当每个头的嵌入维度是 64 的倍数时效率最佳,而当总嵌入维度是 256 的倍数时矩阵运算更优。因此,我们的 ViT-g 架构与 Zhai 等人(2022)提出的架构略有不同,以最大化计算效率:我们使用 1536 的嵌入维度配 24 个头(每头 64 维),而非 1408 配 16 个头(每头 88 维)。我们的实验未显示最终精度有显著差异,ViT-g 主干共 11 亿参数。
序列打包(Sequence packing) :DINO 算法需要同时前向大裁剪(224 分辨率)和小裁剪(98 分辨率)。切分成 patch 后,这两组图像对应不同长度的 token 序列,无法一起前向。为加速训练,我们使用一个源自 NLP(Krell 等,2022)的技巧------"序列打包":思路很简单,把需要通过 Transformer 前向的多条序列拼接成一条长序列,照常通过 Transformer 块前向;但在注意力层对自注意力矩阵施加块对角掩码(block-diagonal mask) ,阻止不同序列之间的注意力交互。这样,前向结果与逐条分别前向严格等价。与先前实现中分别做前向和反向传播相比,这一技巧带来显著的计算效率收益。我们的底层组件已包含在 xFormers 库中(Lefaudeux 等,2022)。
高效随机深度(Efficient stochastic depth) :我们实现了随机深度(Huang 等,2016)的改进版本------直接跳过 被丢弃残差的计算,而不是对结果做掩码。借助特定的融合 kernel(fused kernels),节省的内存与计算量大致与丢弃率成正比。在高丢弃率(本工作中 d=40%d = 40\%d=40%)下,计算效率和内存占用都得到大幅改善。实现方式是:在 batch 维度上随机打乱 BBB 个样本,取前 (1−d)×B(1-d) \times B(1−d)×B 个样本参与该块的计算。
完全分片数据并行(FSDP) :用 AdamW 优化器最小化我们的目标,需要 4 份 float32 精度的模型副本------学生、教师、优化器一阶动量、优化器二阶动量。对 ViT-g 这样的十亿参数模型,这合计需要 16 GB 内存。为降低每张 GPU 的内存占用,我们把模型副本切分到各张 GPU 上,即用 PyTorch 的 FSDP 实现将这 16 GB 分片存储。这样一来,模型大小的上限不再受单卡内存约束,而取决于计算节点上所有 GPU 内存的总和。PyTorch 的 FSDP 实现还有第二个优势------节省跨 GPU 通信成本:权重分片按优化器要求以 float32 存储,但权重广播和梯度归约(reducing gradients)对主干采用 float16 精度(MLP head 的梯度为避免训练不稳定,仍用 float32 归约)。与 DistributedDataParallel(DDP)使用的 float32 梯度 all-reduce 相比,这带来约 50% 的通信成本削减------DDP 是其他自监督预训练方法(Caron 等,2021;Zhou 等,2022a)所用的方案。因此,在扩展 GPU 节点数量时,训练过程比"DDP + float16 autocast"扩展得更高效。总体而言,在我们遇到的几乎所有情形中,PyTorch-FSDP 混合精度都优于 DDP + autocast。
模型蒸馏(Model distillation):我们对训练循环的大部分技术改进旨在改善"大模型 + 大量数据"的训练。对于较小的模型,我们不再从头训练,而是从最大的 ViT-g 蒸馏而来。知识蒸馏(Hinton 等,2014)通过最小化大小模型输出之间的距离,让小模型复现大模型的输出。由于我们的目标函数本身就是一种"从教师网络到学生网络"的蒸馏形式,我们直接复用同一个训练循环,只做少量调整:用更大的模型作为冻结教师;保留一份学生的 EMA 副本作为最终模型;移除掩码和随机深度;在两个全局裁剪上施加 iBOT 损失。在我们的消融实验中,这种方法即使对 ViT-L 也优于从头训练。我们的蒸馏方法最终与 Duval 等人(2023)描述的方法接近,区别在于我们不修改蒸馏的损失项,且评估的是学生的 EMA 版本。
| 技术 | 内容 |
|---|---|
| 总体成效 | A100 + PyTorch 2.0;相比 iBOT 实现:2× 提速、1/3 内存 |
| 自研 FlashAttention | 覆盖更多场景/硬件;每头维度取 64 倍数、总维度取 256 倍数效率最佳 → ViT-g 定为 1536 维 × 24 头(11 亿参数),精度与 Zhai 2022 版本无显著差异 |
| 序列打包 | 长短不一的大小裁剪序列拼成一条长序列一次前向,用块对角注意力掩码隔离------结果严格等价,省去多次前向/反向的开销(源自 NLP) |
| 高效随机深度 | 跳过被丢弃残差的计算而非掩码结果;融合 kernel 实现;d=40%d=40\%d=40% 时按丢弃率等比省算力省内存 |
| FSDP 分片 | 学生/教师/AdamW 一阶/二阶动量共 4 份 fp32 副本 ≈ 16 GB(1B 参数)→ 分片到多卡,模型规模上限 = 集群总显存 |
| 混合精度通信 | 权重 fp32 存储,广播/梯度归约主干用 fp16(head 梯度保 fp32 防不稳)→ 通信成本较 DDP fp32 all-reduce 降约 50%,多节点扩展性更好 |
| 蒸馏小模型 | S/B/L 从冻结的 ViT-g 蒸馏而非从头训练;复用自监督训练循环(冻结教师 + 学生 EMA 作最终模型 + 去掩码/随机深度 + 全局裁剪上加 iBOT 损失);消融证明连 ViT-L 蒸馏也优于从头训练 |
- 这节证明"工程也是贡献":2× 提速、1/3 内存不是锦上添花,而是"能训练 ViT-g"与"训不动"的分界线------大规模自监督论文的可行性往往由训练系统决定。
- 为硬件对齐架构(1536 维/24 头)是实用主义典范:为了 GPU 矩阵运算的对齐效率,宁可微调架构超参,且实验证明精度无损------模型设计应服务于算力特性。
- 序列打包和 FSDP 都是跨领域复用:两个关键技巧都源自 NLP/通用分布式训练,说明视觉大模型训练正在全面吸收 NLP 的工程积累。
- "蒸馏出的小模型超过从头训练的小模型"值得记住:这为落地提供了明确路径------用预算训一个大模型,再蒸馏出部署尺寸,比直接训小模型更划算。
6 Ablation Studies(消融实验)
我们通过一系列消融实验来实证验证流水线中各个组件的作用:第 4 节描述的技术改进、预训练数据,以及模型蒸馏的影响。我们使用第 7 节中描述的多种下游任务进行评估。
6.1 改进的训练配方(Improved Training Recipe)

我们的方法在 iBOT 基础上组合了第 4 节描述的若干已有组件,从而实现提升。为评估各组件的重要性,我们训练了多个模型,将各组件依次叠加到基线 iBOT 模型上。表 1 报告了 ImageNet-1k 验证集上 k-NN 和线性探针的 Top-1 准确率。总体而言,每个组件都能提升 k-NN 或线性探针的性能,多数情况下两者都提升。只有 LayerScale 和 Stochastic Depth 会轻微降低线性探针性能,但根据我们的经验,它们显著改善了训练稳定性。
6.2 预训练数据来源(Pretraining Data Source)
特征质量与预训练数据质量直接相关。本实验考察 LVD-142M 相对于常用预训练数据集 ImageNet-22k、以及直接使用未筛选原始数据的影响。对于未筛选数据集,我们从与 LVD-142M 相同的数据源中随机采样 1.42 亿张图像 。我们在每个数据集上以相同迭代次数训练 ViT-g/14。为完整性起见,我们还加入了一个移除 ImageNet-1k synset 的 ImageNet-22k 变体(INet-22k \ INet-1k)。对比结果见表 2。

最突出的观察是:在筛选后的图像集上训练,在大多数基准上都优于在未筛选数据上训练 。这证实了即使在自监督预训练中,数据筛选也是有益的。与在 ImageNet-22k 上训练的模型相比,在 LVD-142M 上训练在除 ImageNet-1k 之外的所有基准上都更优。这证实了:在更多样化的图像集上训练,能提升 ImageNet-22k 未覆盖领域的特征质量。我们还看到,在我们筛选的数据上训练,甚至能提升未参与筛选过程 的领域(INaturalist 2018、2021 和 Places205)的性能,证明规模与多样性可以让未见过的领域受益。总体而言,这组消融的结论是:我们的数据集在各类图像之间提供了良好的平衡,从而带来综合最优的性能。
6.3 模型规模与数据(Model Size and Data)

我们在图 4 中量化了数据规模与模型规模协同扩展的重要性。随着模型规模增大,在 LVD-142M 上训练比在 ImageNet-22k 上训练收益更大。例如,在 LVD-142M 上训练的 ViT-g,在 ImageNet-1k 上追平了在 ImageNet-22k 上训练的模型,同时在其他基准上显著更优。
6.4 损失组件(Loss Components)

第 6.1 节通过增量叠加验证了技术改进;本节则从最优模型出发 ,分析消融特定损失项带来的性能损失。我们消融 KoLeo 损失的重要性,以及掩码图像建模(masked image modeling)项的影响。两者均报告:ImageNet-1k 线性分类器性能、ADE-20k 线性分类器分割性能、Oxford-M 最近邻图像检索性能。表 3a 展示了使用 KoLeo 损失的影响:实例检索性能提升超过 8% ,证实该项有助于特征在输出空间中展开;同时其他指标不受这一正则化的损害。表 3b 展示了使用 iBOT 掩码图像建模项的影响:该项对密集预测任务至关重要 ,带来近 3% 的性能提升。
6.5 知识蒸馏的影响(Impact of Knowledge Distillation)

对于小架构,我们蒸馏大模型而非从头训练,蒸馏流程见第 5 节。我们在图 5 中对比从头训练的 ViT-L/14 与从 ViT-g/14 蒸馏的 ViT-L/14(在 12 个基准上),以评估该方法的有效性;同时报告用于蒸馏的 ViT-g/14 的性能作为上限(topline)。蒸馏模型在全部 12 个基准上都优于从头训练的模型,验证了我们针对小模型的预训练方案。
6.6 分辨率的影响(Impact of Resolution)

我们测量预训练期间改变分辨率对图像级与 patch 级特征性能的影响。我们考虑三种设置:从头以固定 224×224224 \times 224224×224 训练、从头以固定 416×416416 \times 416416×416 训练,以及先以 224×224224 \times 224224×224 从头训练、再在 416×416416 \times 416416×416 下续训 1 万次迭代。高分辨率训练计算密集,因此我们在小规模设置下进行该消融:在 ImageNet-1k 上训练 ViT-L/16。图 6 报告了在不同评测分辨率下,ImageNet-1k 和 ADE-20k 上的线性探针性能。在高分辨率图像上训练的模型在各种评测分辨率下都表现最好,但代价高昂:416 分辨率的训练计算量约为 224 的 3 倍。另一方面,仅在训练末期以高分辨率训练 1 万次迭代,效果几乎同样好,却只需一小部分算力。因此,我们将这一步骤放在训练末尾,而不是从头就以高分辨率训练。
| 消融主题 | 核心结论 |
|---|---|
| 6.1 训练配方组件 | 各组件叠加普遍提升 k-NN/线性探针;LayerScale 与 Stochastic Depth 虽略降线性探针性能,但显著改善训练稳定性 |
| 6.2 数据来源 | ① 筛选 > 未筛选(同数据源随机采样对比);② LVD-142M 除 ImageNet-1k 外全面优于 ImageNet-22k;③ 未参与筛选的领域也受益(INaturalist、Places205)→ 规模 + 多样性可泛化到未见领域 |
| 6.3 模型×数据协同 | 模型越大,LVD-142M 相对 ImageNet-22k 的优势越大;ViT-g + LVD 追平 ImageNet 并全面超越其他基准 |
| 6.4 损失项 | KoLeo:检索 +8%,特征空间展开、其他指标无损;iBOT 掩码项:密集预测任务关键,+3% |
| 6.5 蒸馏 | 蒸馏的 ViT-L/14 在 12 个基准上全部优于从头训练 |
| 6.6 分辨率 | 全程高分辨率最好但贵 3×;末期 10k 迭代高分辨率"几乎等效 + 成本极低" → 采用末期高分辨率策略 |
7 Results(实验结果)
本节展示我们的模型在众多图像理解任务上的实证评估。我们同时评估全局与局部图像表征,涵盖类别级识别、实例级识别、语义分割、单目深度估计和动作识别。基准列表详见附录 C。本次评估有两个目标:第一,展示我们的自监督特征以非常大的优势超越了当前最先进水平;第二,展示它们在大量任务上匹敌甚至超越弱监督模型的性能。
基线(Baselines):对比中使用两类基线模型。第一类是当前公开可得、性能最佳的自监督模型:我们对 MAE(He 等,2022)、DINO(Caron 等,2021)、SEERv2(Goyal 等,2022a)、MSN(Assran 等,2022)、EsViT(Li 等,2022a)、Mugs(Zhou 等,2022b)和 iBOT(Zhou 等,2022a)逐一运行评估。当某个方法提出过多个架构变体时,我们报告其中 ImageNet-1k Top-1 准确率最高的那个变体的结果。第二类是开源的弱监督模型,如 CLIP(Radford 等,2021)、OpenCLIP(Ilharco 等,2021;Cherti 等,2023)和 SWAG(Singh 等,2022)。在 ImageNet-1k 上评估时,我们报告上述所有方法的结果;在其他所有评估中,我们报告自监督方法中表现最好的 4 个模型;同时作为参考,弱监督一方报告性能最佳的 OpenCLIP-G。
| 要点 | 内容 |
|---|---|
| 评估范围 | 全局 + 局部表征;类别级识别、实例级识别、语义分割、单目深度估计、动作识别 |
| 评估目标 ① | 自监督特征大幅超越现有 SOTA |
| 评估目标 ② | 在大量任务上匹敌/超越弱监督模型 |
| 基线类别一(自监督) | MAE、DINO、SEERv2、MSN、EsViT、Mugs、iBOT;多变体取 ImageNet-1k Top-1 最高者 |
| 基线类别二(弱监督) | CLIP、OpenCLIP、SWAG;参考模型为 OpenCLIP-G |
| 报告规则 | ImageNet-1k:全部方法都报;其他任务:SSL 取前 4 名 + OpenCLIP-G 参考 |
- 评估矩阵设计得很全面:类别级(分类)→ 实例级(检索)→ 像素级(分割/深度)→ 时序(动作识别),四个维度完整覆盖"通用视觉特征"应有的能力谱系。
- 基线选择策略严谨:对 SSL 方法取各自最优变体、弱监督选最强开源代表 OpenCLIP-G,避免了"打弱基线"的质疑;同时 SSL 与弱监督分开对比,结论更有层次。
- 两个评估目标的表述暗含递进:超越 SSL SOTA 证明"方法有效",匹敌弱监督证明"路线可行"------后者才是本文真正的野心所在。
7.1-7.4详见是在各业务场景的对比实验,具体可见论文;
7.5 Qualitative Results(定性结果)
在实证评估的最后一节,我们给出若干定性分析。

语义分割与深度估计 :我们展示密集预测评估的一些定性结果:图 7 中的 ADE20K 分割,以及图 7 中 NYUd、KITTI 和 SUN RGB-D 上的深度估计。我们在每个数据集上将 DINOv2 与带线性分类器的 OpenCLIP 进行对比。虽然并不完美,但使用 DINOv2 主干的线性分割模型产出了不错的结果,并且在该评估设定下表现远好于 OpenCLIP------OpenCLIP-G 产生的分割掩码存在大量伪影(artifacts)和不连通的区域。深度估计的定性结果清晰地说明了 OpenCLIP 与 DINOv2 之间的定量差距。这些结果凸显出:我们的特征和 OpenCLIP 提取的特征,都能够线性分离 出深度这类复杂信息------尽管两者训练时都没有接触过这类信息。不过,我们的特征产生的深度估计更平滑、伪影更少。有些物体(例如 SUN RGB-D 图像中的椅子)会被 OpenCLIP 完全忽略,而用我们的特征则能正确定位。

分布外泛化(Out-of-distribution generalization) :图 8 展示了将深度预测和分割线性分类器应用于分布外样本的若干例子。定性结果支持了我们的论断:特征可以跨域迁移。对动物照片或绘画作品预测的深度和分割质量都非常好,尽管这些域差异极大。

Patch 特征的 PCA :我们展示对模型提取的 patch 特征做主成分分析(PCA)的结果。我们对第一主成分做阈值处理,只保留取值为正的 patch------这一过程恰好能把图像的主体目标与背景分离开。然后,我们在描绘同一类别的三张图像的剩余 patch 上计算第二次 PCA,把前三个主成分用三种不同颜色着色,结果见图 1 和图 9。有两个有趣的观察:第一,我们基于检测最大方差方向的无监督前景/背景检测器效果非常好 ,能够勾勒出图像中主体目标的边界;第二,其余主成分对应物体的"部件(parts)",且在同一类别的不同图像间能很好地对应 。这是一种涌现性质(emerging property) ------模型训练时从未被要求解析物体部件。

Patch 匹配(Patch matching) :最后,我们通过跨图像匹配来探索 patch 级特征包含何种信息。我们先按上述流程检测前景目标,然后计算两幅图像 patch 特征之间的欧氏距离,并通过求解指派问题(assignment problem)建立映射;为减少匹配数量,再施加非极大值抑制,只保留显著的匹配。图 10 展示了若干匹配示例。我们观察到,这些特征似乎捕捉了关于语义区域的信息------即在不同物体或动物中承担相似功能的部位,例如飞机的机翼与鸟的翅膀能够匹配上。我们还观察到,模型对风格(照片 vs 素描)和大范围的姿态变化(见大象的例子)都具有鲁棒性。
| 定性分析 | 发现 |
|---|---|
| 分割 / 深度(线性) | 线性模型即可分割与深度估计;DINOv2 明显优于 OpenCLIP------后者掩码伪影多、区域不连通,甚至完全漏掉物体(椅子) |
| 共同点 | 两种特征都未经深度信息训练却能线性分离深度 → 特征蕴含几何信息;DINOv2 更平滑、伪影更少 |
| 分布外泛化 | 深度/分割线性分类器直接用于动物照片、绘画等域外数据仍质量很好 → 跨域迁移能力可视化验证 |
| PCA 分析 ① | 第一主成分阈值化即可实现无监督前景/背景分离 |
| PCA 分析 ② | 后续主成分对应物体部件 ,且同类别图像间部件对应一致------未经训练的涌现性质 |
| 跨图 Patch 匹配 | 前景检测 + 欧氏距离 + 指派问题 + NMS;特征匹配的是功能语义部位(机翼 ↔ 鸟翼),且对风格、大姿态变化鲁棒 |
- 定性结果补上了定量数字无法传达的证据:OpenCLIP 分割掩码的伪影与漏检,直观解释了为何语言监督特征不适合密集任务------比表格数字更有说服力。
- "部件级对应是涌现性质"是全节最深刻的发现:模型没被教过部件概念,却在特征空间中自发形成,说明自监督 patch 级目标学到了接近组合式(compositional)的表征结构。
- 机翼匹配鸟翼暗示特征编码了"功能语义"而非"外观":这超出了类别识别层面,接近跨物种的结构类比能力,对细粒度识别、检索、甚至机器人抓取点的迁移都有启发。
- PCA 前景分离是个零成本实用技巧:不训练任何检测器,仅靠特征第一主成分就能抠出主体,可直接用于图像清洗、裁剪预处理等轻量场景。
总结
DINOv2 通过"自动化筛选构建的 1.42 亿高质量图像数据集(LVD-142M)+ DINO/iBOT 组合式判别自监督训练 + 大规模训练工程优化",训练出 1B 参数 ViT-g 并蒸馏出系列小模型,仅凭自监督、无需任何标注或文本监督,就产出了在分类、检索、分割、深度估计等图像级与像素级任务上媲美甚至超越 OpenCLIP 等弱监督模型的通用冻结特征,确立了"数据质量驱动的自监督视觉基础模型"路线。