【数据集】【YOLO】【目标检测】口罩材料集,口罩佩戴识别材料集 1971 张,YOLO佩戴口罩检测算法实战训练教程。

news/2026/1/25 18:12:21/文章来源:https://www.cnblogs.com/yangykaifa/p/19530227

 数据集介绍

数据集口罩佩戴检测数据集 1971 张,目标检测,包含YOLO/VOC格式标注

数据集中包含1种分类:{'0': 'face_mask'},佩戴口罩

数据集来自国内外图片网站和视频截图。

检测场景为城市街道、医院、商场、机场、车站、办公大楼、施工地等人员密集的场所人员口罩佩戴检测,可用于智慧城市、智慧园区、智慧医疗等,服务于保护人员安全、疫情防控工作

数据集当中含有626张负样本数据,内容是不戴口罩的人脸图像数据,方便模型进行区分识别。

文章底部或主页私信获取数据集~ 

5f8faa147db04315bd7aa2532fccc868.png

7ba6d883cd6b4be092f434406d557bbd.png

ccb175236b17460a8357b3320c405b77.png

15e4861801af472db01e571f5ec72411.png

d80e8545c2dc4219b5511f2ead02c452.png

70495e28862d4c279e02884be79daf4b.png

负样本:

89fc321b55204582af693eca5ab3690b.png

一、数据概述

口罩佩戴检测的重要性

在当前的公共卫生和安全领域,口罩佩戴识别技术具有广泛的应用需求。随着全球疫情的持续影响,口罩已成为日常生活中不可或缺的防护用品。在公共场所(如机场、车站、商场等)、医疗保健环境以及执法和安全场景中,准确识别和监测口罩佩戴情况对于保障公众健康和安全具有重要意义。因此,开发一种高效、准确的口罩佩戴识别算法显得尤为重要。

实现原理

基于YOLO的口罩佩戴识别算法利用卷积神经网络提取图像中的特征,并通过单次前向传播预测图像中是否存在口罩以及佩戴方式是否正确。算法首先将图像划分为网格单元,然后为每个网格单元分配多个锚框,通过预测每个锚框的置信度和偏移量来确定图像中是否存在口罩以及其位置。

基于YOLO的口罩佩戴识别算法

实现口罩佩戴识别,数据集包含佩戴口罩和不佩戴口罩人员的图像数据集。数据集包含足够的样本以覆盖不同的面部特征、口罩类型以及佩戴方式。然后,使用YOLO算法对数据集进行训练,以学习口罩佩戴的特征和模式。

该数据集含有1971张图片,包含Pascal VOC XML格式和YOLO TXT格式,用于训练和测试城市街道、医院、商场、机场、车站、办公大楼、施工地等人员密集的场所人员口罩佩戴检测

图片格式为jpg格式,标注格式分别为:

YOLO:txt

VOC:xml

数据集均为手工标注,保证标注精确度。

二、数据集文件结构

14cc842401fc4bce820011d99b4e9739.png

a74088ec7a5d4f6ca79f8aa3df1403a0.png

d29da61b61564f3fabfffb21bd55d703.png

366a850da8474d4b82fbe5f66b90c234.png

30c122445d9f4b348cbdb9e2b28eaf26.png

face_mask/

——Annotations/

——images/

——labels/

——data.yaml

  • Annotations文件夹为Pascal VOC格式的XML文件 ;
  • images文件夹为jpg格式的数据样本;
  • labels文件夹是YOLO格式的TXT文件;
  • data.yaml是数据集配置文件,包含口罩检测的目标分类和加载路径。

三、数据集适用范围 

  • 目标检测场景
  • yolo训练模型或其他模型
  • 城市街道、医院、商场、机场、车站、办公大楼、施工地等人员密集的场所人员口罩佩戴检测
  • 智慧城市、智慧园区、智慧医疗等,服务于保护人员安全、疫情防控工作

四、数据集标注结果 

6722b9d4e7f749cb9e9e4a1ca7141e1b.png​​d093d51be2ab445394a9c4a72c39c570.png

a41dc9e66a2e414dbebd4a285820871e.pngd699ea58857a44e7a646834fbff2c71e.png

327b324c725d4dc282f57e9bb09e4b2a.png308c4234c0bc414facdc242af4203ede.png

1、数据集内容 

  1. 多角度场景:包含人脸自拍视角、监控视角等;
  2. 标注内容:names: ['face_mask'],总计1个分类;
  3. 负样本:数据集当中含有626张负样本数据,内容是不戴口罩的人脸图像数据,方便模型进行区分识别
  4. 图片总量:1971张图片数据;
  5. 标注类型:含有Pascal VOC XML格式和yolo TXT格式;

