如何 10 分钟跑通 DINOv3 特征提取:从克隆仓库到验证输出的完整指南
如何 10 分钟跑通 DINOv3 特征提取从克隆仓库到验证输出的完整指南【免费下载链接】dinov3Reference PyTorch implementation and models for DINOv3项目地址: https://gitcode.com/GitHub_Trending/di/dinov3DINOv3 是 Meta 开源的自监督视觉模型家族核心价值是能从一张图直接给出 patch 级别的高质量密集特征也就是大家常说的 DINOv3 特征提取。拿到这组特征后你可以直接接线性探针、做分割、做图像匹配而不必先训练自己的编码器。这篇文章面向不碰训练代码、只想把图像进、特征出这条链路跑通的新手目标是在 10 分钟内看到一份可验证的输出。DINOv3 特征提取能用在哪些任务密集特征本身每张图输出一张特征图ViT-B/16 下是 16×16 个 patch、每 patch 768 维可直接做相似性检索、密集匹配、前景分割仓库的 notebooks/ 里给出了 PCA 可视化notebooks/pca.ipynb、前景分割notebooks/foreground_segmentation.ipynb和密集/稀疏匹配notebooks/dense_sparse_matching.ipynb几个现成例子。轻量下游评估冻结特征只训一个线性头即可做 ImageNet 分类、ADE20K 语义分割、NYUv2 深度估计对应脚本在 dinov3/eval/。零样本开放词汇任务配合 dino.txt 文本对齐头可以用文字描述做分割推理入口见 dinov3/eval/text/。DINOv3 最短上手路径克隆仓库并加载模型前置条件只有一条装好 PyTorch 即可加载模型仓库的训练/评估代码要求 PyTorch ≥ 2.7.1 且为 Linux 环境。若后续要跑训练和评估仓库提供了 conda.yaml可用micromamba env create -f conda.yaml一键建环境。# 克隆仓库本仓库在 gitcode 上的镜像 git clone https://gitcode.com/GitHub_Trending/di/dinov3 # 加载模型唯一必需的依赖 pip install torch torchvisionimport torch REPO_DIR /path/to/dinov3 # 本地克隆路径 # 注意权重需要单独申请获取须通过 weights 显式传入本地路径或 URL model torch.hub.load( REPO_DIR, dinov3_vitb16, sourcelocal, weightsCHECKPOINT/URL/OR/PATH, )所有可用的模型入口都注册在 hubconf.py具体架构定义在 dinov3/hub/backbones.py包括 6 个 ViT 档位和 4 个 ConvNeXt 档位。DINOv3 特征提取完整示例预处理、推理与输出校验from PIL import Image from torchvision import transforms transform transforms.Compose([ transforms.Resize((256, 256)), # 缩成 256x256 正方形 transforms.ToTensor(), transforms.Normalize(mean[0.485, 0.456, 0.406], # LVD-1689M 权重对应 ImageNet 归一化 std[0.229, 0.224, 0.225]), ]) model.eval() with torch.no_grad(): image transform(Image.open(cat.jpg).convert(RGB)).unsqueeze(0) # 取最后一层 patch 特征reshape 成 (B, D, H, W) 的特征图 dense model.get_intermediate_layers(image, n-1, reshapeTrue, normTrue) print(dense[0].shape) # ViT-B/16 输入 256x256 时应为 torch.Size([1, 768, 16, 16])校验点形状应为[1, D, 16, 16]256 除以 patch 边长 16 得 16其中 D 随档位变化ViT-S/16 为 384、B/16 为 768、L/16 为 1024。如果你的输出形状不对通常是分辨率或档位与预期不符。DINOv3 模型档位怎么选档位参数量特征维度 D适用场景ViT-S/1621M384快速实验、特征可视化ViT-B/1686M768日常基线速度与质量平衡ViT-L/16300M1024多数下游头分割、深度的默认骨干ViT-H/16840M1280更重算力换更高质量ViT-7B/166716M4096论文级上限需多卡ConvNeXt Tiny/Large29M / 198M架构各异偏好 CNN 结构时的替代拿到特征之后的验证走评估脚本ImageNet 线性探针 dinov3/eval/linear.py、k-NN dinov3/eval/knn.py、语义分割 dinov3/eval/segmentation/、单目深度 dinov3/eval/depth/、目标检测 dinov3/eval/detection/。这些脚本都通过PYTHONPATH. python -m dinov3.run.submit ...启动命令模板见 README.md。DINOv3 加载与推理的三个常见坑weights 不能省略与一些开箱即下的 Hub 模型不同DINOv3 的权重不随仓库分发需要先到官方下载页申请访问拿到 URL 后再显式传weights或先wget到本地再传路径。缺了它torch.hub.load会去拉一个不存在的默认地址然后 404。归一化参数分两套LVD-1689M网络图像预训练权重用标准 ImageNet 的mean[0.485, 0.456, 0.406], std[0.229, 0.224, 0.225]卫星图像SAT-493M预训练权重用的是另一套mean[0.430, 0.411, 0.296], std[0.213, 0.156, 0.143]混用会让精度明显掉。别指望model(x)拿到密集特征推理模式下forward()走的是分类头返回的是分类 logitspatch 级密集特征要用get_intermediate_layers(x, n-1, reshapeTrue, normTrue)这也是各 notebook 的统一用法。下一步如果特征提取这条路走通了接下来可以打开 notebooks/ 里的分割或匹配 notebook 看看特征长什么样或者用 dinov3/eval/linear.py 跑一次线性探针用数字确认特征质量模型许可细节见 LICENSE.md。【免费下载链接】dinov3Reference PyTorch implementation and models for DINOv3项目地址: https://gitcode.com/GitHub_Trending/di/dinov3创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考