Delicate02/dinov3-vitl16-pretrain-lvd1689m
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

DINOv3 模型卡片

DINOv3 是一系列多功能视觉基础模型,无需微调即可在广泛场景中超越专门领域的最先进水平。该模型能生成高质量的密集特征,在各类视觉任务上表现卓越,显著超越了以往的自监督和弱监督基础模型。

模型详情

这些是遵循 DINOv3 论文中所述方法训练的 Vision Transformer 和 ConvNeXt 模型。共提供 12 个模型:

  • 10 个在网络数据(LVD-1689M 数据集)上预训练的模型
    • 1 个从头开始训练的 ViT-7B,
    • 5 个从 ViT-7B 蒸馏得到的 ViT-S/S+/B/L/H+ 模型,
    • 4 个从 ViT-7B 蒸馏得到的 ConvNeXt-{T/S/B/L} 模型,
  • 2 个在卫星数据(SAT-493M 数据集)上预训练的模型
    • 1 个从头开始训练的 ViT-7B
    • 1 个从 ViT-7B 蒸馏得到的 ViT-L

每个基于 Transformer 的模型接收图像作为输入,并返回一个类别 token、补丁 token(以及配准 token)。这些模型采用 ViT 架构,补丁大小为 16。对于 224x224 的图像,这会产生 1 个类别 token + 4 个配准 token + 196 个补丁 token = 201 个 token(对于带有配准的 DINOv2,结果为 1 + 4 + 256 = 261 个 token)。

模型可以接受更大尺寸的图像,前提是图像形状是补丁大小(16)的倍数。如果不满足此条件,模型将裁剪到最接近的较小补丁大小倍数。

模型说明

  • 开发机构: Meta AI
  • 模型类型: Vision Transformer、ConvNeXt
  • 许可证: DINOv3 许可证

模型来源

  • 代码库: https://github.com/facebookresearch/dinov3
  • 论文: https://arxiv.org/abs/2508.10104

用途

这些模型是视觉骨干网络,为下游任务提供多用途特征。

直接使用

无需微调,仅使用简单的线性层作为下游分类器,模型即可获得具有竞争力的结果:

  • 图像分类:对类别 token 使用 k-NN 分类器
  • 图像分类:对类别 token 应用逻辑回归分类器
  • 图像分类:对类别 token 和补丁 token 的平均值应用线性层
  • 使用最近邻进行图像检索
  • 几何和语义 3D 关键点对应
  • 深度估计、语义分割:使用线性层
  • 无监督目标发现
  • 视频分割跟踪
  • 视频分类:使用小型 4 层注意力探针

下游使用

虽然对模型进行微调可能会带来一定提升,但建议将此选项作为最后的手段:冻结的特征有望提供开箱即用的良好性能。

偏差、风险与局限性

与 DINOv2 和 SEERv2 相比,DINOv3 在地理公平性和多样性方面,在不同收入类别上的性能表现较为一致,不过低收入组别的性能相较于最高收入组别存在明显下降。

DINOv3 在不同地区也取得了相对较好的分数,较其前身 DINOv2 有所改进。然而,在欧洲和非洲之间仍观察到相对差异。

建议

微调可能会增加模型生成特征中的偏差,因为这些特征将针对微调标签进行调整。

如何开始使用模型

以下示例展示了如何使用 [Pipeline] 或 [AutoModel] 类获取图像嵌入。

from transformers import pipeline
from transformers.image_utils import load_image

url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
image = load_image(url)

feature_extractor = pipeline(
    model="facebook/dinov3-vitl16-pretrain-lvd1689m",
    task="image-feature-extraction", 
)
features = feature_extractor(image)
import torch
from transformers import AutoImageProcessor, AutoModel
from transformers.image_utils import load_image

url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = load_image(url)

pretrained_model_name = "facebook/dinov3-vitl16-pretrain-lvd1689m"
processor = AutoImageProcessor.from_pretrained(pretrained_model_name)
model = AutoModel.from_pretrained(
    pretrained_model_name, 
    device_map="auto", 
)

inputs = processor(images=image, return_tensors="pt").to(model.device)
with torch.inference_mode():
    outputs = model(**inputs)

pooled_output = outputs.pooler_output
print("Pooled output shape:", pooled_output.shape)