五、训练过程

1、导入训练数据

下载YOLOv8项目压缩包,解压在任意本地workspace文件夹中。

下载YOLOv8预训练模型,导入到ultralytics-main项目根目录下。

0bed55f82ab64c478e2ed724a07abad0.png​​​​

ultralytics-main项目根目录下,创建data文件夹,并在data文件夹下创建子文件夹:Annotations、images、imageSets、labels,其中,将pascal VOC格式的XML文件手动导入到Annotations文件夹中,将JPG格式的图像数据导入到images文件夹中,imageSets和labels两个文件夹不导入数据。

data目录结构如下:

data/

——Annotations/   //存放xml文件

——images/          //存放jpg图像

——imageSets/

——labels/

整体项目结构如下所示:

4417fb0d7f8042c58aeec3b3051e2f22.png

2、数据分割

首先在ultralytics-main目录下创建一个split_train_val.py文件,运行文件之后会在imageSets文件夹下将数据集划分为训练集train.txt、验证集val.txt、测试集test.txt,里面存放的就是用于训练、验证、测试的图片名称。

import os
import random
trainval_percent = 0.9
train_percent = 0.9
xmlfilepath = 'data/Annotations'
txtsavepath = 'data/ImageSets'
total_xml = os.listdir(xmlfilepath)
num = len(total_xml)
list = range(num)
tv = int(num * trainval_percent)
tr = int(tv * train_percent)
trainval = random.sample(list, tv)
train = random.sample(trainval, tr)
ftrainval = open('data/ImageSets/trainval.txt', 'w')
ftest = open('data/ImageSets/test.txt', 'w')
ftrain = open('data/ImageSets/train.txt', 'w')
fval = open('data/ImageSets/val.txt', 'w')
for i in list:name = total_xml[i][:-4] + '\n'if i in trainval:ftrainval.write(name)if i in train:ftrain.write(name)else:fval.write(name)else:ftest.write(name)
ftrainval.close()
ftrain.close()
fval.close()
ftest.close()

3、数据集格式化处理

在ultralytics-main目录下创建一个voc_label.py文件,用于处理图像标注数据,将其从XML格式(通常用于Pascal VOC数据集)转换为YOLO格式。

convert_annotation函数

  • 这个函数读取一个图像的XML标注文件,将其转换为YOLO格式的文本文件。

  • 它打开XML文件,解析树结构,提取图像的宽度和高度。

  • 然后,它遍历每个目标对象(object),检查其类别是否在classes列表中,并忽略标注为困难(difficult)的对象。

  • 对于每个有效的对象,它提取边界框坐标,进行必要的越界修正,然后调用convert函数将坐标转换为YOLO格式。

  • 最后,它将类别ID和归一化后的边界框坐标写入一个新的文本文件。

import xml.etree.ElementTree as ET
import os
from os import getcwd
sets = ['train', 'val', 'test']
classes = ['face_mask'] # 根据标签名称填写类别
abs_path = os.getcwd()
print(abs_path)
def convert(size, box):dw = 1. / (size[0])dh = 1. / (size[1])x = (box[0] + box[1]) / 2.0 - 1y = (box[2] + box[3]) / 2.0 - 1w = box[1] - box[0]h = box[3] - box[2]x = x * dww = w * dwy = y * dhh = h * dhreturn x, y, w, h
def convert_annotation(image_id):in_file = open('data/Annotations/%s.xml' % (image_id), encoding='UTF-8')out_file = open('data/labels/%s.txt' % (image_id), 'w')tree = ET.parse(in_file)root = tree.getroot()size = root.find('size')w = int(size.find('width').text)h = int(size.find('height').text)for obj in root.iter('object'):difficult = obj.find('difficult').textcls = obj.find('name').textif cls not in classes or int(difficult) == 1:continuecls_id = classes.index(cls)xmlbox = obj.find('bndbox')b = (float(xmlbox.find('xmin').text),float(xmlbox.find('xmax').text),float(xmlbox.find('ymin').text),float(xmlbox.find('ymax').text))b1, b2, b3, b4 = b# 标注越界修正if b2 > w:b2 = wif b4 > h:b4 = hb = (b1, b2, b3, b4)bb = convert((w, h), b)out_file.write(str(cls_id) + " " + " ".join([str(a) for a in bb]) + '\n')
wd = getcwd()
for image_set in sets:if not os.path.exists('data/labels/'):os.makedirs('data/labels/')image_ids = open('data/ImageSets/%s.txt' % (image_set)).read().strip().split()list_file = open('data/%s.txt' % (image_set), 'w')for image_id in image_ids:list_file.write(abs_path + '/data/images/%s.jpg\n' % (image_id))convert_annotation(image_id)list_file.close()

