栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Python

使用YOLOv5训练模型,遇到报错OS error:[winerror 1455]的解决方法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用YOLOv5训练模型,遇到报错OS error:[winerror 1455]的解决方法

使用软件:VSC2021
GPU:GTX1650
cuda版本:11.1
  学着自己用yolov5模型跑自己的数据集,顺便学习一下深度学习的知识。在对自己第一个数据集训练时一切正常,但是结果不同就想着新弄个数据集训练,但是对再对新的数据集训练的时候,无论怎么调试,都在train.py的import torch处报错:[winerror 1455],已经牢牢记住这个数字了,于是写一篇文章记录一下处理这个报错的过程。
  上网查了一些方法,但是可能是我的电脑的问题,最常见的三种方法对我而言没有作用。

常见的三种方法

常见的三种方法

方法一:重启电脑和IDLE

  相当于清一下当前的RAM了,怕有什么大的程序在偷摸运行使得RAM很小从而报错,但是在运行程序的时候实际上我是只打开了VSC,和预想的一样,这个方法没能解决问题。

方法二:修改dataloaders.py中的一个参数

  我的yolov5文件目录结构如下图:
  这个方法是在utils/dataloaders.py中,修改num_works参数为0,大概在140+行处,如下图。
  结果是仍然报错。

方法三:给磁盘分配虚拟内存

  操作步骤如上面所给的文章链接一样,我的anaconda安装于D盘,我给了D盘10240MB,但是还是没有用。

之后就是疯狂被折磨,一运行程序内存就爆掉然后电脑卡住,非常无语。期间我还试着调整训练时图片大小、batch-size、epoch等参数,也都没有作用。

新的发现

  对新的数据集训练完全训练不了后,我试着对原来那个训练结果不好的数据集训练,发现竟然可以成功运行!这是令我感到非常奇怪的,于是我开始观察两个数据集之间的不同,发现了两点:①数据量不同,②原来的数据集有.cache文件而新的没有。于是冲着这两个方向去求解。
①数据量不同
  通过对新旧数据集的调整(主要是对新数据集的删除),我把两个数据集的图片数量调整到差不多,然后满怀期望地尝试,然后结果还是不行,依然报错,依然内存爆掉。于是看第二个方向。
②.cache文件
  关于cache,这个似乎是加速数据读取的一个缓存文件。新旧数据集文件中第二个不同就是一个有(旧的),一个没有(新的)这个文件,但是怎么去创建.cache文件咱也不会(我是小菜鸡一个),就上网寻找关于.cache文件的解决方法,终于找到了一篇文章。
成功解决问题的文章

问题的解决

  在文中,我看到了关于cache文件的处理方法,于是学着文中给的步骤去操作。对yolov5文件目录下的utils/general.py文件参数进行修改。大概在40+行处,将NUM_THREADS参数一行(如下图,但是将8改为1),修改为NUM_THREADS=min(1,max(1,os.cpu_count()-1),在提示创建好.cache文件后,终止程序,再改回8然后再重新运行。
以及在训练模型的代码train.py中,找到workers项,将其修改为0(如下图)。这个改成0后不用改回去。
  然后,运行train.py程序,程序加载yolov5模型参数,然后在得到如下图所示的提示(黄色箭头处)后,可以终止程序(我这里是用的F5调试做的,方便暂停和终止)。这个时候到相应的文件目录下面看,就会发现相应的cache文件已经创建了,然后再把general.py文件的参数调回去(其他的我没调),再重新运行程序就可以了。

补充:VSC快速寻找参数的方法

  在VSC打开文件夹后,如果我们需要查找参数变化、定义的位置,可以如下图所示查找(左侧栏的放大镜图标,点击后输入参数名字搜索即可)。

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1037335.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号