电力工作人员面部疲劳状态识别系统研究

2021-12-24 13:37王成龙
上海电力大学学报 2021年6期
关键词:关键点眼部人脸

赵 倩, 郭 彤, 王成龙

(上海电力大学 电子与信息工程学院, 上海 200090)

在电力系统的运作过程中,经常会出现变电站运行维护人员误操作事故,主要原因包括作业人员安全意识不强、应急处置能力亟待提高[1],以及疲劳操作等。通常人在疲劳时,身体协调性差、大脑支配能力下降,容易在工作生活中造成判断失误和操作失误,从而造成事故。对于电力操作,尤其是倒班工人,采用实时监控疲劳状态报警提示,可以减少操作违规与失误的发生。因此,进行疲劳状态检测对于保护电力工作人员的安全具有举足轻重的作用。

目前,被用于疲劳状态检测方法主要有两类:一类是采用医疗器械测量人体的特征,包括脑电图、眼电图、心电图等生理信息,但这类方法不太容易普及,对检测环境有一定要求,成本高且需要佩戴相应的仪器;另一类是采用机器视觉技术,对采集到的图像经过一系列图像处理和模式识别算法处理,最终自动判断测试者的疲劳状态。深度学习技术近年来已经广受学术界和工业界的关注[2],在这类算法的运用中,眨眼以及打哈欠频率是面部疲劳状态的重要指标,因此眼部和嘴部的状态检测是疲劳检测中的关键问题[3]。传统的基于机器学习的面部疲劳状态识别方法一般是通过Haar-like特征检测出人脸的位置,然后通过计算眼睛纵横比来描述眼睛的张开程度判断疲劳状态[4]。但是由于光照、姿势等条件变化,使得眼睛状态识别的难度大大增加。近年来,由于计算机硬件的进步以及深度学习算法的发展,深度卷积神经网络能够自适应提取特征,更好地表达其处理图像的本质特征,且避免了人工特征选取过程,打破了图像识别领域中“先提取特征,后模式识别”的框架[3],使得深度学习技术在模式识别领域有了广阔的应用空间,大大地推动了疲劳检测的研究。陈瑜等人[5]通过人脸人眼定位后,采用不确定性的云模型对提取的眼动特征进行数据处理,构建二维多规则推理生成器检测疲劳状况。史瑞鹏等人[6]采用优化的多任务卷积神经网络(Multi-Task Convolution Neural Network,MTCNN)算法,实现在眼部和嘴部区域定位的基础上,完成眼部、嘴部区域分类模型的训练,最终实现疲劳驾驶的检测判定。郑伟成等人[7]通过MTCNN进行人脸检测并提取人脸关键点,在此基础上提取眼部、嘴部以及头部疲劳特征,采用这3类特征融合的策略,构建决策树实现驾驶员疲劳检测分类模型。深度学习虽然已经成为疲劳检测方面的重要途径,但是检测结果的准确性还需要提高,因此本文提出一种新的基于深度学习的电力工作人员面部疲劳状态识别系统。

1 面部疲劳状态检测算法设计

本文设计的面部疲劳状态检测算法流程如图1所示。对采集到的电力场景中工作人员图像结合方向梯度直方图(Histogram of Oriented Gradient,HOG)特征和支持向量机(Support Vector Machine,SVM)分类器进行人脸检测,获取人员面部位置,并进行面部关键点定位。采用YOLOv4-tiny目标检测算法对眼部定位区域进行特征提取,并建立模型检测眼睛开闭状态,依据PERCLOSE准则求出单位时间内眼睛闭合状态所占的百分比,同时结合打哈欠和瞌睡点头频率完成电力环境中工作人员疲劳状态预警机制。

图1 疲劳状态检测算法流程

2 人脸检测及关键点定位

人脸检测是疲劳状态分析系统的重要依据。该方向目前已具有丰富的学术成果,如:基于Haar[8]人脸描述特征和Adaboost迭代算法分类器[9]的快速人脸检测算法;基于HOG特征和SVM分类器的人脸检测算法[10];以及级联CNN的人脸检测和人脸对齐算法MTCNN[11]。由于HOG结合SVM分类算法具有速度快、模型小的特点,适用于轻微遮挡以及正面和略微非正面人脸的特征,所以本文采用该方法来实现人脸检测,并选用Dlib库提供的基于级联回归树模型来回归出人脸的68个关键点,以实现人脸五官的定位。

2.1 基于HOG特征的人脸检测

