口罩佩戴状态分类系统

摘 要

人员密集场所对口罩佩戴有持续监管需求,人工巡查难全覆盖、易疏漏,传统视觉方法在复杂环境下难以稳定区分细粒度佩戴状态,故将基于深度学习的口罩佩戴状态分类作为研究选题。

本文总览三分类任务,完成EfficientNet模型设计与迁移学习,实现含数据爬取与多格式导入、标注、异步训练部署及在线检测的B/S系统,并开展实验与功能测试。

在模型上,依据EfficientNet复合缩放兼顾精度与计算量的思路,选用EfficientNet-B0为骨干,经全局平均池化、全连接与Softmax完成"正确佩戴""未佩戴""错误佩戴"三分类。以ImageNet预训练迁移学习,配合随机裁剪、翻转、旋转与颜色抖动等增强,交叉熵训练并可加权缓解类别不均衡。理论上概述卷积、池化与分类层及准确率、精确率、召回率与F1等指标。系统以Flask与PyTorch实现数据爬取、ZIP与MAFA/RMFD导入、标注与数据集管理、异步训练与模型部署、单张与批量检测及结果展示,MySQL持久化业务数据。在给定数据与参数条件下,实验表明模型在验证集与测试集上准确率与F1较高;功能测试表明数据流与状态管理正确,训练与检测衔接符合设计预期,可满足课题对识别效果与系统可用性的要求,为口罩佩戴监管场景提供可用的软件工具与后续扩展基础。

关键词:口罩佩戴状态分类;EfficientNet;卷积神经网络;Flask

1.3研究内容

本课题的研究内容主要包括,在明确"正确佩戴""未佩戴""错误佩戴"三类定义的基础上,选用EfficientNet作为主干网络,设计并实现一套从数据采集与标注、模型训练、到单张与批量图像检测及结果可视化的完整系统。

系统支持RMFD等公开数据集的导入与自定义数据集的整理,采用交叉熵损失与常见数据增强进行训练,并通过准确率、精确率、召回率、F1值等指标对模型进行评价。

在实现层面,采用Web应用形式集成数据爬取、数据集管理、训练任务调度、检测服务与历史记录管理等功能,并设计相应数据库表结构以持久化用户、数据集、训练任务与检测结果,便于实际使用与二次开发。

2.4数据集

2.4.1RMFD数据集

RMFD(Real-World Masked Face Dataset)为面向真实场景的戴口罩人脸数据集,包含大量在自然条件下采集的戴口罩与未戴口罩的人脸图像,部分子集还提供了口罩遮挡程度或佩戴方式的标注。该数据集常被用于口罩检测、人脸识别 under 口罩遮挡、以及佩戴状态分类等研究。

本系统在设计与实验部分参考RMFD的数据组织方式与类别划分,支持将符合"按类别分目录"或"按标注文件"组织的数据导入系统。使用的为RMFD或其衍生版本,可按照系统约定的三类(正确佩戴、未佩戴、错误佩戴)进行映射与划分,用于训练与验证。

官网下载URL地址:https://github.com/X-zhangyang/Real-World-Masked-Face-Dataset。

正确佩戴指口罩主体覆盖口鼻,鼻梁条(若有)贴近鼻梁,下颌处贴合度较好,口罩上缘大致位于鼻梁与面颊过渡区域,遮挡范围符合常见防疫佩戴规范;该类样本在视觉上口罩边缘与面部轮廓关系相对稳定。如图2-5所示。

错误佩戴指虽有口罩但佩戴不规范,例如仅遮住下巴、口罩滑落露出鼻孔或口唇、口罩歪斜严重未覆盖口鼻等;该类与"未佩戴"在局部纹理上可能接近,与"正确佩戴"的差异主要体现在口鼻是否被有效遮盖,属于细粒度分类中的难点类别。如图2-6所示。

未佩戴指口鼻区域无口罩遮挡,面部人中、鼻翼、口唇等关键区域可见,便于与"有遮挡但遮挡不当"的样本区分;该类图像在监控与门禁场景中对应未按规定佩戴口罩的情形。如图2-7所示。

2.4.2数据集分析

本节在2.4.1对RMFD等典型公开数据集介绍的基础上,进一步面向本课题实际使用的口罩佩戴状态数据集展开分析,目的是说明本文训练和评估所依赖的数据是如何被严格筛选、评估和构建的,为后续实验结果的可信性提供数据层面的依据。具体从数据分布、图像质量、类别平衡性、类别相似度以及数据增强与划分策略等方面进行分析。

(1)数据分布分析

数据分布分析主要关注各类别样本数量的分布情况。理想的训练数据集应使各类别样本数量大致均衡,避免类别不平衡导致的模型偏向多数类问题。

设数据集包含C个类别,第i个类别的样本数为ni,则类别平衡度可以表示为:

