i

 1     绪论   1

1.1    研究背景及意义   1

1.2    国内外研究现状   1

1.3    主要研究内容  2

1.4    本文的组织结构  2

 2     相关理论与技术  3

2.1    开发工具  3

2.2    深度学习目标检测  3

2.3    Yolov5 网络  3

2.4    本章小结   4

 3     改进 YOLOv5 网络结构  5

3.1    YOLOv5 网络结构的改进  5

3.1.1    网络结构原理与改进  5

3.1.2    SE 注意力机制   6

3.1.3    Res2Net 结构   7

3.2    实验结果分析   8

3.3    环境和参数设置   10

3.4    本章小结   10

 4     基于改进 YOLOv5s 网络结构的疲劳检测方法   11

4.1    疲劳检测原理与机制   11

4.1.1    疲劳检测方法   11

4.1.2    PERCLOS 检测标准   11

4.1.3    眼部疲劳判断   12

4.1.4    口部疲劳判断   13

4.2    人脸检测原理与关键点定位   13

4.2.1    人脸检测原理和方法   13

4.2.2    关键点定位原理   14

4.3    本章小结   16

 5     疲劳检测系统的设计   17

5.1    系统需求分析   17

5.1.1    获取图像帧   17

5.1.2    人脸检测功能   17

5.1.3    疲劳检测功能   17

5.1.4    警告功能   18

5.2    系统功能模块设计   18

5.2.1    系统模块设计   18

5.2.2    系统工作流程   18

5.3    系统功能的具体实现   19

5.3.1    视频图像处理   19

5.3.2    人脸检测   19

5.3.3    疲劳检测   19

5.3.4    疲劳预警   20

5.4    系统测试   20

5.5    本章小结   21

 6     结论   22

参考文献   23

       25

 1   绪论

1.1    研究背景及意义

随着当前社会竞争压力的增大,学生们的学习任务日益繁重,学习和生活节奏普遍加快,学生群体中。尤其是高中生,课堂上疲劳导致的学习效率下降的情况时有发生[1] 。疲劳状态会导致注意力涣散,学习效率下降,长期的疲劳甚至会危害身心健康,教育部等十七部门更是在先前便有关于印发《全面加强和改进新时代学生心理健康工作专项行动计划(20232025 年)规划指导方案》的通知, 由此可见,学生在课堂上的疲劳状态需要得到充分地掌握[2] 

现有的针对课堂疲劳的处理办法,往往是通过填写调查问卷, 自我总结反馈今天的学习进度, 自我评估等主观性的方式进行评价。这些方式先天性依赖学生个人的评价,教师很难做到在课堂上对所有学生的疲劳状态有所注意。[3] 此外,这些检测方式显然是后发的,在进行评估时往往学习的过程已经结束,学生和教师难以得到实时的反馈,导致教学效果不理想[4] 

基于深度学习的疲劳检测系统能够实时地对学生的疲劳情况进行检测,对教师和学生发出提醒,从而最大限度地降低感知疲劳的异步性,让学生尽快恢复学习状态,调整学习的策略,提高学习效率[5] 。总之,判断学习者的疲劳状态,是十分必要的。

1.2    国内外研究现状

近年来,随着计算机技术的不断进步,人工智能技术的实际应用也越来越多。其中,比较典型的代表就是无人驾驶汽车技术[6] ,在无人驾驶的实现中,汽车通过摄像头捕获实时的视频图像,对其中的目标进行检测,总而分析路况,达到避让障碍的目的[7] 

当今的疲劳检测技术已经在诸多方面有所应用,例如驾驶员疲劳检测技术,就能够根据驾驶员的面部特征,实时地评估驾驶员疲劳情况,从而避免疲劳驾驶情况的发生[8] 。驾驶员疲劳检测技术经过长时间的发展,其技术结果成熟可靠,且研究结果内容众多,可以作为本程序设计的参[9] 

在疲劳情况的评估上,检测疲劳状态的根据主要参考眼睛和嘴巴,现有的研究主要集中于采用 PERCLOS(单位时间内计算眼睛闭合的百分比)作为衡量标[10] ,监测眼睛和嘴巴的开合度与运动状况,评估是否处在疲劳状态[11] 。对于其他的评估方式,往往较为超前,实际的工业生产使用还不算成熟。

