基于Viola-Jones 框架人脸检测算法的汽车疲劳驾驶检测

2021-03-15 06:57吴雪颖吴才硕黄文聪覃舒琳
广西科技大学学报 2021年1期
关键词:人脸检测

吴雪颖 吴才硕 黄文聪 覃舒琳

摘  要:疲劳驾驶导致汽车交通事故逐年增加,为了提升驾车的安全性,需对驾驶员疲劳状态实时监测并及时提醒.为了提高疲劳驾驶判断效率及准确率,本文运用Viola-Jones框架特征矩阵进行人脸预判断;预判断过程中为了减少Haar值计算量并提高人脸识别速度,采用Adaboost算法和级联分析,剔除非人脸的Haar特征值,实现快速人脸识别;根据色彩空间转化实现眼部分割处理,根据PERCLOS值评估驾驶员是否处于疲劳状态并提前予以警示;通过MATLAB仿真软件实现疲劳驾驶检测算法的仿真分析.在多个样本的测试过程中,该方法有效识别出人脸,并能够准确监测驾驶员的疲劳状态.

关键词:疲劳驾驶检测;人脸检测;疲劳特征提取;PERCLOS值;Viola-Jones

中图分类号:TP391.41;U491.116         DOI:10.16375/j.cnki.cn45-1395/t.2021.01.007

0    引言

随着交通工具的飞速发展,交通隐患也成为威胁人类安全的杀手之一,每年全世界至少有50万人死于交通事故.欧美各国的研究报告指出,交通事故的起因有接近90%的因素是人为造成,其中在驾驶过程中由于疲劳引发的交通事故就有10万多例.由此得知,驾驶员的疲劳驾驶已经成为道路交通事故的主要原因之一.因此,对疲劳驾驶实时监测的研究对安全行车以及驾驶员的生命财产安全具有一定的意义[1-3].

汽车疲劳驾驶的表现特征有很多方面,较为突出的特征就是驾驶员的面部特征,如嘴部和眼部的开度、头部偏移等直观现象可作为疲劳的判断条件.文献[4]利用图像处理手段对图像进行增强处理,消除因周围光线不佳造成的疲劳驾驶特征识别的干扰.采用AdaBoost的人脸检测算法对人脸关键部位进行跟踪,根据人眼变化并结合PERCLOS准则进行疲劳判定,仿真结果能准确实现对人脸关键部位的检测.文献[5]对疲劳驾驶的判断考虑了人脸部位的变化和驾驶状态数据两个因素.根据Dlib库的人脸轮廓点提取计算眼部和嘴部开度比值,获取正常及疲劳状态特征,再采用改进后的随机森林模型对疲劳状态进行判断,结果表明疲劳驾驶检测结果准确率达到92.06%.文献[6]根据驾驶员的眼睛开度以及颅骨位置变化设计了基于驾驶人眼睛开度信息和头部姿态信息的驾驶疲劳检测系统.采用Camshift算法对人脸跟踪检测,并用二阶HOG特征和随机森林回归算法对头部角度实时检测.其仿真结果表明在各种驾驶姿态下都可以实时快速检测疲劳情况.有研究指出,人疲劳和正常时其心率数据会存在微小区别,故有部分研究人员以心率区别来判断是否属于疲劳驾驶.如文献[7]为了解决疲劳驾驶检测系统实用性和准确率低等问题,基于空间聚类心率检测算法实现了疲劳驾驶实时检测系统.通过手环采集驾驶员心率值,利用该值与疲劳度之间相关程度,经空间聚类算法分析判断驾驶员是否为疲劳状态.文献[8]指出,利用心率异常来判断疲劳驾驶的方法耗时长且准确率低,为此提出短时心电信号的疲劳驾驶检测算法.先截取30 s的短时心电信号,利用差分阈值法确定R波位置,計算R波序列的时域/频域特征,与深度卷积神经网络模型特征提取相结合,并用随机森林分类器对特征进行分类,其检测准确率达到 91%.

为了简单快速判断出人脸,并进行疲劳驾驶的判断,本文先用Viola-Jones框架人脸检测算法对人脸进行检测;针对检测速度以及特征Haar值累加计算量大等问题,采用图像积分、级联分析方法快速对拍摄图像进行人脸筛查,提高人脸判断速度和效率;采用PERCLOS值判断驾驶员是否属于疲劳状态.实验结果表明,该检测方法有一定的实用性和有效性.

