DINOv3 是一系列多功能视觉基础模型,无需微调即可在广泛场景中超越专门领域的最先进水平。该模型能生成高质量的密集特征,在各类视觉任务上表现卓越,显著超越了以往的自监督和弱监督基础模型。
这些是遵循 DINOv3 论文中所述方法训练的 Vision Transformer 和 ConvNeXt 模型。共提供 12 个模型:
每个基于 Transformer 的模型接收图像作为输入,并返回一个类别 token、补丁 token(以及配准 token)。这些模型采用 ViT 架构,补丁大小为 16。对于 224x224 的图像,这会产生 1 个类别 token + 4 个配准 token + 196 个补丁 token = 201 个 token(对于带有配准的 DINOv2,结果为 1 + 4 + 256 = 261 个 token)。
模型可以接受更大尺寸的图像,前提是图像形状是补丁大小(16)的倍数。如果不满足此条件,模型将裁剪到最接近的较小补丁大小倍数。
这些模型是视觉骨干网络,为下游任务提供多用途特征。
无需微调,仅使用简单的线性层作为下游分类器,模型即可获得具有竞争力的结果:
虽然对模型进行微调可能会带来一定提升,但建议将此选项作为最后的手段:冻结的特征有望提供开箱即用的良好性能。
与 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矩阵乘法)
蒸馏:
结果
有关评估协议的详细信息,请参考相关论文。
在网络数据(LVD-1689M)上预训练(或蒸馏)的ViT骨干网络结果
| 全局任务 | 密集任务 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| 模型 | IN-ReaL | IN-R | Obj.Net | Ox.-H | ADE20k | NYU↓ | DAVIS | NAVI | SPair |
| DINOv3 ViT-S/16 | 87.0 | 60.4 | 50.9 | 49.5 | 47.0 | 0.403 | 72.7 | 56.3 | 50.4 |
| DINOv3 ViT-S+/16 | 88.0 | 68.8 | 54.6 | 50.0 | 48.8 | 0.399 | 75.5 | 57.1 | 55.2 |
| DINOv3 ViT-B/16 | 89.3 | 76.7 | 64.1 | 58.5 | 51.8 | 0.373 | 77.2 | 58.8 | 57.2 |
| DINOv3 ViT-L/16 | 90.2 | 88.1 | 74.8 | 63.1 | 54.9 | 0.352 | 79.9 | 62.3 | 61.3 |
| DINOv3 ViT-H+/16 | 90.3 | 90.0 | 78.6 | 64.5 | 54.8 | 0.352 | 79.3 | 63.3 | 56.3 |
| DINOv3 ViT-7B/16 | 90.4 | 91.1 | 91.1 | 72.8 | 55.9 | 0.309 | 79.7 | 64.4 | 58.7 |
在网络数据(LVD-1689M)上蒸馏的ConvNeXt骨干网络结果
| 全局任务 | 密集任务 | |||||||
|---|---|---|---|---|---|---|---|---|
| 模型 | IN-ReaL | IN-R | Obj.Net | ADE20k | NYU↓ | |||
| @256px | @512px | @256px | @512px | @256px | @512px | |||
| DINOv3 ConvNeXt Tiny | 86.6 | 87.7 | 73.7 | 74.1 | 52.6 | 58.7 | 42.7 | 0.448 |
| DINOv3 ConvNeXt Small | 87.9 | 88.7 | 73.7 | 74.1 | 52.6 | 58.7 | 44.8 | 0.432 |
| DINOv3 ConvNeXt Base | 88.5 | 89.2 | 77.2 | 78.2 | 56.2 | 61.3 | 46.3 | 0.420 |
| DINOv3 ConvNeXt Large | 88.9 | 89.4 | 81.3 | 82.4 | 59.3 | 65.2 | 47.8 | 0.403 |
在卫星数据(SAT-493M)上预训练(或蒸馏)的ViT骨干网络结果
| (GEO-Bench) 分类 | |||||||
|---|---|---|---|---|---|---|---|
| 模型 | m-BEnet | m-brick-kiln | m-eurosat | m-forestnet | m-pv4ger | m-so2sat | 平均值 |
| DINOv3 ViT-L/16 | 73.0 | 96.5 | 94.1 | 60.6 | 96.0 | 57.4 | 79.6 |
| DINOv3 ViT-7B/16 | 74.0 | 97.2 | 94.8 | 62.3 | 96.1 | 62.1 | 81.1 |
| (GEO-Bench) 分割 | |||||||
| 模型 | m-cashew | m-chesapeake | m-NeonTree | m-nz-cattle | m-pv4ger-seg | m-SA-crop | 平均值 |
| DINOv3 ViT-L/16 | 94.2 | 75.6 | 61.8 | 83.7 | 95.2 | 36.8 | 74.5 |
| DINOv3 ViT-7B/16 | 94.1 | 76.6 | 62.6 | 83.4 | 95.5 | 37.6 | 75.0 |
视觉Transformer模型:
ConvNeXt模型:
Nvidia H100 GPU
PyTorch 2.7
该模型已在华为昇腾NPU(昇腾910、Atlas 800 A2)上完成验证,结果如下。
| 组件 | 版本 |
|---|---|
| PyTorch | 2.9.0+cpu |
| torch_npu | 2.9.0.post1 |
| transformers | 4.57.6 |
| CANN | 25.5.2 |
| 昇腾NPU | 昇腾910(Atlas 800 A2) |
在昇腾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。
使用 8 张随机测试图像(224×224)验证了模型在昇腾 NPU 上的输出精度与 CPU(float32)的对比:
| 指标 | 数值 |
|---|---|
| 最大绝对误差 | 0.01545 |
| 平均绝对误差 | 0.00316 |
| 均方误差(MSE) | 1.59e-05 |
| 平均余弦相似度 | 0.999967 |
| 最小余弦相似度 | 0.999965 |
| 相对误差 | 0.816% |
| 结论 | ✅ 通过(误差 < 1%) |
验证标准:
详细的精度和性能报告:eval_report.json ✓
| 批处理大小 | 延迟(毫秒/批) | 吞吐量(样本/秒) | 峰值内存(GB) |
|---|---|---|---|
| 1 | 17.92 | 55.82 | 1.21 |
| 4 | 20.82 | 192.08 | 1.21 |
| 8 | 32.49 | 246.25 | 1.21 |
| 16 | 54.27 | 294.83 | 1.28 |
与 CPU 相比的加速比:
| 平台 | 8 张图像推理时间 | 加速比 |
|---|---|---|
| CPU(Intel Xeon) | 18.995秒 | 1.0× |
| NPU(昇腾 910) | 0.291秒 | 65.3× |
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},
}