Meta FAIR 开源 DINOv3:自监督视觉基础模型新王者,双架构 ViT+ConvNeXt,7B 参数 12 个骨干,深度估计/检测/分割/林冠图全线 SOTA!

Meta FAIR 开源 DINOv3:自监督视觉基础模型新王者,双架构 ViT+ConvNeXt,7B 参数 12 个骨干,深度估计/检测/分割/林冠图全线 SOTA!

💡 Meta FAIR 出品,DINOv2 正统续作。双架构(ViT + ConvNeXt),12 个预训练骨干,最大 7B 参数,两大数据集(LVD-1689M 网页图 + SAT-493M 卫星图),无需微调即超越专业 SOTA。深度估计、目标检测、语义分割、林冠高度图、元数据引导训练(FINO)全覆盖,PyTorch Hub / HuggingFace Transformers / timm 三大生态即插即用。

在这里插入图片描述

📌 目录


1. DINOv3 是什么?

DINOv3 是 Meta AI Research(FAIR)出品的自监督视觉基础模型,DINOv2 的正统续作。

一句话总结

DINOv3 = Meta FAIR 自监督视觉基础模型
       = DINOv2 正统续作,高质量密集特征
       = 双架构:ViT(6档)+ ConvNeXt(4档),共 12 个骨干
       = 最大 7B 参数,最小 21M 参数
       = 两大数据集:LVD-1689M(网页图)+ SAT-493M(卫星图)
       = 无需微调即超越专业 SOTA
       = 5 大下游适配器:分类/深度估计/检测/分割/林冠高度
       = FINO 元数据引导训练:无需标签,用已有元数据适配
       = PyTorch Hub + HuggingFace Transformers + timm 三大生态
       = CVPR 级别工作,FAIR 视觉基石

核心亮点图

DINOv3 输出高分辨率密集特征——用红色十字标记某个 patch,计算其与所有其他 patch 的余弦相似度地图,直观展示模型对图像语义的理解深度。

  输入图片 → DINOv3 → 密集特征 → 余弦相似度地图
                         ↓
            同一物体区域高相似度
            不同物体区域低相似度
            无需标注,自监督学习得到

2. DINOv2 → DINOv3 进化了什么?

对比维度DINOv2DINOv3
发布时间20232025
架构ViT onlyViT + ConvNeXt 双架构
最大参数1.1B (ViT-g)7B (ViT-7B)
预训练骨干4 个 (S/B/L/g)12 个(6 ViT + 4 ConvNeXt + 2 卫星)
预训练数据LVD-142MLVD-1689M + SAT-493M
卫星图预训练SAT-493M
ConvNeXt 蒸馏4 档 ConvNeXt
下游适配器分类/分割/深度分类/深度估计/检测/分割/林冠高度
目标检测COCO2017 检测器
林冠高度图CHMv2 (CVPR 级)
元数据训练FINO 分支
timm 支持✅ (≥1.0.20)
HF Transformers✅ (≥4.56.0)
密集特征质量优秀更强(高分辨率)
无需微调 SOTA更广范围超越

三大进化方向

1️⃣ 规模跃升:1.1B → 7B,数据 142M → 1689M(12 倍)
2️⃣ 架构扩展:ViT-only → ViT + ConvNeXt,覆盖更多部署场景
3️⃣ 领域拓展:通用视觉 → 卫星遥感 + 元数据引导 + 更多下游

3. 双架构 + 12 个预训练骨干全览

ViT 系列(网页图 LVD-1689M)

模型参数类型适用场景
ViT-S/16 distilled21M蒸馏移动端/嵌入式
ViT-S+/16 distilled29M蒸馏轻量级应用
ViT-B/16 distilled86M蒸馏通用推荐 ⭐
ViT-L/16 distilled300M蒸馏高质量特征
ViT-H+/16 distilled840M蒸馏研究级精度
ViT-7B/166,716M全量顶级性能 🏆

ConvNeXt 系列(网页图 LVD-1689M)

模型参数适用场景
ConvNeXt Tiny29MCNN 偏好/部署友好
ConvNeXt Small50M平衡精度与速度
ConvNeXt Base89M通用 CNN 方案
ConvNeXt Large198M高精度 CNN

卫星图系列(SAT-493M)

模型参数预训练数据适用场景
ViT-L/16 distilled300MSAT-493M遥感特征提取
ViT-7B/166,716MSAT-493M遥感顶级性能 🛰️

骨架选型指南

🎯 追求极致精度 → ViT-7B/16 (6.7B)
⚖️ 精度与效率平衡 → ViT-L/16 (300M) 或 ConvNeXt-Base (89M)
🚀 轻量快速部署 → ViT-S/16 (21M) 或 ConvNeXt-Tiny (29M)
🛰️ 遥感卫星场景 → ViT-7B/16 SAT-493M
🔧 CNN 架构偏好 → ConvNeXt 系列(蒸馏自 ViT)
📱 移动端/边缘 → ViT-S/16 (21M)

