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

使用软件:VSC2021
GPU:GTX1650
cuda版本:11.1
  学着自己用yolov5模型跑自己的数据集,顺便学习一下深度学习的知识。在对自己第一个数据集训练时一切正常,但是结果不同就想着新弄个数据集训练,但是对再对新的数据集训练的时候,无论怎么调试,都在train.pyimport 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打开文件夹后,如果我们需要查找参数变化、定义的位置,可以如下图所示查找(左侧栏的放大镜图标,点击后输入参数名字搜索即可)。
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值