基于人眼状态的疲劳驾驶检测系统的实现

2016-09-13 08:50廖建国贺勇标鲁国峰湖南科技大学机电工程学院湘潭411201
现代计算机 2016年20期
关键词:人眼分类器人脸

廖建国,贺勇标,鲁国峰(湖南科技大学机电工程学院,湘潭 411201)

基于人眼状态的疲劳驾驶检测系统的实现

廖建国,贺勇标,鲁国峰
(湖南科技大学机电工程学院,湘潭411201)

设计一个疲劳驾驶检测系统,该系统首先利用AdaBoost算法检测人脸区域,通过改进扫描方式减少检测时间。利用人眼几何分布特征定位人眼位置,同时利用双线性插值法矫正倾斜人脸。基于PCA算法和灰度投影法对人眼状态进行分析,最后通过计算PERCLOS值判定驾驶员是否处于疲劳状态。实验结果表明,构建的监测系统对驾驶员头部姿态和光照变化具有较好的鲁棒性,并且能准确检测驾驶员的疲劳状态。

人眼定位;AdaBoost算法;PCA;PERCLOS

0 引言

随着社会的快速发展,国民消费能力逐年提高,汽车数量的大幅增加给整个交通系统带来了更多的安全隐患。疲劳驾驶是引发交通事故的重要因素之一,据统计,20%的交通事故与疲劳驾驶有关[1]。因此,如果能及时对疲劳驾驶进行预警措施,对于交通安全来讲具有重要意义。

目前,驾驶员疲劳状态检测方法主要分为三类[2]:一是基于驾驶员生理信号的检测[3],该检测方法主要是通过检测脑电图、心电图、肌电图等一系列生理特征的变化作为检测标准;二是基于驾驶员的操作行为和车辆状态的检测[4],此类方法是利用驾驶员对方向盘操作时出现的一些特性,以及汽车在一定时间内的行驶轨迹来判断驾驶员是否处于疲劳状态;三是基于驾驶员面部器官行为特征的检测[5],这种方法主要是通过眼睛、嘴巴、鼻子等面部器官的一些行为特征和几何特征来判断疲劳状态。

通过检测人眼睁开幅度、眨眼频率和闭眼时间等眼部状态信息,可以反映出驾驶员的疲劳状况[6]。本文所采用的疲劳检测方法是基于驾驶员的人眼状态的检测,整个检测系统的实现主要有四大流程:人脸检测、人眼检测、状态识别和疲劳检测。下面对系统各流程分别进行阐述。

1 基于AdaBoost算法的人脸检测

1.1人脸图像的预处理

经摄像头拍摄的视频帧图像是不能直接用来进行人脸的检测的,图像在传输过程中会受到各种噪声的污染,因此,需要对图像进行预处理,包括滤波降噪处理和光照补偿处理。图1是驾驶员在不同光照条件下其灰度图像经过光照补偿处理后的对比图。

1.2人脸检测

在定位人眼之前,采用基于Haar特征的AdaBoost学习算法先检测出人脸位置[7]。Papageorgiou等最初是将Haar特征用于表示人脸[8]。后来,Viola和Jones在此基础上提出了三类不同类型的Haar特征,分别为边缘特征、线性特征、中心特征和对角线特征,并将这些特征组合成特征模板。特征模板的特征值是白色区域的像素同黑色区域像素的差值,特征的选取和特征值的计算是影响AdaBoost检测速度的两个重要因素。

AdaBoost算法是一种自适应迭代算法,基本思想就是通过训练多个弱分类器,并将分类器组合成强分类器。最初,训练集中每个样本所对应的权重大小是一样的,将样本排好序进行分类,找分类误差最小的区间,然后判断此时的样本是否有错分情况,如果有样本分类错误,则将加大样本权值,若样本分类正确就降低它的权重。于是,被错误分类的样本就更加凸显,从而又形成一个新的样本,也就形成第一个弱分类器h1(x)。然后再把这个新形成的弱分类器再一次分类,得到弱分类器h2(x),就这样经过T次迭代循环训练,最后可以训练得到T个弱分类器,然后再将这T个弱分类器叠加起来组合成强分类器,用于最后的人脸检测。

图1 光照处理图

给定n个训练样本集:S={(x1,y1),…,(xn,yn)},正负样本的类别标签用0和l表示,即yi={0,1},假如训练集里共有m个正样本,l个负样本,则m+l=n。

步骤1:首先将正负样本的概率分布初始化,即:

步骤2:For t=1,2,...,T(T为训练次数);

(1)权重归一化

(2)hj是每个特征j对应的弱分类器,计算此时弱分类器权重的分类误差,即:

(3)假如当前弱分类器ht的分类误差εt是最小误差,则把此分类器放入强分类器的组合中;