1.3    主要研究内容

本文选取较为轻量级的目标检测网络 YOLOv5s 为网络结构,YOLOv5s 网络深度相对较小,模型复杂度较低,在其他设备,尤其是低配置的平台上运行压力更小[12] 。本文选择 YOLOv5s 进行研究,能够降低运算和处理需求。

增强目标检测网络的特征提取能力有多种方法, 简单的莫过于加深网络结构,然而,一味的加深网络结构很容易造成网络的运算量过大,从而导致运行的配置要求过高[13] 。在这种情况下, 就需要对网络的结构进行一定的改进,在提高网络性能的目标下,尽可能降低引入的网络参数量[14] 。注意力机制是一项非常有效的改进方法,通过设立不同通道的权重,过滤掉背景中的无关信息,从而在不增加网络深度的情况下提高网络性能[15] ResNet 于处理由于神经网络深度增加导致的逆优化问题,通过引入 BN 层和跳层连接机制,解决了梯度爆炸、梯度消失,以及模型退化的问题[16] 。本文尝试对 YOLOv5 网络结构添加 SE 注意力机制和 ResNet 的改进型 Res2Net 模块,从而改善网络的性能。

本文使用 WiderFace  paddle-fatigue 数据集验证改良后模型的准确率。[17] 验结果表明,改进后的 Yolov5 网络在这两个数据集上表现良好。通过 Yolov5 型对人脸进行定位,之后使用 dlib 提供的人脸关键点定位眼睛和嘴巴,计算横纵比,从而检测学生的疲劳状态[18] 

1.4    本文的组织结构

本文共分为六章

第一章,绪论。主要介绍了基于 YOLOv5 神经网络的课堂疲劳检测系统的研究背景和研究意义。

第二章,相关理论与技术。详细讲述了系统开发过程中所需的理论与关键技术。

第三章,改进 YOLOv5 网络结构。深入探讨了 YOLOv5 网络结构的原理,改进了 YOLOv5 网络的结构,并对比了两者的性能指标。

第四章,基于改进 YOLOv5s 网络结构的疲劳检测方法。介绍疲劳检测系统的详细设计原理,研究了疲劳判断的条件。

第五章,疲劳检测系统的设计。探讨系统的功能需求, 并设计相关功能模块,测试系统功能。

第六章,结论。总结课堂疲劳检测系统的研究成果和贡献。

 2   相关理论与技术

本章主要介绍使用的开发工具,深度学习目标检测的发展,以及 yolov5 网络结构的概述。

2.1    开发工具

本程序使用 Python 平台进行开发,使用 Pytorch2.1.1 作为神经网络的基本框架,使用 dlib 作为提取关键点的模型,使用OpenCV 进行图像的捕获、处理, 及图形的显示。

2.2    深度学习目标检测

传统的目标检测网络有着复杂的发展。AlexNet 是深度学习目标检测的里程碑,其能够提取目标区域的特征,从而大大降低了数据运算的复杂度[19] 。后续的R-CNN 网络与 FastR-CNN  Faster-RCNN 网络集中于提高二阶段检测器的精确度,检测速度也有着质的提升,成为深度学习目标检测领域的一个重要分支[20] 

然而,二阶段检测器在检测速度方面并不算很理想,提高检测速度逐渐成为改进网络的瓶颈。Yolo 网络受到 GoogleNet 的启发,回归一阶段网络结构,减少了众多参数,大大提高了运行与训练速度[21] 

Yolo 网络经过近几年的发展,逐步衍生出 Yolov5 网络,其核心目标主要在于加快训练和运行速度,减小模型尺寸,整个结构变得小巧,易于迁移。因此,Yolov5网络被广泛应用在工业生产中,其网络性能与上一版 Yolov4 区别不大[22] 

2.3    Yolov5 网络

YOLOv5  网络主要包含四种型号,   YOLOv5s YOLOv5m YOLOv5L YOLOv5x,其复杂度与性能对比如图2.1示。

 2.1    YOLOv5 复杂度对比

本文选取最小巧的 YOLOv5s 作为基本网络结构,其优势在于能够快速部署,对系统硬件的要求不高。

