加载Yolov7模型时遇ModuleNotFoundError错误,求解决方案
解决方案
1. 明确导入Yolov7专属的模型加载函数
问题根源是Python的模块导入优先级:你同时将yolov5和yolov7目录加入了sys.path,直接调用attempt_load时会优先加载Yolov5版本的函数,而Yolov5的attempt_load依赖的utils.google_utils模块在Yolov7的目录结构中不存在。
解决方式是指定从Yolov7的模块导入加载函数,替换原有的模型加载代码:
# 明确导入Yolov7的attempt_load from yolov7.utils.torch_utils import attempt_load model = attempt_load('model/yolov7.pt', map_location=torch.device('cpu')) print(model)
2. 修正sys.path配置中的注释错误(建议)
你的代码中添加yolov5路径时注释有误,修正后可避免后续维护混淆:
FILE = Path(__file__).resolve() ROOT = FILE.parents[0] WEIGHTS = ROOT / 'weights' if str(ROOT) not in sys.path: sys.path.append(str(ROOT)) # add project root to PATH if str(ROOT / 'yolov5') not in sys.path: sys.path.append(str(ROOT / 'yolov5')) # add yolov5 root to PATH if str(ROOT / 'yolov7') not in sys.path: sys.path.append(str(ROOT / 'yolov7')) # add yolov7 root to PATH if str(ROOT / 'strong_sort') not in sys.path: sys.path.append(str(ROOT / 'strong_sort')) # add strong_sort root to PATH ROOT = Path(os.path.relpath(ROOT, Path.cwd())) # relative path
3. 验证Yolov7目录完整性
确认你的yolov7目录下存在utils/torch_utils.py文件,且该文件包含attempt_load函数;同时确保yolov7/utils目录下有完整的依赖模块(Yolov7通常用utils.downloads替代Yolov5的utils.google_utils)。
内容的提问来源于stack exchange,提问作者Nguyễn Công Trí
相关产品推荐
相关产品推荐