4. 五大下游适配器

🎯 适配器一:图像分类(ImageNet)

骨干:ViT-7B/16 (LVD-1689M)
头数据集:ImageNet
加载方式:
  dinov3_vit7b16_lc = torch.hub.load(REPO_DIR, 'dinov3_vit7b16_lc',
    source="local", weights=<PATH>, backbone_weights=<PATH>)

📏 适配器二:单目深度估计(SYNTHMIX → NYUv2)

骨干:ViT-7B/16 (LVD-1689M)
头数据集:SYNTHMIX(合成混合数据)
评估:NYUv2-Depth
加载方式:
  depther = torch.hub.load(REPO_DIR, 'dinov3_vit7b16_dd',
    source="local", weights=<PATH>, backbone_weights=<PATH>)

推理示例:
  img_size = 1024
  img = get_img()
  transform = make_transform(img_size)
  with torch.inference_mode():
    with torch.autocast('cuda', dtype=torch.bfloat16):
      batch_img = transform(img)[None]
      depths = depther(batch_img)

复现论文结果:
  PYTHONPATH=. python -m dinov3.run.submit dinov3/eval/depth/run.py \
    config=dinov3/eval/depth/configs/config-nyu-synthmix-dpt-inference.yaml \
    datasets.root=<PATH/TO/DATASET> \
    load_from=dinov3_vit7b16_dd \
    --output-dir <PATH/TO/OUTPUT/DIR>

🔍 适配器三:目标检测(COCO2017)

骨干:ViT-7B/16 (LVD-1689M)
头数据集:COCO2017
加载方式:
  detector = torch.hub.load(REPO_DIR, 'dinov3_vit7b16_de',
    source="local", weights=<PATH>, backbone_weights=<PATH>)

🖼️ 适配器四:语义分割(ADE20K)

骨干:ViT-7B/16 (LVD-1689M)
头数据集:ADE20K
解码器:Mask2Former (M2F)
加载方式:
  segmentor = torch.hub.load(REPO_DIR, 'dinov3_vit7b16_ms',
    source="local", weights=<PATH>, backbone_weights=<PATH>)

推理示例(滑动窗口推理):
  segmentation_map = make_inference(
    batch_img, segmentor,
    inference_mode="slide",
    decoder_head_type="m2f",
    rescale_to=(img.size[-1], img.size[-2]),
    n_output_channels=150,
    crop_size=(896, 896),
    stride=(896, 896),
    output_activation=partial(torch.nn.functional.softmax, dim=1),
  ).argmax(dim=1, keepdim=True)

复现论文结果:
  PYTHONPATH=. python -m dinov3.run.submit dinov3/eval/segmentation/run.py \
    config=dinov3/eval/segmentation/configs/config-ade20k-m2f-inference.yaml \
    datasets.root=<PATH/TO/DATASET> \
    load_from=dinov3_vit7b16_ms \
    --output-dir <PATH/TO/OUTPUT/DIR>

🌲 适配器五:林冠高度图 v2(CHMv2)

骨干:ViT-L/16 (DINOv3)
功能:全球高分辨率林冠高度估计
改进:基于 2024 年初版 CHM,利用 DINOv3 大幅提升精度/细节/全球一致性
论文:arXiv:2603.06382

模型权重:
  🤗 HuggingFace: facebook/dinov3-vitl16-chmv2-dpt-head
  📖 HF Transformers 支持:https://huggingface.co/docs/transformers/model_doc/chmv2

应用场景:
  🌍 全球森林监测
  📊 碳汇估算
  🛰️ 遥感分析
  🌳 生态研究

5. FINO:元数据引导训练

🆕 2026-06-12 最新发布

FINO 分支:https://github.com/facebookresearch/dinov3/tree/FINO
论文:Who Needs Labels? Adapting Vision Foundation Models With
      the Metadata You Already Have (Gardès et al., 2026)
      arXiv: 2606.05107

核心思想

传统微调:需要标注标签 → 成本高、耗时长
FINO 方法:利用已有元数据(无需额外标注)→ 零标签成本适配

已验证场景:
  🛰️ FMoW 卫星图像 → 利用地理/时间元数据
  🔬 HPA-WholeHR 荧光图像 → 利用生物实验元数据

为什么重要?

1. 降低适配门槛:无需标注,用已有信息即可适配新领域
2. 卫星遥感/生物医学等专业领域标注稀缺
3. 元数据(时间、位置、实验条件)天然存在
4. 把"废数据"变成"训练信号"

