美章网 资料文库 多参数的驾驶员疲劳检测范文

多参数的驾驶员疲劳检测范文

本站小编为你精心准备了多参数的驾驶员疲劳检测参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。

多参数的驾驶员疲劳检测

《无线通信技术杂志》2014年第二期

1系统的实现

本系统共分为两个部分:人眼状态检测系统和心跳速率检测系统,图1为系统流程图。实时的心跳数据和面部图像同时输入计算机,通过不同的处理方法,将演讲状态和心跳速率生成向量,然后利用已训练好的分类器进行疲劳检测,如果疲劳则发出警报。

1.1单一心跳检测子系统的实现在心跳检测子系统中,首先采用由Zephyr公司开发的心跳检测设备获取实时心跳数据[6]。该设备佩戴于胸口,可通过蓝牙与智能手机或计算机通信。该设备每秒发送60个字节的十六进制数据,其中包括心跳速率(第13个字节),海拔,速度,距离等实时数据信息[6]。通过不同实验者佩戴该设备,分别记录其清醒和疲劳时的心跳数据。通过计算清醒时心跳速率的均值μ和标准差σ,得出心跳速率大致服从高斯分布,且多分布在(μ-3σ,μ+3σ)区间,如图2所示。因此在判断驾驶员是否疲劳时,可先计算前30秒清醒状态下心跳速率的均值和标准差。参考"3σ"原则[7],当平均值与当前心跳速率的差值大于标准差的三倍时,则认为该驾驶员处于疲劳状态,系统发出警报。

1.2单一眼睛状态检测子系统的实现在眼睛状态检测子系统中,主要分为三部分:人脸检测,人眼检测和疲劳检测算法。本系统采用OpenCV中已训练好的级联分类器检测正面人脸区域,然后基于人眼在脸部的分布特征进行人眼区域的粗提取,最后改进了现有的PER-CLOS(PercentageofEyelidClosureoverthePupiloverTime)疲劳检测算法,大大提高了系统的实时性。

1.2.1人脸检测OpenCV是指开源的计算机视觉库,可以运行在Linux,Windows和MacOS操作系统上。它轻量级且高效,由一系列C函数和少量C++类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法[8]。本系统使用OpenCV中已训练好的正面人脸检测分类器[9],大致分为3步:载入分类器,函数cv-LoadHaarClassifierCascade是用于从OpenCV的文件或分类数据库载入级联分类器;使用分类器,函数cvHaarDetectObjects用于在图像中检测出目标;释放分类器,函数cvReleaseHaarClassifierCascade用于释放分类器的动态内存。图3所示为实验结果,红色方框内即为选定的人脸区域,当人脸发生轻微旋转时,亦可准确检测出人脸区域。

1.2.2人眼区域的粗提取上一节中已实现了人脸区域的精确提取,因此可采用算法简单的人眼区域粗提取即可满足需求。分析现有的人眼检测算法,发现这些算法已能达到很高的精确度,但由于算法的复杂程度较高,实时性方面有时无法满足要求。在美术界,画人脸时最基本的原则是"三庭五眼",如图4所示[10]。根据这一原则,在已确定的人图4"三庭五眼"结构脸矩形框内,可画出眼睛区域的矩形框。在纵向方向,设长度为l,则选取1/4l到2/4l的区域。在横向方向,设宽度为d,则选取1/6d到5/6d的区域。实验结果如图5所示。图5眼睛区域的提取

