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

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

一、数据集准备

1.利用网上公开数据集

在这里插入图片描述
在这里插入图片描述

2.xml转txt

可以看到公开数据集标注保存的为xml文件格式,利用上一篇文章中所述的python脚本文件,将xml文件转txt文件如下:
在这里插入图片描述

3.数据集分类处理

将上述图片文件和标注的txt文件分为训练集train和验证集valid,train文件夹和valid文件夹下均有images文件夹和labels文件夹,images文件夹中为图片文件,labels文件夹中为标签文件,两个文件夹中的文件名称和数量须相同。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
新建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文件修改以下文件对应位置即可
在这里插入图片描述
另注意修改bach-size参数,works参数可能要为0,否则报错缺失dll

源码路径下cmd ,运行 python train.py文件即可进入训练
在这里插入图片描述

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

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

再次重新输入tensorboard --logdir=训练路径即可
在这里插入图片描述

运行若报以下错误:
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)】找到下面的一行内容:
在这里插入图片描述
(上面的代码在【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

在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这里是一个简单的YOLOv5口罩检测代码示例,仅供参考: ```python import torch import cv2 import numpy as np # 加载模型 model = torch.hub.load('ultralytics/yolov5', 'yolov5s', pretrained=True) # 加载类别名称 class_names = ['mask', 'no-mask'] # 加载图像 img = cv2.imread('test.jpg') # 进行目标检测 results = model(img) # 获取检测结果 preds = results.pred[0] pred_boxes = preds[:, :4].cpu().numpy() pred_scores = preds[:, 4].cpu().numpy() pred_labels = preds[:, 5].cpu().numpy().astype(np.int) # 可视化检测结果 for box, score, label in zip(pred_boxes, pred_scores, pred_labels): if score > 0.5: # 设置阈值 x1, y1, x2, y2 = box.astype(np.int) cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2) cv2.putText(img, class_names[label], (x1, y1), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2) # 显示结果 cv2.imshow('result', img) cv2.waitKey() ``` 这段代码使用了PyTorch中的YOLOv5模型和OpenCV库进行目标检测和可视化。具体来说,它做了以下几件事情: 1. 加载YOLOv5模型,使用预训练yolov5s权重; 2. 定义口罩和无口罩两类的类别名称; 3. 加载测试图像,进行目标检测,并获取检测结果中的坐标、置信度和类别信息; 4. 根据置信度阈值对检测结果进行筛选,并在原图上绘制检测框和类别标签; 5. 显示检测结果。 需要注意的是,这段代码只是一个简单的示例,实际应用中可能需要对模型进行微调、调整阈值等操作,以获得更好的检测效果。同时,也需要注意模型的输入格式、输出格式等细节问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值