Balance=min{ni}max{ni},i∈1,C (2-12)

平衡度越接近1,表示数据集越均衡。

(2)图像质量分析

图像质量直接影响模型训练与泛化效果,需要从以下几方面考察。分辨率分布:统计图像分辨率(宽×高)的分布情况,确保分辨率满足模型输入要求(如本系统统一缩放到 224×224),并剔除尺寸过小、有效信息不足的样本。模糊度分布:可使用拉普拉斯算子等评估图像清晰度,过滤严重模糊的人脸或口罩图像。亮度分布:分析图像亮度分布,识别过曝或欠曝样本,必要时通过预处理或数据增强进行校正。对比度分布:评估图像对比度,确保人脸与口罩区域、皮肤与口罩边界等细节清晰可见,便于模型学习判别性特征。

(3)类别相似度分析

不同口罩佩戴状态类别之间可能存在视觉相似性,容易导致模型混淆。例如"未佩戴"与"错误佩戴"(如口罩仅遮住下巴)在部分姿态或遮挡下较难区分;"正确佩戴"与"错误佩戴"在口罩款式或佩戴松紧度上也可能存在边界样本。通过统计混淆矩阵或类间特征距离,可识别潜在的易混类别,进而采取针对性的数据增强、样本补充或损失加权等策略,提升模型对易混类别的区分能力。

(4)数据增强策略

针对数据集的不足(如样本量有限、姿态与光照单一),可采用数据增强技术扩充有效样本、提高泛化能力。几何变换:旋转、水平/垂直翻转、随机裁剪、缩放等,使模型对人脸角度与构图变化更鲁棒。颜色变换:亮度、对比度、饱和度、色调的随机调整(如 ColorJitter),模拟不同光照与拍摄条件。噪声添加:在部分样本上添加高斯噪声或椒盐噪声,增强对噪声的鲁棒性(需控制强度以免破坏语义)。混合增强:如 Mixup、CutMix 等高级增强技术,在图像或特征层面进行混合,可进一步增加多样性。本系统在训练阶段采用了随机缩放裁剪、随机翻转、随机旋转与颜色抖动等,验证与测试阶段不做随机增强以保证评估一致性。

(5)数据集划分

为客观评估模型性能,需将数据集划分为训练集、验证集与测试集。训练集用于模型参数学习,通常占总样本的 70%~80%。验证集用于超参数调优、早停判断及训练过程监控,通常占 10%~15%。测试集仅用于最终性能评估,不参与训练与调参,通常占 10%~15%。划分时应采用分层采样,使各集合中各类别的比例与原始数据集保持一致,避免因划分导致的类别分布偏移。本系统支持按"训练/验证/测试"子目录组织数据,或在导入时指定划分比例并自动分层划分,保证训练与评估的数据基础可靠。

3.1算法/模型介绍

本系统将口罩佩戴状态分类建模为三分类问题,类别为"正确佩戴""未佩戴""错误佩戴"。算法采用以EfficientNet为骨干的卷积神经网络:输入为固定尺寸的RGB图像,经EfficientNet主干提取特征后,由全局池化得到一维特征向量,再经全连接层映射到三类 logits,经 softmax 得到各类别概率,取 argmax 得到预测类别。训练时采用交叉熵损失与梯度下降类优化器,并可选用学习率调度与类别权重以应对不平衡数据。

3.1.1特征提取部分介绍

特征提取部分由EfficientNet主干承担,输入为经预处理与数据增强后的图像张量(如 224×224×3),经过若干 MBConv 块(含深度可分离卷积、Swish 激活、SE 注意力等)逐层下采样并增加通道数,最终得到高维特征图。本系统在该特征图后接全局平均池化(GAP),将每个通道的空间维度压成单个标量,得到一维特征向量,维度与最后一层通道数一致(如 EfficientNet-B0 为 1280)。该向量作为高层语义表示,供后续分类层使用。若使用预训练权重,主干参数在微调时通常仍参与更新,以便适应口罩场景的分布。仅冻结部分底层或采用较小学习率也是常见做法。

图3-2表示从输入图像到分类头之前、特征是如何被抽成固定长度向量的。左侧「主干」对应 EfficientNet 的多阶段(Stage 1~7)特征提取.预处理后的 RGB 图像(如 224×224×3)依次经过多个 MBConv 等模块,在空间上逐步下采样、在通道上逐步加宽,得到一张高通道、低空间分辨率的特征图;图中用 Stage 串联概括这一过程,强调网络由浅层到深层逐级形成从边缘纹理到更抽象语义的表示。主干末端接全局平均池化(GAP):对每一个通道在空间维度(高×宽)上取平均值,把二维特征图压成每个通道一个标量,从而得到长度为「最后一层通道数」的一维向量(文中 EfficientNet-B0 为 1280 维)。这样做的效果是:无论特征图空间尺寸如何,输出向量维度固定,便于接全连接层做三分类;同时相比直接展平整幅特征图,参数量更可控,并带有对空间位置的一定汇总与平移鲁棒性。图中「特征向量 1280-d」即送入后续全连接分类层与 Softmax 的输入。

