yolov5 算法环境(GPU CPU)搭建与使用(windows环境)

文章目录

  • 前言
  • 前提说明
  • 一、环境搭建
    • 1.1、GPU环境
      • Anaconda安装
      • CUDA安装
      • CUDNN安装(可不装,加速深度学习用途)
  • 二、项目启动
    • 2.1、构建yolov5环境
    • 2.2、实战深度学习预测
      • 示例1:预测图片
      • 示例2:预测视频
      • 上面案例过程中的问题
        • 1、CUDA不匹配当前GPU的版本(卸载重装)
        • 2、重新安装pyotrch版本
    • 2.3、训练模型YOLOv5神经网络
      • 案例1:训练官方提供的数据集
        • 直接运行可能碰到的问题解决方案
          • 问题1、出现从github上下载的情况,速度特别慢
          • 问题2:'distutils' has no attribute 'version'
          • 问题3:variable KMP_DUPLICATE_LIB_OK=TRUE
          • 问题4:RuntimeError: DataLoader worker (pid(s) 12332) exited unexpectedly
        • 实际训练模型
      • 案例2:本地训练自己的数据集
        • 1、准备图片以及标注数据
        • 2、编写对应的训练配置文件
        • 3、训练模型
        • 4、进行预测
      • 云端GPU训练
  • 参考资料

前言

视频、文档(主要学习):

  • 目标检测 YOLOv5 开源代码项目调试与讲解实战【土堆 x 布尔艺数】
  • 【动手学深度学习(一)】Yolov5环境配置教程

所有博客文件目录索引:博客目录索引(持续更新)

前提说明

资源(需要自取):

# cuda11.1、11.0、10.2、10.1、10.0、8.0
链接:https://pan.baidu.com/s/1zA6-OEDNT8RPVJwCKarnKg  提取码:qrqy

在后面的步骤中进行构建GPU环境需要使用到CUDA、CUDNN(前者是能够辅助使用显卡进行并行计算的,后者是专门用于深度神经网络的SDK库来加速深度学习的速度的),以及对应CUDA的一个库pytorch库,一定要确定好版本后来进行安装。

确认版本的顺序:确认CUDA版本 -> 根据CUDA确认CUDNN、pytorch版本,下面是来确认自己的电脑硬件相匹配的各个版本信息!(若是无GPU的,无需下载CUDA)

我当前的电脑是RTX 3060,各个版本如下:

CUDA:11.1.0
CUDNN:11.2
# pytorch
pip --default-timeout=1000 install torch==1.9.0+cu111 torchvision==0.10.0+cu111 torchaudio==0.9.0 -f https://download.pytorch.org/whl/torch_stable.html

确定CUDA、CUDNN、pytorch版本

如何确定CUDA版本?

打开cmd,输入命令:nvidia-smi

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第1张图片

  • 也可参考:【Windows11】Cuda和Cudnn详细安装教程,两种方式

如何确定CUDNN版本?

进入官网来进行选择:cudnn-archive

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第2张图片

如何确定pytorch?

方式一:在官网pytorch直接全文搜索对应CUDA的版本号,找到匹配的即可。

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第3张图片

方式二:暴力,直接百度搜索CUDA版本号匹配的pytorch命令,直接安装(我之前是按照方式一然后下载发现依赖相关有报错说找不到对应版本的,然后就百度搜了一个)。

一、环境搭建

1.1、GPU环境

Anaconda安装

安装见:Anaconda使用指南


CUDA安装

Pytorch的最终目标是什么?毫无疑问,我们是用它来进行深度学习训练和推理,深度学习本质上就是训练深度卷积神经网络。尽管我们已经可以用cuda使得显卡来完成并行计算任务,但是所有的操作还是比较底层的、复杂的。是否在cuda之上有一个专门用于深度神经网络的SDK库来加速完成相关特定的深度学习操作,答案就是cudnn。

NVIDIA cuDNN是用于深度神经网络的GPU加速库。它强调性能、易用性和低内存开销。NVIDIA cuDNN可以集成到更高级别的机器学习框架中,如caffe、tensorflow、pytorch、mxnet等。cudnn简单的插入式设计可以让开发人员专注于设计和实现神经网络模型,而不是调整性能,同时还可以在GPU上实现高性能现代并行计算。

