视频、文档(主要学习):
所有博客文件目录索引:博客目录索引(持续更新)
资源(需要自取):
# 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
如何确定CUDNN版本?
进入官网来进行选择:cudnn-archive
如何确定pytorch?
方式一:在官网pytorch直接全文搜索对应CUDA的版本号,找到匹配的即可。
方式二:暴力,直接百度搜索CUDA版本号匹配的pytorch命令,直接安装(我之前是按照方式一然后下载发现依赖相关有报错说找不到对应版本的,然后就百度搜了一个)。
安装见:Anaconda使用指南
Pytorch的最终目标是什么?毫无疑问,我们是用它来进行深度学习训练和推理,深度学习本质上就是训练深度卷积神经网络。尽管我们已经可以用cuda使得显卡来完成并行计算任务,但是所有的操作还是比较底层的、复杂的。是否在cuda之上有一个专门用于深度神经网络的SDK库来加速完成相关特定的深度学习操作,答案就是cudnn。
NVIDIA cuDNN是用于深度神经网络的GPU加速库。它强调性能、易用性和低内存开销。NVIDIA cuDNN可以集成到更高级别的机器学习框架中,如caffe、tensorflow、pytorch、mxnet等。cudnn简单的插入式设计可以让开发人员专注于设计和实现神经网络模型,而不是调整性能,同时还可以在GPU上实现高性能现代并行计算。
安装 CUDA(显卡驱动):版本为10.2
下载网址:CUDA Toolkit 10.2 Download
# cuda_10.2.89_441.22_win10.exe
链接:https://pan.baidu.com/s/1NlX41r0AntHz9d55etRNag
提取码:uu47
安装过程就是不断点击下一步即可。
步骤一:查看我cuda11.1对应cudnn版本:cudnn-archive
步骤二:注册登录下即可下载。
【Windows11】Cuda和Cudnn详细安装教程
下载完后进行解压:
链接:https://pan.baidu.com/s/170B68IhXHqu6MKhmCNHMXA
提取码:7k6w
步骤三:找到CUDA的安装目录,然后将解压后三个文件夹覆盖原本CUDA安装目录下的三个文件即可
准备操作(构建yolov5环境)
接着开始yolov5的源代码:github-yolov5
# 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
正式安装
接下来开始正式安装操作,我们的python环境使用的是conda来配置的:
我们的项目路径:D:\workspace\pycharm\fangshengstudio\yolov5-5.0-project
直接在这个目录中打开cmd命令:下面的所有命令都是在当前位置去执行。
步骤一:打开当前自己创建文件目录的cmd命令行,接着去执行命令
# 首先创建一个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
若是最后显示这个信息,表示我们已经安装成功了:
额外说明:切换到conda的yolov5环境时,我们执行的pip命令就是使用的conda环境里的python3.7,那么对应的包也都会安装在yolov5对应的环境里,之后我们使用pycharm即可进行conda环境来进行使用!
步骤二:pycharm来配置编译器
使用pycharm来进行打开项目:
打开settings,来进行设置项目启动器:
点击确定,即可返回:
选择好该编译器我们来关闭:
预测的脚本文件使用的是:detect.py。
测试:
# 命令行切换到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-5.0-project文件中:
看下当前项目的runs/detect/exp文件,即可查看训练好的图片内容:
我们将带有人的视频放入到当前目录下的data/videos下,取名为streets.mp4,接着我们来去进行执行训练的视频:
# 命令行切换到yolov5环境
conda activate yolov5
# 视频
python detect.py --source data/videos/streets.mp4 --weights yolov5s.pt --conf 0.4
训练效果:
此时出现这个问题:根据报错信息表示我的当前GPU版本不适合当前下载的PyTorch版本
我的电脑是RTX3060,那么就应该选择cuda11.1版本,若是选择cuda10.2,就会在深度学习训练时导致不匹配。
首先卸载CUDA:使用geek工具卸载
cuda安装官网
重新下载安装CUDA11.0:
链接:https://pan.baidu.com/s/1a3jl_eIefVjhEH5lwIzfMw
提取码:l0dg
安装完成之后,对应的CUDA环境变量也会给我们配置好:
对应的pytorch对应的cuda11.1的版本为:pytorch版本
# 切换到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的版本即可:
最终下载成功:
训练的脚本模型文件使用的是:train.py
报错描述:
解决方案:首先需要去下载提前准备的一些图片以及标注好的数据集
源头:可以看到在train.py中指定的数据集的一个yaml配置文件
看下这个yaml配置文件:
实际操作:
提前去下载对应的官方给的一些图片以及标注好的类别坐标:https://github.com/ultralytics/yolov5/releases/download/v1.0/coco128.zip
链接:https://pan.baidu.com/s/1QBuzGRpE_WgvdOyysbb4OA
提取码:ohgl
看下其中的内容:
报错原因:
解决方案:
# 切换到yolov5环境
conda activate yolov5
# 主要原因原本的setuptools为63.41版本太高,需要安装低版本的
pip uninstall setuptools
pip install setuptools==59.5.0
报错原因:
解决方案:
# 在train.py的39行中去添加这个变量
import os
os.environ['KMP_DUPLICATE_LIB_OK'] = 'TRUE'
报错描述:RuntimeError: DataLoader worker (pid(s) 12332) exited unexpectedly
解决方案:设置对应的进程数为1,当前是在windows环境中
上面的问题都解决之后,我们直接运行train.py文件即可:
若是看到下面出现starting trainint for …,表示现在正在进行训练模型
学习视频:训练YOLOv5模型(本地)(二)14:16
官方文档:Train Custom Data
数据集准备:最起码要100组左右,训练轮数300论。
对应的images与labels要对应好
└──xx
└── images
└── xx
└── labels
└── xx
在images/train目录中我们存储了一些需要进行训练的图片,在labels/train中存储对应图片的数据标注。
其中图片的话我们无需做改动直接放入到目录中,对应每张图片的数据标注则需要我们通过一些途径例如网站进行标注并导出拿到。
①图片:
②数据标注
首先要对标注的物体来进行类别汇总,我们可以提前在一个txt中编写一个个类别以换行符作为区分:
car
person
我们可以使用网站来对图片进行标注并导出:makesense
# 训练图片以及数据位置(当前项目)
train: mydata/images/train
val: mydata/images/train
# 类别的数量
nc: 2
# 类别名称
names: [ 'car', 'person' ]
进入命令行,然后去执行train.py文件来进行训练模型:
# 切换到yolov5环境
conda activate yolov5
# 指定配置文件来进行训练数据集
# --data:配置数据配置文件
# --epochs:指定训练的轮数
python train.py --data data/clcl.yaml --epochs 300
训练结果我们就可以拿到weigths文件中的best.pt也就是训练最好的一个数据:
中途异常问题解决
在所有的with open中添加encoding=‘utf-8’:
之后就可以运行了
之后我们就可以去拿到对应的best.pt文件来对之前的图片进行预测:
# 切换到yolov5环境
conda activate yolov5
# 执行预测脚本
# --weights:训练好的数据集
# --source:要进行预测的数据
python detect.py --weights runs/train/exp/weights/best.pt --source mydata/images/train
接着我们就可以看到预测出来的结果了,但是由于我们之前训练的数据集太少,此时预测得到的效果并不好,这里的话仅仅是一个训练自己数据集的基本步骤演示。
官网: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部署训练