基于面部多特征的驾驶员疲劳状态检测*

2023-07-11 07:31陈立潮王冠男
计算机与数字工程 2023年3期
关键词:嘴部人眼眼部

陈立潮 王冠男

(太原科技大学计算机科学与技术学院 太原 030024)

1 引言

交通事故是现今世界上每个国家都非常重视的社会危害,已经被全球各个国家一致认为是目前全球范围内对人类生命安全造成最大伤害的隐患。每年有超过60 万人在交通事故中失去生命。根据欧洲和美国在交通事故中的伤亡人数统计表明,大约八到九成的交通事故是因为人为因素造成的[1]。依照美国国家安全局的数据显示,随着社会的发展和人均车辆数目的增加,美国每年都会因为司机疲劳驾驶而造成十多万起以上的交通事故,其中死亡人数超过两万人[2]。在欧洲因为这种因疲劳驾驶而导致的交通事故也具有高死亡率。比如在德意志联邦共和国境内,高速公路上因为疲劳驾驶而造成的驾驶员或者乘客伤亡的交通事故超过四分之一[3]。新世纪以来,我国交通事业飞速发展,交通产业高速发展的背后也隐藏着巨大的危险。每年我国因为交通事故都会造成巨大的人员伤亡和经济损失。其中超过一半的交通事故是因为驾驶员疲劳操作引起的,经济损失高达百万美元之巨[4]。

有关汽车驾驶员的疲劳检测问题已经迫在眉睫,全球很多国家和地区也都将疲劳驾驶预警系统的开发工作列入一级任务。各国对于疲劳驾驶的研究总体可以分为三类[5]:基于驾驶员生理信号的检测,基于驾驶员脑电信号的检测和基于驾驶员面部特征的检测。

2014 年王少楠等通过采集测试人员的脑电信号使用小波包变换进行特征提取,利用SVM 分类,从而分析驾驶员的疲劳状态[6]。2015年陈志勇、杨佩等通过分析对车辆数据产生影响的多个指标如速度、方向盘转角等,选择疲劳评价指标,使用BP神经网络搭建疲劳状态识别模型[7]。

但是基于驾驶员生理信号的检测方法具有侵入性,驾驶员需要佩戴较为精密且繁重的仪器,会对司机进行驾驶干扰而且仪器价格昂贵无法普及。而基于车辆运动特征的疲劳检测,会受到类似于路况信息,天气状况以及驾驶员行车习惯等多种外部条件的干扰,一般来说只能作为辅助参考,不具有全面性。近年来随着计算机视觉的发展,基于面部特征的检测成为疲劳检测的主要方法。2009年,尹宝才等采用Gabor 小波提取嘴角纹理特征,使用线性判别分析法进行打哈欠检测,从而判断疲劳状态[8]。2014 年田祎提出了一种新的度量人眼状态变化的方法,并结合PERCLOS 方法对疲劳状态进行分析[9]。2017 年ZHAO 等通过构建深度集成神经网络表示眼部区域信息,使用迁移学习提取眼部特征构建驾驶员睡意识别数据集[10]。2019年潘志庚、刘志飞等使用模糊综合评价算法对眼部疲劳的影响因子进行分析,推断出眼部状态,根据PERCLOS 原理进行疲劳检测[11]。同年,Ngxande M,Tapamo J R 等使用生成对抗网络增加基于群体偏见的可视化策略的有针对性的数据,提高了疲劳检测性能[12]。2020 年Younes Ed-Doughmi 等提出了一种递归神经网络来分析和预测驾驶员睡意,利用数据集对模型进行建模和验证,实现了基于重复神经网络体系结构的多层模型三维卷积网络的驾驶疲劳检测[13]。但是上述研究大多数均是通过对驾驶员人眼或者其他单一部位进行疲劳检测,而且场景单一,在复杂场景下检测精度比较低。

