yolov5 口罩检测模型训练及测试

yolov5 口罩检测模型训练及测试

一、数据集准备

1.利用网上公开数据集

yolov5 口罩检测模型训练及测试_第1张图片
yolov5 口罩检测模型训练及测试_第2张图片

2.xml转txt

可以看到公开数据集标注保存的为xml文件格式,利用上一篇文章中所述的python脚本文件,将xml文件转txt文件如下:
yolov5 口罩检测模型训练及测试_第3张图片

3.数据集分类处理

将上述图片文件和标注的txt文件分为训练集train和验证集valid,train文件夹和valid文件夹下均有images文件夹和labels文件夹,images文件夹中为图片文件,labels文件夹中为标签文件,两个文件夹中的文件名称和数量须相同。
yolov5 口罩检测模型训练及测试_第4张图片
yolov5 口罩检测模型训练及测试_第5张图片
yolov5 口罩检测模型训练及测试_第6张图片
新建data.yaml配置文件,内容如下
train: C:/Users/Desktop/yolov5/mask/train/images
val: C:/Users/Desktop/yolov5/mask/valid/images
nc: 3
names: [‘mask’, ‘nomask’,‘worongmask’]

注明训练集和验证集图片位置、分类数量、分类名称即可

二、开始训练

打开源码中的train.py文件修改以下文件对应位置即可
yolov5 口罩检测模型训练及测试_第7张图片
另注意修改bach-size参数,works参数可能要为0,否则报错缺失dll

源码路径下cmd ,运行 python train.py文件即可进入训练
yolov5 口罩检测模型训练及测试_第8张图片

终端运行:tensorboard --logdir=训练路径,复制链接打开即可看到可视化参数面板

若报错,按以下方法处理:
在这里插入图片描述

再次重新输入tensorboard --logdir=训练路径即可
yolov5 口罩检测模型训练及测试_第9张图片

运行若报以下错误:
RuntimeError: result type Float can‘t be cast to the desired output type long int
可参考原文
修改【utils】中的【loss.py】里面的两处内容

1.打开你的【utils】文件下的【loss.py】

2.按【Ctrl】+【F】打开搜索功能,输入【for i in range(self.nl)】找到下面的一行内容:
yolov5 口罩检测模型训练及测试_第10张图片
(上面的代码在【loss.py】的后半部分)

将下面的代码替换掉上图中的红圈部分:

anchors, shape = self.anchors[i], p[i].shape

替换之后的效果是这样的:
在这里插入图片描述

3.按【Ctrl】+【F】打开搜索功能,输入【indices.append】找到下面的一行内容:
在这里插入图片描述

(上面的代码在【loss.py】的最后部分,具体位置在上一处搜索位置的下面10行左右)

将下面的代码替换掉上图中的红圈部分:

indices.append((b, a, gj.clamp_(0, shape[2] - 1), gi.clamp_(0, shape[3] - 1))) # image, anchor, grid

替换之后的效果是这样的:
在这里插入图片描述
4.保存刚才的两个替换操作

5.再次运行【train.py】文件,问题解决!!!代码跑通!!!

注意代码对齐!!!

三、测试

更改detect.py 文件的权重文件路径 与 测试图片路径即可

yolov5 源码文件下cmd ,运行python detect.py

yolov5 口罩检测模型训练及测试_第11张图片

你可能感兴趣的:(python,深度学习)