ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

DINOv3 实战:从 clone 仓库到拿到密集特征,只需改对 3 个参数

DINOv3 实战:从 clone 仓库到拿到密集特征,只需改对 3 个参数 DINOv3 实战从 clone 仓库到拿到密集特征只需改对 3 个参数【免费下载链接】dinov3Reference PyTorch implementation and models for DINOv3项目地址: https://gitcode.com/GitHub_Trending/di/dinov3DINOv3 是 Meta AI Research 自监督视觉基础模型的参考 PyTorch 实现clone 完仓库后 4 行代码即可初始化 ViT 骨干。下面只讲第一次接入时真正会卡住你的 4 件事装依赖、传权重、配归一化、取对特征接口。装环境只有 PyTorch 是硬依赖这一节解决装什么。加载模型只依赖 PyTorch训练和评估代码才要求 2.7.1 以上版本并引入额外包见 requirements.txt。pip install torch torchvision # 建议带 CUDA git clone https://gitcode.com/GitHub_Trending/di/dinov3加载模型weights 参数决定权重从哪来这一节解决权重怎么传。DINOv3 的权重需先通过官方渠道申请获取torch.hub.load的weights参数既可传下载 URL也可传本地.pth路径两条路径用同一套代码。import torch REPO_DIR /path/to/dinov3 weights /data/checkpoints/dinov3_vitb16_pretrain_lvd1689m.pth # 或下载 URL model torch.hub.load(REPO_DIR, dinov3_vitb16, sourcelocal, weightsweights) model.eval()选哪个骨干看下表参数量与官方入口名骨干参数量预训练数据hub 入口名ViT-S/1621MLVD-1689Mdinov3_vits16ViT-S/1629MLVD-1689Mdinov3_vits16plusViT-B/1686MLVD-1689Mdinov3_vitb16ViT-L/16300MLVD-1689Mdinov3_vitl16ViT-H/16840MLVD-1689Mdinov3_vith16plusViT-7B/166,716MLVD-1689Mdinov3_vit7b16ConvNeXt T/S/B/L29/50/89/198MLVD-1689Mdinov3_convnext_tiny 等另有在卫星影像 SAT-493M 上预训练的 ViT-L/16 与 ViT-7B/16入口名相同换weights即可。处理输入两套归一化参数对应两套权重这一节解决预处理配错。不同预训练数据对应不同的归一化常数混用会直接拉低下游指标而症状往往只是特征质量变差很难定位from torchvision.transforms import v2 import torch # LVD-1689M网络图片权重 transform v2.Compose([ v2.Resize((256, 256), antialiasTrue), v2.ToDtype(torch.float32, scaleTrue), v2.Normalize(mean(0.485, 0.456, 0.406), std(0.229, 0.224, 0.225)), ]) # SAT-493M卫星权重则换为 # v2.Normalize(mean(0.430, 0.411, 0.296), std(0.213, 0.156, 0.143))提取特征forward 只出 CLS 向量密集特征走另一个接口这一节解决输出维度不对。直接调用model(x)时forward内部只返回 CLS token经 Identity head形状是(B, 768)要拿每个 patch 的密集特征必须改调get_intermediate_layers并打开reshapex transform(image).unsqueeze(0) # (1, 3, 256, 256) with torch.no_grad(): cls model(x) # (1, 768) 全局特征 patches model.get_intermediate_layers(x, n1, reshapeTrue) # patches[0]: (1, 768, 16, 16) 密集特征256 输入 / 16 patch 16x16 网格特征通道数随骨干不同ViT-S 384、ViT-B 768、ViT-L 1024其余见 dinov3/models/vision_transformer.py 中的各 vit_* 工厂函数。排查问题离线机器、维度不符与下游评测这一节收拢三类最常见的坑离线环境先用wget把权重下到本地磁盘官方明确要求不要用浏览器下载再把weights指向本地.pth即可加载代码不用改。维度对不上确认输入经过 256 归一化变换且密集特征用了reshapeTruen参数控制取最后几个 block 的输出。接下游任务线性探测入口在 dinov3/eval/linear.py语义分割ADE20K与目标检测的完整评测脚本分别在 dinov3/eval/segmentation/ 和 dinov3/eval/detection/。参考基线ViT-L/16 在 ImageNet-1k 线性评测为 83.5%。查阅下一步资源资源位置骨干模型定义dinov3/models/vision_transformer.py线性评测脚本dinov3/eval/linear.py训练配置dinov3/configs/train/【免费下载链接】dinov3Reference PyTorch implementation and models for DINOv3项目地址: https://gitcode.com/GitHub_Trending/di/dinov3创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表