一、下载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开始使用训练好的模型预测
文章出处登录后可见!