一、下载YOLOv5源码和NEU-DET(钢材表面缺陷)数据集

YOLOv5源码
NEU-DET(钢材表面缺陷)数据集
这里的数据集已经经过处理了,下载即可

若通过其他途径下载的原始数据集标签为xml格式,需要转化为txt格式XML转txt格式脚本

二、数据集准备

NEU-DET(钢材表面缺陷)数据集中一共有六个类别缺陷共计1770张
在这里插入图片描述
train为训练集、valid为验证集、data.yaml为配置文件存放不同数据集的路径

无论train训练集还是valid验证集都需要有两个子文件夹,images图像和labels标签,(cache为缓存可以删掉)

Ⅰ,在train训练集中

在这里插入图片描述
labels和images要一一对应
images包含1770张照片,是模型所需要训练的所有图像
在这里插入图片描述
在这里插入图片描述

每个标签均有多行数字组成,这里有两行数字,表示有该图片有两个要检测的目标,0表示第0个类别,后面四个数据表示目标的xywh位置(归一化之后的结果)
在这里插入图片描述
YOLO中标签,只认txt格式,其他的不支持
也可以参考该篇博文,准备自己训练的数据三、自定义标签准备

Ⅱ,在valid验证集中也一样

images中仅有30中照片,验证集的目的是在进行模型训练的过程中时不时的进行小测试看看当前训练的效果
在这里插入图片描述

Ⅲ,data.yaml

train和val为训练集train和验证集vaild中images的位置
nc为类别数
names分别对应不同类别的名称
在这里插入图片描述

三、YOLOv5原始模型

Ⅰ,为方便后续操作,把数据集放到源码文件夹下

在这里插入图片描述

Ⅱ,train.py为整个模型的入口

在这里插入图片描述

Ⅲ,配置参数

若不配置参数会使用主函数中default默认值
在这里插入图片描述
data为配置文件路径,该配置文件存有训练数据的位置
cfg为所需要采用的模型架构5s、5m、5l等
batch为每次读取图像张数
在这里插入图片描述

Ⅳ,模型架构

YOLO为了适应更多的场合,提供了多个版本,也就是lms类比于衣服的大小号,其中yolo5l模型架构层数最多,训练层数最多,速度慢但效果好,最终训练出来的模型最大
在这里插入图片描述
以yolo5l.yaml为例
nc为检测的类别,这里数据集为6类,需要改成6

depth_multiple模型的层数
width_multiple模型中每一层特征值的个数
这两个参数控制模型的复杂度,这俩个值为系数,也就是在模型求解出来之后还需要再乘以这两个系数才是最后的结果,因为这个是5l,故为1.0,要是5s这两个参数都小于1

anchors为候选框的大小,若样本中待检测的数据较小,就把候选框改小点
在这里插入图片描述

四、模型训练

train.py右击run开始训练模型
在这里插入图片描述

每训练一次,会将结果保存到runs文件夹下,当然给主函数传入相应参数来改变保存路径
在这里插入图片描述
训练完成的模型为.pt文件,best为模型效果最好,last为模型的上一次训练结果,若遇到突发情况方便继续训练
在这里插入图片描述

五、模型效果验证

detect.py为验证模型
在这里插入图片描述

传参,有很多参数可以自己挨个试试看看效果
在这里插入图片描述
在这里插入图片描述
其中,weights为要用哪个模型进行测试
source为待测试图片位置
output为最后输出结果的位置

在detect.py右击run开始使用训练好的模型预测
在这里插入图片描述

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