如何下载 XRay-DINO 权重并加载 xray_dino_vitl16 骨干模型?
【免费下载链接】dinov2PyTorch code and models for the DINOv2 self-supervised learning method.项目地址: https://gitcode.com/GitHub_Trending/di/dinov2
DINOv2 仓库在 2025-12-18 新增了对 XRay-DINO 骨干的加载支持(见 README.md 顶部的更新日志),对应的 hub 入口是xray_dino_vitl16。与其他 DINOv2 预训练模型不同,XRay-DINO 权重不放在公开直链上,你需要先到官方页面提交申请,通过邮件拿到临时下载链接,再用torch.hub.load从本地克隆的仓库加载模型。加载模型本身只依赖 PyTorch(hubconf.py 中dependencies = ["torch"]),不需要仓库里训练/评测代码那套 conda 环境。
准备:安装 PyTorch 并克隆仓库
按 README.md 的说明,加载模型的唯一必需依赖是 PyTorch,README 建议安装带 CUDA 支持的版本。
由于加载方式使用source='local',你必须先把仓库克隆到本地。xray_dino_vitl16这个入口由仓库根目录的 hubconf.py 声明(第 10 行from dinov2.hub.xray_dino.backbones import xray_dino_vitl16),模型实现位于 dinov2/hub/xray_dino/backbones.py:
git clone https://gitcode.com/GitHub_Trending/di/dinov2克隆完成后,记住这个目录的绝对路径,后文记为REPO_DIR。
申请并下载 XRay-DINO 权重
XRay-DINO 权重的申请入口是(README 给出的地址):
https://ai.meta.com/resources/models-and-libraries/raydino-downloads/在该页面填写申请表格后,你会收到一封包含临时链接(temporary link)的邮件。README 给出了两种使用方式,二者等价:
- 用
wget把权重下载到本地文件系统,然后把本地文件路径传给加载代码。README 明确建议用wget而不是浏览器下载(这一点在仓库生物学相关模型章节中再次强调)。 - 不落地下载,直接把邮件里的 URL 传给加载代码,加载时由
torch.hub在线拉取。
第一种方式在拿到临时链接后执行(把尖括号内容替换为邮件中的实际链接):
wget <邮件中的临时链接>下载完成后记下.pth文件的完整路径。注意该链接是申请下发的临时链接,是否长期有效以邮件内容为准,文档未说明有效期。
用 torch.hub.load 加载 xray_dino_vitl16
README「Pretrained backbone: XRay-DINO」小节给出的加载代码如下。代码中有两个占位符,加载前必须替换:
REPO_DIR:上面克隆下来的 dinov2 仓库的本地目录路径;weights:二选一——wget下载后的本地 checkpoint 文件路径,或邮件中的临时 URL。
import torch REPO_DIR = <PATH/TO/A/LOCAL/DIRECTORY/WHERE/THE/DINOV2/REPO/WAS/CLONED> xray_dino_vitl16 = torch.hub.load(REPO_DIR, 'xray_dino_vitl16', source='local', weights=<CHECKPOINT/URL/OR/PATH>)关于weights参数,dinov2/hub/backbones.py 的_make_dinov2_model有两种处理分支:字符串形式的 URL(https/filescheme)被直接使用,本地路径会被convert_path_or_url_to_url转换成file://URL 再加载。也就是说,传本地路径和传 URL 走的是同一条加载逻辑。
有一点容易踩坑:xray_dino_vitl16的weights参数默认值是枚举Weights.XRAY_DINO,而实现里当weights是枚举时,下载 URL 会从 DINOv2 公开目录(dinov2/hub/utils.py 中的_DINOV2_BASE_URL)拼装出来,并不指向 XRay-DINO 的权重文件。XRay-DINO 权重不在那个公开目录里,所以务必按 README 示例显式传入字符串形式的 URL 或本地路径,不要依赖默认值。
验证加载结果
加载过程自带校验,不需要额外写检查代码。dinov2/hub/xray_dino/backbones.py 中该入口写死了两个条件:
hash="ad31c2b0", check_hash=True,hubconf.py 引用的_make_dinov2_model会用torch.hub.load_state_dict_from_url(url, map_location="cpu", check_hash=check_hash)拉取权重并做 md5 哈希校验,再以model.load_state_dict(state_dict, strict=True)严格加载。因此:
- 权重哈希与
ad31c2b0不一致(文件损坏、下载不完整、或拿错了别的模型的 checkpoint)时,加载会在哈希校验处报错; - 权重参数结构与模型不匹配时,
strict=True会直接报错,不会静默跳过缺失或多余的参数; - 两步都通过时,
xray_dino_vitl16变量就是加载完成的模型实例,可直接用于后续前向。
从实现可以看出该模型的固定配置:vit_large架构、patch_size=16、img_size=512、num_register_tokens=0、block_chunks=4(dinov2/hub/xray_dino/backbones.py)。
许可与使用范围
README 说明 XRay-DINO 模型权重在FAIR Noncommercial Research License下发布,完整条款见 LICENSE_XRAY_DINO_MODEL。其中的关键限制:仅限非商业研究用途;明确禁止将材料或其输出用于提供医疗建议或任何临床目的、医疗流程(材料未获 FDA 审查或批准);分发权重时须随附该协议副本。如果你的用途超出非商业研究,在下载和加载之前先确认许可条款。
另外注意边界:本仓库「Installation」一节的conda.yaml/requirements.txt环境(PyTorch 2.0、xFormers 0.0.18 等)是针对训练和评测代码的;只加载xray_dino_vitl16骨干不需要这套环境,PyTorch 即可。
【免费下载链接】dinov2PyTorch code and models for the DINOv2 self-supervised learning method.项目地址: https://gitcode.com/GitHub_Trending/di/dinov2
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考