YOLOv5s 的基本框架可分为四个部分: 输入、主干、颈部和头部, 其中,主干部分主要由 CSP(Cross Stage Partial Network) 模块组成。为了进一步提高检测速度,YOLOv5 网络引入了独特的 C3 模块。C3 模块采用多层次分支的设计, 将各个不同的计算步骤分散到其众多的分支当中, 而减少了每一个分支所要承担的计算量。同时,C3 模块采用了类似残差连接的设计, 提升了网络的深度和感受野的广度, 并且提高了网络的参数量和计算量, 从而实现网络的检测速度和准确度的提升。在 YOLOv5 网络中, 许多传统的卷积层结构都被 C3 模块所取代, 减少了网络的参数数量和网络的计算复杂度,从而提高网络的检测速度。

2.4    本章小结

本章一共包括三个部分,第一部分讲述了本程序的开发平台和工具。第二部分简单讲述了深度学习目标检测的发展历程和关系。第三部分简单介绍了 YOLOv5网络的网络结构。

 3   改进 YOLOv5 网络结构

本章节旨在改进现有的 YOLOv5 网络结构,提高网络识别的准确度,添加 SE注意力机制,用添加 Res2Net  C3 结构替换原有的 C3 结构,优化特征提取网络。

3.1    YOLOv5 网络结构的改进

3.1.1    网络结构原理与改进

YOLOv5 网络结构如图3.1所示。

 3.1    yolov5 网络结构

先由骨架 (Backbone) 部分提取特征值,此处主要使用 C3 结构进行提取。C3结构的内部有 CBS 卷积模块,通过组合后实现对残差特征的学习。骨架中提取的初级特征会传入颈部(Neck)层进行特征融合,并通过骨架的最后一个子模块SPPF 细化小目标的特征,从而实现对小型目标识别精度的提高。

改进后的网络结构如图3.2所示。

 3.2    改进后 yolov5 网络结构

基于原有 YOLOv5 网络结构的基础上,在骨架部分的 C3 模块后添加 SE 注意力机制,根据图像中每个特征通道的重要程度,对通道进行加权,从而利用得到的权重来提升目标特征并抑制对当前任务不重要的特征。同时,使用增加了 Res2Net C3 模块结构替换原始的 C3 模块,从而引入多分支结构和逐级增加的分辨率来提高网络的表达能力。

3.1.2    SE 注意力机制

注意力机制最早源于对人类视觉的研究,对于人类来说,大脑能够选择性地关注信息的一部分,同时忽略其他信息,由于这种机制的存在,人脑才能最大限

度地利用有限的视觉信息处理资源。在观察物体时,人类的大脑能够自动过滤眼睛传入的视觉信号中,不属于目标物体的部分,从而集中精力在对于目标物体的识别上,这样,人类对外界的认知才能做到集中于一物,不至于受到其他方面的干扰。SE 注意力机制的结构如图3.3所示。

 3.3    SE 注意力机制

具体的实现,是由大脑中不同的功能区域共同作用实现的。神经网络可以模拟大脑对视觉信号中非目标物信息的过滤,实现类似于提高注意力的效果。对于输入的数据,根据不同部分的重要程度进行加权,即对不同部分赋予不同的优先度,从而使模型更加关注于输入序列中有关目标物体的关键信息,进而提高模型的预测精度和网络效率。

3.1.3    Res2Net 结构

ResNet 网络出现于 2015 年,由来自微软实验室的何凯明等几位研究员提出,其技术在当年的 ImageNet 竞赛中获得分类任务比赛第一名, 目标检测比赛第一名。同时,在 COCO 竞赛中获得数据集目标检测第一名,图像分割第一名。

 ResNet 提出前,提高模型精度的方法是单纯的提高网络深度,这造成了两个问题:梯度爆炸与梯度消失、模型退化。针对梯度爆炸与梯度消失, ResNet 网络中添加了 BNBatch Normalization)层,对每一个 Batch 下的图像进行标准化,解决了梯度爆炸与梯度消失的问题。针对模型退化, ResNet 引入了跳层连接的结构,通过隔层相连,弱化了每层之间的联系,这种神经网络结构被称之为残差网络 (ResNets)