安装 CUDA(显卡驱动):版本为10.2

下载网址:CUDA Toolkit 10.2 Download

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第4张图片

# cuda_10.2.89_441.22_win10.exe
链接:https://pan.baidu.com/s/1NlX41r0AntHz9d55etRNag 
提取码:uu47 

安装过程就是不断点击下一步即可。

CUDNN安装(可不装,加速深度学习用途)

步骤一:查看我cuda11.1对应cudnn版本:cudnn-archive

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第5张图片

步骤二:注册登录下即可下载。

【Windows11】Cuda和Cudnn详细安装教程

下载完后进行解压:

image-20220830160548383

链接:https://pan.baidu.com/s/170B68IhXHqu6MKhmCNHMXA 
提取码:7k6w 

步骤三:找到CUDA的安装目录,然后将解压后三个文件夹覆盖原本CUDA安装目录下的三个文件即可

  • 我的文件目录:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第6张图片

二、项目启动

2.1、构建yolov5环境

准备操作(构建yolov5环境)

接着开始yolov5的源代码:github-yolov5

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第7张图片

# yolov5-5.0
链接:https://pan.baidu.com/s/1i4knLdNR8KrL5mPiq09wcw 
提取码:627m 

接着我们解压缩到一个文件目录,看一下当前目录有一个requirements.txt文件:

# base ----------------------------------------
matplotlib>=3.2.2
numpy>=1.18.5
opencv-python>=4.1.2
Pillow
PyYAML>=5.3.1
scipy>=1.4.1
torch>=1.7.0
torchvision>=0.8.1
tqdm>=4.41.0

# logging -------------------------------------
tensorboard>=2.4.1
# wandb

# plotting ------------------------------------
seaborn>=0.11.0
pandas

# export --------------------------------------
# coremltools>=4.1
# onnx>=1.8.1
# scikit-learn==0.19.2  # for coreml quantization

# extras --------------------------------------
thop  # FLOPS computation
pycocotools>=2.0  # COCO mAP

首先修改requirements.txt文件,将其中的下面两条先给删除:

torch>=1.7.0
torchvision>=0.8.1

只有torch以及torchvisison我们进行手动安装,不然的话下面执行批量安装命令就会失败!

我们可以提前去对应的pyTorch官网上看下对应CUDA的版本号所对应的这两个版本信息:pytorch

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第8张图片

正式安装

接下来开始正式安装操作,我们的python环境使用的是conda来配置的:

我们的项目路径:D:\workspace\pycharm\fangshengstudio\yolov5-5.0-project

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第9张图片

直接在这个目录中打开cmd命令:下面的所有命令都是在当前位置去执行。

步骤一:打开当前自己创建文件目录的cmd命令行,接着去执行命令

image-20220829190013990

# 首先创建一个yolov5环境
conda create -n yolov5 python==3.7

# 切换到yolov5环境
conda activate yolov5

# 开始安装pytorch以及torchvision
conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=10.2 -c pytorch

# 接着执行批量安装命令
# 下面是解释:
# 根据当前目录下的requirements.txt里的一些依赖包环境版本来进行对应的下载
# -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com:镜像源这里指定的是阿里云
pip install -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

若是最后显示这个信息,表示我们已经安装成功了:

image-20220829190044768

额外说明:切换到conda的yolov5环境时,我们执行的pip命令就是使用的conda环境里的python3.7,那么对应的包也都会安装在yolov5对应的环境里,之后我们使用pycharm即可进行conda环境来进行使用!

步骤二:pycharm来配置编译器

使用pycharm来进行打开项目:

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第10张图片

打开settings,来进行设置项目启动器:

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第11张图片

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第12张图片

点击确定,即可返回:

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第13张图片

选择好该编译器我们来关闭:

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第14张图片


2.2、实战深度学习预测

预测的脚本文件使用的是:detect.py。

示例1:预测图片

测试:

# 命令行切换到yolov5环境
conda activate yolov5

# 训练图片
# --source:需要进行训练的是data/images目录下的内容
# --weights:表示权重采用当前目录下的yolov5s.pt
python detect.py --source data/images/ --weights yolov5s.pt --conf 0.4

