torch.hub.load()在.py文件报错,Notebook正常的解决办法
问题解决:Python脚本中torch.hub.load加载YOLOv5模型报网络错误
你遇到的情况是:Notebook里能正常加载自定义YOLOv5模型,但迁移到.py脚本运行时,torch.hub.load触发网络请求相关报错,且两者环境一致。从报错栈来看,问题出在torch.hub验证仓库是否为fork的步骤中,网络请求失败导致加载中断。
以下是几种直接有效的解决方法:
方法1:跳过仓库验证步骤
在调用torch.hub.load时添加trust_repo=True参数,直接跳过仓库合法性验证的网络请求环节。修改后的代码如下:
def load_model(self): # Load the YOLOv5 model self._model = torch.hub.load( 'ultralytics/yolov5', 'custom', path='/Users/marco.vinciguerra/Bitbucket/sam/segmentator_proposal/classes/models/Yolov5l6_ti_lite_640/best.pt', force_reload=True, trust_repo=True # 添加此参数跳过验证 )
方法2:使用本地YOLOv5仓库加载
如果你已经在本地克隆了ultralytics/yolov5仓库,直接传入本地仓库路径给torch.hub.load,并指定source='local',完全避免远程网络交互:
def load_model(self): # Load the YOLOv5 model from local repo self._model = torch.hub.load( '/path/to/your/local/yolov5', # 替换为你本地yolov5仓库的实际路径 'custom', path='/Users/marco.vinciguerra/Bitbucket/sam/segmentator_proposal/classes/models/Yolov5l6_ti_lite_640/best.pt', source='local' )
方法3:复用Notebook中的缓存
torch.hub会把下载的仓库缓存到~/.cache/torch/hub目录下,Notebook运行后该目录应该已经有ultralytics_yolov5的缓存文件夹。你可以检查该目录的权限,确保脚本运行用户有读取权限;或者复制Notebook环境的缓存到脚本运行环境的对应路径下,这样脚本加载时会直接使用缓存,无需发起网络请求。
内容的提问来源于stack exchange,提问作者Marco Vinciguerra
相关产品推荐
相关产品推荐