训练详情

训练数据

  • 网络数据集(LVD-1689M):一个精心筛选的数据集,包含从170亿张Instagram公开帖子收集的网络图像中提取的16.89亿张图像。

  • 卫星数据集(SAT-493M):一个包含4.93亿张512x512图像的数据集,随机采样自Maxar RGB正射影像,分辨率为0.6米。

训练过程

训练目标:

  • 多裁剪的DINO自蒸馏损失

  • iBOT掩码图像建模损失

  • 对[CLS]标记的KoLeo正则化

  • Gram锚定

  • 训练机制: PyTorch FSDP2(采用bf16和fp8矩阵乘法)

蒸馏:

  • 蒸馏遵循标准的DINOv3预训练流程,不同之处在于教师模型是一个冻结的预训练ViT-7B模型。

评估

结果

有关评估协议的详细信息,请参考相关论文。

在网络数据(LVD-1689M)上预训练(或蒸馏)的ViT骨干网络结果

全局任务密集任务
模型IN-ReaLIN-RObj.NetOx.-HADE20kNYU↓DAVISNAVISPair
DINOv3 ViT-S/1687.060.450.949.547.00.40372.756.350.4
DINOv3 ViT-S+/1688.068.854.650.048.80.39975.557.155.2
DINOv3 ViT-B/1689.376.764.158.551.80.37377.258.857.2
DINOv3 ViT-L/1690.288.174.863.154.90.35279.962.361.3
DINOv3 ViT-H+/1690.390.078.664.554.80.35279.363.356.3
DINOv3 ViT-7B/1690.491.191.172.855.90.30979.764.458.7

在网络数据(LVD-1689M)上蒸馏的ConvNeXt骨干网络结果

全局任务密集任务
模型IN-ReaLIN-RObj.NetADE20kNYU↓
@256px@512px@256px@512px@256px@512px
DINOv3 ConvNeXt Tiny86.687.773.774.152.658.742.70.448
DINOv3 ConvNeXt Small87.988.773.774.152.658.744.80.432
DINOv3 ConvNeXt Base88.589.277.278.256.261.346.30.420
DINOv3 ConvNeXt Large88.989.481.382.459.365.247.80.403

在卫星数据(SAT-493M)上预训练(或蒸馏)的ViT骨干网络结果

(GEO-Bench) 分类
模型m-BEnetm-brick-kilnm-eurosatm-forestnetm-pv4germ-so2sat平均值
DINOv3 ViT-L/1673.096.594.160.696.057.479.6
DINOv3 ViT-7B/1674.097.294.862.396.162.181.1
(GEO-Bench) 分割
模型m-cashewm-chesapeakem-NeonTreem-nz-cattlem-pv4ger-segm-SA-crop平均值
DINOv3 ViT-L/1694.275.661.883.795.236.874.5
DINOv3 ViT-7B/1694.176.662.683.495.537.675.0

环境影响

  • 硬件类型:Nvidia H100
  • 使用时长:ViT-7B模型训练耗时61,440小时
  • 云服务提供商:私有基础设施
  • 计算区域:美国
  • 碳排放:18吨二氧化碳当量

技术规格

模型架构与目标

视觉Transformer模型:

  • ViT-S(2100万参数):补丁大小16,嵌入维度384,4个寄存器令牌,6个注意力头,MLP前馈网络,RoPE
  • ViT-S+(2900万参数):补丁大小16,嵌入维度384,4个寄存器令牌,6个注意力头,SwiGLU前馈网络,RoPE
  • ViT-B(8600万参数):补丁大小16,嵌入维度768,4个寄存器令牌,12个注意力头,MLP前馈网络,RoPE
  • ViT-L(3亿参数):补丁大小16,嵌入维度1024,4个寄存器令牌,16个注意力头,MLP前馈网络,RoPE
  • ViT-H+(8400万参数):补丁大小16,嵌入维度1280,4个寄存器令牌,20个注意力头,SwiGLU前馈网络,RoPE
  • ViT-7B(67.16亿参数):补丁大小16,嵌入维度4096,4个寄存器令牌,32个注意力头,SwiGLU前馈网络,RoPE

