yolov5的口罩识别系统+GUI界面 (附代码)

news2025/1/23 7:05:24

基于YOLOv5模型的口罩识别系统,结合了GUI界面,旨在帮助用户快速、准确地识别图像或视频中佩戴口罩的情况。YOLOv5是一种流行的目标检测模型,具有高效的实时检测能力,而GUI界面则提供了友好的用户交互界面,使得整个系统更易于操作和使用。

通过该系统,用户可以上传图像或者选择视频进行口罩识别,系统会使用YOLOv5模型自动检测图中人脸并判断是否佩戴口罩。识别结果将会在界面上直观显示,同时还可以导出识别结果或者保存分析报告。这样的系统可以被广泛应用于监控系统、安全检查等领域,提高工作效率和准确性。

使用方式

  1. 安装依赖
pip install -r requirements.txt 
  1. 运行 PyqtGUI.py 文件
python PyqtGUI.py

备注:best1、2、3.pt为模型文件,如有需要自行替换。

目标检测:

目标检测是计算机视觉和数字图像处理的一个热门方向,广泛应用于无人驾驶、智能视频监控、工业检测、航空航天等诸多领域,通过计算机视觉减少对人力资本的消耗,具有重要的现实意义。 因此,目标检测也就成为了近年来理论和应用的研究热点,它是图像处理和计算机视觉学科的重要分支,也是智能监控系统的核心部分,同时目标检测也是泛身份识别领域的一个基础性的算法,对后续的人脸识别、步态识别、人群计数、实例分割等任务起着至关重要的作用。


YOLOv5简介:

YOLOV4出现之后不久,YOLOv5横空出世。YOLOv5在YOLOv4算法的基础上做了进一步的改进,检测性能得到进一步的提升。YOLOv5在COCO数据集上面的测试效果非常不错。工业界也往往更喜欢使用这些方法,而不是利用一个超级复杂的算法来获得较高的检测精度。 YOLOv5是一种单阶段目标检测算法,速度与精度都得到了极大的性能提升。主要的改进思路如下所示:

  1. 输入端:在模型训练阶段,提出了一些改进思路,主要包括Mosaic数据增强、自适应锚框计算、自适应图片缩放。
  2. 基准网络:融合其它检测算法中的一些新思路,主要包括:Focus结构与CSP结构。
  3. Neck网络:目标检测网络在BackBone与最后的Head输出层之间往往会插入一些层,Yolov5中添加了FPN+PAN结构。
  4. Head输出层:输出层的锚框机制与YOLOv4相同,主要改进的是训练时的损失函数GIOU_Loss,以及预测框筛选的DIOU_nms。

YOLOv5S模型的网络架构:

YOLOV5目录结构:

其中,train.py这个文件也是我们接下来训练yolo模型需要用到的启动文件。 requirement.txt 中有我们所需要的的全部依赖,采用pip安装。

pip install -r requirements.txt #安装完依赖后准备工作完成

 每个文件作用:

