YOLOv5实操——检测是否戴口罩
创始人
2024-01-31 09:11:22
0

文章目录

  • 数据集和代码的准备
    • yolov5源码下载
    • 数据集的下载
    • 制作个人数据集
      • 数据集标注
      • json 转 txt
  • 训练阶段
    • 模型训练
    • 可视化
  • 测试阶段

数据集和代码的准备

yolov5源码下载

yolov5官方下载地址

数据集的下载

直接下载别人制作好的数据集

Mask Wearing Dataset 下载
在这里插入图片描述

在这里插入图片描述
然后将其放入与yolov5-master同级的目录下。
在这里插入图片描述
打开MaskDataSet ,可以看到其目录结构如下:
在这里插入图片描述
images文件夹下的图片
在这里插入图片描述
lables文件夹下对应的同名txt文件。
在这里插入图片描述
data.yaml : trainval 分别制定了训练集和测试集文件夹相对于yolov5-master的路径。nc指定了标签的个数一共两个。names指定了标签的名称分别为maskno-mask

train: ../MaskDataSet/train/images   
val: ../MaskDataSet/valid/imagesnc: 2
names: ['mask', 'no-mask']

制作个人数据集

我们也可以制作自己的数据集进行训练

数据集标注

首先要安装 lableme,在当前的虚拟环境下键入pip install labelme 。安装完成后,再次输入labelme,即可进入labelme的图形化界面。
在这里插入图片描述
【file】——>【Change Output Dir】, 选择保存标签的新文件夹(labelme生成的标签是json文件的格式,后续需要转化成txt文件才能被yolov5使用)
【file】——>【Save Automatically】自动保存
在这里插入图片描述

快捷键Clt+R ,创建长方形分别框住所有的检测目标。并填写标签(如此处我填写的是mask,代表戴口罩),选择ok 。然后点击【next image】,对其他的图片进行标注。
在这里插入图片描述

json 转 txt

标注完成后会生成对应的json文件, 我们需要将其转换为yolov5中需要的txt文件。
转换的脚本如下:

import os
import json
import numpy as npdir_json = 'E:\\project\\yolo\\data\\json\\'  # json存储的文件目录
dir_txt = 'E:\\project\\yolo\\data\\labels\\'  # txt存储目录
if not os.path.exists(dir_txt):os.makedirs(dir_txt)
list_json = os.listdir(dir_json)def json2txt(path_json, path_txt):  # 可修改生成格式with open(path_json, 'r') as path_json:jsonx = json.load(path_json)with open(path_txt, 'w+') as ftxt:for shape in jsonx['shapes']:label = str(shape['label']) + ' 'xy = np.array(shape['points'])strxy = ''for m, n in xy:m = int(m)n = int(n)strxy += str(m) + ' ' + str(n) + ' 'label += strxyftxt.writelines(label + "\n")for cnt, json_name in enumerate(list_json):print('cnt=%d,name=%s' % (cnt, json_name))path_json = dir_json + json_namepath_txt = dir_txt + json_name.replace('.json', '.txt')json2txt(path_json, path_txt)

训练阶段

模型训练

在运行代码之前,需要搭建pytorch的虚拟环境。可以参见教程Windows系统用Anaconda安装pytorch的gpu版本

然后在pycharm 中切换虚拟环境
在这里插入图片描述
打开train.py文件,配置相关参数

--data ../MaskDataSet/data.yaml
--cfg models/yolov5s.yaml
--weights weights/yolov5s.pt
--batch-size 16

debug记录
【1】No module named ‘cv2’
解决方法:pip install opencv-python
【2】RuntimeError: CUDA out of memory. Tried to allocate 20.00 MiB (GPU 0; 4.00 GiB total capacity; 2.56 GiB already allocated; 0 bytes free; 2.57 GiB reserved in total by PyTorch)
解决方法:在参数设置中,将batchsize 调小一点
【3】TypeError: can’t convert cuda:0 device type tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first.
解决方法:点击进入Traceback 中最后一个蓝色链接(tensor.py文件)将self.numpy修改为self.cpu().numpy()
在这里插入图片描述

可视化

我们可以使用tensorboard对训练结果进行可视化
首先安装tensorboard pip install tensorboard
然后在pycharm中打开终端 cd yolov5-master, tensorboard --logdir=./runs
在这里插入图片描述
在浏览器中查看http://localhost:6006/
在这里插入图片描述

测试阶段

添加detect.py的配置文件

--source
./inference/images/
--weights
./weights/best.pt
--conf
0.4

上一篇:四个字是什么

下一篇:描述渔民的句子

相关内容

热门资讯

德国副总理:不能被美国的政策“... 每经编辑|黄胜 新华社1月18日消息,据德国电视二台报道,德国副总理兼财政部长拉尔斯·克林拜尔18...
德国副总理称不能被美政策“吓倒... 据新华社报道,德国副总理兼财政部长拉尔斯·克林拜尔18日说,德国不能被美国针对格陵兰岛的政策“吓倒”...
原创 在... 很多朋友第一次听说“伊朗开房罪”,都会下意识以为: 这是一个宗教极端保守、专门防止婚前性行为的规定。...
2025年以来济南市人大常委会...   鲁网1月18日讯(记者 徐英淦 李秀娟)鲁网记者在济南市十八届人大五次会议新闻发布会上获悉,20...
2026 北京合同纠纷律师:赠... 随着企业合规需求激增与商事活动日趋复杂,合同纠纷已成为市场主体面临的主要法律风险之一。选择一位专业、...
律师谈流量艺人与经纪公司解约:... 封面新闻记者 王一理 1月18日,演员@成毅 与@欢瑞经纪 的经纪合约到期及续约问题引发关注。记者注...
突发!特朗普宣布:将起诉摩根大... 王爷说财经讯:彻底翻脸了?发生了什么? 美国总统特朗普居然要把华尔街“话事人”摩根大通告上法庭? 注...