3.2数据预处理

数据预处理与增强直接影响模型收敛速度与泛化能力。本系统在训练与推理阶段采用统一的归一化参数(ImageNet 均值与标准差),保证与预训练权重的统计一致性;在训练阶段额外施加随机变换以增强数据多样性。

3.2.1图像裁剪

训练时使用随机缩放裁剪(RandomResizedCrop),在给定尺度范围内随机裁取一块区域并缩放到目标尺寸,使模型适应不同构图与尺度;验证与推理时采用中心裁剪或直接缩放到112×112,不做随机性。

3.2.2图像旋转

训练时施加小角度随机旋转(如 ±15°),模拟拍摄时人脸或相机轻微倾斜,提高对姿态变化的鲁棒性;验证与推理阶段不旋转。

3.2.3灰度图像转换

本任务依赖颜色与纹理信息(如口罩颜色、皮肤与口罩边界),因此输入保持 RGB 三通道,不做灰度化;数据增强中的颜色抖动可间接改变色彩与对比度。

3.2.4其他预处理技术

训练阶段还采用随机水平翻转(RandomHorizontalFlip)、颜色抖动(ColorJitter,对亮度、对比度、饱和度、色调做小幅随机变化),以进一步增加多样性;所有增强仅在训练时启用,验证与推理时仅做 Resize、ToTensor 与归一化,保证评估一致性。

3.2.5预处理流程

训练时流程为"读取图像 → 随机缩放裁剪 → 随机水平翻转 → 随机旋转 → 颜色抖动 → 转 Tensor → 归一化";验证/推理时为"读取图像 → 缩放到 224×224 → 转 Tensor → 归一化"。归一化均使用 mean=0.485, 0.456, 0.406、std=0.229, 0.224, 0.225,与 ImageNet 预训练一致。预处理与增强项汇总如下表。

3.7系统功能模块

系统功能模块包括:用户与权限模块负责注册、登录、会话与管理员校验,管理员可访问爬取、数据集导入、标注、训练等管理功能。系统功能模块图如图3-13所示。

数据爬取模块支持按关键词从指定来源(如百度图片)爬取图像并写入本地与数据集表,并可指定目标类别与最大数量。

数据集导入模块支持从本地上传的 ZIP 中解压图像,按目录或文件名规则自动推断类别与划分,或按 MAFA/RMFD 等格式导入。

数据集管理模块提供图像列表、预览、删除、修改划分(train/val/test)及统计信息。

数据标注模块支持对未标注或待核对的图像进行类别标注与验证。

模型训练模块支持创建训练任务、配置 backbone、epoch、批大小、学习率等,任务在后台线程中执行并更新进度与指标,支持取消、重新训练与将训练好的模型部署为当前检测模型。

检测功能提供单张图像上传检测与多张图像批量检测,结果写入检测记录表并返回类别与置信度,支持结果图展示与导出。

结果展示与历史模块按用户或任务展示检测记录、统计图表等。

各模块通过 Flask 路由与模板组织,前后端通过 JSON 接口交互,检测与训练核心逻辑复用同一套 EfficientNet 与预处理配置,保证一致性。

实现效果展示

在这里插入图片描述

相关推荐
奔跑中的小象2 小时前
统信UOS + 天数AI卡部署SGLang服务手册
人工智能·uos·sglang·天数智芯
DevSecOps选型指南3 小时前
中国版Mythos,为何是悬镜安全灵脉CodeAI?
人工智能·安全
Shockang3 小时前
LangGraph 状态机实战
人工智能
刹那芳华19923 小时前
循环神经网络的从零开始实现(RNN)
人工智能·rnn·深度学习
阿童木写作3 小时前
跨境图片翻译工具多合一,批量图片视频字幕翻译加智能抠图
人工智能·python·音视频·语音识别
科技之门3 小时前
AI3D从建模到贴图、绑骨和动画的完整流程怎么做?V2Fun完整工作流指南
人工智能·3d·贴图
宇宙第一小趴菜3 小时前
二、机器学习的应用领域和发展史
人工智能·机器学习
前端开发江鸟3 小时前
我写过 MCP Server,却一直以为 MCP 只有 Tool
人工智能
天国梦4 小时前
自习室智能化升级避坑指南:天学网AI智习室方案实测与选型建议
大数据·人工智能
阿里云云原生4 小时前
可用性从 99.9% 跃升至 99.995%:畅捷通如何用 AI 重塑运维底座?
运维·网络·人工智能