yolov5的口罩识别系统+GUI界面 (附代码)
基于YOLOv5模型的口罩识别系统,结合了GUI界面,旨在帮助用户快速、准确地识别图像或视频中佩戴口罩的情况。YOLOv5是一种流行的目标检测模型,具有高效的实时检测能力,而GUI界面则提供了友好的用户交互界面,使得整个系统更易于操作和使用。
通过该系统,用户可以上传图像或者选择视频进行口罩识别,系统会使用YOLOv5模型自动检测图中人脸并判断是否佩戴口罩。识别结果将会在界面上直观显示,同时还可以导出识别结果或者保存分析报告。这样的系统可以被广泛应用于监控系统、安全检查等领域,提高工作效率和准确性。
使用方式
- 安装依赖
pip install -r requirements.txt
- 运行 PyqtGUI.py 文件
python PyqtGUI.py
备注:best1、2、3.pt为模型文件,如有需要自行替换。
目标检测:
目标检测是计算机视觉和数字图像处理的一个热门方向,广泛应用于无人驾驶、智能视频监控、工业检测、航空航天等诸多领域,通过计算机视觉减少对人力资本的消耗,具有重要的现实意义。 因此,目标检测也就成为了近年来理论和应用的研究热点,它是图像处理和计算机视觉学科的重要分支,也是智能监控系统的核心部分,同时目标检测也是泛身份识别领域的一个基础性的算法,对后续的人脸识别、步态识别、人群计数、实例分割等任务起着至关重要的作用。
YOLOv5简介:
YOLOV4出现之后不久,YOLOv5横空出世。YOLOv5在YOLOv4算法的基础上做了进一步的改进,检测性能得到进一步的提升。YOLOv5在COCO数据集上面的测试效果非常不错。工业界也往往更喜欢使用这些方法,而不是利用一个超级复杂的算法来获得较高的检测精度。 YOLOv5是一种单阶段目标检测算法,速度与精度都得到了极大的性能提升。主要的改进思路如下所示:
- 输入端:在模型训练阶段,提出了一些改进思路,主要包括Mosaic数据增强、自适应锚框计算、自适应图片缩放。
- 基准网络:融合其它检测算法中的一些新思路,主要包括:Focus结构与CSP结构。
- Neck网络:目标检测网络在BackBone与最后的Head输出层之间往往会插入一些层,Yolov5中添加了FPN+PAN结构。
- 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
| | | ...
|-- weightsdwonload_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界面,方便对权重文件进行一个替换,对图片和视频进行一个监测,以及调用摄像头进行实时监测。
相关文章:
yolov5的口罩识别系统+GUI界面 (附代码)
基于YOLOv5模型的口罩识别系统,结合了GUI界面,旨在帮助用户快速、准确地识别图像或视频中佩戴口罩的情况。YOLOv5是一种流行的目标检测模型,具有高效的实时检测能力,而GUI界面则提供了友好的用户交互界面,使得整个系统…...
WPF中Window的外观实现及常用属性
文章目录 1. 概要2. Window的外观2.1 Window的外观组成2.2 Window的实现2.3 Window外观配置2.4 Window 的其他常用属性1. AllowsTransparency 2. WindowStartupLocation3. ShowInTaskbar4. ShowActivated5. SizeToContent6. Topmost7. WindowStyle 1. 概要 和 Android 类似, W…...
(有代码示例)Vue 或 JavaScript中使用全局通信的3种方式
在 Vue 或 JavaScript 应用中,可以使用以下库来实现全局事件通信: Vue.js 中的 EventBus: 在 Vue.js 中,可以使用 EventBus 来实现全局事件通信。EventBus 是一个 Vue 实例,用于在组件之间传递事件。你可以使用 $on、…...
MAB规范(1):概览介绍
前言 MATLAB的MAAB(MathWorks Automotive Advisory Board)建模规范是一套由MathWorks主导的建模指南,旨在提高基于Simulink和Stateflow进行建模的代码质量、可读性、可维护性和可重用性。这些规范最初是由汽车行业的主要厂商共同制定的&…...
基于振弦采集仪的土木工程安全监测技术研究
基于振弦采集仪的土木工程安全监测技术研究 随着土木工程的发展,安全监测成为了非常重要的一部分。土木工程的安全监测旨在及早发现结构的变形、位移、振动等异常情况,以便及时采取措施进行修复或加固,从而保障工程的安全运行。振弦采集仪作…...
这个高考作文满分的极客,想和你聊聊新媒体写作
计育韬 曾为上海市高考作文满分考生 微信官方 SVG AttributeName 开发者 新榜 500 强运营人 复旦大学青年智库讲师 浙江传媒学院客座导师 上海团市委新媒体顾问 上海市金山区青联副主席 文案能力,从来就不是一蹴而就的。今天,来和大家聊聊当年我的…...
AI推介-多模态视觉语言模型VLMs论文速览(arXiv方向):2024.05.25-2024.05.31
文章目录~ 1.Empowering Visual Creativity: A Vision-Language Assistant to Image Editing Recommendations2.Bootstrap3D: Improving 3D Content Creation with Synthetic Data3.Video-MME: The First-Ever Comprehensive Evaluation Benchmark of Multi-modal L…...
如何通过Python SMTP配置示例发附件邮件?
Python SMTP配置的步骤?SMTP服务器的优缺点有哪些? 当我们需要发送包含附件的邮件时,自动化的解决方案显得尤为重要。Python提供了SMTP库,使我们能够轻松配置并发送带有附件的邮件。AokSend将通过一个示例来展示如何操作…...
amd64
MD64,或"x64",是一种64位元的电脑处理器架构。它是基于现有32位元的x86架构,由AMD公司所开发,应用AMD64指令集的自家产品有Athlon(速龙) 64、Athlon 64 FX、Athlon 64 X2、Turion(炫龙) 64、Opteron(皓龙)、Sempron(闪龙…...
2024如何优化SEO?
在2024年的今天,要问我会如何优化seo,我会专注于几个关键的方面。首先,随着AI内容生成技术的发展,我会利用这些工具来帮助创建或优化我的网站内容,但是,随着谷歌3月份的算法更新,纯粹的ai内容可…...
【NoSQL数据库】Redis命令、持久化、主从复制
Redis命令、持久化、主从复制 redis配置 Redis命令、持久化、主从复制Redis数据类型redis数据库常用命令redis多数据库常用命令1、多数据库间切换2、多数据库间移动数据3、清除数据库内数据 key命令1、keys 命令2、判断键值是否存在exists3、删除当前数据库的指定key del4、获取…...
使用Django JWT实现身份验证
文章目录 安装依赖配置Django设置创建API生成和验证Token总结与展望 在现代Web应用程序中,安全性和身份验证是至关重要的。JSON Web Token(JWT)是一种流行的身份验证方法,它允许在客户端和服务器之间安全地传输信息。Django是一个…...
MT2084 检测敌人
思路: 1. 以装置为中心->以敌人为中心。 以敌人为中心,r为半径做圆,与x轴交于a,b点,则在[a,b]之间的装置都能覆盖此敌人。 每个敌人都有[a,b]区间,则此题转化为:有多少个装置能覆盖到这些[a,b]区间。…...
支持向量机、随机森林、K最近邻和逻辑回归-九五小庞
支持向量机(Support Vector Machine, SVM)、随机森林(Random Forest)、K最近邻(K-Nearest Neighbors, KNN)和逻辑回归(Logistic Regression)是机器学习和统计学习中常用的分类算法。…...
MySQL—多表查询—多表关系介绍
一、引言 提到查询,我们想到之前学习的单表查询(DQL语句)。而这一章节部分的博客我们将要去学习和了解多表查询。 对于多表查询,主要从以下7个方面进行学习。 (1)第一部分:介绍 1、多表关系 2、…...
Vue基础篇--table的封装
1、 在components文件夹中新建一个ITable的vue文件 <template><div class"tl-rl"><template :table"table"><el-tablev-loading"table.loading":show-summary"table.hasShowSummary":summary-method"table…...
mysql中optimizer trace的作用
大家好。对于MySQL 5.6以及之前的版本来说,查询优化器就像是一个黑盒子一样,我们只能通过EXPLAIN语句查看到最后 优化器决定使用的执行计划,却无法知道它为什么做这个决策。于是在MySQL5.6以及之后的版本中,MySQL新增了一个optimi…...
实习面试题(答案自敲)、
1、为什么要重写equals方法,为什么重写了equals方法后,就必须重写hashcode方法,为什么要有hashcode方法,你能介绍一下hashcode方法吗? equals方法默认是比较内存地址;为了实现内容比较,我们需要…...
二叉树讲解
目录 前言 二叉树的遍历 层序遍历 队列的代码 queuepush和queuepushbujia的区别 判断二叉树是否是完全二叉树 前序 中序 后序 功能展示 创建二叉树 初始化 销毁 简易功能介绍 二叉树节点个数 二叉树叶子节点个数 二叉树第k层节点个数 二叉树查找值为x的节点 判…...
Unity DOTS技术(五)Archetype,Chunk,NativeArray
文章目录 一.Chunk和Archetype什么是Chunk?什么是ArchType 二.Archetype创建1.创建实体2.创建并添加组件3.批量创建 三.多线程数组NativeArray 本次介绍的内容如下: 一.Chunk和Archetype 什么是Chunk? Chunk是一个空间,ECS系统会将相同类型的实体放在Chunk中.当一个Chunk…...
算法学习笔记(7.1)-贪心算法(分数背包问题)
##问题描述 给定 𝑛 个物品,第 𝑖 个物品的重量为 𝑤𝑔𝑡[𝑖−1]、价值为 𝑣𝑎𝑙[𝑖−1] ,和一个容量为 𝑐𝑎&…...
气膜建筑的施工对周边环境影响大吗?—轻空间
随着城市化进程的加快,建筑行业的快速发展也带来了环境问题。噪音、灰尘和建筑废料等对周边居民生活和生态环境造成了不小的影响。因此,选择一种环保高效的施工方式变得尤为重要。气膜建筑作为一种新兴的建筑形式,其施工过程对周边环境的影响…...
【计算机网络】对应用层HTTP协议的重点知识的总结
˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…...
30分钟快速入门TCPDump
TCPDump是一款功能强大的网络分析工具,它可以帮助网络管理员捕获并分析流经网络接口的数据包。由于其在命令行环境中的高效性与灵活性,TCPDump成为了网络诊断与安全分析中不可或缺的工具。本文将详细介绍TCPDump的基本用法,并提供一些高级技巧…...
Python | 刷题日记
1.海伦公式求三角形的面积 area根号下(p(p-a)(p-b)(p-c)) p是周长的一半 2.随机生成一个整数 import random xrandom.randint(0,9)#随机生成0到9之间的一个数 yeval(input("please input:")) if xy:print("bingo") elif x<y:pri…...
“JS逆向 | Python爬虫 | 动态cookie如何破~”
案例目标 目标网址:aHR0cHMlM0EvL21hdGNoLnl1YW5yZW54dWUuY29tL21hdGNoLzI= 本题目标:提取全部 5 页发布日热度的值,计算所有值的加和,并提交答案 常规 JavaScript 逆向思路 JavaScript 逆向工程通常分为以下三步: 寻找入口:逆向工程的核心在于找出加密参数的生成方式。…...
十.数据链路层——MAC/ARP
IP和数据链路层之间的关系 引言 在IP一节中,我们说IP层路由(数据转发)的过程,就像我们跳一跳游戏一样,从一个节点,转发到另一个节点 它提供了一种将数据从A主机跨网络发到B主机的能力 什么叫做跨网络??&a…...
Linux主机安全可视化运维(免费方案)
本文介绍如何使用免费的主机安全软件,在自有机房或企业网络实现对Linux系统进行可视化“主机安全”管理。 一、适用对象 本文适用于个人或企业内的Linux服务器运维场景,实现免费、高效、可视化的主机安全管理。提前发现主机存在的安全风险,全方位实时监控主机运行时入侵事…...
Vite + Vue 3 前端项目实战
一、项目创建 npm install -g create-vite #安装 Vite 项目的脚手架工具 # 或者使用yarn yarn global add create-vite#创建vite项目 create-vite my-vite-project二、常用Vue项目依赖安装 npm install unplugin-auto-import unplugin-vue-components[1] 安装按需自动导入组…...
python-字符替换
[题目描述] 给出一个字符串 s 和 q 次操作,每次操作将 s 中的某一个字符a全部替换成字符b,输出 q 次操作后的字符串输入 输入共 q2 行 第一行一个字符串 s 第二行一个正整数 q,表示操作次数 之后 q 行每行“a b”表示把 s 中所有的a替换成b输…...
无锡网站建设设计/外贸推广网站
serialize()和unserialize()在php手册上的解释是:serialize — Generates a storable representation of a valueserialize — 产生一个可存储的值的表示unserialize — Creates a PHP value from a stored representationunserialize — 从已存储的表示中创建 PHP 的值很显然,…...
哪里的佛山网站建设/南京市网站seo整站优化
如果要选一款史上最火游戏,一定非腾讯旗下的《王者荣耀》莫属。依托微信及QQ两大社交平台与自身的卓越品质,《王者荣耀》从公测以来一路高歌猛进,长期霸占手游榜单渗透率、DAU等各项数据魁首,成为了真正的手游王者。 近日…...
朋友让帮忙做网站/网站怎么做优化排名
一、引入jar包此处以marvern项目为例 pom.xml文件中引入以下内容: <!--FastDFS --><dependency><groupId>org.csource.fastdfs</groupId><artifactId>fastdfs_client</artifactId><version>1.24</version></dep…...
网站ome系统怎么做/百度seo引流怎么做
1 、进入 C:\Windows\System32\drivers\etc 打开文件HOSTS文件添加 127.0.0.1 blog.com 2、进入apache配置文件中 F:\xampp\apache\conf\extra 打开文件httpd-vhosts.conf 添加 <VirtualHost *:80> DocumentRoot "F:/www"ServerName blog.com </Virtu…...
wordpress文章图片粘贴固定大小/推广和竞价代运营
步骤系列文章1.异常聊天窗口2.设置使用多彩气泡3.恢复正常气泡总结系列文章 提示:转到日常小技巧专栏,观看更多内容! 点我直达–>日常小技巧专栏 1.异常聊天窗口 一开始还以为是自己的气泡过期(你可以检查一下)&a…...
hexo与wordpress区别/兰州搜索引擎优化
CyclicBarrier意为“循环栅栏”,是一个可循环利用的屏障。CyclicBarrier可以使指定数量线程到达阻塞点后继续后续任务。 演示示例: 首先,新建一个线程类,用于模拟多线程环境。 package com.securitit.serialize.juc;import java.…...