6. 快速上手

方式一:PyTorch Hub(推荐)

import torch

REPO_DIR = "/path/to/dinov3"  # 克隆到本地的仓库路径

# 加载 ViT 骨干
dinov3_vits16 = torch.hub.load(REPO_DIR, 'dinov3_vits16',
    source='local', weights=<CHECKPOINT_URL_OR_PATH>)
dinov3_vitb16 = torch.hub.load(REPO_DIR, 'dinov3_vitb16',
    source='local', weights=<CHECKPOINT_URL_OR_PATH>)
dinov3_vitl16 = torch.hub.load(REPO_DIR, 'dinov3_vitl16',
    source='local', weights=<CHECKPOINT_URL_OR_PATH>)
dinov3_vit7b16 = torch.hub.load(REPO_DIR, 'dinov3_vit7b16',
    source='local', weights=<CHECKPOINT_URL_OR_PATH>)

# 加载 ConvNeXt 骨干
dinov3_convnext_tiny = torch.hub.load(REPO_DIR, 'dinov3_convnext_tiny',
    source='local', weights=<CHECKPOINT_URL_OR_PATH>)
dinov3_convnext_base = torch.hub.load(REPO_DIR, 'dinov3_convnext_base',
    source='local', weights=<CHECKPOINT_URL_OR_PATH>)

# 加载卫星图骨干
dinov3_vit7b16_sat = torch.hub.load(REPO_DIR, 'dinov3_vit7b16',
    source='local', weights=<SAT_CHECKPOINT_URL_OR_PATH>)

方式二:HuggingFace Transformers(≥4.56.0)

# Pipeline 方式
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-convnext-tiny-pretrain-lvd1689m",
    task="image-feature-extraction",
)
features = feature_extractor(image)
# AutoModel 方式
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)

可用 HF 模型名:

facebook/dinov3-vits16-pretrain-lvd1689m
facebook/dinov3-vits16plus-pretrain-lvd1689m
facebook/dinov3-vitb16-pretrain-lvd1689m
facebook/dinov3-vitl16-pretrain-lvd1689m
facebook/dinov3-vith16plus-pretrain-lvd1689m
facebook/dinov3-vit7b16-pretrain-lvd1689m
facebook/dinov3-convnext-base-pretrain-lvd1689m
facebook/dinov3-convnext-large-pretrain-lvd1689m
facebook/dinov3-convnext-small-pretrain-lvd1689m
facebook/dinov3-convnext-tiny-pretrain-lvd1689m
facebook/dinov3-vitl16-pretrain-sat493m
facebook/dinov3-vit7b16-pretrain-sat493m

方式三:timm(≥1.0.20)

import timm

model = timm.create_model('vit_small_patch16_dinov3.lvd1689m', pretrained=True)

图像预处理

# LVD-1689M 网页图模型(标准 ImageNet 变换)
from torchvision.transforms import v2
import torch

def make_transform(resize_size: int = 256):
    return v2.Compose([
        v2.ToImage(),
        v2.Resize((resize_size, resize_size), antialias=True),
        v2.ToDtype(torch.float32, scale=True),
        v2.Normalize(mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225)),
    ])

# SAT-493M 卫星图模型(遥感专用归一化)
def make_sat_transform(resize_size: int = 256):
    return v2.Compose([
        v2.ToImage(),
        v2.Resize((resize_size, resize_size), antialias=True),
        v2.ToDtype(torch.float32, scale=True),
        v2.Normalize(mean=(0.430, 0.411, 0.296), std=(0.213, 0.156, 0.143)),
    ])

深度估计完整示例

from PIL import Image
import torch
from torchvision.transforms import v2
import matplotlib.pyplot as plt
from matplotlib import colormaps

def get_img():
    import requests
    url = "http://images.cocodataset.org/val2017/000000039769.jpg"
    return Image.open(requests.get(url, stream=True).raw).convert("RGB")

def make_transform(resize_size=768):
    return v2.Compose([
        v2.ToImage(),
        v2.Resize((resize_size, resize_size), antialias=True),
        v2.ToDtype(torch.float32, scale=True),
        v2.Normalize(mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225)),
    ])

# 加载深度估计器
depther = torch.hub.load(REPO_DIR, 'dinov3_vit7b16_dd',
    source="local", weights=<DEPTHER_PATH>, backbone_weights=<BACKBONE_PATH>)

img_size = 1024
img = get_img()
transform = make_transform(img_size)
with torch.inference_mode():
    with torch.autocast('cuda', dtype=torch.bfloat16):
        batch_img = transform(img)[None]
        depths = depther(batch_img)

