疲劳检测,基于视频的疲劳检测、脱岗、打呵欠、闭眼、点头等检测

时间:2024-04-08 13:37:40

经查阅相关文献,疲劳在人体面部表情中表现出大致三个类型:打哈欠(嘴巴张大且相对较长时间保持这一状态)、眨眼(或眼睛微闭,此时眨眼次数增多,且眨眼速度变慢)、点头(瞌睡点头)。

1、首先是检测眨眼,可以通过landmark点的标号直接定位眼睛位置,经实验验证,该一系列的点能够准确定位。下面重点分析一下眼部,68点landmark中可以看到37-42为左眼,43-48为右眼,如下图所示:

疲劳检测,基于视频的疲劳检测、脱岗、打呵欠、闭眼、点头等检测
人脸关键点从1开始

 


68点landmark眼部区域
通过计算38、39、42、41的纵坐标、37、40的横坐标来计算眼睛的睁开度。如:1/2*[(y42+y41)-(y38+y39)]/(x40-x37)通过一个阈值确定眼睛是睁开还是闭上。也可以将这个值与初始的值的比值作为睁开度,根据不同程度来进行比较。睁开度从大到小为进入闭眼期,从小到大为进入睁眼期,计算最长闭眼时间(可用帧数来代替)闭眼次数为进入闭眼、进入睁眼的次数。通过设定单位时间内闭眼次数、闭眼时间的阈值判断人是否已经疲劳了。

参考代码地址:https://www.pyimagesearch.com/2017/04/24/eye-blink-detection-opencv-python-dlib/

2、点头:可利用姿态估计结果(如Pitch的读数)来判断是否点头及点头幅度。

或用鼻尖处30号点的前后移动值(或是方差,方差表示一个单位时间数据的偏离程度,程度越大,则表示发生点头动作的概率越大、点头幅度越大)

3、打哈欠可利用嘴巴处51、53、59、57点的距离来判断是否张嘴及张嘴时间,从而确定人是否是在打哈欠,同时这个阈值应当合理,应经过大量实验,能够与正常说话或哼歌区分开来。

4、脱岗采用人脸关键点检测的方式的,如果存在关键点,则检测人员在岗,没有关键点,则检测不在岗。

测试demo:

链接:https://pan.baidu.com/s/1Z22CVxlbt8qV7zIAFwpj3w 
提取码:tku0 

测试界面:

疲劳检测,基于视频的疲劳检测、脱岗、打呵欠、闭眼、点头等检测
测试界面,交流QQ:187100248