若是出现yolov5s.pt文件下载失败,因为github为外网可能无法访问可能导致下载失败,如何解决?

解决方案

手动到官网下载:yolov5s.pt文件

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第15张图片

将这个文件放置到yolov5-5.0-project文件中:

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第16张图片

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第17张图片

看下当前项目的runs/detect/exp文件,即可查看训练好的图片内容:

示例2:预测视频

我们将带有人的视频放入到当前目录下的data/videos下,取名为streets.mp4,接着我们来去进行执行训练的视频:

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第18张图片

# 命令行切换到yolov5环境
conda activate yolov5

# 视频
python detect.py --source data/videos/streets.mp4 --weights yolov5s.pt --conf 0.4

训练效果:

上面案例过程中的问题

1、CUDA不匹配当前GPU的版本(卸载重装)

此时出现这个问题:根据报错信息表示我的当前GPU版本不适合当前下载的PyTorch版本

image-20220829195930435

  • GeForce RTX 3060 Laptop GPU with CUDA capability sm_86 is not compatible with the current PyTorch in:根据你的显卡达到的算力来去下载对应的CUDA版本。
  • RTX3050ti、3060等系列显卡正确安装cuda、cudnn,配置Pytorch深度学习环境(避免由于版本不适应导致重装)

我的电脑是RTX3060,那么就应该选择cuda11.1版本,若是选择cuda10.2,就会在深度学习训练时导致不匹配。

首先卸载CUDA:使用geek工具卸载

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第19张图片

cuda安装官网

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第20张图片

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第21张图片

重新下载安装CUDA11.0:

链接:https://pan.baidu.com/s/1a3jl_eIefVjhEH5lwIzfMw 
提取码:l0dg 

安装完成之后,对应的CUDA环境变量也会给我们配置好:

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第22张图片

2、重新安装pyotrch版本

对应的pytorch对应的cuda11.1的版本为:pytorch版本

image-20220829203728264

# 切换到yolov5环境
conda activate yolov5

# 安装pytorch (已经更正torchvision版本)
pip --default-timeout=1000 install torch==1.9.0+cu111 torchvision==0.10.0+cu111 torchaudio==0.9.0 -f https://download.pytorch.org/whl/torch_stable.html

若是出现了下面的报错:表示当前没有torchvision==0.11.2+cu111匹配的,我们在下面的内容中找cu111的版本即可:

image-20220829204841522

最终下载成功:

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第23张图片


2.3、训练模型YOLOv5神经网络

训练的脚本模型文件使用的是:train.py

案例1:训练官方提供的数据集

直接运行可能碰到的问题解决方案

问题1、出现从github上下载的情况,速度特别慢

报错描述

image-20220831161801307

解决方案:首先需要去下载提前准备的一些图片以及标注好的数据集

源头:可以看到在train.py中指定的数据集的一个yaml配置文件

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第24张图片

看下这个yaml配置文件:

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第25张图片

  • download:若是找不到图片以及标注的类别坐标,那么就会从对应的一个github仓库网址来下载这些数据并去解压到对应的目录。
  • train:表示训练的图片。
  • val:表示标注好的对应图片的数据集(一个图片对应一个text文件)。

实际操作

提前去下载对应的官方给的一些图片以及标注好的类别坐标:https://github.com/ultralytics/yolov5/releases/download/v1.0/coco128.zip

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第26张图片

链接:https://pan.baidu.com/s/1QBuzGRpE_WgvdOyysbb4OA 
提取码:ohgl 

看下其中的内容:

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第27张图片


问题2:‘distutils’ has no attribute ‘version’

报错原因:

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第28张图片

解决方案:

# 切换到yolov5环境
conda activate yolov5

# 主要原因原本的setuptools为63.41版本太高,需要安装低版本的
pip uninstall setuptools
pip install setuptools==59.5.0
问题3:variable KMP_DUPLICATE_LIB_OK=TRUE

报错原因:

image-20220831155701053

解决方案:

# 在train.py的39行中去添加这个变量
import os
os.environ['KMP_DUPLICATE_LIB_OK'] = 'TRUE'

