分享者QQ: 826706180
部署前的准备
收藏+点赞+关注
CUDA安装
把显卡驱动更新到最新版本,然后下载CUDA版本,我提供了一个12.0.0版本,里面包含CUDN和cuDNN综合包,方便一些小白使用,也可以根据自己电脑需求安装,下载地址: https://www.123pan.com/s/lgZzVv-939k3.html提取码:pCoM
-
键盘按 ctrl + r , 输入框里输入cmd ,按回车
-
在控制台输出 nvidia-smi ,按回车
-
右上角:CUDA Version: 版本号,表示最高可以装哪个CUDA版本
-
浏览器打开下载地址: https://developer.nvidia.com/cuda-toolkit-archive
找到对应的 CUDA 版本下载,下载任意一个11.4.x,最后一位数字可以忽略不计
-
选择windows系统,版本win10,安装方式本地
-
下载完成后安装CUDA驱动,直接点ok就行了,使用默认路径,安装时间可能比较长,耐心等待
-
CUDA驱动安装完成之后, ctrl + r 然后 cmd 回车打开控制台,输入 nvcc -V 查看版本
-
CUDA安装完成后,去系统设置-高级-环境变量里找是否有如下
CUDA_PATH C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1
CUDA_PATH_V10_1 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1
有则安装成功
cuDNN安装
下载地址: https://developer.nvidia.com/rdp/cudnn-archive#a-collapse805-101
-
浏览器开打地址后, CTRL + R 搜索 对应的版本号,如: CUDA 11.4 ,会出现多个版本,任何一个都可以使用的
-
根据自己系统选择对应版本,点击下载
-
下载完成后:
解压下载好的cuDNN包,得到bin include lib 三个文件夹
覆盖:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.4【这里是版本号】
注意事项:
下载可能会出现让你注册的弹窗,自己注册一个账号就可以了,如图
Miniconda安装
下载地址: https://www.123pan.com/s/lgZzVv-qQAk3.html 提取码:L5eZ
环境变量:
根据自己的安装路径设置环境变量,如图
最后cmd 控制台输入: conda -V
一、环境部署及标注
1、切换源:
conda config --remove-key channels
conda config --add channels http://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --add channels http://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels http://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch/
conda config --set show_channel_urls yes
pip config set global.index-url https://mirrors.ustc.edu.cn/pypi/web/simple
2、创建虚拟环境yolo5:
2.1 初始化
conda init
2.2 创建一个名为 yolo5 的 conda 环境,并指定了 Python 版本为 3.8.5, 命令行输入:
conda create -n yolo5FH python==3.8.8
指定miniconda3版本创建虚拟环境
conda create --prefix E:\environment\miniconda3_py3.7\yolo\yolo5 python=3.7
2.3 激活虚拟环境:
conda activate yolo5FH
指定miniconda3版本激活虚拟环境
conda activate E:\environment\miniconda3_py3.8\yolo\yolo5
常用命令:
查看虚拟环境: conda info --envs
退出虚拟环境: conda deactivate
卸载虚拟环境:
1.列出已存在的所有conda环境: conda env list
2.删除指定的conda环境: conda env remove --name yolo5 (注意删除前要退出虚拟环境)
3.删除是定路径的conda环境: conda env remove --prefix E:\environment\miniconda3_py3.7\yolo5yg
3、pytorch安装:
官网:https://pytorch.org/
根据自己显卡驱动版本安装,必须提前更新好显卡驱动,如果用CPU训练(就不用玩了真的)
我的显卡3070ti,最高支持11.4,然后官网没有11.4,所以我选择了11.3的版本,只可以往前选择,不可以往后选择
命令行输入: nvidia-smi //查看支持的支持最高驱动的版本
找到所支持的最高版本例如:
# CUDA 11.3
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3
注意:需要在激活yolo的环境下执行,并且关闭翻墙软件
测试python环境:
命令行输入: python
可能会出现的错误:
Traceback (most recent call last): File “”, line 1, in ModuleNotFoundError: No module named ‘torch’
解决办法: 从新安装 PyTorch ,根据实际情况选择
// 仅使用CPU版本
conda install pytorch==1.9.0 torchvision==0.10.0 cpuonly -c pytorch
// 使用特定的CUDA工具包版本,GPU
conda install pytorch==1.9.0 torchvision==0.10.0 cudatoolkit=11.1 -c pytorch -c conda-forge
从新安装完成后,从新校验python环境,执行下面步骤
加载torch: import torch
查看当前torch版本: print(torch.__version__)
//这时候控制台会输出刚才安装的 pytorch 的版本 1.12.1
查看GPU是否可用: torch.cuda.is_available()
返回GPU个数: torch.cuda.device_count()
测试torchvision是否正确:import torchvision
退出 命令行输入: quit()
4、依赖包安装:
pip install -r requirements.txt
5、安装pycocotools:
pip install pycocotools-windows
6、安装(图像化依赖) pyqt5:
pip install pyqt5
7、安装labelme:
pip install labelme
8、使用 PyCharmIDE 打开项目并配置解释器虚拟环境
9、标注软件labelimg 下载:
pip install labelimg -i https://mirror.baidu.com/pypi/simple
打开labelimg:
labelimg
10、voc类型改为yolo类型
重要的事情说三遍: 要选择yolo类型
重要的事情说三遍: 要选择yolo类型
重要的事情说三遍: 要选择yolo类型
Open | 打开 |
Open dir | 选择要被训练的图片路径 |
Opensave dir | 为标签保存路径 |
create rectbox | 创建标注框 |
Next Image | 上一张图片 |
Prev Image | 下一张图片 |
Save | 保存 |
快捷键:w 创建新的标注框,a 上一张图片,d 下一张图片,del 删除选定的矩形框,Ctrl++放大 Ctrl-- 缩小
设置自动保存
可能存在的报错:
ModuleNotFoundError: No module named ‘chardet’
解决:pip install chardet
其实缺什么模块你就安装什么模块就行,这类错误最好解决。
其他错误也可以自行百度解决办法
注意:
可能会有AttributeError: ‘Upsample’ object has no attribute ‘recompute_scale_factor’
解决:删除upsampling.py对应行,具体可以百度这个错误
测试代码:
python detect.py --source data/images/bus.jpg --weights pretrained/yolov5s.pt
二、训练
1、需要修改配置文件
第一个文件 data\mask_data.yaml
train: C:/Users/Administrator/Desktop/train/images/train #更换自己的训练集路径
val: C:/Users/Administrator/Desktop/train/images/val #更换自己的验证集路径
nc: 2 #类别数量需要更改你自己的数量
names: ['yu1','yu2'] #类别名称改成你自己的
第二个文件 models\yolov5s.yaml
nc: 1 # 更改自己的类别数量
2、开始训练
yolo5FH环境激活情况下,并且在yolo项目根目录中
python train.py --data mask_data.yaml --cfg mask_yolov5s.yaml --weights pretrained/yolov5s.pt --epoch 100 --batch-size 12
python train.py
:这部分指示使用Python解释器来执行名为train.py
的脚本文件。
--data mask_data.yaml
:这是一个命令行选项,指定了一个名为mask_data.yaml
的数据配置文件,该文件用于指定数据集的路径、类别等信息。
–cfg mask_yolov5s.yaml:这是另一个命令行选项,指定了一个名为
mask_yolov5s.yaml`的模型配置文件,该文件用于指定YOLOv5模型的结构和超参数。
–weights pretrained/yolov5s.pt`:这是一个命令行选项,指定了一个预训练权重文件的路径。在训练过程中,模型将使用这个权重作为初始参数。
--epochs 100
:这是一个命令行选项,指定了训练的总轮数(或称为训练周期)。在这个例子中,总共将训练100个周期,300次效果最佳。
–batch-size 12`:这是一个命令行选项,指定了每个训练批次中的样本数量。在这个例子中,每个批次将包含12个样本,可以理解为每次处理12个图片。
通过执行这个命令,你将开始使用YOLOv5模型来训练,使用给定的数据集、模型配置、预训练权重,并设置训练的总周期数和批次大小。请确保你的环境已经正确设置和安装了所需的库和依赖项,以及准备好了数据集和配置文件。
使用缓存:
使用硬盘缓存
--cache dir
使用内存缓存
--cache ram
3、导出onnx模型
需要用到export.py脚本
338行和339行需要根据自己情况更改
parser.add_argument(‘–data’, type=str, default=ROOT / ‘data/mask_data.yaml’, help=‘dataset.yaml path’) #,模型配置文件路径
parser.add_argument(‘–weights’, type=str, default=ROOT / ‘runs/train/exp11/weights/best.pt’, help=‘weights path’) #要转换的模型
“run exprot”就可以了
4、onnx转ncnn模型(飞火插件用的ncnn模型,这是我们的终极目标)
onnx在线转ncnn:
https://convertmodel.com/
三、改参和应用到插件中
这部分教程可以参考飞火B站的相关教程
三、所有参数详解
这段代码是用于设置命令行参数的,使用了Python的argparse库。下面是每个参数的解释:
--weights
:初始模型权重路径,默认为ROOT / ‘pretrained/yolov5s.pt’。--cfg
:模型配置文件路径,默认为ROOT / ‘models/yolov5s.yaml’。--data
:数据集配置文件路径,默认为ROOT / ‘data/data.yaml’。--hyp
:超参数文件路径,默认为ROOT / ‘data/hyps/hyp.scratch.yaml’。--epochs
:训练周期数,默认为300。--batch-size
:每个GPU的总批次大小,对于自动批量大小选择,可设为-1,默认为4。--imgsz
:训练和验证图像大小(像素),默认为640。--rect
:使用矩形训练。--resume
:恢复最近的训练,如果提供了该参数但没有指定值,则使用默认值True。--nosave
:只保存最终的检查点。--noval
:只验证最终的训练周期。--noautoanchor
:禁用自动锚框检查。--evolve
:进化超参数x代数,默认为300代,如果提供了该参数但没有指定值,则使用默认值300。--bucket
:gsutil存储桶。--cache
:将图片缓存在"ram"(默认)或"disk"中,提供该参数但没有指定值时,默认为"ram"。--image-weights
:在训练中使用加权图片选择。--device
:cuda设备,例如0或0,1,2,3,或者是cpu。--multi-scale
:使用多尺度训练图像,即在训练过程中随机调整图像大小,增加数据的多样性。如果提供该参数,则为True。--single-cls
:将多类别数据训练为单类别数据。--adam
:使用torch.optim.Adam()优化器。--sync-bn
:使用SyncBatchNorm,仅在DDP模式下可用。--workers
:最大dataloader工作进程数(在DDP模式下,每个RANK的工作进程数),默认为0。--project
:保存路径的项目目录,默认为ROOT / ‘runs/train’。--name
:保存路径的名称,默认为’exp’。--exist-ok
:允许项目目录/名称已存在,不自动递增。--quad
:使用四分之一图像加载器(quad dataloader)。--linear-lr
:使用线性学习率衰减。--label-smoothing
:标签平滑的epsilon值,默认为0.0。--patience
:EarlyStopping的耐心程度(未改善的训练周期数),默认为100。--freeze
:冻结的层数。backbone=10,全部=24。--save-period
:每隔x个训练周期保存一次检查点(如果小于1则禁用)。--local_rank
:DDP参数,不要修改。- Weights & Biases参数:
--entity
:W&B的实体。--upload_dataset
:将数据集上传为艺术品表格。--bbox_interval
:设置边界框图像记录间隔。--artifact_alias
:要使用的数据集艺术品的版本别名。
四、模型转换
找到 export.py 文件,并修改对应参数
parser.add_argument('--data', type=str, default=ROOT / 'data/mask_data.yaml', help='dataset.yaml path') #,模型配置文件路径
parser.add_argument('--weights', type=str, default=ROOT / 'runs/train/exp10/weights/best.pt', help='weights path') #要转换的模型
1、conda搭建测试环境
1、使用conda创建虚拟环境
conda create -n yolov5 python=3.8 //pt模型转成onnx模型需要的虚拟环境
conda create -n yolov5 python=3.6 //onnx模型转成rknn模型需要的虚拟环境
使用虚拟环境时使用一下指令激活
conda activate yolov5 //pt模型转成onnx模型需要的虚拟环境
conda activate rv1126 //onnx模型转成rknn模型需要的虚拟环境
需要切换其他的虚拟环境或者是退出当前环境时
conda deactivate
查看可用的虚拟环境指令
conda info --envs
删除环境
conda env remove --name yolo5
五、各种包的安装
1.thop包安装
确保激活了你的YOLOv5环境。如果你还没有激活环境,运行以下命令添加conda-forge渠道:
conda config --add channels conda-forge
然后,再次尝试安装 thop 库:
conda install thop
或者使用pip安装:必须关闭翻墙
pip install thop
2.onnx 库安装
pip install onnx
错误收集
-
AssertionError: Label class 2 exceeds nc=1 in YoloV5Data/data.yaml. Possible class labels are 0-0
解决方法:找到train.py文件中这一行代码,注释掉(我的在第222行位置)。assert mlc < nc, f'Label class {mlc} exceeds nc={nc} in {data}. Possible class labels are 0-{nc - 1}'
-
报错内容:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x98 in position 1093: illegal multibyte sequence
解决方法: https://blog.youkuaiyun.com/qq_39522016/article/details/130548541
IDE
安装要求错误
-
PackagesNotFoundError: The following packages are not available from current channels
更新软件源:运行以下命令来更新你的软件源缓存,并尝试重新安装包 :
conda update --all