4、修改数据集配置文件

在ultralytics-main目录下创建一个wheat.yaml文件

train: data/train.txt
val: data/val.txt
test: data/test.txt
# number of classes
nc: 1
# class names
names: ['face_mask']

5、执行命令

执行train.py

model = YOLO('yolov8s.pt')
results = model.train(data='wheat.yaml', epochs=200, imgsz=640, batch=16, workers=0)

也可以在终端执行下述命令:

yolo train data=wheat.yaml model=yolov8s.pt epochs=200 imgsz=640 batch=16 workers=0 device=0

6、模型预测 

你可以选择新建predict.py预测脚本文件,输入视频流或者图像进行预测。

代码如下:

import cv2
from ultralytics import YOLO
# Load the YOLOv8 model
model = YOLO("./best.pt") # 自定义预测模型加载路径
# Open the video file
video_path = "./demo.mp4" # 自定义预测视频路径
cap = cv2.VideoCapture(video_path)
# Get the video properties
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = cap.get(cv2.CAP_PROP_FPS)
# Define the codec and create VideoWriter object
fourcc = cv2.VideoWriter_fourcc(*'mp4v')  # Be sure to use lower case
out = cv2.VideoWriter('./outputs.mp4', fourcc, fps, (frame_width, frame_height)) # 自定义输出视频路径
# Loop through the video frames
while cap.isOpened():# Read a frame from the videosuccess, frame = cap.read()if success:# Run YOLOv8 inference on the frame# results = model(frame)results = model.predict(source=frame, save=True, imgsz=640, conf=0.5)results[0].names[0] = "道路积水"# Visualize the results on the frameannotated_frame = results[0].plot()# Write the annotated frame to the output fileout.write(annotated_frame)# Display the annotated frame (optional)cv2.imshow("YOLOv8 Inference", annotated_frame)# Break the loop if 'q' is pressedif cv2.waitKey(1) & 0xFF == ord("q"):breakelse:# Break the loop if the end of the video is reachedbreak
# Release the video capture and writer objects
cap.release()
out.release()
cv2.destroyAllWindows()

也可以直接在命令行窗口或者Annoconda终端输入以下命令进行模型预测:

yolo predict model="best.pt" source='demo.jpg'

六、获取数据集 

文章底部或主页私信获取数据集~ 

基于QT的目标检测可视化界面

一、环境配置

# 安装torch环境
pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple
# 安装PySide6依赖项
pip install PySide6 -i https://pypi.tuna.tsinghua.edu.cn/simple
# 安装opencv-python依赖项
pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple

二、使用说明

166ee2f0e2724478883d2923fd825aad.png​​​​​

界面功能介绍:

  • 原视频/图片区:上半部分左边区域为原视频/图片展示区;
  • 检测区:上半部分右边区域为检测结果输出展示区
  • 文本框:打印输出操作日志,其中告警以json格式输出,包含标签框的坐标,标签名称等
  • 加载模型:下拉框绑定本地文件路径,按钮加载路径下的模型文件;
  • 置信度阈值自定义检测区的置信度阈值,可以通过滑动条的方式设置
  • 文件上传:选择目标文件,包含JPG格式和MP4格式
  • 开始检测:执行检测程序;
  • 停止:终止检测程序;

 三、预测效果展示

1、图片检测

4009ff3e6f5d4c68b31198b8d61bfe34.png​​​​​

切换置信度再次执行:

2d8a50808e60446e8d26aed7cdcb5e97.png​​​​​

上图左下区域可以看到json格式的告警信息,用于反馈实际作业中的管理系统,为管理员提供道路养护决策 。

2、视频检测 

2753862ef7f545708f384cdf4fe0da56.png​​​​​

3、日志文本框

4a08d3a9ba4b45a4aba12eb2ca9f51f6.png

四、前端代码 