1    Viola-Jones框架疲劳驾驶检测

由图1可知,疲劳驾驶检测主要通过摄像头获取驾驶员图像,将图像进行预处理,为下阶段的Viola-Jones框架的人脸检测作准备,当检测到图像属于人脸,再提取图像中的眼部关键部位,提高了疲劳判断的效率.根据提取特征与疲劳驾驶特征类型进行匹配,根据闭眼频率PERCLOS值判断是否属于疲劳驾驶,并反馈结果提醒驾驶员正在疲劳驾驶.

1.1   图像预处理

疲劳驾驶判断前提是对驾驶员的面部特征提取,考虑到在行车时,路面颠簸、环境光线以及摄像头像素等因素会对拍摄的图像质量产生一定影响,图像关键部位的提取结果直接影响到对疲劳判断的准确度,故需要对所拍摄相片进行预处理.为了剔除图像中无用的信息,能够在面部遮挡时提高定位准确度,采用直方图均衡化方法,该方法可调节图像对比度质量,通过变换函数将灰度分布集中的图像转成灰度平均分布的图像.而图像传输过程中难免受环境噪声影响,为了改善图像质量,采用中值滤波方法,该方法在保持图像边缘清晰的情况下进行噪音过滤.此外,图像拍摄的清晰程度受周围环境影响较大,需要对所拍摄的图像进行光照补偿处理,从而减少环境光线对疲劳驾驶检测结果的影响[9].

1.2   Viola-Jones框架人脸检测算法

Viola-Jones人脸检测算法已成功对人脸进行实时检测,其首先利用Haar特征描述人脸特征,运用特征矩阵模块积分来表示这个人脸图像;再用Adaboost算法进行训练,建立层级分类器,直接对矩阵特征区域进行匹配,从而快速判断图像是否为人脸[10].

1.2.1  Viola-Jones的框架矩阵特征及图像积分

根据人脸肤色特征,人的眼睛区域会比脸颊区域深,眼部亮度会比脸颊暗一些,同理,嘴唇区域也比嘴部四周暗一些,鼻子区域会比两边脸颊要亮.基于该脸部特征,Viola-Jones框架矩阵特征使用如图2所示的4种矩阵特征来表示脸部[10].

由图2可知,运用Viola-Jones框架矩阵模型可以把人脸图像表示成多个白色区域和黑色区域.

为了计算Haar特征,需要对矩形区域进行所有像素求和.一个图像包含不同数量及形状的矩形区域,如果将每个矩形区域都用遍历所有像素再求和的计算方法,计算量巨大、效率低.为了改进这些问题,采用积分图像方法,如图3左图所示,对于图像任何一点[Sx,y]的积分图像值等于位于该点左上角的所有像素之和,公式如式(1)所示:

根据积分图像方法(见图3),假设[fx,y]表示整体的积分面积,则某一矩形面积可以根据已知的其他矩形面积求得,如面积[Sx, y=fx, y-Sx-1, y-Sx, y-1-Sx-1, y-1].运用积分图像方法之后,无需反复遍历图像中所有的矩形区域来计算矩形区域的灰度值总和,只需对原图像进行遍历一次,大大减小了灰度值计算量[11].

1.2.2  Adaboost算法

获取人脸特征后,特别在haar特征较多的情况下,受各类图像分辨率影响,从大量的特征中选取所想要的特征才能有效达到检测目的.如图4所示,Adaboost算法即是针对高维的Haar特征进行选择,选择部分特征来进行分类器训练,由弱分类器构造强分类器,将一系列的“弱”分类器通过一定权重值设置线性组合,构成一个“强”分类器[12-14].

1.2.3  级联分析

Adaboost算法所建立的分类器在整个分类过程中,需要把相关数据中所有特征信息进行匹配,完成后才能判断一张图像是否为人脸.该检测速度十分缓慢,达不到期望的快速检测预警效果.因此,通过使用级联方法来提高检测效率,该方法是基于退化的决策树算法.如图5所示的级联检测器工作流程,先由第一级的强分类器F1检测出疑是人脸子窗口样本,才能激发第二级的强分类检测器F2,否则停止检测该窗口并丢弃.依次类推,直到最后Fn检测器给出正确的判断人脸结果.因此,非人脸的图像只需少量的haar特征就可以判断出来并排除掉,无需进行所有特征的检测判断[12-14].