YOLOv5
|   detect.py  #检测脚本
|   hubconf.py  # PyTorch Hub相关代码
|   LICENSE    # 版权文件
|   README.md  #README  markdown 文件
|   requirements.txt   #项目所需的安装包列表
|   sotabench.py    #COCO 数据集测试脚本
|   test.py         #模型测试脚本
|   train.py         #模型训练脚本
|   tutorial.ipynb   #Jupyter Notebook演示代码
|-- data
|    |   coco.yaml           #COCO 数据集配置文件
|    |   coco128.yaml        #COCO128 数据集配置文件
|    |   hyp.finetune.yaml   #超参数微调配置文件
|    |   hyp.scratch.yaml    #超参数启始配置文件
|    |   voc.yaml            #VOC数据集配置文件
|    |---scripts
|             get_coco.sh   # 下载COCO数据集shell命令
|             get_voc.sh   # 下载VOC数据集shell命令
|-- inference
|    |   images         #示例图片文件夹
|              bus.jpg
|              zidane.jpg
|-- models
|    |   common.py         #模型组件定义代码
|    |   experimental.py   #实验性质的代码
|    |   export.py         #模型导出脚本
|    |   yolo.py           # Detect 及 Model构建代码
|    |   yolo5l.yaml       # yolov5l 网络模型配置文件
|    |   yolo5m.yaml       # yolov5m 网络模型配置文件
|    |   yolo5s.yaml       # yolov5s 网络模型配置文件
|    |   yolo5x.yaml       # yolov5x 网络模型配置文件
|    |   __init__.py       
|    |---hub
|            yolov3-spp.yaml
|            yolov3-fpn.yaml
|            yolov3-panet.yaml
|-- runs    #训练结果
|    |--exp0
|    |   |	events.out.tfevents.
|    |   |  hyp.yaml
|    |   |  labels.png
|    |   |  opt.yaml
|    |   |  precision-recall_curve.png
|    |   |  results.png
|    |   |  results.txt
|    |   |  test_batch0_gt.jpg
|    |   |  test_batch0_pred.jpg
|    |   |  test_batch0.jpg
|    |   |  test_batch1.jpg
|    |   |  test_batch2.jpg
|    |   |--weights
|    |             best.pt   #所有训练轮次中最好权重
|    |             last.pt   #最近一轮次训练权重
|-- utils
|    |   activations.py   #激活函数定义代码  
|    |   datasets.py      #Dataset 及Dataloader定义代码
|    |   evolve.py        #超参数进化命令 
|    |   general.py       #项目通用函数代码  
|    |   google_utils.py  # 谷歌云使用相关代码
|    |   torch_utils.py   # torch工具辅助类代码 
|    |   __init__.py   # torch工具辅助类代码 
|    |---google_app_engine
|               additional_requirements.txt
|				app.yaml
|				Dockerfile
|-- VOC   #数据集目录
|    |--images  #数据集图片目录
|    |    |--train  # 训练集图片文件夹
|    |    |         000005.jpg
|    |    |         000007.jpg
|    |    |         000009.jpg
|    |    |         0000012.jpg
|    |    |         0000016.jpg
|    |    |         ...
|    |    |--val    # 验证集图片文件夹 
|    |    |         000001.jpg
|    |    |         000002.jpg
|    |    |         000003.jpg
|    |    |         000004.jpg
|    |    |         000006.jpg
|    |    |         ...       
|    |--labels  #数据集标签目录
|    |    train.cache
|    |    val.cache
|    |    |--train  # 训练标签文件夹
|    |    |         000005.txt
|    |    |         000007.txt
|    |    |         ...
|    |    |--val    # 验证集图片文件夹 
|    |    |         000001.txt
|    |    |         000002.txt
|    |    |         ...    
|-- weights
    dwonload_weights.sh   #下载权重文件命令
    yolov5l.pt  #yolov5l 权重文件
    yolov5m.pt  #yolov5m 权重文件
    yolov5s.mlmodel  #yolov5s 权重文件(Core M格式)
    yolov5s.onnx  #yolov5s 权重文件(onnx格式)
    yolov5s.torchscript  #yolov5s 权重文件(torchscript格式)
    yolov5x.pt  #yolov5x 权重文件

模型训练过程:

使用环境:Python3.8+torch1.8.1+cuda11.1+pycharm (注:cuda的安装版本取决于显卡类型)

1.数据集的标注:

python打开labelimg这个软件进行标注。

python labelimg.py

数据格式建议选择VOC,后期再转换成 yolo格式。 ( VOC会生成 xml 文件,可以灵活转变为其他模型所需格式)

本次训练标注两个标签,佩戴口罩为 mask,未佩戴口罩为 face。

在根目录下建立一个VOCData文件夹,再建立两个子文件,其中,jpg文件放置在VOCData/images下,xml放置在VOCData/Annotations中。(这一步根据个人随意,因为在训练时需要创建配置文件指定模型训练集的目录)

2.数据集的训练:

①、在项目根目录下文件夹下新建mask_data.yaml配置文件,添加如下内容: (根据个人情况修改)

其中: path:项目的根目录 train:训练集与path的相对路径 val:验证集与path的相对路径 nc:类别数量,2个 names:类别名字 (上一步中标注好的训练集,可以按照想要比例划分为训练和验证集,也可以不划分填同一路径。)

②、修改启动文件 train.py:

打开train.py,其相关参数如下:

 其中: weights:权重文件路径 cfg:存储模型结构的配置文件 data:存储训练、测试数据的文件(上一步中自己创建的那个.yaml) epochs:训练过程中整个数据集的迭代次数 batch-size:训练后权重更新的图片数 img-size:输入图片宽高。 device:选择使用GPU还是CPU workers:线程数,默认是8

