You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法在Streamlit中加载YOLOv5模型,报PosixPath实例化失败错误

解决Streamlit中加载YOLOv5模型的PosixPath报错问题

以下是经过验证的有效解决方案,按优先级尝试:

  • 提前全局替换Path类型(关键:导入顺序)
    把这段代码放在所有导入语句的最开头,确保在加载torch或YOLOv5相关模块前完成替换:

    import pathlib
    # 根据系统自动适配Path类型
    if pathlib.os.name == 'nt':  # Windows系统
        pathlib.PosixPath = pathlib.WindowsPath
    

    之前的替换可能因为执行时机太晚(比如已经导入了torch.hub相关模块)而失效,提前执行才能覆盖所有路径解析逻辑。

  • 绕过torch.hub,直接从YOLOv5仓库加载模型
    完全避开torch.hub的路径处理问题,直接用官方提供的加载方式:

    1. 先克隆本地YOLOv5仓库并安装依赖:
      git clone https://github.com/ultralytics/yolov5.git
      cd yolov5
      pip install -r requirements.txt
      
    2. 在Streamlit脚本中加载:
      import sys
      import torch
      # 将YOLOv5目录加入系统路径
      sys.path.insert(0, './yolov5')
      from models.common import DetectMultiBackend
      
      # 加载模型,device可根据GPU情况调整
      model = DetectMultiBackend(weights='./best.pt', device=torch.device('cuda' if torch.cuda.is_available() else 'cpu'))
      
  • 使用绝对路径加载模型
    避免相对路径在不同环境下的解析误差,把模型路径转为绝对路径:

    import os
    import torch
    
    # 获取模型绝对路径
    model_abs_path = os.path.abspath('./best.pt')
    model = torch.hub.load('ultralytics/yolov5', 'custom', path=model_abs_path, force_reload=True)
    

内容的提问来源于stack exchange,提问作者Mahdi Hammi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 01:43:10