yolo等机器学习项目移动到其他项目时报的“No module named ‘models‘”错误的一种解决方法

前言

我在项目中要将yolov5放入到项目中运行,但出现了标题描述的问题,我找了很久,终于在yolov5的github里的问题讨论处找到了解决方案,里面有很详细的讨论,也应该还有我这里没提到的解决方案,或者是更加详细的解决方案,感兴趣的可以去康康,我就把解决了我问题的答案分享给大家

链接: https://github.com/ultralytics/yolov5/issues/22
.

问题简述

当我们尝试把yolo等已有的机器学习项目移植到我们的项目中时,在解决了一系列导包问题并终于看到开始运行的时候,有可能会报出“No module named ‘models’”的Error。

当前项目的解决方法

在报错的文件的开头加上

import sys
sys.path.insert(0, "path/to/your/MLProject")

insert里填的就是机器学习项目的路径,比如我的例子里,我在我的Django_projects项目里移植了yolov5的项目,并将其项目文件夹命名为yolov5Dir,而我报错的文件时yolov5Dir/models文件夹下的experimental.py,我就在他的开头加上了

import sys
sys.path.insert(0, "Django_projects\yolov5Dir")

之后,便解决了问题

根源解决制作的机器学习项目移植问题

这是因为模型在保存的时候可以使用torch提供的两种方式。
yolo等机器学习项目移动到其他项目时报的“No module named ‘models‘”错误的一种解决方法_第1张图片

第一种是torch官方推荐的方式,也就是仅对模型的参数进行操作,这样移植起来非常的方便

torch.save(the_model.state_dict(),PATH)

第二种的话是针对整个模型,训练时会将本地的class和目录结构都放到模型里,而现在很多的开源模型都是这样保存的

model = ModelClass(*args,**kwargs)
model.load_state_dict(torch.load(PATH))

所以可以考虑使用第一种来进行模型的保存

你可能感兴趣的:(机器学习,后端,python,机器学习,深度学习,人工智能)