由于梯度往往产生在物体的边缘处,因此利用梯度和梯度方向的统计信息HOG特征可以很好地描述局部目标的边缘和形状。此外,由于HOG是在图像的局部方格单元上操作,且梯度受光照变化影响较小,因此HOG特征具有较好的光学不变性与几何不变性。在进行人脸检测时,HOG特征的提取过程如下[12]。

(1) 为了减少颜色数据和避免光照因素的干扰,对采集到的图像I(x,y)采用Gamma压缩法进行颜色空间归一化处理,公式为

I(x,y)=I(x,y)Gamma

(1)

(2) 计算每个点(x,y)的梯度值G(x,y)和梯度方向α(x,y),公式为

(2)

(3)

其中,Gx(x,y),Gy(x,y)分别为点(x,y)在水平和垂直方向上的梯度,公式为

Gx(x,y)=H(x+1,y)-H(x-1,y)

(4)

Gy(x,y)=H(x,y+1)-H(x,y-1)

(5)

式中:H(x,y)——点(x,y)的像素值。

(3) 将图像I(x,y)划分为若干个包含n×n个像素的单元区域,并将0°~360°划分为N个方向区间,计算每个单元区域中的梯度方向直方图。

(4) 将相邻的K个单元区域组成单元块,合并单元块中的所有单元区域的HOG组成特征向量。为了能对光照变化和阴影获得更好的效果,对合并后的特征向量进行归一化。

(5) 以步长L搜索整个图像,将所有单元块的HOG特征合并形成整个图像的HOG描述子。

2.2 人脸关键点定位

在确定人脸位置后,需要对人脸进行特征点定位和分析。为了提高识别的实时性和准确率,本算法采用Dlib人脸检测预训练模型,获取人脸的关键点。人脸68个特征点定位及眼部区域检测如图2所示。

图2 人脸68个特征点定位及眼部区域检测

对获取的图像利用此模型估计图像特征点的位置,分别分布在脸部轮廓、眉毛、眼睛、鼻子、嘴巴等脸部关键部位,并根据特征点,得到眼部的矩形区域。

3 面部疲劳状态识别

3.1 眼部疲劳状态判断

眼睛闭合状态是疲劳检测的重要标志之一。使用传统方法进行眼睛闭合状态判断时局限性较大,比如直接使用Dlib进行疲劳检测时受环境影响较为明显,尤其被检测者戴眼镜时更加大了检测难度。本文针对以上问题提出了使用YOLOv4-tiny目标检测算法与Dlib联合进行疲劳检测。在自建数据集上进行眼睛闭合状态检测实验,效果良好,能够满足实际应用场景需求。

在实验中采用网络爬取进行数据搜集,结合数据增强建立眼部状态数据集,分为睁眼与闭眼两类进行标注。实验数据总量为1 750张,使用LabelImg数据标注软件对数据集的人眼部进行标注,标注示例如图3所示。

图3 数据集眼部标注示例

YOLOv4-tiny目标检测算法是YOLOv4[13]目标检测算法的轻量版。在数据增强方面使用了马赛克(Mosaic)数据增强方式。在训练过程中选择最优参数,Mosaic数据增强是通过对已有数据集进行传统仿射变换(反转、平移、旋转等)的同时将4张图片组合在一起进行训练。这种数据增强方式可以进一步丰富物体的背景信息[14],提升模型的泛化能力。使用YOLOv4-tiny算法对YOLOv4网络进行处理,只使用两个特征层进行分类与回归处理,减少了模型的参数量,提升了模型的检测速度。为了使网络更加轻量级,网络删减了原来的特征融合模块,只对最后两个特征层进行特征融合,在保证网络轻量级的同时进一步增强小物体的检测能力。YOLOv4-tiny网络结构如图4所示。

图4 YOLOv4tiny网络结构

3.2 嘴部疲劳状态判断

人在疲劳的时候,往往哈欠不断,以提醒大脑已经处于疲惫状态。人在打哈欠时,两嘴唇距离加大,闭合时,两嘴唇的距离几乎为零。但实际检测中,由于人的头部会发生各种运动,从而会影响距离计算的准确性。为了提高距离指标的准确度,使用嘴部的长宽比ηMAR和张嘴时间作为打哈欠的判断依据。利用欧式距离来计算嘴部的长宽比,计算公式为

(6)

选取合适的阈值,当ηMAR大于阈值时,判断嘴部为张开状态。

嘴部关键点位置如图5所示。

图5 嘴部关键点分布

3.3 头部疲劳状态判断

瞌睡点头可以用31#特征点纵坐标变化量Δy和变化时间来判断。当Δy>Tnod(阈值)时,为点头状态。当连续n帧图像满足Δy>Tnod时,将图像序列标记为瞌睡点头。设Snod为点头频率,计算公式为