class MyWindow(QtWidgets.QMainWindow):def __init__(self):super().__init__()self.init_gui()self.model = Noneself.timer = QtCore.QTimer()self.timer1 = QtCore.QTimer()self.cap = Noneself.video = Noneself.file_path = Noneself.base_name = Noneself.timer1.timeout.connect(self.video_show)def init_gui(self):self.folder_path = "model_file"  # 自定义修改:设置文件夹路径self.setFixedSize(1300, 650)self.setWindowTitle('目标检测')  # 自定义修改:设置窗口名称self.setWindowIcon(QIcon("111.jpg"))  # 自定义修改:设置窗口图标central_widget = QtWidgets.QWidget(self)self.setCentralWidget(central_widget)main_layout = QtWidgets.QVBoxLayout(central_widget)# 界面上半部分: 视频框topLayout = QtWidgets.QHBoxLayout()self.oriVideoLabel = QtWidgets.QLabel(self)# 界面下半部分: 输出框 和 按钮groupBox = QtWidgets.QGroupBox(self)groupBox.setStyleSheet('QGroupBox {border: 0px solid #D7E2F9;}')bottomLayout = QtWidgets.QHBoxLayout(groupBox)main_layout.addWidget(groupBox)btnLayout = QtWidgets.QHBoxLayout()btn1Layout = QtWidgets.QVBoxLayout()btn2Layout = QtWidgets.QVBoxLayout()btn3Layout = QtWidgets.QVBoxLayout()# 创建日志打印文本框self.outputField = QtWidgets.QTextBrowser()self.outputField.setFixedSize(530, 180)self.outputField.setStyleSheet('font-size: 13px; font-family: "Microsoft YaHei"; background-color: #f0f0f0; border: 2px solid #ccc; border-radius: 10px;')self.detectlabel = QtWidgets.QLabel(self)self.oriVideoLabel.setFixedSize(530, 400)self.detectlabel.setFixedSize(530, 400)self.oriVideoLabel.setStyleSheet('border: 2px solid #ccc; border-radius: 10px; margin-top:75px;')self.detectlabel.setStyleSheet('border: 2px solid #ccc; border-radius: 10px; margin-top: 75px;')topLayout.addWidget(self.oriVideoLabel)topLayout.addWidget(self.detectlabel)main_layout.addLayout(topLayout)

五、代码获取

YOLO可视化界面

 更多其他数据集点击这里!

注:以上均为原创内容,转载请私聊!!!

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

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

相关文章

intel白皮书卷2 第二章(AI翻译)

