Meta DINOv2:无监督训练出吊打有监督的视觉特征,1.42 亿图片零标注,线性层直出 SOTA,CV 的 Foundation Model 终于来了
💡 还在为每个 CV 任务从头训模型?DINOv2 一次预训练,分类/分割/深度估计全拿下,连线性层都能刷 SOTA!Meta FAIR 出品,1.42 亿图片零标注训练,ViT-g/14 模型 87.1% ImageNet 线性精度,跨域鲁棒性炸裂。还有 XRay-DINO 做医学影像、Cell-DINO 做生物荧光显微、dino.txt 做零样本视觉语言对齐。2025 年已进化到 DINOv3,但 DINOv2 依然是视觉基础模型最实用的选择。
📌 目录
- 1. DINOv2 是什么?
- 2. 为什么 DINOv2 这么强?
- 3. 四档模型全系性能
- 4. 三行代码加载模型
- 5. 五大下游任务开箱即用
- 6. Registers:消除 ViT 伪影
- 7. 特殊变体:XRay-DINO / Cell-DINO / dino.txt
- 8. 与其他视觉基础模型对比
- 9. 训练与评估
- 10. 优缺点与使用建议
- 11. 总结
1. DINOv2 是什么?
DINOv2是 Meta AI Research (FAIR) 提出的自监督视觉特征学习方法,全称DINOv2: Learning Robust Visual Features without Supervision。
核心卖点:1.42 亿图片,零标注训练,产出的视觉特征直接加线性层就能在各类 CV 任务上达到 SOTA。
- 🔗 项目地址:https://github.com/facebookresearch/dinov2
- 📄 论文 1:DINOv2: Learning Robust Visual Features without Supervision
- 📄 论文 2:Vision Transformers Need Registers
- 🌐 Demo:dinov2.metademolab.com
- 📝 Blog:Meta AI Blog
- 🔮 继任者:DINOv3 (2025.8)
一句话总结
DINOv2 = 自监督预训练 + 1.42 亿图片 + 零标注 → 通用视觉特征 → 线性层直出 SOTA → 跨域鲁棒,无需微调2. 为什么 DINOv2 这么强?
四大核心创新
| 创新 | 说明 | 效果 |
|---|---|---|
| 自监督 + 知识蒸馏 | DINO 自监督 + 大模型蒸馏小模型 | 小模型也能接近大模型性能 |
| 1.42 亿图片 LVD-142M | 自动策划的大规模数据集 | 数据量和多样性远超 ImageNet |
| iBOT 损失 | 结合 DINO + iBOT 双损失 | 同时学好全局和局部特征 |
| 高分辨率适配 | Patch 大小 14×14 | 更精细的空间特征 |
与 DINO v1 的区别
| 维度 | DINO v1 | DINOv2 |
|---|---|---|
| 数据 | ImageNet-1K (1.3M) | LVD-142M (142M) |
| 模型规模 | ViT-B/L | ViT-S/B/L/g(21M-1.1B) |
| 训练方式 | 自监督 | 自监督 +知识蒸馏 |
| 下游任务 | 需要微调 | 线性层直出 SOTA |
| 跨域迁移 | 一般 | 鲁棒,无需微调 |
💡 关键差异:DINOv2 不只是换了个数据集,它证明了无监督训练的视觉特征可以和有监督训练一样好,甚至跨域更好。
可视化:自动分割一切
DINOv2 的 Patch 特征天然具有语义分割能力——将前三主成分映射到 RGB,相同语义的区域自动同色:
输入视频 → DINOv2 提取 Patch 特征 → PCA 降维到 3D → 映射为 RGB 结果:同一物体自动同色,不同物体自动异色 无需任何分割标注!3. 四档模型全系性能
Backbone 性能
| 模型 | 参数量 | Registers | ImageNet k-NN | ImageNet Linear |
|---|---|---|---|---|
| ViT-S/14distilled | 21M | ❌ | 79.0% | 81.1% |
| ViT-S/14distilled | 21M | ✅ | 79.1% | 80.9% |
| ViT-B/14distilled | 86M | ❌ | 82.1% | 84.5% |
| ViT-B/14distilled | 86M | ✅ | 82.0% | 84.6% |
| ViT-L/14distilled | 300M | ❌ | 83.5% | 86.3% |
| ViT-L/14distilled | 300M | ✅ | 83.8% | 86.7% |
| ViT-g/14 | 1.1B | ❌ | 83.5% | 86.5% |
| ViT-g/14 | 1.1B | ✅ | 83.7% | 87.1% |
💡 ViT-g/14 + Registers 达到87.1% ImageNet 线性精度,仅用线性层!这意味着 DINOv2 提取的特征质量极高。
如何选模型?
| 场景 | 推荐模型 | 理由 |
|---|---|---|
| 移动端/边缘设备 | ViT-S/14 | 21M 参数,最快 |
| 通用部署 | ViT-B/14 | 86M,性能/速度平衡 |
| 追求精度 | ViT-L/14 + Reg | 300M,86.7% 精度 |
| 最佳精度 | ViT-g/14 + Reg | 1.1B,87.1% 精度 |
4. 三行代码加载模型
仅需 PyTorch
importtorch# 加载 DINOv2 backbonemodel=torch.hub.load('facebookresearch/dinov2','dinov2_vitl14_reg')# 提取特征features=model(image_tensor)# [1, 384] ViT-L 特征向量所有可用模型
# DINOv2 基础版dinov2_vits14=torch.hub.load('facebookresearch/dinov2','dinov2_vits14')dinov2_vitb14=torch.hub.load('facebookresearch/dinov2','dinov2_vitb14')dinov2_vitl14=torch.hub.load('facebookresearch/dinov2','dinov2_vitl14')dinov2_vitg14=torch.hub.load('facebookresearch/dinov2','dinov2_vitg14')# DINOv2 + Registers(推荐)dinov2_vits14_reg=torch.hub.load('facebookresearch/dinov2','dinov2_vits14_reg')dinov2_vitb14_reg=torch.hub.load('facebookresearch/dinov2','dinov2_vitb14_reg')dinov2_vitl14_reg=torch.hub.load('facebookresearch/dinov2','dinov2_vitl14_reg')dinov2_vitg14_reg=torch.hub.load('facebookresearch/dinov2','dinov2_vitg14_reg')# 带分类头的完整模型dinov2_vitl14_lc=torch.hub.load('facebookresearch/dinov2','dinov2_vitl14_lc')dinov2_vitl14_reg_lc=torch.hub.load('facebookresearch/dinov2','dinov2_vitl14_reg_lc')💡 加载 backbone 只需要 PyTorch,不需要安装任何其他依赖!
5. 五大下游任务开箱即用
任务一:图像分类
- Linear Head:1 层或 4 层线性分类头
- 所有 4 档 backbone 均有预训练分类头可供下载
- 也可通过
torch.hub.load直接加载完整分类模型
任务二:深度估计
| 数据集 | 头部类型 | 说明 |
|---|---|---|
| NYUd(室内) | Linear / Linear4 / DPT | 室内深度估计 |
| KITTI(室外) | Linear / Linear4 / DPT | 自动驾驶场景 |
- 提供DPT 头(Dense Prediction Transformer),适合密集预测
- Linear 头轻量快速,DPT 头精度更高
任务三:语义分割
| 数据集 | 头部类型 | 说明 |
|---|---|---|
| ADE20K | Linear / Multi-scale / Mask2Former | 150 类场景解析 |
| VOC2012 | Linear / Multi-scale | 21 类语义分割 |
- ViT-g/14 在 ADE20K 上提供Mask2Former完整模型
- Multi-scale 头支持多尺度推理,精度更高
任务四:零样本视觉语言对齐(dino.txt)
# 加载 dino.txt 模型model=torch.hub.load('facebookresearch/dinov2','dinov2_vitl14_reg4_dinotxt_tet1280d20h24l')- 基于 DINOv2 Meets Text
- 图像级和像素级的视觉-语言对齐
- 零样本分类和分割
任务五:特征提取 + 最近邻检索
DINOv2 的特征天然适合:
- 图像检索:提取特征 → k-NN 搜索
- 聚类分析:PCA 降维 → 可视化
- 相似度计算:余弦相似度
features=model(images)# [B, dim]similarities=features @ features.T# 交叉相似度矩阵6. Registers:消除 ViT 伪影
问题:ViT 的高频伪影
原始 DINOv2 在注意力图中出现伪影 token(artifact tokens),这些 token 聚集了大量注意力但不对应任何有意义的图像区域。
解决方案:Vision Transformers Need Registers
在 ViT 中添加额外的 register token,充当注意力的"垃圾桶":
| 版本 | k-NN | Linear | 伪影 |
|---|---|---|---|
| ViT-L/14 无 Reg | 83.5% | 86.3% | ❌ 有伪影 |
| ViT-L/14 + Reg | 83.8% | 86.7% | ✅ 无伪影 |
| ViT-g/14 无 Reg | 83.5% | 86.5% | ❌ 有伪影 |
| ViT-g/14 + Reg | 83.7% | 87.1% | ✅ 无伪影 |
💡 加 Registers 不仅消除伪影,还提升了精度!推荐始终使用 +Reg 版本。
7. 特殊变体:XRay-DINO / Cell-DINO / dino.txt
🏥 XRay-DINO:医学影像
- 论文:Advancing human-centric AI for robust X-ray analysis
- 模型:ViT-L/16
- 需填表申请下载
- 许可:FAIR Noncommercial Research License(仅限研究用途)
🔬 Cell-DINO:生物荧光显微
- 论文:Cell-DINO: Self-Supervised Image-based Embeddings for Cell Fluorescent Microscopy(PLOS Comp Bio)
- 2025.12.16 新增
🧬 Channel-Adaptive DINO:生物学
- 论文:Scaling Channel-Adaptive Self-Supervised Learning
- 适用于多通道生物图像(如荧光显微多通道)
- 2025.12.16 新增
📝 dino.txt:视觉语言对齐
- 论文:DINOv2 Meets Text
- 基于 ViT-L/14 + Registers
- 统一的图像级 + 像素级视觉语言对齐框架
- 2025.06.11 新增
8. 与其他视觉基础模型对比
| 对比维度 | DINOv2 | CLIP | SAM | MAE | Supervised ViT |
|---|---|---|---|---|---|
| 训练方式 | 自监督 | 对比学习 | 提示学习 | 掩码自编码 | 有监督 |
| 训练数据 | 142M 图片 | 400M 图文对 | 11M 图像 | ImageNet-1K | ImageNet-1K/21K |
| 标注需求 | ❌ 零标注 | 文本描述 | 需要标注 | ❌ 零标注 | ✅ 需要标注 |
| 图像分类 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ❌ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 语义分割 | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ |
| 深度估计 | ⭐⭐⭐⭐⭐ | ❌ | ❌ | ⭐⭐ | ⭐⭐ |
| 跨域迁移 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ |
| 零样本能力 | ⭐⭐⭐ (dino.txt) | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ❌ | ❌ |
| 特征质量 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ |
| 无需微调 | ✅ | ✅ | ✅ | ❌ | ❌ |
DINOv2 的独特优势:
- 纯视觉特征,不依赖文本:比 CLIP 更"纯粹"的视觉理解
- 跨域鲁棒性最强:医学影像/卫星图/艺术画/视频帧都能用
- 下游任务最全:分类+分割+深度+检索,一个 backbone 全搞定
- 无需微调:线性层直出 SOTA,省时省力
9. 训练与评估
训练配置
| 配置 | 节点数 | GPU | 训练时间 | k-NN | Linear |
|---|---|---|---|---|---|
| ViT-L/16 short | 4 A100-80GB | 32 | ~1 天 | 81.6% | 82.9% |
| ViT-L/14 full | 12 A100-80GB | 96 | ~3.3 天 | 82.0% | 84.5% |
环境安装
# 推荐 condacondaenvcreate-fconda.yaml conda activate dinov2# 或 pippipinstall-rrequirements.txt# 密集预测任务(深度/分割)需要额外依赖condaenvcreate-fconda-extras.yaml conda activate dinov2-extras评估方式
| 方式 | 命令 | 说明 |
|---|---|---|
| k-NN | python dinov2/run/eval/knn.py | 最近邻分类 |
| Linear | python dinov2/run/eval/linear.py | 线性探针 |
| Log Regression | python dinov2/run/eval/log_regression.py | 逻辑回归 |
10. 优缺点与使用建议
✅ 优点
| 维度 | 评分 | 说明 |
|---|---|---|
| 特征质量 | ⭐⭐⭐⭐⭐ | 线性层直出 SOTA |
| 跨域鲁棒 | ⭐⭐⭐⭐⭐ | 无需微调即可跨域使用 |
| 易用性 | ⭐⭐⭐⭐⭐ | torch.hub.load三行代码 |
| 模型齐全 | ⭐⭐⭐⭐⭐ | 4 档大小 + Registers + 蒸馏版 |
| 下游任务 | ⭐⭐⭐⭐⭐ | 分类/分割/深度/检索/零样本全覆盖 |
| 特殊领域 | ⭐⭐⭐⭐ | XRay-DINO / Cell-DINO / Channel-Adaptive |
| 可视化 | ⭐⭐⭐⭐⭐ | PCA 特征自动语义分割 |
⚠️ 注意事项
| 事项 | 说明 |
|---|---|
| 训练代码 | 仅支持Linux,需 PyTorch 2.0 + xFormers |
| ViT-g/14 | 1.1B 参数,推理需要较大 GPU 内存 |
| XRay-DINO | 需填表申请,仅限非商业研究 |
| 许可证 | 模型权重使用 FAIR 许可,需确认商用合规 |
| DINOv3 | 2025.8 已发布 DINOv3,可关注 |
💡 使用建议
- 优先用 +Reg 版本:消除伪影 + 提升精度,没有理由不用
- ViT-B/14 是甜点:86M 参数,84.6% 精度,速度和质量的最佳平衡
- 特征直接用:不需要微调 backbone,只需训一个线性头
- 密集预测用 DPT:深度估计/分割用 DPT 头,比 Linear 头效果好
- 关注 DINOv3:2025 年 8 月已发布继任者
11. 总结
DINOv2 是视觉基础模型领域的里程碑之作:
- 🔥零标注训练:1.42 亿图片,不需要任何标签
- 🎯线性层直出 SOTA:ViT-g/14 + Reg 达到 87.1% ImageNet 线性精度
- 🌍跨域鲁棒:无需微调,医学/卫星/艺术/视频全场景可用
- 📦开箱即用:
torch.hub.load三行代码加载 - 🏥特殊领域扩展:XRay-DINO (医学) / Cell-DINO (生物) / Channel-Adaptive (多通道)
- 📝dino.txt:图像级+像素级视觉语言对齐,零样本能力
- ✨Registers:消除 ViT 伪影,提升精度
- 🔮DINOv3 续作:2025.8 已发布,持续进化
推荐指数:⭐⭐⭐⭐⭐
如果你需要通用视觉特征——不管是分类、检索、分割、深度估计还是零样本任务——DINOv2 都是当前最实用、最强大的选择。一个 backbone 解决所有 CV 任务,这就是视觉 Foundation Model 应该有的样子。
📢 项目地址:https://github.com/facebookresearch/dinov2
标签:#Meta #DINOv2 #自监督学习 #视觉基础模型 #ViT #计算机视觉 #深度学习 #FeatureExtraction