问题4:RuntimeError: DataLoader worker (pid(s) 12332) exited unexpectedly

报错描述:RuntimeError: DataLoader worker (pid(s) 12332) exited unexpectedly

解决方案:设置对应的进程数为1,当前是在windows环境中

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第29张图片


实际训练模型

上面的问题都解决之后,我们直接运行train.py文件即可:

若是看到下面出现starting trainint for …,表示现在正在进行训练模型

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第30张图片

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第31张图片

  • best.pt:表示最好的一个权重。
  • last.pt:表示最后训练的一个权重。(之后可以去使用resume参数去指定最后训练的位置,实现断点续训)

案例2:本地训练自己的数据集

学习视频:训练YOLOv5模型(本地)(二)14:16

官方文档:Train Custom Data

数据集准备:最起码要100组左右,训练轮数300论。

1、准备图片以及标注数据

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第32张图片

对应的images与labels要对应好

└──xx
    └── images
          └── xx
    └── labels
          └── xx

在images/train目录中我们存储了一些需要进行训练的图片,在labels/train中存储对应图片的数据标注。

其中图片的话我们无需做改动直接放入到目录中,对应每张图片的数据标注则需要我们通过一些途径例如网站进行标注并导出拿到。

①图片:

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第33张图片

②数据标注

首先要对标注的物体来进行类别汇总,我们可以提前在一个txt中编写一个个类别以换行符作为区分:

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第34张图片

car
person

我们可以使用网站来对图片进行标注并导出:makesense

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第35张图片

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第36张图片


2、编写对应的训练配置文件

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第37张图片

# 训练图片以及数据位置(当前项目)
train: mydata/images/train
val: mydata/images/train

# 类别的数量
nc: 2

# 类别名称
names: [ 'car', 'person' ]

3、训练模型

进入命令行,然后去执行train.py文件来进行训练模型:

# 切换到yolov5环境
conda activate yolov5

# 指定配置文件来进行训练数据集
# --data:配置数据配置文件
# --epochs:指定训练的轮数
python train.py --data data/clcl.yaml --epochs 300

训练结果我们就可以拿到weigths文件中的best.pt也就是训练最好的一个数据:

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第38张图片

中途异常问题解决

image-20220831200716220

在所有的with open中添加encoding=‘utf-8’:

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第39张图片

之后就可以运行了

4、进行预测

之后我们就可以去拿到对应的best.pt文件来对之前的图片进行预测:

# 切换到yolov5环境
conda activate yolov5

# 执行预测脚本  
# --weights:训练好的数据集
# --source:要进行预测的数据
python detect.py --weights runs/train/exp/weights/best.pt  --source mydata/images/train

yolov5 算法环境(GPU CPU)搭建与使用(windows环境)_第40张图片

接着我们就可以看到预测出来的结果了,但是由于我们之前训练的数据集太少,此时预测得到的效果并不好,这里的话仅仅是一个训练自己数据集的基本步骤演示。

云端GPU训练

官网:colab

参考资料

[1]. pytorch官方文档

[2]. RTX3050ti、3060等系列显卡正确安装cuda、cudnn,配置Pytorch深度学习环境(避免由于版本不适应导致重装):选择正确的CUDA版本,安装cudnn

[3]. 【动手学深度学习(一)】Yolov5环境配置教程

[4]. PyTorch和CUDA版本对应关系

[5]. 解决 Could not find a version that satisfies the requirement torch==1.4.0

[6]. python通过pip安装torch错误及解决办法ERROR: Could not find a version that satisfies the requirement torch

[7]. PackagesNotFoundError: The following packages are not available from current channels

[8]. 【Yolov5】1.认真总结6000字Yolov5保姆级教程(2022.06.28全新版本v6.1)

[9]. 深度学习 — yolov5 算法环境(GPU / CPU)搭建与使用

[10]. ERROR: Could not find a version that satisfies the requirement torch==1.7.0 ERROR: No matching……

[11]. 解决OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.

[12]. AttributeError:module ‘distutils‘ has no attribute ‘version

[13]. yolov5篇—官方代码docker部署训练

你可能感兴趣的:(人工智能,算法,windows,深度学习,yolov5)