【土堆】手把手带你解决 YOLOv5 运行 train.py 文件时遇到的问题 AttributeError: module ‘distutils‘ & RuntimeError & ...

目录

前言

一、关于 torch 的版本问题

二、关于 AttributeError: module 'distutils' has no attribute 'version'

三、关于 unzip 失败的问题  

四、关于 OMP: Error #15: Initializing libiomp5md.dll, but found ...

五、关于 RuntimeError: CUDA out of memory. 

六、运行 YOLOv5 的 train.py 文件

补充:运行 detect.py 发现图片无法识别

最后说些话


前言

这篇文章记录了我在运行 YOLOv5 train.py 文件时遇到的一系列问题以及相应的解决方式,如果有小伙伴看过我的前几篇文章,应该知道我之前为了能够成功运行 YOLOv5 的 detect.py 文件,将 torch 和 torchvision 降级了,版本如下图所示,不仅导致 torch 和部分包的版本不兼容,而且还不能进行 GPU 训练了!所以在这篇文章中,我将 torch torchvision 等包重装了,现在不仅能成功运行 train.py 文件,而且又可以进行 GPU 训练啦~我的解决方式可能并非适用于所有人,希望能够为大家提供一些解决思路!

【补充】为了让大家提前知道我重新装包的版本,我先在这里贴张装包成功后的图~大家可以根据自己电脑安装合适的版本!因为我电脑的 CUDA  只支持 11.6 以前的版本,所以我选择的是 PyTorch 官网提供的 CUDA 为 11.1 的 pip install 语句(后面细讲)。

 

一、关于 torch 的版本问题

因为后面学习的视频教程中需要用到 GPU 训练,所以我打算重装 torch ,具体操作如下:

【操作1】在命令行窗口输入 nvidia-smi 命令查看电脑是否支持 CUDA 以及 CUDA 的版本,我电脑支持的 CUDA 版本为 11.6 以前。

【操作2】根据是否支持 CUDA 以及 CUDA 的版本,在 PyTorch 官网复制对应的安装语句:

pip install torch==1.9.1+cu111 torchvision==0.10.1+cu111 torchaudio==0.9.1 -f https://download.pytorch.org/whl/torch_stable.html

在进行这步操作的时候,我因为懒惰只重装了 torch ,结果就导致 torchaudio 的版本与 torch 不匹配,报错如下:

于是我又将 torchvision 和 torchaudio 都重装了 torch 的对应版本,建议大家直接运行官网提供的安装语句,这样它们仨整整齐齐的!

【操作3】在 PyCharm 的 Python Console 中 import torch ,若无报错则说明 PyTorch 安装成功,然后再输入 torch.cuda.is_available() 命令查看输出,若为 True 则说明电脑有可供 PyTorch 调用的 GPU 。

 

二、关于 AttributeError: module 'distutils' has no attribute 'version'

在确保 torch ,torchvision 和 torchaudio 都重装成功后,我再次运行了 YOLOv5 的 train.by 文件,却出现了 AttributeError 报错,如下图所示,这是因为 setuptools 包版本过高,需要降低其版本,具体操作我参考了知乎的这篇文章:

AttributeError: module ‘distutils‘ has no attribute ‘version‘ 解决方案 - 知乎参考链接: (37条消息) AttributeError: module ‘distutils‘ has no attribute ‘version‘ 解决方案_indigo love的博客-CSDN博客 错误的提示: AttributeError: module 'distutils' has no attribute &…icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/556704117?utm_id=0

【补充】为了让公主王子们能够免去看这篇文章的时间,我将文章推荐运行的命令贴在下面啦~ pip 和 conda 二者取其一即可!

pip install setuptools==58.0.4
conda install setuptools==58.0.4

安装 setuptools-58.0.4 后,我们再次运行 train.py 文件,这时可以看到 AttributeError 报错已经解决了,并且运行显示 YOLOv5 使用了我们重装后的 torch 版本 torch 1.9.1+cu111

【补充】wandb 是用于机器学习的开发工具,大家可以自行去【wandb官网】了解哟~(建议使用 Google 浏览器打开)

三、关于 unzip 失败的问题  

解决了 AttributeError 报错问题后,我们再再再次运行 train.py 文件,coco128 数据集将自动进行下载,然后项目文件的根目录中就会出现 coco128.zip 压缩包,接着就出现了 unzip 失败的报错问题,具体如下图所示。

关于这个问题,我参考了视频教程的评论区,只需将 coco128.zip 解压到 coco128 文件夹,再将其放在项目文件夹的同一目录下即可。

 

四、关于 OMP: Error #15: Initializing libiomp5md.dll, but found ...

报错~问题~无穷尽也!关于这个问题,我也参考了视频教程的评论区,在 train.py 文件中补充以下代码即可:

import os
os.environ['KMP_DUPLICATE_LIB_OK'] = 'TRUE'

 

五、关于 RuntimeError: CUDA out of memory. 

这应该是我运行 train.py 文件遇到的最后一个问题啦!大家要先打开自己的任务管理器,在性能页面查看自己的 GPU 信息,如下图所示,我电脑中有 NVIDIA 的只有 GPU1,因此我在 train.py 文件中补充了以下代码:

import os
os.environ['CUDA_VISIBLE_DEVICES'] = "1"

六、运行 YOLOv5 的 train.py 文件

解决上面所有问题后,我们的 train.py 文件就可以成功地跑起来啦~ 

补充:运行 detect.py 发现图片无法识别

文章进行到这里,你以为已经结束了吗!并没有噢!在尝试运行 train.py 文件的过程中,我出于某种好奇心理,又去运行了 detect.py 文件,结果发现!输出的图片又没有标注框啦!图片居然又无法识别/(ㄒoㄒ)/~~于是我又去翻了视频教程的评论区,发现可以用这个方式解决:将 cudnn.benchmark = True 这一行剪切到 if webcam: 的上一行。具体如下图所示:

最后说些话

其实作者最近在整理《目标检测 YOLOv5 开源项目入门实战》的第二篇文章,但是在跟着土堆的视频教程学习的过程中,总是难免会遇到一些配置问题或者其他问题,所以进度就会比较缓慢,但是通过这次问题解决的经历,我明白了该重装时就重装!不要因为担心重装会带来更多问题而逃避重装,有时候重装合适的版本会让你少走很多弯路!最后希望王子公主们学习顺利!工作顺利!

 

  • 21
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

作者正在煮茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值