2    眼睛部位提取及疲劳判定

在人脸的面部特征中,眼睛、鼻子、嘴巴可以最为直观地体现人在当前情况下大脑的疲劳程度.在人脸的研究中发现人的肤色呈现出聚类性,如果将人脸中非特征区域的部分去除,保留眼睛、鼻子、嘴巴等明显特征区域,对人脸疲劳特征识别和提取有很大帮助.此外,人脸千变万化,在实际应用中整张面部识别存在一些问题,如人脸模板不能通用于任意拍摄图像,即人在驾驶时的姿势、位置的微量变化都会对人脸识别产生影响.这需要多模板、多尺度、多角度的匹配,很难做到把所有人脸模板都囊括.因此,需将眼睛和嘴巴单独分割建模,对其开度、张度进行单独匹配且其限值也是随着人脸比例进行动态调节设定.

对于关键部位的提取采用Matlab软件自带的级联对象检测器对眼睛位置进行定位.

2.1   眼睛状态提取

眼睛疲劳判断是根据人眼开度不同时眼部轮廓会随之变化,故所提取的边缘会稍微不同.而眼睛边缘检测准确度不高但速度快,考虑到疲劳检测速度及准确度,对于眼睛部位状态的提取采用组合算法,即模板匹配及水平灰度投影算法相結合;用检测器确定眼部位置后,运用模板匹配法对样本进行粗略检测,将样本进行分类,如睁眼、闭眼和可疑闭眼;再通过水平灰度投影法对闭眼和可疑闭眼样本进行判断,进一步确定其状态,故该组合方法判断眼睛开闭状态的准确度较高.

2.2   疲劳判定

在进行眼部分割时,首先提取眼睛特征.根据卡内基梅隆实验[15],在一定时间内眼睛的内瞳孔占整个眼部比例达到一定数值即为眼睛闭合状态.在实验中将眼睑遮住瞳孔的面积超过70%、80%、50% 3个不同百分比计为眼睛闭合,并分别用P70、P80及EM符号来表示.故在一定时间内,提取眼部参数进行眼部闭合百分比匹配,当达到眼睛闭合程度并满足一定频率时可判断为疲劳驾驶状态,该频率用PERCLOS值表示.相关研究表明,P80的实验数据对驾驶员疲劳驾驶过程中的描述较为准确,其PERCLOS值与疲劳状态的关联性很强[4].PERCLOS值计算如下:

图6为PERCLOS值的原型图,图中纵坐标是眼部的开度,曲线是眼睛开度随着时间变化的曲线.图中t1是眼睛在完全打开到闭合20%的时间;t2为睁开至闭合80%的时间;t3是由闭合至睁开20%的时间;t4是由闭合至睁开80%时间.根据眼睛开度变化数值可以得到眼睛眨眼频率值f即PERCLOS值.

此次研究采用每8 s进行一次测试的方式,对于P80的检测方式来说,当f >0.15,则认定驾驶员为疲劳状态.

当PERCLOS值比较低时,即使驾驶员的眼睛是睁开的,实际却处于走神状态,根据其嘴部开度情况可判断其疲劳状态.因此,根据PRECLOS值计算出每分钟的闭眼帧数.一般情况下人眼每分钟眨眼的次数为10~15次,以这个数值为标准对驾驶员的当前情况进行判断,当低于时可能出现疲劳的情况,同时结合嘴巴张度来判断是否为疲劳驾驶.

3    案例分析

为了验证模型的有效性、可行性,分别从人脸检测、眼部关键部位检测及疲劳检测等方面进行多个样本测试分析.

3.1   人脸及关键部位检测

为了提高疲劳驾驶的检测效率,需对拍摄图像进行人脸预判断,只有判断结果为人脸时才能进行疲劳检测,因此,人脸预判断步骤非常关键,如判断失误就可能错过疲劳采集信息,将对疲劳判断结果产生一定影响.本次的人脸及关键部位检测采用了多个样本进行测试,其检测结果如图7、图8所示,图中人脸框架及关键部位都有方框标出,图7中还定位不同开合度的人眼,说明其模型可以可靠检测出人脸及关键部位. 此外,图8对多个人脸对象进行检测,从图8中可知,由于采用了Adaboost算法和级联分析,可以有效检测到不同脸型以及姿态下的人脸,大大减少了漏检情况.