因此针对上述问题,本文提出一种多场景下的多特征驾驶员疲劳检测模型。首先使用改进的AdaBoost 算法对复杂场景下的驾驶员人脸进行精准定位,然后使用使用改进后的LBF算法和三庭五眼法检测人眼和嘴部信息。再通过对人眼和嘴部的二值化图像进行多参数的疲劳特征计算,构建疲劳检测模型,如图1 所示。最后通过模型分析驾驶员的疲劳状态。实验表明本模型具有较高的准确率。

图1 疲劳检测模型结构

2 人脸检测

2.1 图像预处理

当待检测图像存在背景复杂、人脸姿态有角度变化等问题时,误检率就会大大提升,最终导致检测结果的性能大打折扣。为此,本文在驾驶员人脸检测之前引入肤色区域分割算法缩小检测区域,从而达到缩短检测时间的效果。在待检测图像中,使用肤色区域分割算法排除较大部分非肤色区域,有效避免了复杂背景对驾驶员人脸检测的影响。

肤色区域分割的效果对比如图2 和图3 所示。从图中可以看到通过YCbCr空间的肤色区域分割,减小了待检测区域,为后续的驾驶员人脸检测缩短了检测时间。

图2 肤色分割前的原图

图3 肤色分割效果图

据国家安全部和天津交警总队的数据表明,疲劳驾驶易发时段为深夜的24 时至2 时和凌晨的4时至6 时。这两个时段中采集到的驾驶员人脸图像由于光照强度过低,导致人脸检测效率和检测率大大降低。因此,本文引入光照补偿算法,对待检测的夜间驾驶员人脸进行光照增强,提高夜间驾驶员人脸检测效率。

光照补偿效果如图4和图5所示。在光照强度差的环境下,提升驾驶员人脸待检测图像的光照强度,为下一步的驾驶员人脸检测打好基础。

图4 光照补偿前的原图

图5 光照补偿效果图

2.2 人脸检测

本文采用改进的AdaBoost 算法进行人脸检测。现行AdaBoost 算法的样本权重更新规则注重困难样本,即被分错的样本在算法后续可得到更多重视,但它存在缺点:很难对训练样本中包含的噪声样本或一些罕见困难样本进行正确分类,算法会将训练重点转移到分类困难的样本上,即这些样本的权重会成倍增加,这样就可能造成梯度爆炸的现象。而且过分重视困难样本,随着迭代次数的增加,正确的分类规则会慢慢丢失,从而大大影响算法性能。

为了解决上述问题,本文将弱分类器的权重系数进行动态调整,得到训练样本在传统AdaBoost算法中弱分类器和其相对应的权重系数mt,计算每一个弱分类器对待检测样本周围多个训练样本的分类准确率nt,将各个弱分类器的权重系数改为mt*nt,利用局部敏感哈希方法的余弦相似性寻找待检测样本的近邻点[14]。再将待检测样本通过局部敏感哈希方式哈希到一起,则该区域的其它数据是待检测样本的近邻样本数据,这些数据构建成新的测试集D,然后各个弱分类器对D 进行分类测试,从而判断各个弱分类器与M的匹配程度,最后,将其分类的准确率作为M 的动态权重系数β,如下式(1)所示。

动态权重系数算法如下:

Step1. 利用局部敏感哈希方式来从训练集中找到相似的样本数据,并将它们组合成一个新的测试集D;

Step2. 使用弱分类器ℎi对新的测试集合进行分类测试,利用式(1)计算动态权重系数;

Step3.得到最终的强分类器。

本文通过改进的AdaBoost 算法对驾驶员人脸进行检测,使用矩形框标记人脸区域,返回该区域的宽度与高度值。检测结果如图6所示。

图6 人脸检测

3 面部特征检测

检测到人脸后,本文通过改进的LBF算法进行人眼定位,利用三庭五眼的方法进行嘴部定位。

3.1 人眼定位

在驾驶员人眼的检测中,人眼图像往往会因为光照、遮挡等复杂场景而难以定位,从而影响检测精度。因此提出了一种改进的人眼检测算法。

