ModuleNotFoundError: No module named ‘models‘解决torch.load错误[yolo训练],已解决。

网上检索一遍,整理答案但都没解决,末尾已解决

答案一:当使用torch.load时,报错No module named 'models'
在网上查了很多资料说目录结构得和保存时一模一样,话虽如此,但一直没理解要如何一样

因为我是用detect.py调用yolov5的best.pt模型,该模型被自动保存在runs/train/exp/weights/下,但即便改成了这样,还是报同样的错

最后调试发现,No module named 'models'报错说没有models,确实是因为没有才报错的。我用的是ultralytics的yolov5,其结构目录如下

可以看到,里面真的有两个module:utils和models,即便把detect.py里修改得没有引用这两个module里任何py文件,但在torch.load模型时,还是得把这两个module放在和detect.py同一路径,而.pt模型在哪里都无所谓,最终解决这个bug。

原回答在此处-此贴讨论可看

答案二:

最近整理了下我之前github上传的一个人脸识别项目,然后把一些组件稍微整理了一下。
还有就是最近在玩一个手势检测的项目,也用到了yoloV5的源码。但在加载模型torch.load()的时候就出现了ModuleNotFoundError: No module named 'models'这个问题。

也有粉丝跟我反馈说出现了这个问题。如下图。(因为之前上传的时候,我是在pycharm设置了yoloV5文件夹为根目录的操作,才不会报错。)
 

另一个问题就是出现了 'XX' object has no attribute 'inplace',的问题;如下:torch.nn.modules.module.ModuleAttributeError: 'Hardswish' object has no attribute 'inplace'(这两个基本是同一问题)

问题一:ModuleNotFoundError: No module named 'models'
这个问题我也通过百度&谷歌找了文章,都没有很好的解释。在yoloV5官方github下的issue里面有一个解释最清晰的是:https://github.com/ultralytics/yolov5/issues/353

原因大概就是,yoloV5我们在训练train.py完后是这样保存权重的。torch.save(model, PATH)

这样的方式保存的权重包,会将你模型的源代码的相对位置也默认保存(这里指yolov5里面的models文件夹和utils文件夹)。如下这个默认路径,所以使用torch.load() 的时候也要保持这个路径。例如你运行detect.py 也是符合这个路径的。

yolov5-master
models
utils
train.py
detect.py
而在我那个人脸识别源码里面,我把路径改变成了如下。

yoloV5-arcface_forlearn
yoloV5_face
models
utils
main.py
因此我在main.py里面加载模型的时候就会出错。

解决方案:

这里我使用的解决方案是,将我上面这个路径下的,yoloV5_face也设置为根目录。

import sys
sys.path.append("./yoloV5_face")

这里还有其他几种方案,不过我没去尝试。一种是说直接保存模型权重的参数值,然后再加载模型,加载权重包。一种是说保存为jit / onnx格式。这两种应该是相同的方法。
还有一种如下加载。

model = torch.hub.load('ultralytics/yolov5', 'custom', path_or_model='yolov5s_voc_best.pt')

其实问题都是归于模型路径设计torch更新后的问题,此完整回答可看此处点击此处

答案三:

抛开拼写错误等原因,我报错场景是配置行的yolo网络时出现   

from models.yolox import DetectX, DetectYoloX
ModuleNotFoundError: No module named 'models'错误,原因还是因为模块目录导致,

解决方法:在当前目录中__init__.py中(一般是空的)下,导入你想要的模块

from models.yolox import DetectX, DetectYoloX

解决问题。成功导入模块,打印模型。

  • 26
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值