1.2.3疲劳检测算法PERCLOS(PercentageofEyelidClosureoverthePupiloverTime)是指眼睛闭合时间所占的百分比。美国联邦公路管理局于1999年4月召集多所大学的专家学者,讨论PERCLOS的有效性,认为PER-CLOS是目前最有效的车载、实时、非接触的疲劳评估方法。PERCLOS通常有P70,P80,EM三种测量方式:P70:指眼睑遮住瞳孔的面积超过70%就认为眼睛闭合,统计在一定时间内眼睛闭合时所占的时间比例。P80:指眼睑遮住瞳孔的面积超过80%就认为眼睛闭合,统计在一定时间内眼睛闭合时所占的时间比例。EM:指眼睑遮住瞳孔的面积超过50%就认为眼睛闭合,统计在一定时间内眼睛闭合时所占的时间比例。通常计算30秒或60秒内眼睛闭合时所占的时间比例,由此可见,系统的延迟较大。然而交通事故发生在瞬间,疲劳检测系统的实时性直接关系到驾驶员的生命安全。为了提高系统的实时性,改进了已有的PER-CLOS算法。首先需要定义眼睛闭合状态。由于受到光线等外界条件的影响,很难获得眼睛的精确轮廓。所以将得到的眼睛部分的图像二值化,计算前100帧中黑色像素点的平均值。如果当前帧中黑色像素的数目小于平均值的Z倍,则认为眼睛处于闭合状态。分别模拟了没有佩戴眼镜和配戴眼镜两种情况各50次,实验结果表明Z=0.7时,系统性能最优,ROC曲线如图6所示。图6不同Z值下的ROC曲线然后定义疲劳状态,需要考虑两种情况,即闭眼时间过长和眨眼频率过低。按照上述定义的眼睛闭合规则,如式(1)所示。计算机每秒能采集30帧图像,且正常眨眼时间大约为0.2s,所以当30帧内眼睛闭合的帧数大于6帧(30帧/秒*0.2秒=6帧),即p>0.2时,驾驶员处于疲劳状态驾驶员疲劳时,会出现目光呆滞,眨眼频率过低的现象。清醒时大约每5秒眨眼一次,当眼睛睁开的帧数大于1500帧时,认为同样处于疲劳状态。

1.3融合系统的实现由于两种检测方法均存在一定缺点,本文结合两种方法进行疲劳检测。首先,获取大量眼睛状态数据和心跳速率数据,即每一秒内眼睛闭合的帧数和同一秒时的心跳速率,生成三维向量V=(眼睛闭合的帧数,心跳速率,疲劳状态)。采用十折交叉检验的方法,将获得的训练数据随机等分为10份,其中9份为训练集,另外一份为验证集。十折交叉检验的过程实际上是把实验重复做10次,每次实验都从10个部分中选择一个不同的部分作为测试数据(保证10个部分的数据都分别做过测试数据),剩下的9个当作训练数据进行实验。采用其中9份画出不同K值下的K近邻分类器的分类边界,利用第10份数据进行分类器的验证与检测,找到使错误率最低的K值。然后当输入新的实时的数据时,利用K近邻法进行疲劳判别。

2实验结果

在实验阶段,分别模拟了两个单一子系统的准确率,然后验证了融合系统的优越性。

2.1无眼镜的实验结果当测试者没有佩戴眼镜时,模拟结果如图7所示。左侧图像为眼部区域,右侧图像为二值化后的眼睛区域。分别模拟清醒状态和疲劳状态(包括长时间闭眼和长时间不眨眼)各25次,实验结果如表1所示。

2.2佩戴眼镜的实验结果由于存在驾驶员佩戴眼镜的情况,需要验证戴眼镜时系统的可行性。模拟结果如图8所示,左侧图像为眼部区域,右侧图像为二值化后的眼部区域。同样模拟了清醒状态和疲劳状态(包括长时间闭眼和长时间不眨眼)各25次,实验结果如表2所示。由于佩戴眼镜的影响,准确率略低于无眼镜的情况。

2.3心跳检测子系统的实验结果由于模拟心跳具有一定的难度,所以记录了测试者清醒和疲劳状态各10次实验结果,如表3所示。此次准确率为100。由此可见,心跳检测系统的准确率虽为100%,但是延迟较大。

2.4融合系统的实验结果由上述实验结果可见,单一基于眼睛状态的疲劳检测错误率较高,单一心跳检测系统的延迟较大。从实验结果,得出当K=23,25,27时,准确率最高,如图9所示。由此可见,融合两个参数的检测系统准确率大大提高,且具有较好的实时性。

3结语

本文研究了一种融合了眼睛状态和心跳速率检测的驾驶员疲劳检测系统,具有良好的准确性:(1)在人脸检测之前,采用了直方图均衡化,高斯滤波器滤波和光照补偿的预处理手段,降低了噪声和光照对系统的影响;(2)在系统设计的过程中,采用MATLAB验证不同算法的优劣,最终选择了适合的人脸检测方法和人眼定位算法,为准确的疲劳检测打下了基础;(3)采用了已训练好的OpenCV的检测正面人脸的级联分类器,快速又准确地找到人脸区域;(4)结合眼睛状态和心跳速率检测两种不同原理的检测方法,克服了准确率低和实时性差的缺点。该系统只在实验环境下模拟了驾驶员的疲劳状态,将来要应用于实际驾驶,还需要设计硬件电路并在道路上测试。

作者:刘金金林庆单位:江苏大学计算机科学与通信工程学院