本文使用的在线安装,对安装Pytorch的步骤作总结,整理框架流程,防止踩坑。安装具体细节可以参考别的博主
安装中涉及到Anaconda,Python,Cuda,CuDnn,Pytorch。
其中Cuda,CuDnn,Pytorch不兼容严重,一定要找准版本,我的建议是先确定Pytorch版本再确定Cuda,CuDnn版本
使用离线安装比较麻烦,对python的版本也是有要求的,列如:
指的是这个torch版本为1.10.0,需要Cuda11.3,Python3.6版本,windows64位。
此外还需要添加对应的 torchvision和torchaudio的库
如有不对,请大佬指教
一.安装Anaconda
1.1准备工作
安装Python环境,推荐环境3.8
安装Pycharm,版本是2020.1
安装Anaconda,推荐版本Anaconda为2022.10
解压完后,分别添加Python和Anaconda的相关路径
安装后使用win+r,创建自己的虚拟环境,并指定Python版本,如果没有Python环境。可以自己加一下很简单
1.2常用按键
安装好Anaconda后,需要创建自己的虚拟环境
创建虚拟环境
conda create -n 环境名 python=3.9
进入虚拟环境
conda activate 环境名
退出虚拟环境
conda deactivate
查看conda下的虚拟环境
conda info --e
列出当前环境下的库
conda list
查看Cuda版本
nvcc -V
查看cudnn版本
conda activate yolov5
python
import torchvision
print(torchvision.__version__)
二.安装Cuda和Cudnn
1.1 Cuda的版本
在安装Cudah前,一定要先确认自己要多少版本的pytorch库
比如安装1.6版本的pytorch库,就需要去安装10.2版本的Cuda
再去找对应的Cudnn版本,例如:10.2版本的Cuda对应的是7.6.5的Cudnn
如下是Cuda版本对应Pytorch版本
1.2 torchvison 版本
1.2 Cuda官网
Cuda官网:
安装很简单,一路next,路径需要自定义,注意的是VS不要勾选
1.3 CnDNN官网
Cudnn安装对应版本,下载解压缩,将三个文件复制到cuda下面( 安装很简单)
默认路径:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\这里是你下载Cuda的版本
添加Cuda的环境
三.Pytorch安装
Pytorch的官网
进入官网,点左下角 (Previous versions of PyTorch),下载历史版本
1.1下载自己需要的版本
在自己的 虚拟环境下输入命令,如若运行指令出现网络问题可以多运行几次
1.2安装成功测试
安装结束后输入以下指令,测试是否成功
python
import torch
torch.cuda.is_available()
torch.version.cuda
print(torch.__version__)
四.Yolov5框架
1.1框架下载
在GitHup上选择自己需要的框架,然后解压缩
1.2 文件修改
对 requirements.txt 进行更改,将torch>=版本 给注释掉,因为我们已经安装好了
然后将torchvison改成torch对应的版本
1.3 Pycharm环境设置
将下载的yolov5框架加载到Pycharm上,在设置中更改解释器为我们安装pytorch的coda虚拟环境
如果缺少包,依赖之类的,进行自动安装。也可以使用pip命令到相应的虚拟环境下进行安装
添加完毕后运行,在runs的detect下面输出被预测的图片
1.4 detect.py和train.py
detect.py文件下,220行左右,常用参数解析
train.py文件参数解析
五. labellimg标注
labelimg 是可视化图像标定工具,支持YOLO格式,主要是建立自己的数据集,进行深度学习训练
1.1 获取labellimg
在GitHub上下载labellimg-master,解压完后,拖进Pycharm
注意,因为labellimg-master最高支持3.7版本的Python,所以需要在Pycharm当中新配置一个Pythoon3.7的环境
1.2 Pyqt和常规报错
安装PyQt5的时候,在虚拟环境下使用
pip install pyqt5
如果遇到网络问题可以切换镜像源
如果提示没有 Microsoft Visual C++ 14.0 ,那么需要安装一个VIsual Studio
此外我额外勾选了 C++分析工具,完美解决
PyQt4报错,则需将离线包导入
加载完后,如果labellmg的reource报错,进入到labellimg-master目录下,执行以下操作
1.3LabelImg标注
代码没有报错后,运行程序,切换保存模式为Yolo,打开训练图片的文件夹进行标注
Ctrl + s 保存当前改动
d 下一张图片
Ctrl + +/Ctrl + 滚轮向前 放大
Ctrl + d 复制当前标签和矩形框
space 将当前图像标记为已验证
w 创建一个矩形框
1.4标签文件解析
训练完成后,图片的文件夹多了标签文件和类别标签文件
标签类别文件解析:
标签文件解析:
六. 训练模型
先说流程:
首先对图片进行标注,将标注好的图片和标注信息放入data文件下,创建datasts文件格式存放
data(必须)下创建超参.yaml,里面存放训练集和标注信息的路径
然后进入Pycharm对创建的超参进行添加数据
全部配置完成后,在train.py当中更改超参的路径
1.1datasts
yolov5-master文件下的data文件夹中创建datasets文件(存放数据集)
将刚刚标注好的训练集和标注信息放入对应文件夹
1.2 hyps下的超参文件
然后在yolov5-master文件下hyps里面,创建test.yaml文件 (存放的超参)
tips:可以使用这个默认的,不需要每次都新建
lr0: 0.01 # initial learning rate (SGD=1E-2,Adam=1E-3)
lrf: 0.01 # final OneCycleLR Learning rate (Lr0 lrf)
momentum: 0.937 # SGD momentum/Adam beta1
weight_decay: 0.0005 # optimizer weight decay 5e-4
warmup_epochs: 3.0 # warmup epochs (fractions ok)
warmup_momentum: 0.8 # warmup initial momentum
warmup_bias_lr: 0.1 # warmup initial bias lr
box: 0.05 # box loss gain
cls: 0.5 # cls loss gain
cls_pw: 1.0 # cls BCELoss positive_weight
obj: 1.0 # obj loss gain (scale with pixels)
obj_pw: 1.0 # obj BCELoss positive_weight
1oU_t: 0.20 # IoU training threshold
anchor_t: 4.0 # anchor-multiple threshold
#anchors: 3 # anchors per output Layer (0 to ignore)
fl_gamma: 0.0 # ocal loss gamma (efficientDet default gamma=1.5)
hsv_h: 0.015 #image HSV-Hue augmentation (概率类型)色调
hsv_s: 0.7 #image HSV-Saturation augmentation (概率类型)饱和度
hsv_v: 0.4 #image HSV-Value augmentation (概率类型)曝光度
degrees: 0.0 #image rotation (+/deg) (随机)旋转角度
translate: 0.1 #image translation (+/fraction) (随机)平移
scale: 0.5 #image scale (+/gain) (随机)缩放尺度因子
shear: 0.0 #image shear (+/deg) (随机)错切/非垂直投影
perspective: 0.0 #image perspective (+/fraction),range 0-0.001 (随机)透视变换
flipud: 0.5 #image flip up-down (概率类型)上下翻转
fliplr: 0.0 #mage flip left-right (概率类型)左右翻转
mosa1c: 1.0 #image mosaic (概率类型)四图拼接
mixup: 0.0 #image mixup (概率类型)图像互相融合
copy_paste: 0.0 #segment copy-paste (概率类型)分割填补、乱入效果
1.2 data下的超参文件
然后在yolov5-master文件下data里面,创建test.yaml文件 (超参配置文件)
data文件夹是用来配置训练集和测试集还有验证集的路径的,其中还包括目标检测的种类数和种类的名称;
train: ./data/datasets/images/train #训练集的目录train
val: ./data/datasets/images/val #测试集的目录val
test: ./data/datasets/images/test #调试信息的目录test
nc: 3 #被检测的数量nc
names: ['Grenn','Yellow','Red'] #被检测目标名称,一定要从class文件当中复制进来,顺序不要错
1.3常见报错
1.1页面太小
如果提示页面太小,无法打印。到高级系统设置里分配空间
1.2 OMP报错
OMPQ:Error #15:Initializing libiomp5md.dll,but found libiomp5md.dll already initialized.
解决:进入项目的虚拟环境下(Aconda的env下),搜索libiomp5md.dll,删除第二个就可以了
七.模型成功运行
项目下查看runs下的train,里面存放权重文件和预测结果
1.1使用自己的模型
进入模型的输出文件下(项目的runs下的train)里面有weights权重文件,里面放置了best.t和last.pt
我们可以进入detect.py里面,将权重文件更换为自己的模型
更换别识别图片目录
运行detect.py,等待预测结果
扩展:双Cuda
可以装多个Cuda环境,例如我安装了两个Cuda环境(10.2和11.3)
切换只需将对应的四个环境变量上移
1.1流程
选好自己需要pytorch版本
切换Cuda环境(将其提到最上面)
新建虚拟环境命名并加载pytorch