其中,若xi的分类正确,即ht(xi)=yi时,ei=0,否则ei=1;

步骤3:输出强分类器

图2是部分人脸检测结果图,红色方框以内即为驾驶员在不同状态下检测到的人脸图像。

图2 人脸定位图

2 人眼定位

2.1基于质心点精确定位眼睛

定位好人脸之后,将人脸区域裁剪出来。根据三庭五眼原则,人眼在脸部的上半部分,再裁剪出人脸的上半部分。图像二值化后,首先采用形态学处理将图像中小面积连通域和部分噪点全部删除。

为了统计连通域的数量,首先要标记处理后的图像中的连通域,本文采用八邻域标记算法。标记好图像中每个连通域后,利用几何矩算法求取每个连通域的质心点,式(6)的高阶具有旋转不变性,可以用来实现图像的比较分类,它的低阶M00,M01,M10可以用来计算质心,零阶几何矩M00代表一幅图像的总亮度,对于剪影图像,M00表示目标区域的几何面积,一阶几何矩M10,M01是图像关于x轴和y轴的亮度矩。

在二维图像中建立坐标系,设定质心坐标为(x,y),则,x=M10/M00,y=M01/M00。

求取每个连通域的质心后,并标记每个质心点的坐标的位置,然后基于眼睛的几何分布特征确定最终的眼睛质心点坐标。图3是部分人眼定位图。

图3 人眼定位图

2.2基于双线性插值法矫正人脸

考虑到驾驶员在驾驶汽车过程中头部会有不同角度的摆动,这样会造成拍摄到的图像眼睛处于倾斜状态,因此需要先对人脸进行矫正。本文采用双线性插值法对人脸图像进行矫正,双线性插值法的核心思想是在两个方向分别进行一次线性插值。图4是部分人脸矫正结果图。

图4 人脸矫正图

3 人眼状态识别和疲劳分析

3.1基于PCA算法和灰度投影法的人眼状态分析

定位好眼睛之后,需要对人眼的状态进行识别,考虑到不同驾驶员眼睛的差异性,为了能够精准定位不同个体的眼睛状态,本文采用的是一种针对不同个体先计算出该个体完全睁眼和完全闭眼时,其灰度化后眼睛区域的最大灰度值h1和最小灰度值h2,其中h1和h2采用的是PCA算法,该算法是一种主成分析法[9],主要是通过对大量样本进行降维以达到分类的目的。最后再通过灰度投影法计算后续眼睛状态的灰度变化值h,并以下式来判断眼睛的状态:

其中,f值就是眼睛状态判别值。

3.2基于PERCLOS和人眼开度的疲劳状态判别

PERCLOS(percentage of eyelid closure over the pupil over time)是指眼睛闭合时间占某一特定时间的百分率。PERCLOS已经被证明是一种有效的疲劳检测手段[10]。PERCLOS原理的判断标准有下面三种:

①P70:当眼皮遮蔽瞳孔的面积超过70%时,认为此时眼睛处于闭眼状态,并计算在特定时间内闭眼时间所占的时间比;

②P80:眼皮遮蔽瞳孔的面积超过80%时,认为此时眼睛处于闭眼状态,并计算在特定时间内闭眼时间所占的时间比;

③EM:眼皮遮蔽瞳孔的面积超过50%时,认为此时眼睛处于闭眼状态,并计算在特定时间内闭眼时间所占的时间比。

美国高速公路安全管理局(NHTSA)通过相关实验证明了P80标准跟疲劳驾驶程度的判断相关性最好。因此,本文采用P80标准作为判断标准。

为了方便统计,将时间比转化为特定时间内闭眼帧数同总帧数的比值,则PERCLOS的值P可以用下式表示,即:其中,n为特定时间内检测到眼睛闭合状态的帧数,N为特定时间内眼睛图像的总帧数。

实验中为了测试实际驾驶环境中驾驶员在不同状态下眼睛开度变化情况,分别拍摄多段不同个体疲劳状态下的视频图像和同数量的多段不同个体非疲劳状态下的视频图像,每段视频的时间长度为30秒,视频帧率为16帧每秒,按照3.1中的方法计算每段视频的人眼开度分布情况,如图5所示。

从图5中可以看出,不同的个体由于眼睛大小不一样,正常睁眼的程度也不一样,所以,不同的个体其人眼开度情况都会有一定的差异,但并不影响疲劳的判断,因此,可以通过设定一定的阈值来判定当前人眼处于何种状态。

3.3PERCLOS值的计算和实验分析

通过拍摄实验室里5个不同对象在不同光照条件下模拟不同状态的视频帧图像,以实时视频每60秒为一个时间统计段,利用本文方法判断每帧图像的眼睛状态,然后利用公式(9)求PERCLOS值,最后分别统计疲劳和非疲劳状态下的PERCLOS值,如表所示。