# 可视化
plt.figure(figsize=(12, 6))
plt.subplot(121)
plt.imshow(img)
plt.axis("off")
plt.subplot(122)
plt.imshow(depths[0,0].cpu(), cmap=colormaps["Spectral"])
plt.axis("off")
plt.savefig("depth_result.png")

7. 竞品对比

对比维度DINOv3DINOv2SAM2SigLIP2EVA-CLIP
出品方Meta FAIRMeta FAIRMeta FAIRGoogleBAAI
最大参数7B1.1B900M878M5B
架构ViT + ConvNeXtViTHieraViTViT
骨干数量12412多个
卫星预训练SAT-493M
深度估计SYNTHMIX
目标检测COCO
语义分割ADE20K
林冠高度CHMv2
元数据训练FINO
自监督✅ (对比)✅ (对比)
PyTorch Hub
HF Transformers✅ (≥4.56)
timm✅ (≥1.0.20)
密集特征高分辨率

最大差异化

1. 双架构:ViT + ConvNeXt 覆盖 Transformer 和 CNN 两种偏好
2. 12 个骨干:从 21M 到 7B,覆盖所有部署规模
3. 卫星遥感:SAT-493M 专属预训练,遥感领域独一份
4. FINO 元数据训练:零标签适配,专业领域利器
5. CHMv2 林冠高度:全球环境监测实际应用
6. 无需微调 SOTA:冻住骨干直接用
7. 三大生态:PyTorch Hub + HF Transformers + timm
8. 密集特征王者:高分辨率密集特征,下游任务最强基础

8. 适用场景与优缺点

✅ 适合场景

🖼️ 视觉特征提取(通用)
  → 图像检索/聚类/相似度计算
  → 21M~7B 全尺寸覆盖

📏 单目深度估计
  → 室内/室外场景理解
  → 自动驾驶/机器人导航
  → SYNTHMIX 训练,NYUv2 验证

🔍 目标检测
  → COCO 80 类通用检测
  → DINOv3 骨干 + 检测头

🖼️ 语义分割
  → ADE20K 150 类场景解析
  → Mask2Former 解码器

🛰️ 遥感卫星分析
  → SAT-493M 专用预训练
  → FMoW 功能性地图分类
  → CHMv2 林冠高度估计

🔬 生物医学/专业领域
  → FINO 元数据引导适配
  → HPA 荧光图像分析

🌲 环境监测
  → 全球森林碳汇估算
  → 植被覆盖变化检测

⚠️ 注意事项

1. 模型权重需申请:需通过 Meta 官方链接申请下载
2. 7B 模型显存需求大:推理需要高端 GPU
3. ConvNeXt 为蒸馏版本:精度略低于 ViT 原版
4. 部分适配器仅 ViT-7B:分类/深度/检测/分割头仅 7B 版本
5. 卫星图归一化不同:需使用 SAT-493M 专用归一化参数
6. 推理建议用 bfloat16:配合 torch.autocast 加速

9. 总结与推荐

推荐指数:⭐⭐⭐⭐⭐

维度评分说明
性能⭐⭐⭐⭐⭐无需微调即 SOTA,密集特征质量顶级
灵活⭐⭐⭐⭐⭐12 个骨干 + 5 个适配器,全场景覆盖
生态⭐⭐⭐⭐⭐PyTorch Hub + HF + timm 三大生态
创新⭐⭐⭐⭐⭐FINO 元数据训练 + SAT 卫星 + CHMv2
部署⭐⭐⭐⭐从 21M 到 7B 全覆盖,但 7B 显存需求大
文档⭐⭐⭐⭐README 详细,但权重申请略繁琐

一句话推荐

如果你需要高质量的视觉特征,DINOv3 是 2025-2026 年的最佳选择。

12 个骨干(21M~7B),双架构(ViT + ConvNeXt),
卫星遥感专属预训练,FINO 零标签适配,
深度估计/检测/分割/林冠高度全适配器,
三大生态即插即用,无需微调即超越专业 SOTA。

DINOv2 可以正式退休了。

📢 项目地址:https://github.com/facebookresearch/dinov3
📜 论文:arXiv:2508.10104
📰 博客:https://ai.meta.com/blog/dinov3-self-supervised-vision-model/
🌐 网站:https://ai.meta.com/dinov3/
🤗 HuggingFace:DINOv3 Collection
🌲 CHMv2:arXiv:2603.06382
🧪 FINO:arXiv:2606.05107


相关链接


原文链接:https://github.com/facebookresearch/dinov3

标签:#MetaFAIR #DINOv3 #自监督 #视觉基础模型 #ViT #ConvNeXt #深度估计 #语义分割 #目标检测 #林冠高度 #遥感 #FINO #7B参数 #SOTA
分类:原创文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guopeiAI

请博主加个火腿

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值