#输入命令开始训练:
python train.py --weights data/yolov5s.pt --cfg models/yolov5s.yaml --data data/mask_data.yaml --epoch 100 --batch-size 8 --device 0

③、等待慢慢跑完

模型结果数据呈现:

1.数据集的分布:

mask的照片约有2000张,face的照片约有2500张。

2.损失函数和准确率:

可以看到随着训练的进行,以不同方式呈现的损失函数呈明显下降趋势,准确率呈上升趋势。

3.置信度与准确率:

置信度在0.6以上时,准确率接近80%。


GUI编程:

编写GUI界面,方便对权重文件进行一个替换,对图片和视频进行一个监测,以及调用摄像头进行实时监测。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1789443.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32作业设计

目录 STM32作业设计 STM32作业实现(一)串口通信 STM32作业实现(二)串口控制led STM32作业实现(三)串口控制有源蜂鸣器 STM32作业实现(四)光敏传感器 STM32作业实现(五)温湿度传感器dht11 STM32作业实现(六)闪存保存数据 STM32作业实现(七)OLED显示数据 STM32作业实现(八)触摸按…

Java学习19-List、set容器

目录 一.List: 1.List基本介绍: 2.List接口方法: 3.List的三种遍历方式: 4.ArrayList: (1)ArrayLis的基本介绍: (2)ArrayList底层结构和源码分析&…

分层存储的图片的3d显示

分层存储的图片叠层成为3d,并显示。 文件夹D:\mask内的分层存储的图像文件mask_1.PNG至mask_12.PNG: 1、显示为3d点云: import open3d as o3d import numpy as np from PIL import Imagedef images2point_cloud(paths, layer_height):point…

vue中实现一个时间选择器的级联框,第一层小时,第二层分钟

最近在做一个考勤系统时&#xff0c;新增班次的时候需要设置打卡时段&#xff0c;类似如下效果&#xff1a; 1、封装自定义组件Time.vue 接收参数有endHour(范围结束的小时数)、endMinute(最后一小时结束的分钟数)等&#xff0c;根据具体需求变动 <template><div&…

一天涨粉1000+,月变现至少1w+的AI副业项目。

大家好&#xff0c;我是设计师阿威 今天我要揭秘一个一天涨粉1000&#xff0c;月变现至少1w的AI副业项目。 视频制作超级简单&#xff0c;却几乎条条爆款&#xff0c;看下图 这个作品玩法的原理就是&#xff0c;让Ai绘图软件&#xff0c;生成自己理解的某个事物或者东西是什么…

山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(二十六)- 微服务(6)

目录 10. Docker 10.1 Docker基本操作 10.1.1 镜像相关命令 10.1.2 容器相关命令 10.2 数据卷命令 10.2.1 常用命令 : 10.2.2 挂载数据卷 10. Docker 10.1 Docker基本操作 10.1.1 镜像相关命令 docker --help 查看docker帮助文档 docker images --help 查看docker ima…

石油行业的数字化转型与智能化发展:新技术综合运用助力业务提升

引言 石油行业面临的挑战与机遇 石油行业是全球能源供应的重要支柱&#xff0c;然而&#xff0c;随着资源枯竭、环境压力增加以及市场竞争加剧&#xff0c;石油企业面临着前所未有的挑战。传统的勘探和生产方式已经难以满足当前高效、安全、环保的要求。同时&#xff0c;能源转…

Codeforces Round 948 (Div. 2) A~D

A. Little Nikita &#xff08;思维&#xff09; 题意&#xff1a; 小 A A A决定用一些立方体建一座塔。一开始&#xff0c;塔上没有任何立方体。在一次移动中&#xff0c;小 A A A要么正好把 1 1 1 个立方体放到塔顶&#xff0c;要么正好从塔顶移走 1 1 1 个立方体。存不存…

适合能源企业的文档安全外发系统应该是什么样的?

能源企业是市场经济中的重要组成&#xff0c;也是社会可持续长远发展的关键组成之一&#xff0c;能源行业在开拓新能源业务线、提升产能的日常经营中&#xff0c;也需要与外部合作伙伴、客户间进行密切的业务往来&#xff0c;文档可能涉及多个领域多个类型。 能源供应合同&…

车载测试常用工具简介

