DINOv2 自监督特征提取上手指南3 步跑通、关键参数一次讲清【免费下载链接】dinov2PyTorch code and models for the DINOv2 self-supervised learning method.项目地址: https://gitcode.com/GitHub_Trending/di/dinov2如果你手里有大量没有标注的图片却希望直接得到能用于分类、分割等任务的视觉特征DINOv2 自监督学习就是为这个场景准备的方案。它由 Meta AI Research 开发在 1.42 亿张无标注图片上训练产出的特征可以免微调地跨领域使用。下面带你完成安装、验证和训练参数的调整。三步验证 DINOv2 环境结论先不训练先用预训练权重跑一次特征提取确认环境没问题。完整训练需要大规模 GPU 集群和 ImageNet 数据而加载预训练骨干只需几行代码是最快的验证方式。第 1 步拿到代码。克隆仓库并用仓库自带的 conda 环境定义安装依赖锁定 PyTorch 2.0.0、xFormers 0.0.18仅支持 Linuxgit clone https://gitcode.com/GitHub_Trending/di/dinov2 cd dinov2 conda env create -f conda.yaml conda activate dinov2第 2 步首次运行。用一条命令加载 ViT-B/14 预训练模型并对一张随机 224x224 输入做前向推理python -c import torch; m torch.hub.load(facebookresearch/dinov2, dinov2_vitb14); print(m(torch.randn(1,3,224,224)).shape)第 3 步验证成功。终端输出torch.Size([1, 768])即表示环境正常一个 768 维的向量就是这张图片的全局特征ViT-B/14 的隐藏层维度。之后你可以把真实图片替换进去特征向量可直接接线性分类器、k-NN 或聚类使用。项目结构速览结论日常使用只关心 4 个目录其余可先忽略。仓库的核心代码集中在dinov2包内训练/评估入口和演示分开存放dinov2/ ├── dinov2/ # 核心代码包 │ ├── models/ # ViT 模型定义 │ ├── layers/ # 注意力、FFN 等基础模块 │ ├── train/ # 训练循环 │ ├── data/ # 数据集与数据增强 │ ├── hub/ # torch.hub 预训练模型入口 │ └── run/ # 训练/评估启动脚本 ├── configs - dinov2/configs/ # 训练与评估的 yaml 配置 ├── notebooks/ # 深度估计、语义分割等演示 └── docs/ # Cell-DINO 等扩展说明目录职责dinov2/models/Vision Transformer 骨干的定义ViT-S/B/L/g 各尺寸都在这里dinov2/train/自监督训练主循环实现 DINO 与 iBOT 两个损失dinov2/loss/dinov2/run/命令行入口run/train/train.py启动训练run/eval/下是 k-NN、线性评估脚本dinov2/configs/yaml 配置train/放训练配置eval/放评估配置参数全貌见 ssl_default_config.yamlnotebooks/即开即用的演示如深度估计、语义分割、生物影像推理优先调整的 5 个参数结论配置采用默认值 覆盖模式——yaml 文件只需覆盖你要改的项未写的自动取 ssl_default_config.yaml 的默认值。例如官方的 vitl16_short.yaml 只有 6 行。最常碰的 5 个参数如下参数默认值什么时候改train.dataset_pathImageNet:splitTRAIN未含本地路径每次训练前必改追加本地路径如ImageNet:splitTRAIN:root数据根目录:extra元数据目录train.batch_size_per_gpu64显存吃紧时调小官方 ViT-L/14 长配置已降到 32optim.base_lr0.004batch 1024 时的基准学习率通常不用动代码会按sqrt_wrt_1024规则依据总 batch 自动缩放student.patch_size16换 14 可提升特征分辨率官方 ViT-L/14 方案代价是显存与计算量上升evaluation.eval_period_iterations12500想更勤快地保存可评估的检查点时调小权重会落在输出目录的eval子文件夹覆盖不用改 yaml直接在训练命令末尾追加keyvalue即可官方示例就是这样传数据集路径的python dinov2/run/train/train.py --nodes 4 \ --config-file dinov2/configs/train/vitl16_short.yaml \ --output-dir 输出目录 \ train.dataset_pathImageNet:splitTRAIN:root数据根目录:extra数据根目录实战小贴士训练命令必须以PYTHONPATH.前缀执行在仓库根目录下。数据加载代码依赖dinov2包在搜索路径中漏掉它是最常见的报错来源之一。用数字判断训练是否正常。快速方案ViT-L/164 节点共 32 张 A100-80GB约 1 天跑完k-NN 评估应达 81.6%、线性评估 82.9%每 12500 次迭代保存一次 teacher 权重可用 dinov2/run/eval/ 下的脚本抽查中间检查点。注意训练脚本通过 submitit 提交到 SLURM 集群单机用户建议先用torch.hub的预训练权重如 ViT-B/14ImageNet 线性评估 top-1 为 84.5%做实验。生物影像用户看这里。仓库附带 Cell-DINO 与 Channel-Adaptive DINO 两个扩展代码在 dinov2/hub/cell_dino/ 与 dinov2/eval/cell_dino/仅限科研用途面向细胞荧光显微镜图像的自监督特征提取更多细节建议阅读 MODEL_CARD.md 中的模型卡与许可说明深度估计和语义分割用法可参考 notebooks/ 下的示例。【免费下载链接】dinov2PyTorch code and models for the DINOv2 self-supervised learning method.项目地址: https://gitcode.com/GitHub_Trending/di/dinov2创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
