PyTorch从2.5.1升级到2.6.0后加载YOLOv5模型失败求助
解决PyTorch 2.6.0升级后YOLOv5权重加载失败问题
核心原因
PyTorch 2.6.0对模型权重加载的API做了细微调整,旧版本YOLOv5的torch.hub.load逻辑未适配该变化,导致权重加载失败及后续异常。
具体解决步骤
1. 手动修改YOLOv5加载逻辑(推荐)
打开本地YOLOv5仓库的hubconf.py文件,找到custom函数,替换权重加载代码:
def custom(path='path/to/model.pt', source='local', device='cpu', force_reload=False): # 保留原函数其他逻辑,替换权重加载部分 from models.yolo import Model import yaml import torch device = torch.device(device) # 加载对应配置文件 cfg_path = path.replace('.pt', '.yaml') with open(cfg_path, 'r') as f: cfg = yaml.safe_load(f) # 手动构建模型 model = Model(cfg=cfg, ch=3, nc=cfg['nc']) # 加载权重参数 ckpt = torch.load(path, map_location=device) model.load_state_dict(ckpt['model'].float().state_dict()) model.to(device).eval() return model
修改后重新运行加载代码,绕开torch.hub的自动适配逻辑,手动完成模型构建与权重加载。
2. 更新YOLOv5到兼容版本
切换本地YOLOv5仓库到官方最新稳定分支,已修复PyTorch 2.6.0兼容问题:
cd /path/to/your/yolov5 git pull origin master git checkout tags/v7.0 # 可替换为最新兼容标签
3. 临时回退PyTorch版本
若上述方法无法快速生效,回退到PyTorch 2.5.1保证业务运行:
pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cu121
注意根据本地CUDA版本调整--index-url参数(如cu118对应https://download.pytorch.org/whl/cu118)。
排查'str' object has no attribute '__module__'异常
该异常通常由路径错误或配置缺失导致:
- 确认
yolomodelpath是有效权重文件路径,文件存在且无拼写错误 - 确保权重文件对应的.yaml配置文件与权重文件同目录、同名(如
best.pt对应best.yaml) - 检查
yolov5path指向YOLOv5仓库根目录,而非子文件夹
内容的提问来源于stack exchange,提问作者user3734568
相关产品推荐
相关产品推荐