什么是车载测试 车载测试是对车辆的智能模块进行的测试工作&#xff0c;是道路测试的一部分。车载测试包括功能测试、性能测试&#xff0c;安全测试等。测试方法有软件测试和硬件测试。目前来说新能源汽车所说的车载测试主要指的是汽车软件的功能测试&#xff0c;也就是针对汽…

企业微信hook接口协议,ipad协议http,发送朋友圈评论

发送朋友圈评论 参数名必选类型说明uuid是String每个实例的唯一标识&#xff0c;根据uuid操作具体企业微信 请求示例 {"uuid":"1688857826547606","ref_commentid":0, //评论id 默认传0 如果需要回复别人的评论则传别人评论的id 从获取朋友圈…

Java文件操作①——XML文件的读取

系列文章目录 文章目录 系列文章目录前言一、邂逅XML二、应用 DOM 方式解析 XML三、应用 SAX 方式解析 XML四、应用 DOM4J 及 JDOM 方式解析 XMLJDOM 方式解析 XMLDOM4J 方式解析 XML前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。…

Python | 试卷刷题and基础笔记

1.下列转义字符中&#xff0c; 属于“回车”含义的是 \n 换行 \r 回车 2.for循环遍历字典 在Python中&#xff0c;你可以使用for循环来遍历字典的键&#xff08;keys&#xff09;、值&#xff08;values&#xff09;或者键-值对&#xff08;items&#xff09;。下面是三种遍历…

免费生物蛋白质的类chatgpt工具助手copilot:小分子、蛋白的折叠、对接等

参考: https://310.ai/copilot 可以通过自然语言对话形式实现小分子、蛋白质的相关处理:生成序列、折叠等 应该是agent技术调用不同工具实现 从UniProt数据库中搜索和加载蛋白质。使用ESM Fold方法折叠蛋白质。使用310.ai基础模型设计新蛋白质。使用TM-Align方法比较蛋白质…

数据库迁移的神秘面纱:Liquibase异常全解析与解决之道

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 一、Liquibase简介与重要性 Liquibase&#xff0c;这个名字听起来就像是液体的魔法。在软件开发的世界里&#xff0c;它确实是一种魔法&#xff0c;一种让数据库变更变得清晰、可控甚至可逆的魔法。但就像所有魔法一…

算法基础之哈希表

大家好&#xff0c;这里是教授.F 什么是哈希表&#xff1a; 哈希表其实就是数组的pro版本。数组有下标&#xff0c;每个下标对应着一个值。哈希表也类似&#xff0c;哈希表有很多哈希值&#xff0c;然后每一个哈希值都会对应着一个值。就是这样&#xff1a;hash(key) 哈希表的…

视频号视频提取器有那些?免费版可以下载视频号视频吗?

在网络上&#xff0c;确实存在多种工具和公众号用于下载视频号内容。今天就说说免费的视频提取器有那些&#xff1f; 视频号提取器工具中常见的有公众号和软件。这些工具通常可以帮助用户从微信视频号平台下载视频内容。 但请注意&#xff0c;使用这些工具可能需要考虑版权和法…

【记录】打印|用浏览器生成证件照打印PDF,打印在任意尺寸的纸上(简单无损!)

以前我打印证件照的时候&#xff0c;我总是在网上找在线证件照转换或者别的什么。但是我今天突然就琢磨了一下&#xff0c;用 PDF 打印应该也可以直接打印出来&#xff0c;然后就琢磨出来了&#xff0c;这么一条路大家可以参考一下。我觉得比在线转换成一张 a4 纸要方便的多&am…

南卡、韶音、Cleer、漫步者开放式耳机好用吗?最强开放式耳机对比揭秘!

在挑选开放式耳机时&#xff0c;个人经验和实际需求应当优先考虑&#xff0c;而非盲目追随潮流或品牌效应。投资耳机前务必慎重&#xff0c;毕竟高价值商品若无法退换&#xff0c;难免造成遗憾。为了帮助大家做出更加明智的决策&#xff0c;我亲自出资购买并测试了市面上多款主…

【Java】Hutool发送邮件功能

目录 开通qq邮箱的stmp实战pom.xmlapplication.ymlcontrollerservice实体类辅助类 需要实现一个通过邮箱找回密码的功能 正常来说&#xff0c;找回密码的验证码&#xff0c;一般来说&#xff0c;都是通过手机号来找回的居多&#xff0c;那为什么会有通过邮箱找回的方式该说不说…