机车司机疲劳驾驶监测
2011-07-03李庆梅钟燕科
李庆梅,钟燕科
(湖南铁道职业技术学院,株洲 412001)
0 引言
铁路运输涉及大量旅客的人身和财产安全,机车驾驶员在长时间、连续地工作情况下,容易出现疲劳驾驶现象,从而为铁路安全作业埋下安全隐患。因此,对机车驾驶员疲劳驾驶进行及时监测和预警,对提高铁路行车安全具有重要意义。驾驶员大约90% 的信息依靠视觉得到的,很多研究机构都采用了对眼睛生理特征的检测来判断驾驶员的疲劳状况。在疲劳引发的事故之前,驾驶员眨眼行为提前发生变化,眨眼频率会增加,眼皮覆盖眼睛的百分比也会增加。因此,通过测量眼睛闭合、眼睛运动和眼睛生理特征来监视驾驶疲劳是一个适宜的方法。
根据PERCLOS原理,在单位时间内,驾驶员的眼睛处于闭合状态累计超过一定比例,则可判断驾驶员处于疲劳驾驶状态。本文对图像进行预处理之后,利用Ostu提出的最大类间方差法,将人脸分割出来;在此基础上,对图像进行垂直方向和水平方向灰度积分,获取人眼位置;再将人眼区域像素视为特征向量,输入到SVM分类器,实现对驾驶员眼睛睁、闭状态判断;最后依据PERCLOS对驾驶员驾驶状态作出判断。由于SVM在处理非线性、小样本问题方面具有其独特优势,因此本文提出的疲劳驾驶监测方法,在实验中表现出较高的准确度,取得了预期效果。
1 眼睛区域定位
1.1 图像预处理
图像在实际运用中,由于自然条件或人为等因素,难免存在各种各样的噪声,这些噪声可能在传输中混入,也可能是在量化处理过程中产生。它们会对图像的定位、识别带来很大影响,为准确提取驾驶员眼睛位置,必须先对图像进行消噪处理。中值滤波器是一种常用的非线性平滑滤波器,它的输出像素值是由领域像素中间值所决定,对极限像素值不是特别敏感,因此中值滤波器产生较少模糊,适合于消除图像中的孤立噪声点。本文采用默认3×3滤波器窗口大小,对噪声进行消除处理。此外,图像是在不同自然条件下采集的,有些图像可能亮度偏低,有些可能亮度偏高,这些都会导致图像清晰度不够,不利于后续处理。利用直方图均化技术,使图像灰度分布均衡化,削弱了不同光照条件对图像的影响,提高了图像的清晰度。图像预处理前后对比如图1所示图像预处理之前:驾驶员衣领存在许多和人脸肤色相差无几的白色碎点,不利于后续人脸分割,可视为噪声。中值滤波后,消除了大部分白色碎点。
1.2 人脸区域分割
将人脸从周围背景图像中分割出来,一般采用阀值分割法。它充分利用目标物和背景在灰度特性上的差异,把图像视为两类区域的组合。通过设立一个合适的灰度阀值,可以对每个象素点是否属于目标物作出判断,从而产生对应的二值图像。图像经过分割后,数据大大被压缩,减小了后续计算量。
图 1 图像的预处理
C0和C1的类的方差可由下式得到:
类间方差为:
类内方差为:
图2 人脸区域分割
阀值分割图像原理描述如下:
Ostu提出的最大类间方差法算法简单、方便可行。
设原始图像灰度级为L,灰度级为I的象素点为ni,则图像的全部像素为:
按灰度级用阀值t划分为两类:C0=(0, 1, 2,…,t) 和 C1= (t+1, t+2, …, t-1) 。C0和 C1类的类出现概率以及均值层分别由下列各式给出:
总体方差是这两者之和。对图像进行分割后,提取出驾驶员人脸区域,如图2所示:由于驾驶员衬衣衣领部分的灰度值恰好与人脸灰度值范围重合,因此,这部分图像错误划分到人脸区域了。该部分图像具有对称性,虽然会对图像积分投影极值的大小带来影响,却不会影响积分投影取极值时所对应的y坐标和横坐标,因此,最终不影响人眼区域的提取操作。
1.3 灰度积分求取人眼位置
将得到的驾驶员人脸图像,进行水平积分投影 和垂直积分投影 ,灰度积分投影算法如下:
积分投影后得到图3。根据人脸特征,通过分析水平积分图,可以获知人眼的y坐标范围。首先,人眼是位于人脸的上半部分,其次,人眼区域灰度值比较小,对应的水平积分投影应该是整个水平积分投影图的一个波谷;结合上述因素考虑,投影图的第一个波谷应该是眼睛区域的y坐标范围,即:[60 72]。此外,由于人眼、眉毛、嘴巴、鼻子、下巴等细节区域的横坐标,都是位于两眼的横坐标范围之内,反映到垂直积分投影图上,就是在眼睛横坐标范围内存在许多黑色区域,因此积分投影图波动较多,其他范围基本上没有小块黑色区域,基本上没有波动。从图上可知:眼睛的横坐标范围是:[40 80]。
根据求得的两个坐标范围,将人眼裁减出来,如图3(c)所示。
图 3 提取人眼位置
2 眼睛状态识别
2.1 支持向量机原理
支持向量机由Vaplik1992年提出[1],现为国际机器学习的前沿热点。其核心思想是建立一个决策超平面,使正例、反例之间的隔离边缘最大化。
设存在两个超平面为:
H1: ω .x+b=1 和 H2: ω .x+b =-1,则超平面 H1到原点的距离为|1-b|/||ω||,超平面H2到原点的距离为|-1-b|/||ω||。因此,两个超平面之间的距离是2/||ω||,它被称为分类间隔,因此,求间隔最大变为求||ω||最小的问题:
引入正松弛因子ζi和惩罚参数c,将约束条件修改为:yi=[(wxi)-b]-1+ ζi
目标函数改为:
选取合适的核函数k(xi, xj),把非线性问题转化为一个高维空间里的线性可分问题,然后在该高维空间中求解最优超平面。在特定高维空间中建立的分类决策函数为:
2.2 眼睛睁、闭状态识别
眼睛睁开时,从图象特征角度来分析:由于眼球既有黑色部分,又有白色部分,黑色部分的存在使得眼睛区域的灰度值较小;眼睛闭和时,眼皮完全遮住眼球,而眼皮和人脸其他部分的皮肤是一致的,因此,相对于睁开时来说,眼睛区域的灰度值要大一些。SVM利用眼睛状态不同时的这个特征区别,可以对眼睛状态作出正确判断。
如果将眼睛区域中的每个象素点都输入到SVM分类器,从理论上来说,是可以对眼睛状态作出正确判断的。实际上,由于图像像素点很多,SVM分类器计算任务繁重,严重影响分类器的分类速度。为进一步压缩数据,本文采用小波算法先对提取的眼睛图像进行小波分解,然后提取各层的近似分量和细节分量,并把各分量的能量值求出。那么,将各分量的能量值依次排列,即可得到一个蕴含该图像信息的特征向量。将图像特征向量输入到SVM分类器,从而可以实现对眼睛睁、闭状态的识别。
1)利用waverec2函数对眼睛区域图像进行2层小波分解,分解后各层图像如图4所示。设眼睛区域原图像是A,则分解之后存在下面关系:
LL2+LH2+LV2+LD2+LH1+LV1+LD1=A
因此,原图像的特征全部蕴涵在LL2、LH2、LV2、LD2、LH1、LV1、LD1 7个参量之中,LL1和LL2作为图像的近视分量,大致保持了原图像的特征;LD2、LD1作为细节参量,反映原图象高频细节特征;LH2、LV2、LH1、LV1反映原图像水平和垂直方向的特征。当驾驶员眼睛处于睁开和闭合两个不同状态时,7个参量对应地有两种不同取值;通过分析这7个参量,可以判断眼睛处于何种状态。
2)提取各层的近似分量和细节分量
采用appcoef2()函数可以提取图象小波分解的各层近似分量;采用deccoef2()函数可提取图像小波分解的各层细节分量、水平分量和垂直分量。
图 4 眼睛区域图像的2层小波分解
3)计算求出上步获得的各分量的能量值,得到图像特征向量
设小波分解后,某一分量为S,是一个N×M二维数据,其能量为E:
按照(14)式计算方法,求出7个图像分量的能量值并按照一定顺序排列,例如:
即可得到故障特征向量。
4)设置好SVM分类器参数,输入图像特征向量,实现对驾驶员眼睛状态的识别
由于眼睛只有睁开和闭合两种状态,只需采用一对一算法建立一个支持向量机分类器。SVM参数设置为:gam赋值为10,综合考虑了模型的复杂度和数据的平滑性要求;sig2设为0.5核函数为:RBF-kernel 。最后输入图像特征向量,完成眼睛状态判别。
为验证本文采用的方法可有效地识别司机眼睛的睁、闭状态,采集20张图片(其中10张属于睁眼状态,10张属于闭合状态),经过前文所述的一系列操作,得到20个7维特征向量作为训练样本。先利用这20个训练样本训练SVM分类器,使 SVM完成“学习”,建立眼睛睁、闭两个状态的分类超平面。然后再往该20个样本中添加5%以内的随机噪声,构造新的20组数据作为测试样本。最后,将测试样本输入到SVM分类器进行眼睛状态睁、闭识别,以验证SVM能否有效地识别司机的眼睛状态。
实验结果为:识别精度100%、识别时间0.589秒。说明在20个测试样本中,SVM分类器将20个样本正确识别归类;识别所花费的时间也较少,效率较高。因此,采用SVM能快速、有效地识别司机的眼睛状态。
3 驾驶员疲劳状态判断
在完成对司机眼睛状态的识别后,利用PERCLOS原理可对司机的驾驶状态作出判断。单位时间内,眼睛闭合时间所占的百分比率被称为PERCLOS。当此比率超过一个阀值,即可认为人是处于疲劳状态。
设在T时间段内,每隔t时间间隔采集一张司机图象,共采集N张司机图像。对N张图像进行眼睛状态识别,统计眼睛处于闭合状态的图片数为M。那么依据PERCLOS原理可得:
司机眼睛闭合状态的比率为:f=M/N
当f>=8 0%时,判定驾驶员处于疲劳驾驶状态,需要给出预警信号;反之,驾驶员处于精力良好驾驶状态,不需给出预警信号。
4 实验与分析
为验证疲劳检测的效果,进行模拟实验测试。随机抽取20个人参与实验,在不同时段,对每个人共进行10次连续监测(上午3次、下午3次、晚上4次),检测结果的准确率在87.5%以上。具体数据如表1所示。实验数据表明:上、下午实验的监测真确度明显高于晚上,这是由于晚上光线相对较弱而造成的;此外,在实验中发现,如果头部位置偏移太大会影响眼睛的检测,可能导致误测。
表1 机车司机疲劳驾驶检测实验数据
5 结束语
实验数据表明:本文采用的方法能够较准确地对机车司机的驾驶状态作出监测,准确度在87.5%以上;所花费的时间较少,具有良好的实时性。此外,监测的准确度与环境光线、被测对象的坐姿等有一定关系,这是本文以后需继续深入研究的问题。
[1] 袁胜发, 褚福磊.SVM多类分类算法及其在故障诊断中的应用[J], 振动工程学报, 2004, 17(5): 420-422.
[2] 董长虹. 小拨分析工具箱原理与应用[M]. 北京: 国防工业出版社, 2004.
[3] 钟燕科. 改进的SVM用于主变流器故障诊断[J]. 机车电传动, 2010, 02.
[4] 陈特放, 钟燕科.基于小波分析和SVM的主变流器故障诊断[J]. 机车电传动, 2009, 01.