第 2 章 指令格式 (CHAPTER 2 — INSTRUCTION FORMAT) 本章描述 所有 Intel 64 与 IA-32 处理器架构中的指令格式。 针对 保护模式(Protected Mode)、实模式(Real Mode) 以及 虚拟 8086 模式(Vi…

intel白皮书卷2 附录A(AI翻译)

A.1 使用操作码表(Using Opcode Tables) 本附录中的表格列出了各条指令的操作码(包括必须的指令前缀以及由 ModR/M 字节提供的操作码扩展)。 表格中的空白单元表示该操作码是保留的(reserved)或未定义的&a…

https 证书 生成安装笔记

Windows 第一步:获取 OpenSSL for Windows https://slproweb.com/download/Win64OpenSSL-3_6_0.exe 你可以从以下两个可靠的官方渠道选择其一进行下载: 官方二进制发行版:访问 OpenSSL 维基的二进制分发页,从列表中选择一个提供…

半导体企业数字化转型技术方案:SAP S/4HANA 私有云如何打通研产供销财全链路?

目录 一、企业概况:科创板半导体热电技术核心企业 二、转型挑战:科创板上市半导体企业的典型数字化难题 三、解决方案:SAP S/4HANA 私有云的精准匹配 四、实施优势:工博科技的行业经验与服务能力 五、项目成效:运…

SAP ERP 公有云 AI / 机器学习落地指南:技术架构、业务场景与实施路径

目录 一、SAP ERP 公有云的 AI 能力体系 二、SAP ERP 公有云中 AI 的典型业务应用场景 三、生成式 AI Joule 如何改变ERP 使用方式? 四、企业如何落地SAP公有云AI?三步实施路径 五、哪些企业最适合部署SAP ERP公有云 AI? 六、选择专业…

一篇文章讲清楚:中转API如何用Python调用ChatGPT

你是否遇到过这样的场景? 想把 ChatGPT 接入自己的应用,却被模型限制、价格波动、接口差异搞得一头雾水; 刚写好的代码,换一个模型就要重构一遍; 好不容易跑通了,又发现前端、后端、流式输出全都要重新适配…

智能井盖安全监测系统的设计与实现

目录智能井盖安全监测系统的设计原理系统硬件组成软件架构设计关键技术实现典型应用场景系统优势特点源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!智能井盖安全监测系统的设计原理 智能井盖安全监测系统通过物联网技术实时监控井盖状…

深度测评9个论文写作工具,自考学生一键生成论文工具推荐!

深度测评9个论文写作工具,自考学生一键生成论文工具推荐! 自考论文写作的革新之路 随着人工智能技术的飞速发展,越来越多的学生开始借助AI工具来提升论文写作效率。尤其是在自考群体中,面对繁重的学习任务和严格的论文要求&#x…

【节点】[NormalVector节点]原理解析与实际应用

在Unity的Shader Graph中,NormalVector节点是一个基础且重要的工具,它允许着色器访问网格的法线矢量信息。法线矢量在计算机图形学中扮演着关键角色,它定义了表面的朝向,是光照计算【Unity Shader Graph 使用与特效…

我在运动-轨迹查看器

我在运动-轨迹查看器我在运动-轨迹查看器v0.28 我在运动-轨迹查看器 使用帮助 功能: 导入运动、旅行走过的轨迹,在地图上动画真实还原 基本功能自定义动画标记、支持时区偏移时间、轨迹暂停模式 打开轨迹文件: 支持 K…

我在这儿--给照片加定位

我在这儿--给照片加定位我在这儿--给照片加定位 v0.21 增加exiftool及高德地图API批量添加水印 我在这儿--给照片加定位 使用说明这是《我在哪儿--照片定位查看助手》的同门兄弟,专门给没有GPS的照片、图片添加定位信…

2026年做得好的上海花旗大厦广告代理公司联系方式,上海外滩广告/电视台广告/公交广告,户外led大屏广告公司推荐

随着城市商业空间升级与品牌传播需求多元化,户外LED大屏广告凭借高曝光、强互动、精准触达等特性,成为品牌抢占核心商圈流量、塑造高端形象的关键载体。上海作为国际消费中心城市,花旗大厦等标志性建筑周边的大屏资…

如何在Azure Pipeline中使用PowerShell从OneDrive for Business下载指定文件

最近在配置AzureDevOps Pipeline的时候需要在执行任务之前下载一个cli工具,但是由于工具的下载服务器速度不稳定,有时候会造成Pipeline执行速度过慢导致整个流水线超时, 这时我想到可以把文件上传到OneDrive for Bu…

YOLOv26自行车部件检测识别系统实现

1. YOLOv26自行车部件检测识别系统实现 1.1. 系统概述 近年来,随着智能交通和城市共享单车系统的快速发展,自行车部件检测与识别技术在车辆管理、故障检测和维护保养等方面发挥着越来越重要的作用。YOLOv26作为一种先进的实时目标检测算法,…

35.LRU 缓存

面试题 16.25. LRU 缓存 设计和构建一个“最近最少使用”缓存,该缓存会删除最近最少使用的项目。缓存应该从键映射到值(允许你插入和检索特定键对应的值),并在初始化时指定最大容量。当缓存被填满时,它应该删除最近…

初学者使用 docker 快速体验 TDengine 功能

TDengine Docker 初学者完整指南 什么是 TDengine? TDengine 是一款专为物联网、工业互联网等场景设计的高性能时序数据库(Time-Series Database, TSDB)。它能够高效地处理海量时序数据的写入、存储和查询,广泛应用于智能制造、…

【LeetCode】四数之和 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

我在哪儿-- 照片定位查看助手

我在哪儿-- 照片定位查看助手我在哪儿-- 照片定位查看助手 功能:查看图片和缩略图 自动提取图片GPS信息 自动显示地理位置信息 在百度地图、高德地图和谷歌地图中查看位置使用说明:文件菜单:打开图片: 选择单个图片文件…

2026年企业AI获客必看:GEO服务商选型权威指南

随着生成式AI的全面普及,用户信息获取方式正经历历史性迁移。截至2026年初,国内主流AI平台日活跃用户已突破5000万,其中DeepSeek DAU超2000万,豆包MAU近6000万。据艾瑞咨询预测,2026年AI搜索将承接30%以上的商业查…

LoRA微调target module设置

目录原则1️⃣ 注意力 Q/K/V2️⃣ FFN(前馈层)target modules 最佳组合Q/V + 顶层 2~4 层 FFN 配置一、先给你一个“能直接用”的结论版本(以 Qwen / LLaMA 系结构为例)1️⃣ Q / V 的 target modules(必选)2️…