ConvNeXt模型:

  • ConvNeXt Tiny(2900万参数)
  • ConvNeXt Small(5000万参数)
  • ConvNeXt Base(8900万参数)
  • ConvNeXt Large(1.98亿参数)

计算基础设施

硬件

Nvidia H100 GPU

软件

PyTorch 2.7

更多信息

详见博客文章及相关网站。

昇腾NPU部署

该模型已在华为昇腾NPU(昇腾910、Atlas 800 A2)上完成验证,结果如下。

环境

组件版本
PyTorch2.9.0+cpu
torch_npu2.9.0.post1
transformers4.57.6
CANN25.5.2
昇腾NPU昇腾910(Atlas 800 A2)

NPU推理示例

在昇腾NPU上运行推理:

import torch
import torch_npu
from PIL import Image
from transformers import DINOv3ViTImageProcessorFast, DINOv3ViTModel

device = "npu:0"
processor = DINOv3ViTImageProcessorFast.from_pretrained(".")
model = DINOv3ViTModel.from_pretrained(".", torch_dtype=torch.float32).to(device)
model.eval()

image = Image.open("demo.jpg").convert("RGB")
inputs = processor(images=image, return_tensors="pt")
inputs = {k: v.to(device) for k, v in inputs.items()}

with torch.no_grad():
    outputs = model(**inputs)

pooled = outputs.pooler_output  # [1, 1024]
print(f"Feature shape: {pooled.shape}")
print(f"Feature vector (first 10): {pooled[0, :10]}")

预期 NPU 推理输出:

Feature shape: torch.Size([1, 1024])
Feature vector (first 10): tensor([-1.2109, -1.8418, -1.0889, -1.3301, -1.7412,
                                    -0.9756, -1.6621, -1.4336, -1.4033, -1.3203],
                                    device='npu:0')

关于批量推理和性能基准测试脚本,请参考本仓库中的 inference.py 和 eval.py。

精度:NPU 与 CPU 对比

使用 8 张随机测试图像(224×224)验证了模型在昇腾 NPU 上的输出精度与 CPU(float32)的对比:

指标数值
最大绝对误差0.01545
平均绝对误差0.00316
均方误差(MSE)1.59e-05
平均余弦相似度0.999967
最小余弦相似度0.999965
相对误差0.816%
结论✅ 通过(误差 < 1%)

验证标准:

  • ✅ 余弦相似度 > 0.99 → 通过
  • ✅ 最大单元素误差 < 0.5 → 通过
  • ✅ 相对误差 < 1% → 通过

详细的精度和性能报告:eval_report.json ✓

性能基准测试(昇腾 910)

批处理大小延迟(毫秒/批)吞吐量(样本/秒)峰值内存(GB)
117.9255.821.21
420.82192.081.21
832.49246.251.21
1654.27294.831.28

与 CPU 相比的加速比:

平台8 张图像推理时间加速比
CPU(Intel Xeon)18.995秒1.0×
NPU(昇腾 910)0.291秒65.3×

已验证功能

  • 昇腾 NPU 模型加载与推理
  • CPU 与 NPU 精度对比(余弦相似度 0.999967)
  • 单张和批量推理(批处理大小 1–16)
  • 性能基准测试套件
  • 特征向量导出

引用

BibTeX

@misc{simeoni2025dinov3,
  title={{DINOv3}},
  author={Sim{\'e}oni, Oriane and Vo, Huy V. and Seitzer, Maximilian and Baldassarre, Federico and Oquab, Maxime and Jose, Cijo and Khalidov, Vasil and Szafraniec, Marc and Yi, Seungeun and Ramamonjisoa, Micha{\"e}l and Massa, Francisco and Haziza, Daniel and Wehrstedt, Luca and Wang, Jianyuan and Darcet, Timoth{\'e}e and Moutakanni, Th{\'e}o and Sentana, Leonel and Roberts, Claire and Vedaldi, Andrea and Tolan, Jamie and Brandt, John and Couprie, Camille and Mairal, Julien and J{\'e}gou, Herv{\'e} and Labatut, Patrick and Bojanowski, Piotr},
  year={2025},
  eprint={2508.10104},
  archivePrefix={arXiv},
  primaryClass={cs.CV},
  url={https://arxiv.org/abs/2508.10104},
}