DINOV2(Distillation with No Labels version 2)是 Meta AI 开发的自监督视觉基础模型,基于Vision Transformer (ViT) 架构,在 1.42 亿张无标注图像上训练,能生成无需微调即可直接用于下游任务的通用视觉特征。
- 输入处理:将图像分割为 14×14 像素的非重叠块 (patch),通过线性投影嵌入
- 主体:多层 Transformer 编码器,包含多头自注意力和前馈网络
- 输出:返回类别 token(全局图像表示)和patch tokens(局部特征),可选4 个寄存器 tokens
提供四种大小的预训练模型:
注:所有模型 patch size 均为 14,适用于 224×224 及更大尺寸图像(需为 14 的倍数)
- 问题:传统 ViT 会将某些图像块用作 "临时存储器",导致注意力图出现伪影
- 解决方案:在输入序列中添加4 个专门的可学习寄存器 token(不对应任何图像区域)
- 作用:作为 "计算中转站",让模型将全局信息存储在专用 tokens 而非图像块中
- 效果:消除注意力伪影,提升特征质量,增强模型对局部和全局信息的捕捉能力
- 两个网络:学生网络(参数可学习)和教师网络(学生 EMA 更新,参数缓慢变化)
- 训练目标:学生网络学习匹配教师网络的输出分布
- DINO 损失:图像级对比,匹配教师和学生的 [CLS] token
- iBOT 损失:patch 级重建,预测被 mask 的图像块(增强局部理解)
- Untied 投影头:图像级和 patch 级损失使用独立 MLP 头,提高表示多样性
- Sinkhorn-Knopp 归一化:稳定训练,增强 batch 多样性
- KoLeo 熵正则化:鼓励特征空间分布更分散
- 高效注意力:实现 FlashAttention 和序列打包,减少内存占用,加速训练
- LVD-142M 数据集:精心筛选的 1.42 亿图像,通过去重、聚类确保多样性
- 自动筛选:使用自监督特征进行相似性检索和 K-means 聚类,避免类别不平衡
- 去偏处理:减少对西方高收入家庭图像的偏差
- ViT-g/14(带寄存器):87.1% top-1 准确率(线性评估,无需微调)
- 超越 OpenCLIP 等模型,接近弱监督 SOTA
注:使用更大模型 (ViT-g) 和寄存器机制效果更佳
- 特征可直接用于线性分类器、k-NN 检索、语义分割等任务,无需微调
- 节省 90% 以上训练时间,降低部署门槛
- 同时捕获全局语义和局部细节,适用于图像和像素级任务
- 对视角变化、光照差异、遮挡等具有强鲁棒性
- 提供多种规模,从小巧的 ViT-S (21M) 到大型的 ViT-g (1.1B)
- 支持模型蒸馏:小模型可从大模型获取知识,提升性能且减少计算
- 图像分类:直接使用线性层进行高精度分类
- 目标检测:结合轻量级检测器,如 YOLO、Mask R-CNN
- 实例分割:与 Mask2Former 等模型结合,实现像素级精度
- 医疗影像:疾病诊断、器官分割(如 ProtoSAM 框架)
- 自动驾驶:道路检测、障碍物识别、场景理解
- 遥感:卫星图像分析、环境监测
- 工业检测:光伏板故障识别(准确率 98.7%,效率提升 5 倍)
model = torch.hub.load(‘facebookresearch/dinov2’, ‘dinov2_vitb14’)
model_with_registers = torch.hub.load(‘facebookresearch/dinov2’, ‘dinov2_vitb14_reg’)
image = torch.randn(1, 3, 224, 224)
with torch.no_grad():
outputs = model(image)
cls_token = outputs[‘cls_token’]
patch_tokens = outputs[‘patch_tokens’]
注:模型支持任意大小图像,会自动裁剪至 14 的倍数
DINOV2通过自监督学习 + ViT 架构 + 寄存器机制的组合,构建了一个 **"即插即用" 的通用视觉骨干 **,无需标注数据和微调就能在各种视觉任务中表现出色。其技术创新不仅推动了计算机视觉基础研究,也为 AI 应用落地提供了强大工具。
信息来源:Meta AI 论文 "DINOv2: Learning Robust Visual Features without Supervision"(2023) 及官方实现