基于多疲劳信息融合的车载疲劳检测系统的研究和实现
2016-09-07李翊,陈星,严华
李 翊, 陈 星, 严 华
(1.北京大学 地球与空间科学学院,北京 100871; 2.四川省都江堰管理局,四川 都江堰 611830;3.四川大学 电子信息学院,成都 610065)
基于多疲劳信息融合的车载疲劳检测系统的研究和实现
李翊1,2, 陈星3, 严华3
(1.北京大学 地球与空间科学学院,北京100871; 2.四川省都江堰管理局,四川 都江堰611830;3.四川大学 电子信息学院,成都610065)
疲劳驾驶是目前道路交通的一个重要安全隐患,对车载疲劳驾驶系统的研发具有重要的应用价值和广阔的市场前景;目前存在的疲劳监测系统普遍存在成本高,可靠性不足,使用不够便捷等缺陷;通过在安卓平台上采用计算机视觉的途径进行开发和实现,将大大降低系统的成本和使用复杂度;通过多种疲劳特征融合的方法对疲劳状态进行综合性判断,可以有效地增加系统的准确性和可靠性;采用优化的二叉树支持向量机多分类算法能够使得特征融合的过程具有准确性和速度上的优势;在对该疲劳检测系统的相应测试中也获取了良好的实验结果。
疲劳检测;人脸识别;SVM多分类;安卓
0 引言
随着机动车的越发普及,车辆驾驶也带来了越来越多的安全隐患。现有的一些调查统计表明,疲劳驾驶往往是引发交通事故的主要诱因。设计和开发一款实时、可靠、使用便捷的疲劳驾驶监测系统具有十分重要的应用价值和广阔的市场前景。
近年来随着视频捕捉技术和图像处理技术的快速发展,基于计算机视觉的疲劳检测获得了越来越多的关注。其主要实现手段是通过扑捉人脸图像上的疲劳特征并提取相应参数作为疲劳状态判断的依据。PERCLOS[1-3]被认为是目前最有说服力的人眼疲劳特征参数,其含义是单位时间内眼睛闭合时间百分比。文献[4-9]的疲劳检测方案都主要是基于PERCLOS来实现的。
虽然基于PERCLOS的疲劳检测方法得到了业界的认可,但也存在不足,比如说遮挡物的干扰,人与人之间的个体差异也会给测量带来困难。人在疲劳状态下的行为表现是比较综合而复杂的,很难通过直接检测和建模进行评判。因此,考虑将多种疲劳特征进行结合,统一用于疲劳状态的判断成为疲劳检测领域的一个新的方向[1]。
1 人脸疲劳特征的获取
1.1人脸以及人眼的识别与跟踪
人脸和人眼检测是疲劳检测过程中最先进行的一个基础环节,是后文中疲劳特征提取的前提。考虑到具体的应用环境,不仅需要实现人脸(眼)检测的基本功能,还需要进一步地提高检测的速度以及准确性。
基于统计模型的方法是目前比较流行的方法。优点是不依赖与人脸的先验知识和参数模型,可以避免知识的不完整或不精确造成的错误;该方法主要缺点是需要大量训练样本做支撑,计算复杂度高。
采用目前较为热门的Adaboost[5]方法,Haar-like特征和MB-LBP[10-11]特征都可作为人脸特征用于Adaboost训练。相比之下Haar-like特征的级联分类器在复杂背景下变现更为稳定,MB-LBP特征的特征维数更少,并且由于是整数特征,因此训练和检测过程都相比Haar-like特征具有明显的速度优势。
考虑到在车载环境下,由于摄像头正对脸部,背景相对简单,且移动安卓设备处理速度有限,因此选择了基于MB-LBP的级联分类器用于人脸识别检测。为提高人眼检测速度,首先采用基于人脸分布的先验知识“三庭五眼”,减少人眼的搜寻区域,在粗定位结束之后,对上述方法所得到的搜寻区域用基于Haar-like特征的级联分类器进行人眼精确检索。
1.2人眼状态的获取
在众多检测眼睑闭合程度的算法中,投影函数法[1-2]是最经常使用的方法之一,由于其计算复杂度低,耗时小,可以满足视频实时处理的要求。
假设I(x,y)为(x,y)位置像素点的灰度值,则其在区间[x1,x2]和[y1,y2]内的垂直积分投影V(x)和水平积分投影H(y)的计算方式如下所示[2]:
以水平积分投影为例,其处理结果如图1所示。
图1 水平积分投影示意图
如图1所示,通过投影区域的宽度即可表示人眼睁开程度。为消除人眼与摄像头距离产生的干扰,本文并没有采用单一的宽度而是采用人眼的高宽比,高宽比为上文所获得的眼睑高度h和分类器返回矩形的宽度w的比值。示意图如图2所示。
图2 获取人眼宽高示意图
高宽比的获得方式如下:
(2)
1.3面部疲劳特征参数提取
根据1.2小节中介绍的人眼状态判定方法,可以在此基础上提取两个人眼相关的疲劳参数PERCLOS和BlinkFreq[1]。
PERCLOS(percent eyelid closure)指的是单位时间内眼睛闭合程度超过一定阈值的时间占总时间的百分比,是被公认的通过人眼来检测人类疲劳和警觉性的最有效的方法之一。在PERCLOS的标准中P80标准被普遍认为与驾驶疲劳的相关性最好。P80标准指的是以眼睛闭合80%以上程度的时间作为主要的疲劳估计参数。
BlinkFreq指的是单位时间的眨眼速率。研究表明,相对于清醒状态人在疲劳状态时的眨眼频率会变慢。根据眨眼频率的变化趋势也能在一定程度上反应人的疲劳状况。BlinkFreq的获取也是基于人眼的高宽比,当高宽比低于一定阈值(本文取0.6)是则记为闭眼状态,在出现一次或多次闭眼状态之后高宽比重新高于阈值的则记为一次眨眼。
除了人眼相关的疲劳特征,本文用到疲劳特征还包括YawnFreq,NodFreq和TurnFreq[3]。
YawnFreq[12-13]表示的打哈欠的频率,当打哈欠的频率过于频繁,则可以判断驾驶员处于疲劳状态。对哈欠的检测主要基于口型区域二值化之后黑色部分所占的比例。当黑色区域连续出现大于一定阈值则可判定处于哈欠状态。
头部动作也是反映疲劳的重要参数,其中点头频率和转头频率最具有代表性,当人处于疲困状态时总是会下意识地垂下头又抬起。该动作的频率一旦过高便可认为是进入了疲劳状态。该参数用NodFreq表示。当驾驶员清醒驾车的时候会保持较强的警觉性,尤其是在超车和变道的时候,会比较频繁的看左右后视镜。当进入疲劳状态之后警觉性下降,左右转频率下降,该参数用TurnFreq表示。对这两个参数的检测可通过对人脸中心位置的坐标偏移度来检测。
2 基于优化的支持向量机的疲劳判定
2.1基于支持向量机的疲劳信息融合策略
信息融合(information fusion)是逻辑系统将来自多个传感器的信息进行综合处理的过程,通过信息融合往往能得到更为准确可靠的结论。目前常用的信息融合方法有投票表决法、神经网络算法、遗传算法、支持向量机算法[14-16]等。
支持向量机(support vector machine, SVM)[16-17]是Cortes和Vapnik等人提出的一种基于统计学习理论的数据挖掘方法。它建立在统计学理论的VC维理论基础上,遵循风险结构最小化原则,在解决非线性、小样本和高维数等问题上具有很大的优势。
与其他决策算法相比,支持向量机算法支持小样本非线性条件,能很好的防止欠学习和过学习现象,并且在多分类问题上也已经有了较为成熟的算法体系。考虑到这些特点,将支持向量机算法应用与疲劳特征信息的融合是个不错的选择。因此,系统采用支持向量机分类判断的方法将PERCLOS、BlickFreq、YawnFreq、NodFreq和TurnFreq这几个特征参数进行有机融合,并与PERCLOS评判标准并行工作完成疲劳状态的评判分级。
2.2基于二叉树支持向量机的优化
二叉树算法是支持向量机多分类算法中分类效率最高的算法并且避免了一对多和一对一算法存在的不可分问题,此外在预测阶段所需存储的分类器个数要小于DAG,在存储空间上更有优势。在各项硬件条件都相对紧张的嵌入式环境下,由于对内存利用和处理时间都要求较高,因此二叉树算法是我们的第一选择。
然而二叉树算法也存在缺陷,由于其分类的进行是一个层层细化的过程,若在某一层出现了误差,则会影响到下一层的分类,即误差累积的问题。越上层的树节点其分类性能对整体的分类性能影响越大,因此需要将最易分割出来的类最早分割出来,这样才能最大程度的降低误差的传递[17]。从算法实现角度而言,就需要设计一种合理的类可分性测度,并以此为依据优化算法的分类顺序,否则其分类精度将落后于一对一、DAG等其他算法。
类间距离是聚类质量分析的常用指标,类相互间距离越大聚类质量越高[18]。对于两个不同类别样本集合{ai,i=1,2,…ka}和{bj,j=1,2,…kb},其类间距离的定义如下:
(3)
采用平均类间距离来衡量某一类别样本Si与其他N-1类样本集{Sj,j=1,2,3…,N-1}(i≠j)之间的类间距离,其定义为:
(4)
聚类密集性是聚类质量分析的另一个常用指标[19]。可用数据集的标准偏差来表示聚类密集性。对于集合{ai,i=1,2,...ka},其类内密集性定义如下:
(5)
通过权值将类间相聚性和类内密集性结合起来定义可分性测度,具体定义为:
(6)
其中权值d的取值一般在[-1,0]之间。
根据式可以进行可分性的排序,并根据此顺序构建多个分类器的分类架构。
2.3多信息融合疲劳判断策略的实现
基于SVM的疲劳判断的实现主要分为分类器训练和预测两个阶段。
1)分类器训练的主要流程:
采用偏二叉树作为SVM多分类架构,架构中每个二分类器训练的主要实现过程如图3所示。
图3 SVM分类器训练流程
其主要步骤如下:
(1)数据预处理。为避免样本中各特征属性数量级差异的影响,在获取训练样本和标签之后首先对样本的每一个维度进行归一化预处理,调整到[0,1]或者[-1,1]。归一化处理可以加快运算速度,并提高准确率(需视具体情况而定)。
对样本集合{ai,i=1,2,…ka}归一化预处理的方法为:
(7)
其中:maxi是样本的第i维特征属性集合的最大值,mini则为最小值。
(2)自适应生成分类顺序。根据图3提出的分类器训练流程,生成最优分类顺序;然后利用生成的最优分类顺序对分类器进行初始化,接着进行训练标签再处理,从而确立二叉树分类架构。
(3)选取核函数并优化训练参数。在单个分类器训练中,选取适用于低维小样本情况的径向基核函数(Radial Basis Function,RBF)作为训练核函数[20-21],定义如下:
(8)
其中,参数γ影响样本子空间分布的复杂程度。在修改分类器参数时,采用K折交叉验证对单个分类器进行评估,并用网格搜索法来获取最优参数组合。
(4)训练完该二叉树节点的分类器后,将分类器存储。
2)分类器预测的主要流程:
架构中每个SVM分类器对待分类样本进行预测的主要实现过程如图4所示,其中主要步骤为:
1)首先根据在训练过程中已经确定的分类架构获取当前节点所需要区分的类别,加载相应的训练好的分类器文件,并初始化分类器。
2)加载当前阶段所获取的疲劳特征数据,做归一化处理之后作为待分类样本。
3)用分类器对待测样本进行分类预测,如预测结果刚好为本分类器需要检测出的类别则直接输出结果,否则将待测样本交给二叉树架构的下一个节点分类器。
图4 SVM分类器预测流程
2.4并行的疲劳信息综合判断
虽然已经有了基于支持向量机的多信息融合判断方法,然而基于PERCLOS标准的疲劳判定方法作为目前公认的最有效的检测标准,本文并没有将其舍去,而是将两种疲劳判断方法并行使用。所采用判定机制可用图5表示。
图5 并行的疲劳信息融合策略
获取的PERCLOS参数值不仅作为SVM的一部分样本特征用于预测分类,而且也会根据PERCLOS标准进行疲劳检测。两种方法并行工作,当有任一种检测到疲劳结果都会进行疲劳预警。
3 基于安卓的工程实现
3.1系统结构与UI设计
在具体工程实现的时候,主要利用OpenCV与NDK[22]调用安卓移动设备自带的摄像头进行二次开发,如图6所示。
图6 系统主要架构
主要架构依照系统功能,可以分为主控模块、参数检测模块、判定模块、交互模块、配置模块等。主控模块负责系统的初始化和总体的功能调度,参数检测模块则负责从获取的图像帧中检测各项疲劳参数。判定模块的作用是根据所获得的疲劳特征进行疲劳状态的判定。交互模块的作用是根据所得到的疲劳状态进行警告或提醒。配置模块用于对系统的主要参数进行配置,使系统能更符合用户的使用习惯。各模块相互协作共同完成系统功能。
最后实现的系统UI如图7所示。
图7 系统UI设计图
3.2系统性能测试
测试设备:Lenovo A820,摄像头像素500万,Android版本:4.2.1,内核版本:3.4.5,OpenCV Android sdk版本:2.4.9。
测试的第一项是分别在明亮静态和昏暗晃动的两种环境下对系统获取疲劳特征EyeBlink、Yawn、TurnFace、Nod几项参数的性能做了测试。
在该测试中,每组的实际模拟测试为30次。实验结果如表1所示。
表1 疲劳特征检测效果测试
从表中可得,在光线充足的条件下,各参数的检测率和误检率基本还能达到要求,当光线条件不良的时候,普遍都会受到影响,其中与人眼相关的参数受影响最明显。
测试的第二项是对具体的疲劳等级进行分类,首先通过PVT评定,然后分别在两种外部环境下对两种疲劳检测模式进行测定。正常状态和轻度疲劳进行了30组测试,严重疲劳进行了20组测试,结果如下。
表2 系统检测效果测试(检测率)
从表中数据可以得知,基于PerclosP80标准的判断模式对严重疲劳状态和轻度疲劳状态的区分并不理想,并且受光线和环境影响较大。基于SVM信息融合模式对疲劳程度的划分更加准确,并且受环境影响相对要小,检测更稳定。
[1] 李玲玲. 基于多视觉信息融合的驾驶员疲劳检测方法研究与实现[D]. 北京:北京工业大学, 2010.
[2] 赵李坤. 基于人脸特征识别的驾驶员疲劳检测方法研究[D]. 长沙:中南大学, 2013.
[3] 李志春. 驾驶员疲劳状态检测技术研究与工程实现[D]. 镇江:江苏大学, 2009.
[4] Mao M, Du L. Research on drive fatigue detection using wavelet transform[J]. IEEE International Conference on Vehicular Electronics and Safety, 2007:1-4.
[5] 王奕直, 周凌霄, 孔万增. 基于Adaboost的疲劳驾驶眨眼检测[J]. 杭州电子科技大学学报, 2013(4): 35-38.
[6] 李强. 基于PERCLOS的列车司机驾驶疲劳检测研究[D]. 北京:北京交通大学, 2014.
[7] 文岐伟. 基于疲劳检测和运动目标检测与识别的预警系统[D]. 广州:华南理工大学, 2013.
[8] 夏阿南. 基于人眼动态特性的驾驶疲劳检测方法研究[D]. 大连:大连海事大学, 2014.
[9] 姜兆普, 许勇, 赵检群. 基于眼部特征的疲劳检测算法[J]. 计算机系统应用, 2014(8): 90-9.
[10] 文迪, 何智翔, 丁晓青, 等. 基于LBP和CCS-AdaBoost的多视角人脸检测[J]. 浙江大学学报:工学版,2013(4): 622-629.
[11] 孙建维. 基于LBP的人脸识别[D]. 西安:西安电子科技大学, 2013.
[12] 邬敏杰, 穆平安, 张彩艳. 基于眼睛和嘴巴状态的驾驶员疲劳检测算法[J]. 计算机应用与软件, 2013(03): 25-27.
[13] Mandalapu Saradadevi P B. Driver Fatigue Detection Using Mouth and Yawning Analysis[J]. International Journal of Computer Science & Network Security, 2008, (6):183-188.
[14] 毕明伟. 疲劳驾驶检测系统设计与开发[D]. 成都:电子科技大学, 2013.
[15] 刘宏, 李锦涛, 苗军. 多方法融合来解决人脸检测中的光照补偿[J]. 系统仿真学报, 2001(S2): 486-489.
[16] 胡国胜, 钱玲, 张国红. 支持向量机的多分类算法[J]. 系统工程与电子技术, 2006(1): 127-132.
[17] 赵海洋, 徐敏强, 王金东. 改进二叉树支持向量机及其故障诊断方法研究[J]. 振动工程学报, 2013, 26(5): 764-770.
[18] 杨燕, 靳蕃, Mohamed K. 聚类有效性评价综述[J]. 计算机应用研究, 2008, 25(6): 1630-163.
[19] 宋媛. 聚类分析中确定最佳聚类数的若干问题研究[D]. 延吉:延边大学,2013.
[20] 奉国和. SVM分类核函数及参数选择比较[J]. 计算机工程与应用, 2011, 47(3):123-128.
[21] Shalev-Shwartz S, Srebro N. SVM optimization: Inverse dependence on training set size[J]. International Conference on Machine Learning, 2008,11(2):112-117.
[22] 王赞超. 基于Android平台的视觉手势识别研究[D]. 西安:西安电子科技大学, 2013.
Research and Implement of Driver Fatigue Detection Based on Multi-information Fusion
Li Yi1,2, Chen Xing3,Yan Hua3
(1.School of Earth and Space Sciences, Peking University, Beijing100871,China; 2.Dujiangyan Bureau of Sichuan Province, Dujiangyan611830,China; 3.School of Electronics and Information Engineering,Sichuan University, Chengdu610065,China)
Currently, the driver fatigue is the great concern of road transportation safety. The research for fatigue driving detection is extremely practical and has a promising market future. Most of the existing fatigue detection system have the defect of high cost, lacking of reliability and inconvenient. The computer vision on Android platform is used for implementation, which will greatly reduce the cost and complexity. The fatigue detection mechanism based on multi-information fusion is adopted, which enhances the accuracy and robustness of the system. The optimized BT-SVM is used which can provide the advantage on the speed and accuracy. Good experimental results are obtained on related tests of the system.
fatigue detection; face detection; SVM multi-classifier; android
2015-10-07;
2015-11-20。
李翊(1974-),男,重庆人,北京大学博士后,高级工程师,硕士生导师,主要从事计算机应用和水资源管理方面的研究。
1671-4598(2016)01-0016-04
10.16526/j.cnki.11-4762/tp.2016.01.005
TP391.41
A