# 在线疲劳检测系统
## 1. 项目功能介绍
该项目先通过正脸校准,获取受试者在睁眼状态下的原始特征,比如眨眼纵横比(EAR)(如下图所示)。
<img src="./imgs/1_正脸校准.png" style="zoom: 55%;" />
当检测到3次正脸之后,会跳转至在线疲劳检测页面,此时可以根据需求同时选择眨眼、哈欠、点头、皱眉和疲劳检测(如下图所示),
<img src="./imgs/2_疲劳检测界面.png" style="zoom: 55%;" />
待完成关于所选检测任务的参数配置之后(如下图所示,其中包括眨眼、哈欠、点头检测的参数配置,关于疲劳检测算法的配置,则直接修改`fatigue_algo/fatigue_strategies.txt`文件),
<img src="./imgs/3_参数设置.png" style="zoom: 55%;" />
页面上会显示相应的检测结果(如下图所示),疲劳检测结果会显示在右端的文本框中。
<img src="./imgs/4_疲劳检测结果.png" style="zoom: 55%;" />
**前端界面设计**:pyqt5
**模型框架**:onnx,pytorch
**疲劳检测算法**:自适应阈值的多特征经验融合K近邻疲劳早后期检测算法
## 2. 疲劳检测算法介绍
该疲劳检测算法的设计依据是以人类行为学为基础的,即对于一个人的疲劳状态,我们可以透过他的行为表现进行判断。常见的疲劳行为包括慢眨眼,打哈欠和点头,而其他行为,比如提眉行为、皱眉行为、头部前后倾与疲劳有关,而手部姿势比如挠头,摸鼻子,托腮,捂嘴也与疲劳有关。
关于面部疲劳检测的研究(我的理解框架),我觉得无外乎从三个方面入手:**一是从多特征的构建入手,尽量在低开销下创建多个特征;二是从模型选择入手,在单一特征的提取上做到足够高的精度;三是从多特征融合模型入手,对低开销提取的多个特征进行综合分析**
**a)**考虑到<u>疲劳检测的实时性</u>,对可用的模型则比较有限,很多深度学习模型(比如LSTM,Transformer)或许能在眨眼检测,哈欠检测,点头检测得到很好的精度,但在疲劳推理阶段时间开销较大,因此从模型切入研究比较困难。
**b)**考虑到疲劳检测是一个分类任务,而且这个分类任务相对于物体分类来说,并不是很明确,虽然疲劳程度可以用KSS量表进行量化,但其中未免夹杂着主观成分,早期的疲劳检测一般转化成对某种具体疲劳行为(眨眼,哈欠,点头)的研究,大多数的模型是有监督模型(从早期的SVM,到后来的CNN),在一些公开数据集上,有些学者尝试使用多种不同模型进行眨眼检测,检测精度能达到90%以上,然而通过人脸关键点检测 + EAR阈值法也能达到这个精度,而且人脸关键点检测还可以结合MAR阈值法进行哈欠检测,这就使得<u>单独使用某个模型</u>进行特定疲劳行为的检测局限性很大,<u>可扩展性很差</u>。
**c)**关于多特征模型的构建,主要分成两种,一种是无监督学习的模型,常见的有模糊推理系统;二是有监督学习模型(SVM,RF),大多是将多种特征构成的向量作为输入,输出疲劳类别。疲劳类别常使用KSS标注,相关数据集主要包括RLDD,Drozy。由于多种疲劳行为特征在构建时带来一定时间开销,因此融合分析模型不宜使用耗时的模型。在我看来,疲劳类别的KSS标注包含很多主观因素,用有监督方法训练得到的模型大多是<u>过拟合的模型</u>,个人建议<u>使用类似于模糊推理系统的无监督方法</u>。
关于疲劳检测的难点,我觉得无外乎有三点:
- **一是眨眼,哈欠检测容易受头部姿态的影响,单一阈值并不适用于多种姿态下的眨眼哈欠检测;**
- **二是难以区分疲劳早期和疲劳后期状态,有些人脸行为在疲劳早期时出现得多,而有些人脸行为在疲劳后期时出现得少,仅通过人脸行为的检测结果直接映射成疲劳状态不是很好;**
- **三是多种疲劳特征的有效融合问题,使用有监督模型容易得到过拟合的模型,如何设置一个好的,可解释性强的模型至关重要**。
因此本项目提出的疲劳检测算法有如下优点:
- 增加了对**皱眉、头部前后倾动作**的识别(**多疲劳行为特征的构建**)。
- 通过构建关于头部姿态3个自由度(当然你可以构建6个自由度的)与眨眼EAR阈值的数据集,使用**GBDT学习头部姿态与EAR阈值的映射关系**,并通过一开始校准采集的特征,进行多姿态的眨眼检测(**单一特征的优化**)。
- 根据经验,对疲劳行为设置KSS值和权重,接着利用多特征经验融合模型将人脸行为组合映射成疲劳相关的KSS值,进行疲劳判定(KSS值与疲劳状态直接相关,便于**区分早期和后期疲劳**)
- 将公开数据集中的疲劳视频处理成长短时KSS序列,并根据视频的疲劳标签,使用长短时KNN对KSS序列进行疲劳早后期学习(将RLDD整个视频作为一个样本进行学习,保证了**模型学习的有效性**)
算法步骤如下:
1. **人脸检测**:SCRFD-0.5GF
2. **68个人脸关键点检测**:MobileNetV2-56
3. **头部运动检测**:pnp算法计算头部姿态3个旋转自由度和3个平移自由度,通过计算各自由度的一阶差分 和 阈值比较,进行点头,正常运动,头部静止 和 头部前后倾检测。
4. **头部前后运动检测**:通过小孔成像原理,计算人脸与摄像头的距离,利用一阶距离差分 和 阈值判断,识别前后倾动作。
5. **慢眨眼检测**:基于校准EAR,头部姿态的自适应眨眼阈值adaptive_EAR_threshold,利用EAR、PERCLOS进行两阶段慢眨眼检测。
6. **哈欠检测**:基于头部姿态的哈欠检测算法,利用MAR、FOM,进行两阶段哈欠检测
7. **皱眉检测**:基于22,23,28三个关键点坐标裁剪两眉ROI矩形区域(需要先将人脸旋转至正脸),利用sobel算子提取皱眉边缘,使用MobileNetV3进行皱眉检测。(该算法平衡了检测速率和检测精度,不使用该模块)
**疲劳行为编码以及KSS值设置**(本算法已去除掉提眉检测):
| 眉毛 | 提眉 b1 | 皱眉 b2 | 正常 b3 | / |
| -------- | ------- | ------- | -------- | ------ |
| **眨眼** | 快眨眼 e1 | 慢眨眼 e2 | 正常 e3 | / |
| **嘴巴** | 哈欠 m1 | 正常 m2 | / | / |
| **头部姿态** | 点头 h1 | 前后倾 h2 | 正常运动 h3 | 静止 h4 |
<img src="./imgs/KSS设置.png" style="zoom: 55%;" />
**多种疲劳行为KSS值的经验融合**:这里利用归一化的经验KSS值,以及疲劳行为的检测次数,定义了singleton($f_1$),mutual($f_2$),active/inhibit($f_3$)三种算子;并通过人为经验构建出的多种疲劳行为的因果图,赋予了三种算子具体的含义:
- $f_1$算子主要是针对眨眼,哈欠和点头三种**明显疲劳行为**,通过一开始赋予的高KSS值 $\times$ 统计次数,来计算后期疲劳得分。
- $f_2$算子主要是针对头部前后倾,提眉和皱眉三种**早期疲劳行为**,通过一开始赋予的中KSS值 $\times$ 统计次数,接着使用tanh激活函数,max函数,来计算最大的早期疲劳得分。
- $f_3$算子主要对$f_1,f_2$算子起辅助作用,由下图所示,$f_3$算子对$f_1$算子起到激活作用,放大后期疲劳得分;$f_3$算子对$f_2$算子起到抑制作用,降低早期疲劳得分,避免对早期疲劳的误判;
<img src="./imgs/KSS融合.png" style="zoom:50%;" />
$$
f_1 = α × KSS\_norm_{code_i}×count\_norm_{code_i} \\
f_2 = tanh(\beta(\sum_j (KSS\_norm_{code_j} × count\_norm_{code_j}))) + α Max_j (KSS\
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于PyQt5+pytorch的在线疲劳检测系统项目源码+文档说明(Python毕业设计),含有代码注释,新手也可看懂,个人手打98分项目,导师非常认可的高分项目,毕业设计、期末大作业和课程设计高分必看,下载下来,简单部署,就可以使用。该项目可以直接作为毕设、期末大作业使用,代码都在里面,系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值,项目都经过严格调试,确保可以运行! 基于PyQt5+pytorch的在线疲劳检测系统项目源码+文档说明(Python毕业设计)基于PyQt5+pytorch的在线疲劳检测系统项目源码+文档说明(Python毕业设计)基于PyQt5+pytorch的在线疲劳检测系统项目源码+文档说明(Python毕业设计)基于PyQt5+pytorch的在线疲劳检测系统项目源码+文档说明(Python毕业设计)基于PyQt5+pytorch的在线疲劳检测系统项目源码+文档说明(Python毕业设计)基于PyQt5+pytorch的在线疲劳检测系统项目源码+文档说明(Python毕业设计)基于PyQt5+pytorch的在线疲劳检测系统项目源
资源推荐
资源详情
资源评论
收起资源包目录
基于PyQt5+pytorch的在线疲劳检测系统项目源码+文档说明(Python毕业设计) (160个子文件)
blink_train_85.csv 100KB
adaptive_threshold_99.csv 1KB
adaptive_threshold_30.csv 1KB
adaptive_threshold_75.csv 1KB
adaptive_threshold_55.csv 1KB
adaptive_threshold_60.csv 1KB
adaptive_threshold_95.csv 1KB
adaptive_threshold_65.csv 1KB
adaptive_threshold_20.csv 1KB
adaptive_threshold_70.csv 1KB
adaptive_threshold_40.csv 1KB
adaptive_threshold_80.csv 1KB
adaptive_threshold_10.csv 1KB
adaptive_threshold_85.csv 1KB
adaptive_threshold_15.csv 1KB
adaptive_threshold_90.csv 1KB
adaptive_threshold_45.csv 1KB
adaptive_threshold_50.csv 1KB
.gitignore 47B
fatigue_detection_system.iml 333B
blink_EAR_thres_gbdt.joblib 380KB
KNN_long.joblib 13KB
KNN_short.joblib 13KB
girl.jpg 34KB
1680971212.log 77KB
1681875509.log 47KB
1681876598.log 28KB
1681875004.log 20KB
1681875343.log 20KB
1681875284.log 6KB
1681875719.log 5KB
1681873390.log 0B
1681874904.log 0B
1681874802.log 0B
1681873479.log 0B
1681874746.log 0B
1681874155.log 0B
1681875659.log 0B
README.md 12KB
reference_3d_68_points_trans.npy 944B
landmark_detection_56_se_external.onnx 10.92MB
landmark_detection_56.onnx 9.35MB
scrfd_500m_kps.onnx 2.41MB
front_face.png 988KB
4_疲劳检测结果.png 442KB
1_正脸校准.png 418KB
fatigue.png 172KB
2_疲劳检测界面.png 102KB
疲劳算法整体框架.png 71KB
KSS融合.png 66KB
KSS设置.png 64KB
3_参数设置.png 39KB
frownMobileNet_CE_sobel.pth 4.86MB
eye_Detector.py 36KB
kss_statistic_and_classifier.py 33KB
detect_handler.py 18KB
diagnosis_analysis.py 16KB
causal_infer.py 15KB
frown_img_preprocess.py 14KB
adaptive_thres_setting.py 10KB
head_detector.py 10KB
fatigue_detector.py 9KB
face_state_test.py 9KB
mobilenetv3.py 9KB
scrfd.py 9KB
detect_window.py 8KB
utils.py 8KB
yawnSet.py 8KB
blinkSet.py 7KB
face_utils.py 7KB
strategy_load.py 7KB
blink_param_window.py 6KB
mouth_detector.py 6KB
align_front_face.py 6KB
func_test.py 6KB
nodSet.py 5KB
calibrate_window.py 5KB
detect.py 5KB
detector.py 4KB
yawn_param_window.py 4KB
fatigue_operator.py 4KB
gbdt_for_blink_train.py 4KB
nod_param_window.py 4KB
fatigue_validate_table.py 3KB
fatigue_evaluate_withKNNs.py 3KB
diagnosis_column.py 2KB
behavior_plot.py 2KB
blink_feature.py 2KB
login.py 2KB
calibration.py 2KB
login_window.py 2KB
fatigue_param_window.py 1KB
logger.py 1KB
logger.py 1KB
frown_detector.py 1KB
detector.py 1KB
yaml_load.py 426B
kss_statistic_and_classifier.cpython-38.pyc 16KB
eye_Detector.cpython-38.pyc 16KB
detect_handler.cpython-38.pyc 11KB
共 160 条
- 1
- 2
资源评论
王二空间
- 粉丝: 6644
- 资源: 1997
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功