Res2Net  ResNet 的进一步改进,Res2Net 的结构如图3.4所示。其核心思想是 ResNet 网络结构中的卷积模块分解为许多个子模块,将这些子模块连接起来,每个子模块可以各自利用更多的特征信息,从而增强了网络的表达能力。Res2Net最大的优势在于它能够依靠其多尺度的感受野获取更多的信息,从而更好地捕捉不同尺度的特征信息。

 3.4    res2net

此外,Res2Net 还能够在现有的网络深度下提高网络的预测性能,避免网络深度的增加,就意味着对配置要求的减少,故其在一些计算资源、硬件配置有限的任务中,具有一定的优势。

3.2    实验结果分析

WIDERFACE 数据集是人脸检测的一个 benchmark 数据集,包含 32203 图像,以及 393703 个标注人脸,其中,158989 个标注人脸位于训练集,39496 个位于验证集。在今天的工业生产中,WiderFace 被广泛应用于人脸识别方面的训练数据集。

mAP 是平均精度,表示十个 IoU 的平均值,其范围是 [0.5:0.95]AP0.5 是指IoU 的阈值设定为 0.5 时的平均精度。这两个指标分别反应了模型在目标检测任务中的精度和召回率,是评估检测算法时常用的评价指标。

下面的图片为两种网络结构经过训练后,得到的模型在验证集上进行预测,所得出的曲线图对比。

3.5为原始 YOLOv5s 网络和改进后的 YOLOv5s 网络经过训练得到的 P-R曲线图。其中, x 轴横坐标表示召回率,y 轴纵坐标表示在不同召回率下所对应的精确率。

(a)  原始 YOLOv5s 网络模型                       (b)  改进后 YOLOv5s 网络模型

 3.5    YOLOv5s 网络 P-R 曲线图

3.6为原始 YOLOv5s 网络和改进后的 YOLOv5s 网络经过训练得到的 mAP曲线图。其中, x 轴横坐标表示不同的置信度阈值,y 轴纵坐标表示在不同置信度阈值下所对应的平均精度。

(a)  原始 YOLOv5s 网络模型             (b)  改进后 YOLOv5s 网络模型

 3.6    YOLOv5s 网络 mAP 曲线图

3.7为改进后 YOLOv5s 网络经过训练得到的混淆矩阵图。其中,左上部分 TP(正确预测), 左下部分为 FN(漏检), 上部分为 FP(误检),右下部分为 TN(确排除)。由于 WiderFace 数据集中只有人脸一个识别类型,所以 FP 的值为 1,即所有被识别的目标都判定为人脸,而 TN 为空,因为没有其他的预测类。

这里主要关注 TP  FN,改进后 YOLOv5s 网络 TP(正确预测) 约为 0.7FP(检率) 约为 0.3

 3.7    混淆矩阵

3.3    环境和参数设置

本文配置的实验环境如下:操作系统为 Windows10 19045.4170,硬件配置为一张 Nvidia4090 GPU 作为 CUDA 加速硬件,24GB 显存,128G 运行内存。软件配置为 Anoconda4.5 版本,python3.8.5 版本,torch2.1.1 版本,opencv-python 4.8.1.78 Cuda 12.1 版本,Cudnn8.9.5 版本。

在模型的训练阶段,本文使用 YOLOv5s 模型作为初始模型进行训练,这样能够节省大量的训练时间。

3.4    本章小结

本章提出了改进后的 YOLOv5s 结构方法。在现有的 YOLOv5s 网络结构基础上,添加 SE 注意力机制,并使用Res2Net 结构替换原始的 C3 层,以提高模型对人脸识别的精确度。相较于原始的 YOLOv5s 模型,改进后的模型在精确度上的表现更加优秀。

 4   基于改进 YOLOv5s 网络结构的疲劳检测方法

本章节详细介绍了课堂疲劳检测系统所使用到的主要技术,阐述了疲劳检测系统实现所需的相关理论知识基础。疲劳状态检测功能主要由人脸检测,dlib 脸特征点定位,眼部和口部横纵比判断等技术实现。

4.1    疲劳检测原理与机制

4.1.1    疲劳检测方法

疲劳又称疲乏,疲劳是一种主观性的,生理上的疲乏和身体的不适感;客观

更多推荐