(7)

式中:Nnod——瞌睡点头帧数;

N——总帧数。

选取合适的阈值,当Snod大于阈值时,则判断为疲劳状态。

4 实验结果及分析

通过分析人的疲劳现象,总结在不同疲劳等级下面部的行为特征:正常状态,表现为眨眼速度快;轻微疲劳,表现为眨眼速度变慢、嘴部有哈欠动作;重度疲劳,表现为眼睛长时间闭合,头部下垂。因此,在面部特征定位的基础上,选择以眨眼频率、哈欠频率及点头频率作为疲劳状态的判断依据。

4.1 眼睛闭合状态识别结果

使用YOLOv4-tiny进行目标检测算法眼部状态判断,由于使用预训练权重,损失函数(Loss Function)初始值较低,最终收敛至3.4左右,训练提前截止。训练过程中Loss变化如图6所示。识别结果如图7所示。

图6 Loss变化曲线

图7 识别结果

从图7可以看出,待检测人员的眼部状态检测效果良好,戴眼镜时也能准确检测,但是只进行眼部状态检测难以判断疲劳。

因此,本文进行睁眼、闭眼两类识别的主要设计思路是:首先使用YOLOv4-tiny目标检测算法进行状态识别,然后对脸部关键点定位计算人眼睁合的程度和闭眼时间,结合眼部状态PERCLOSE准则判断的同时,增加了提前截止判断。这样设计的好处是在于当被检测目标出现长时间闭眼现象时,系统会提前判断人员疲劳状态,避免多特征的复杂判断延误系统对疲劳者的提示,使得系统更加人性化,更符合实际电厂施工场景。

4.2 疲劳状态判断及分析

当电力工作人员疲劳时,面部会出现疲劳特征,通过获取工作人员眼部、嘴部和头部状态信息判断其疲劳程度。为了区分正常的眨眼、说话和点头,经过多次实验对比,其中非疲劳状态PERCLOSE范围为0~0.3,疲劳状态的PERCLOSE范围为0.2~1.0。由此可见,当PERCLOSE在0.2~0.3范围内是介于清醒与疲劳的过渡状态。在综合嘴部和头部状态判断后,PERCLOSE值设置为0.25,嘴部长宽比阈值设置为0.5,头部特征点纵坐标变化的阈值设为0.3。

实验在Windows10操作系统中进行。对比实验与原实验设置相同,本文使用YOLOv4-tiny目标检测算法与Dlib联合检测疲劳状态,同时使用检测效果较好且参数量和计算量小于YOLOv4的YOLOv3与YOLOv4-tiny对比眼部检测效果。从MAP@0.5、参数量、模型体积和FPS(每秒检测帧率)等方面进行对比,结果如表1所示。

表1 眼部检测效果对比

由表1可以看出,YOLOv4-tiny算法的模型参数量更小,占用内存体积更小,FPS更高,虽然相比YOLOv3其MAP@0.5低了9.2%,但是足够满足眼部疲劳状态检测需要,实现了电力操作系统下工作人员疲劳状态实时预警。

4.3 实时检测结果

在上述疲劳状态识别系统上,分时间段对被检测者进行检测,结果如图8所示。由图8可以看出,结合眼部、嘴部、头部疲劳状态识别的实验检测结果与实际状态一致,检测效果良好。

图8 实时检测结果

5 结 语

疲劳状态漏检可能导致更多安全隐患。本文通过多特征(眼部、嘴部、头部)结合并行检测,可以有效减少漏检现象的发生,增加电力工作人员实际工作场景的安全性。在人脸检测的基础上,通过级联回归树算法定位人脸68个特征点,提取眼部、嘴部、鼻部位置。由于光照及头部姿态变动对关键点提取位置的准确度影响较大,传统基于关键点距离法的眼部疲劳状态识别准确度不高,本文采用YOLOv4-tiny目标检测算法判断眼睛的开闭状态,结合眼部状态PERCLOSF准则作为判断的主要依据,联合嘴部状态与头部瞌睡点头进行判断,使得本文所提出的联合检测算法鲁棒性更强。由检测结果可知,该算法能实现对电力工作人员疲劳状态的准确判断,有较强的实际应用价值,使电力施工环境更加安全,给电力工人和电力产业更多安全保障。

猜你喜欢
关键点眼部人脸
论建筑工程管理关键点
肉兔育肥抓好七个关键点
有特点的人脸
一起学画人脸
建筑设计中的防火技术关键点
窥见眼部瑜伽
三国漫——人脸解锁
机械能守恒定律应用的关键点
长得象人脸的十种动物
美目莫忘眉