3.2   疲劳驾驶检测

为了检测算法对于不同驾驶员检测结果的准确性,对6个不同测试样本进行疲劳驾驶检测,测试结果如表1所示.

由表1结果可知,其算法对人脸关键部位的检测准确度达到90.9%以上.在6个样本的疲劳测试中,视频1和视频4模拟非疲劳状态,算法都能够正确判断出非疲劳状态;视频2、3、5、6模拟疲劳状态,算法除了视频3判断失误,其他都判断正确,故疲劳驾驶状态判断也比较准确.

4    结论

本文基于MATLAB实现 Viola-Jones人脸框架的疲劳驾驶检测系统建模及仿真.该算法实现了非人脸特征的过滤,检测定位所需的人脸区域,有效提高了检测速度及准确性并根据PERCLOS值进行驾驶疲劳判断.由案例分析可知,该算法对于不同的测试样本都能够精准定位于人脸关键部位,并能判断疲劳驾驶状态,体现出该算法的通用性和有效性.

参考文献

[1]     刘子谦.简要分析新能源汽车在中国的发展前景[J].时代汽车,2017(24):44-45.

[2]     曹王欣,刘东梅,马洋洋,等.探析电动汽车动力电池系统发展瓶颈与对策[J].南方农机,2019,50(9):107.

[3]     国家发展改革委,国家能源局,工业和信息化部,等.关于印发提升新能源汽车充电保障能力行动计划的通知:发改能源[2018]1698号[A/OL]. (2018-11-09) [2020-07-12].https://www.d1ev.com/news/zhengce/82764.

[4]     劉朝涛,张雪佼.基于图像处理的疲劳驾驶预警研究[J].电子技术应用,2019,45(8):104-108.

[5]     吴士力,唐振民,刘永.多特征融合的随机森林疲劳驾驶识别算法[J].计算机工程与应用,2020,56(20):212-219.

[6]     曹昱聪,吴健瑜,范良明,等.基于多特征融合的疲劳驾驶检测系统研究[C]//2019中国汽车工程学会年会论文集.上海:机械工业出版社,2019.

[7]     王延年,柴小强,向秋丽.基于空间聚类心率检测算法的疲劳驾驶预警手环设计[J].国外电子测量技术,2019,38(5):91-95.

[8]     徐礼胜,张闻勖,庞宇轩,等.基于短时心电信号的疲劳驾驶检测算法[J].东北大学学报(自然科学版),2019,40(7):937-941.

[9]     李旭辉.基于图像预处理的局部二值模式人脸识别方法[J].电子技术与软件工程,2019(7):66-67.

[10]   贾海鹏,张云泉,袁良,等.基于OpenCL的Viola-Jones人脸检测算法性能优化研究[J].计算机学报,2016,39(9):1775-1789.

[11]   谭艳丽,赵永强.基于积分图像的快速二维Otsu阈值法[J].半导体光电,2014,35(6):1089-1092.

[12]   李佩,汪红娟,李业丽,等.基于AdaBoost人脸检测算法的分析研究[J].北京印刷学院学报,2020,28(1):128-132.

[13]   陈中胜,李春贵,蒋凯.基于分布估计算法的人脸Haar特征选择[J].广西科技大学学报,2015,26(2):47-52.

[14]   安晓宁,王智文,张灿龙,等.基于隐马尔可夫模型的人脸特征标注和识别[J].广西科技大学学报,2020,31(2):118-125.

[15]   郑伟成,李学伟,刘宏哲,等.基于深度学习的疲劳驾驶检测算法[J].计算机工程,2020,46(7):21-29.

猜你喜欢
人脸检测
肤色与唇色信息相结合的人脸检测
人脸检测技术综述
基于Android的车载疲劳驾驶监控系统研究与设计
一种鲁棒的长期人脸特征点跟踪系统
基于改进的Adaboost算法在人脸检测与识别中的应用与研究
JNI技术在基于OpenCV的人脸与微笑检测中的应用
基于人脸特征定位的SNS网站应用组件研究与设计
基于Android平台的人脸识别系统设计与实现
基于Matlab的人脸检测实验设计
基于肤色模型与改进Adaboost算法的人脸检测