当前位置:   article > 正文

快速上手YOLOv5:新手教程

快速上手YOLOv5:新手教程

本教程将通过实验的形式,带领你快速掌握 YOLOv5 目标检测模型的训练过程。

注:本次实验是在window环境下进行,且默认已经配置好python环境

目录

1. 环境准备

2. 准备数据集

3. 配置参数

4. 训练模型

5. 模型的评估和优化


1. 环境准备

从github上下载Yolov5的源码。我们的项目用到yolov5的6.0版本,所以这里以6.0版本为例子。

a. 根据提示选择版本,点击右边绿色按钮code,下载模型的源码。

b. 解压缩,用vs code打开文件夹,看到文件的目录结构如下

c. 用vs code打开终端(或者用文件资源管理器打开文件夹,在空白处按Shift+鼠标右键,选择打开Power shell,输入命令:pip install -r  requirements.txt,后等待环境安装。部分库可能会出现下载缓慢的情况,可以在网上换源单独下载(注:需下载requirements.txt中要求的版本)。

2. 准备数据集

        要训练 YOLOv5 模型,需要一个包含原始图片和标签数据的数据集。其中,原始图片需要根据你的项目需求进行专门的收集(如果要识别火焰就收集一些带有火焰的图片),而标签数据分别储存在.txt文件,文件名的前缀对应原始图片的前缀,如下:

在 Yolov5 中,每个.txt 文件的一行包含了一个目标的标注信息,具体每行的 5 个值代表如下:

1) 目标类别索引: 表示目标物体所属的类别,在数据集中每个类别都有一个唯一的索引来表示。

2)目标中心点的相对横坐标: 相对于整张图片的宽度,目标中心点的横坐标位置(0-1)

3)目标中心点的相对纵坐标: 相对于整张图片的高度,目标中心点的纵坐标位置(0-1)

4)目标相对于整张图片的宽度: 目标物体边界框的宽度与整张图片宽度的比例(0-1)

5)目标相对于整张图片的高度: 目标物体边界框的高度与整张图片高度的比例(0-1)

这些文件通常需要使用工具进行人工标注得到,这里推荐的工具是make sense(Make Sense)。

        如果使用make sense工具:进入网页后,点击右下角的Get Started,然后将装有原始图片的文件夹拖入图片指示位置,选择object detection。

写一个记录标签名的labels.txt文件,保存。

点击Load labels from file,将这个labels.txt拖入其中,Start project。

标注图片后需要在右边选择标签名。当你标注完所有图片后,点击Actions,选择Export,并选择yolo格式导出,得到的压缩包就是图片标注数据,解压后得到.txt文件。每个.txt文件名的前缀对应原始图片文件名的前缀。

(注:只有标注过的图片才有对应的.txt文件,没有标注的图片没有对应的.txt文件)

(注:框与框之间尽量避免重叠)

3. 配置参数

a. 打开源码中的train.py文件,拖动到图中所示位置。

        weights指向即将开始训练的权重文件,也就是模型本体。

        cfg是模型的参数配置文件。

        data是模型数据文件,也就是数据集存放的位置。

        hyp是模型的参数文件。

根据data找到coco128.yaml文件,修改为如下,保存。

path:../  -> ./ 表示文件夹的位置设置为当前文件夹

nc的数量需要和names的数量一致

names的顺序需要跟标注时的顺序一致。

b. 根据path指向的位置,创建文件夹。假设当前文件夹为yolov5-6.0,那么需要创建文件夹,并放入数据。

yolov5-6.0\datasets\images\train2017 # 存放训练集原始图片

yolov5-6.0\datasets\images\val2017 # 存放验证集原始图片

yolov5-6.0\datasets\labels\train2017 # 存放训练集标注数据

yolov5-6.0\datasets\labels\val2017 # 存放验证集标注数据

c. 运行train.py文件,源码中没有yolov5s.pt权重文件,在检查不到该文件后,会默认帮你下载,但是往往下载得很慢,或者下载不了,去网上查找下载yolov5s.pt。

d. 开始调整参数,移到到步骤a指示的train.py代码位置,修改多处。

1)填写cfg,训练的是yolov5s.pt,所以设置cfg为yolov5s.yaml(注:修改yolov5s.yaml的nc)

2)batch-size的大小需要根据电脑的配置进行设置,batch-size越大,需要的算力越多。

3)evole表示优化学习率的次数,一般设置50-100次。

4)device设置为cuda:0,表示调用第一张显卡,有多的显卡可以多卡cuda:0,1。

注:千万不要用CPU训练,太慢了

5)将 "workers" 参数设置为 CPU 核数的 2 到 4 倍,可以加快数据加载速度(注:太高会崩)

6)patience设置为40,表示40次迭代没有进步就会停止训练。

7)epochs的数量需要根据数据集的大小进行设置,可以多试几次,一般结合学习率进行修改。

8)根据hyp的路径打开对应文件。

lf0  #模型的初始学习率 一般设置0.01,0.001

lrf   #模型的最终学习率是lf0*lrf

degrees #旋转增强 

shear # 剪切增强

perspective #透视变换 范围0-0.001

YOLOv5系列(二十) 解析数据增强部分augmentations(详尽) - 知乎 (zhihu.com)

yolov5数据增强引发的思考——透视变换矩阵的创建_yolov5 perspective-CSDN博客

可以考虑将上述参数修改为如下

4. 训练模型

用vs code运行train.py文件,或者在终端、powershell运行 python train.py命令。

出现上述情况,可以在import numpy as np 下面加一句np.int=int

解决错误:RuntimeError: result type Float can‘t be cast to the desired output type __int64_runtimeerror: result type float can't be cast to t-CSDN博客

5. 模型的评估和优化

打开yolov5-6.0\runs\train\exp文件夹,查看results.png如下。

obj_loss反应模型检测目标存在与否的能力,cls_loss反应模型检测准确性。

查看val部分的loss曲线,当曲线尾部平滑,没有上升或下降的趋势,表示模型拟合,此时模型的性能达到最高。

当val部分的loss曲线明显还有下降的趋势,表示模型欠拟合,模型训练失败。

解决:可以增加epochs的大小(增加模型的训练时间),或者在hyp文件处提高学习率(学习率过高可能导致训练过程不稳定,过拟合,甚至无法收敛)

当val部分的loss曲线明显先下降后上升,表示模型过拟合,模型训练失败。

解决:可以减少epochs的大小、降低学习率或者降低最终学习率。如果上述方法都没有解决过拟合问题,很可能是因为数据集出现问题,需要检查数据集。(是否有空的.txt文件,.txt的类别index是不是错了,标注的时候是不是标了重叠的框框)

F1_curve反应模型的性能好坏,如果在模型拟合的情况下,模型的性能仍然不能满足需求,则需要在数据集和前处理上寻找优化点。

 训练后产生的权重文件在yolov5-6.0\runs\train\exp\weights文件夹中,一般选用best.pt进行应用、部署。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/680105
推荐阅读
相关标签
  

闽ICP备14008679号