本文首先通过样本训练好局部约束模型模型,然后利用基于回归的局部二值特征法检测人眼图像,最后把人眼的位置和图像信息传递给约束局部模型,精确检测到人眼特征点。步骤如下:

Step1. 构建人眼形状模型。首先手工标定训练样本,通过标定特征点表示人眼形状,将样本的特征点用向量表示,将所有的向量构建成的向量组所求均值表示人眼。

Step2.构建局部补丁模型,让每个特征点在邻域内寻找最佳匹配点。

Step3.使用LBF算法进行人眼检测。

Step4. CLM 拟合。对新图像中的目标建立新模型,用训练好的模型与新模型进行拟合定位特征点。

Step5. 利用优化策略优化模型参数直到精确定位人眼。

3.2 嘴部定位

本文基于三庭五眼的方法对嘴部进行定位。三庭五眼是按照人面部器官的位置和比例统计出的规律。三庭分为上中下三庭。其中从发际线到眉心为上庭,眉心到鼻翼下缘为中庭,边缘处到下巴为下庭。而五眼是将脸的宽度进行五等分[15~18]。从左到右依次为左眼到左侧发际线、左眼、左眼到右眼、右眼、右眼到右侧发际线。因此本文以人脸面部的1/3处以下,宽度为1/5~4/5脸宽之间为嘴部检测区域。

4 基于眼部和嘴部的疲劳特征提取与疲劳识别

4.1 眼部疲劳特征提取

当驾驶员在疲劳驾驶时,眼部状态会反映出大量信息,通过眼部状态可以较为准确地反映驾驶员的疲劳程度。本文在精确定位到人眼之后,将人眼图像二值化,通过计算人眼的高宽比和黑白像素比来判断眼睛的闭合状态。如图5~7 分别表示完全睁眼,睁开一部分,闭合的二值化图像。

通过大量的实验统计可知人眼睁开时,眼部的高宽比m 的范围是0.21~0.75,而人眼闭合时,眼部高宽比m 的范围是0.13~0.24。可以发现,当眼部高宽比大于0.24 的时候,人眼是处于睁开状态,当眼部高宽比小于0.13 的时候,人眼是处于闭合状态。但是当人眼的宽高比值在0.21~0.24 的范围内时,就无法通过闭合范围判断眼睛的闭合状态。所以本文引进一个新的判断依据,眼部区域的黑白像素比n,当人的眼睛在睁开的时候,n 的范围是0.13~4.80,在闭合的时候,n 的范围是0.06~0.15。而且当人的眼部区域的黑白像素比值低于0.15时,人眼的宽高比值也会很小。所以当0.21<m<0.24,0.06<n<0.15时,人眼处于闭合状态。

4.2 基于嘴部的疲劳特征提取

本文将嘴部区域图像二值化处理得到嘴部的二值区域,通过计算二值区域的圆形度和宽高比来判断嘴部状态。如图10~12 分别表示嘴巴全张、微张、闭合的状态。

经过大量实验验证嘴部高宽比在0.15-0.65 的时候处于微张状态,超过0.65 为张开状态,小于0.15为闭合状态。因为图像在采集过程中,驾驶员会存在身体倾斜或者移动的情况,单纯使用嘴部的宽高比来判断嘴部状态不够精确。所以本文引入嘴部二值化区域的圆形度来判断嘴部状态。当嘴部二值化区域的圆形度小于0.45时处于闭合状态,当圆形度在0.45-0.75 时处于正常张嘴状态,当圆形度大于0.75时处于打哈欠状态。

4.3 疲劳识别

根据p80 标准,设人眼的瞳孔覆盖率大于20%为睁眼,小于20%为闭眼,然后统计人眼闭合时间占规定时间的比值[19~20]。本文通过用连续时间内闭合帧数与总帧数的比值来计算PERCLOS 的值。人在疲劳状态时,眼部闭合时间较长,所以本文使用PERCLOS来定义眼部疲劳。表示如式(2):

