DINOv3 零样本分割实战:免标注的视觉基础模型快速上手
【免费下载链接】dinov3Reference PyTorch implementation and models for DINOv3项目地址: https://gitcode.com/GitHub_Trending/di/dinov3
DINOv3 零样本分割让你跳过像素级标注,也不用为每个新任务重训模型,直接给几句类别描述就能拿到逐像素的分割结果。训练、评估、推理的代码都在仓库里,你装上环境、加载权重就能跑。
它到底是什么,凭什么省掉标注 ⚡
DINOv3 是一族自监督预训练的视觉基础模型(vision foundation model,靠无标注数据学到的通用图像理解能力)。它输出稠密特征,也就是每个像素块都有一组带语义的向量。dino.txt 变体再挂一个文本编码器,把文字和图像特征对齐。于是"给词出图"成了可能。
- 免标注直接分割
- 稠密特征可复用
- 新类别改文本即可
- 训练评估推理齐全
三步跑起来:克隆、装环境、出第一张图 🚀
- 克隆仓库并建环境:
git clone https://gitcode.com/GitHub_Trending/di/dinov3 cd dinov3 micromamba env create -f conda.yaml && micromamba activate dinov3依赖核心是 PyTorch(官方要求 2.7.1 及以上,只在 Linux 验证过)。环境装好后,通过 PyTorch Hub 加载 dino.txt 模型。加载入口在 dinov3/hub/。
加载长这样,返回模型和分词器两样东西:
import torch REPO_DIR = "/path/to/dinov3" model, tokenizer = torch.hub.load( REPO_DIR, "dinov3_vitl16_dinotxt_tet1280d20h24l", source="local", weights="<dinotxt权重路径>", backbone_weights="<backbone权重路径>", ) model = model.to("cuda").eval()权重不随仓库发,得先走官方申请拿到下载 URL,再填进weights和backbone_weights。你也可以换 Hugging Face Transformers(4.56 起支持)或 timm 加载骨干。拿到模型后,把图片过一遍、把类别词过一遍,逐 patch 取相似度最高的一类,就是一张分割图。
和传统做法差在哪(一句话原理)
和传统做法比,差别主要在标注和重训两件事上。
| 对比项 | 传统语义分割 | DINOv3 零样本分割 |
|---|---|---|
| 标注 | 要像素级标签 | 不用标注,给类别名就行 |
| 换类别 | 重新采集加重训 | 改文本即可,免重训 |
| 部署 | 每个任务单独建模 | 同一骨干多任务复用 |
底层是一台 ViT(Vision Transformer,把图切成小块做注意力)骨干。它再配一个文本编码器,做跨模态对齐。视觉骨干在 dinov3/models/,文本对齐那套在 dinov3/eval/text/。
进阶玩法与调优 🎛️
提示文本怎么写更准
dino.txt 用 BPE 分词器(把文字切成小块)把描述变成 token,上下文长度固定 77。你给短名词短语(比如 person、car)效果最好,别塞长句,也别堆标点。
高分辨率图怎么做稠密推理
大图别整张硬推,切成 crop 滑窗推理再拼回,显存和精度都更稳。入口在 dinov3/eval/segmentation/:
from dinov3.eval.segmentation.inference import make_inference seg = make_inference( batch_img, segmentor, inference_mode="slide", crop_size=(768, 768), stride=(768, 768), ).argmax(dim=1, keepdim=True)骨干怎么选
ViT-S 约 21M、ViT-B 86M、ViT-L 300M、ViT-7B 约 67 亿参数。显存紧张先用 B 或 L,dino.txt 文本对齐用的就是 ViT-L/16,够用再上 7B。
丢进真实业务:两个场景 🛰️
开放词表语义分割:拿 dino.txt 对 ADE20K 这类场景图直接出结果。它省掉"标图 + 训练分割头"两步,换一批新类别只要改提示词。
卫星遥感:仓库带 CHMv2 树冠高度模型,用卫星版 ViT-L/16 骨干。你不用自己采标地物,也不用单建一个深度回归模型,直接推理出树高。
上手前建议知道的几件事
- 上手前最容易踩的坑是权重来源:
weights/backbone_weights传本地路径或 URL,下载用 wget 别用浏览器。 - 硬件上,代码只在 Linux 验证,推理强烈建议上 CUDA,7B 骨干按多卡准备。
- 选型上,日常用 ViT-B/L 起步,追求上限再上 7B,别一上来就冲最大。
DINOv3 零样本分割把"给词出图"做成了开箱即用的事。去仓库翻翻 dinov3/eval 下的评估脚本,照着 notebook 跑一遍,你就能拿到第一张分割图。
【免费下载链接】dinov3Reference PyTorch implementation and models for DINOv3项目地址: https://gitcode.com/GitHub_Trending/di/dinov3
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考