图5 部分不同状态人眼开度曲线图

表1 各对象非疲劳状态下的PERCLOS值

表2 各对象疲劳状态下的PERCLOS值

从表1和表2中可以看出,同种状态不同条件下的PERCLOS值都非常接近,不同状态下的差值都在一定范围内波动,为了更清楚地对比两种状态PERCLOS值的分布情况,再采集5个新的不同对象的视频图像,将实验中两种状态下的PERCLOS值在坐标中表示,如图6所示。

根据图6中曲线分布,求得非疲劳状态下的波峰的平均值,以及疲劳状态下的波谷的平均值,然后再对两种状态下的平均值再次平均,得到的值作为最终的疲劳判断阈值P,若求得的PERCLOS值大于P则判定驾驶员处于疲劳状态,同时疲劳驾驶系统做出预警通知,提醒驾驶员安全驾驶,寻找近距离安全服务区进行休息。图7是整个检测系统的软件界面图。

图6 不同状态下PERCLOS值分布图

图7 疲劳检测系统界面

4 结语

本文基于人眼状态构建了一套驾驶员疲劳检测系统,系统首先采用基于Haar特征的AdaBoost算法检测出人脸;其次利用质心点精确定位人眼区域,并利用双线性插值法矫正倾斜图像,降低了直接提取倾斜图像人眼的难度;然后采用PCA降维法和灰度投影法对眼睛状态的识别进行分析。最后通过求取PERCLOS值作为疲劳检测系统的判别标准,整个检测系统能满足实时检测驾驶员疲劳状态的要求,并且光照鲁棒性较好。

[1]李都厚,刘群,袁伟,等.疲劳驾驶与交通事故关系.交通运输工程学报,2010;10(2)∶104-110.

[2]姜兆普,许勇,赵检群.基于眼部特征的疲劳检测算法.计算机系统应用,2014;23(8)∶91-96.

[3]彭军强,吴平东,殷罡.疲劳驾驶的脑电特性探索.北京理工大学学报,2007;27(7)∶585-589.

[4]屈肖蕾.基于转向操作和车辆状态的疲劳驾驶检测方法研究.北京∶清华大学,2012.

[5]袁健.基于面部特征的驾驶员疲劳检测.杭州∶浙江大学,2009.

[6]朱真真,王伟,段晓东,等.基于Kinect的人脸眼部状态实时检测.大连民族学院学报,2015;17(1)∶81-84.

[7]徐信.基于AdaBoost人脸检测算法的研究及实现.太原∶太原理工大学,2015.

[8]Constantine P.Papageorgiou,Michael Oren,Tomaso Poggio.A General Framework for Object Deteetion.Proeeedings of International Conference on Computer Vision,1998,1:20-25.

[9]黄泉龙.基于PCA的人脸识别研究.西安∶西安电子科技大学,2012.

[10]曹菊英.基于眼睛跟踪技术的司机疲劳检测方法的研究.长沙:中南大学,2007.

Eye Location;AdaBoost Algorithm;PCA;PERCLOS

Implement of Fatigue Driving Detection System Based on Eyes'State

LIAO Jian-guo,HE Yong-biao,LU Guo-feng
(College of Mechanical Electronical and Engineering,Hunan University of Science and Technology,Xiangtan411201)

Designs a fatigue driving detection system,this system uses the AdaBoost algorithm to detect the human face,and reduces the detection time by improving scanning mode.Employs geometrical features of eyes to detect eyes,and uses bilinear interpolation to correct inclined faces.It is based on the PCA algorithm and gray projection method to analyze the state of human eyes.Determines whether the driver is in a state of fatigue by calculating the value of PERCLOS.The experiment indicates that the monitoring system of constructed for the pilot head tilt and illumination changes have good robustness and it can achieve the requirement of real-time detection to the state of drivers' fatigue.

1007-1423(2016)20-0064-05

10.3969/j.issn.1007-1423.2016.20.013

廖建国(1990-),男,湖南耒阳人,硕士研究生,研究方向为模式识别、图像处理

贺勇标(1991-),男,湖南娄底人,硕士研究生,研究方向为机器视觉、图像处理

鲁国峰(1989-),男,安徽合肥人,硕士研究生,研究方向为模式识别、图像处理

2016-04-25

2016-07-11

猜你喜欢
人眼分类器人脸
田志强
学贯中西(6):阐述ML分类器的工作流程
有特点的人脸
一起学画人脸
基于朴素Bayes组合的简易集成分类器①
基于特征选择的SVM选择性集成学习方法
三国漫——人脸解锁
基于差异性测度的遥感自适应分类器选择
闪瞎人眼的,还有唇
看人,星光璀璨缭人眼