其中T 为时间长度,设置T 为5s,实验中采用10 帧/s。当P大于20%视为疲劳。

同时,当人处于疲劳时,打哈欠次数会增加,所以本文通过打哈欠次数Y 定义嘴部疲劳。表示如式(3):

其中T为时间长度,设置T为5s,实验中采用10帧/s。当P大于15%视为疲劳。

5 实验结果及分析

5.1 实验环境与数据来源

实验环境:本文实验基于64 位Windows10 操作系统。采用Intel(R)Core(TM)i5-7200 CPU 双核处理器,16GB内存,在Microsoft Visual Studio 2019平台下构建了提出的改进的疲劳检测模型,在Matlab R2017a平台进行模拟测试。

数据来源:实验数据来源于网络上爬虫和数位驾驶员志愿者的实地拍摄。图像按照光照强度分为白天和夜间。其中白天图像共有316 张,图像中包含341 张驾驶员人脸,夜间图像有196 张,包含202张驾驶员人脸信息。视频集来源于6名实验者模拟驾驶时过程所拍摄的。

5.2 实验结果分析

实验对6 名实验者模拟实际驾驶中出现的眨眼、打哈欠等活动进行疲劳状态检测,其中戊、己所处背景为低光源且脸部有小型遮挡物。检测结果如表1所示。

表1 疲劳检测试验结果

从表中数据得出,当P 值和Y 值均超过设定阈值的时候,即眼部和嘴部疲劳状态一致时本文模型和文献[8]与文献[9]的疲劳检测模型均可正确判断此时疲劳状态,但是当P 值或者Y 值有一方超过阈值,即眼部或者嘴部有一者出现疲劳状态时,本文的驾驶员疲劳检测模型依旧都可以良好地检测出来,但是文献[8]与文献[9]会出现判断错误的情况。当实验背景出现遮挡物或者复杂光源时,文献[8]与文献[9]的疲劳检测模型由于人脸检测时未能精确检测到人脸导致最终的疲劳状态不能识别出来,而本文的检测模型依旧可以正确检测出驾驶员的疲劳状态。

综上,本文算法在检测驾驶员疲劳状态时,相对于传统单一特征的检测疲劳检测模型具有明显的优势。

6 结语

本文引入肤色分割算法,缩小驾驶员人脸检测区域,在夜间光照强度较弱的情况下,加入光照补偿算法增强驾驶员脸部信息,同时改进传统Ada-Boost 算法的权重更新方式,有效抑制了权重过拟合现象,提高了检测率,为接下来准确判断驾驶员疲劳状态打下良好基础。针对单一特征识别疲劳状态正确率低的情况,本文引入眼部和嘴部的双特征进行疲劳判断,并且在判断眼部和嘴部疲劳时引入多参数进行状态识别,提高了驾驶员疲劳状态识别的可靠性。最后通过综合眼部和嘴部疲劳特征来判断疲劳状态。实验结果表明:本文方法相对于传统的单特征的检测方法,检测结果正确率更高,并且针对背景和光源情况的情况也能较为准确地判别状态,满足了疲劳检测模型对高效、稳定的要求。

但是本文所建立的疲劳检测模型仅能对驾驶员疲劳状态做出判断,未能对驾驶员疲劳程度进行分析,仍然需要进一步的工作以发现更全面的疲劳检测模型。

猜你喜欢
嘴部人眼眼部
此人为何杠得如此嚣张?
圆号教学中嘴部教学的重要性及训练方法研究
人眼X光
高中素描头像教学中提高嘴部刻画能力的策略探究
人眼为什么能看到虚像
基于Horn-Schunck光流法的多目标反刍奶牛嘴部自动监测
为什么要做眼部检查
闪瞎人眼的,还有唇
戴眼罩有助消除眼部疲劳
如何消除用电脑后的眼部疲劳