APP下载

驾驶员疲劳状态检测方法研究

2018-06-13张雯頩

吉林大学学报(信息科学版) 2018年3期
关键词:肤色人脸分类器

张雯頩, 康 冰

(1. 吉林省科学技术协会学会服务中心, 长春 130022; 2. 吉林大学 通信工程学院, 长春 130022)

0 引 言

目前我国已经成为世界汽车制造大国, 车辆的不断增加以及基础设施日趋完善, 给人们的出行带来了极大的方便, 但也出现了一系列的负面问题, 比如交通事故和大气污染等。以2002年统计数据为例, 在各类事故中, 交通事故死亡人数所占比例为78.5%, 已成为各种事故中的第一杀手。其中驾驶员疲劳造成的交通事故占20%, 占特大交通事故的40%以上[1-3]。

引发交通事故的一个主要原因是疲劳驾驶。驾驶员如果在疲劳状态下行车, 不仅对自己的生命安全造成威胁, 而且对其他驾驶员及车辆也可能造成不堪设想的后果。因为交通事故并不是在驾驶员刚一产生疲劳就出现, 所以完全可考虑在驾驶员刚刚出现疲劳状态时就通过一种预警装置提醒驾驶员, 这样可使驾驶员有意识采取相应的措施, 防患于未然。数据表明, 在交通事故发生前, 如果司机的反应比疲劳时快0.5 s, 则60%的事故在很大程度上可以避免[4]。

笔者采用Adaboost算法检测人脸并定位人眼后, 通过疲劳特征提取和疲劳状态判断等环节, 提高判断算法的准确性和运算效率, 最终设计并实现基于视频图像的驾驶员疲劳状态检测系统。

1 图像预处理与人脸检测

在人脸检测和疲劳判断之前, 对摄像头捕捉到的图像进行预处理[5,6]。首先将摄像头采集到的RGB(Red Green Blue)图像转换成色彩空间YCrCb, 然后取出重点处理的单通道图像, 对其进行高斯滤波和图像增强, 并对标定区域进行二值化处理, 在此二值化图像的基础上进行中值滤波以及开运算、 闭运算的数字形态学滤波。通过上述处理后, 分割出眼睛区域并提取疲劳参数进行疲劳判断。

在驾驶室环境下判断驾驶员是否疲劳驾驶, 首先需从复杂环境下快速准确识别人脸[7-10]。笔者在Haar特征值的计算中引入积分图概念[11], 记ii(x,y)为点(x,y)在对应的积分图中的值,ii(x,y)表示原图像上点(x,y)的左上部分的像素和, 即

(1)

其中i(x′,y′)表示原图像中的像素点(x′,y′)。若定义s(x,y)为点(x,0)和(x,y)点组成的线段上的点的像素值之和, 即

(2)

则可用

s(x,y)=s(x,y-1)+i(x,y),ii(x,y)=ii(x-1,y)+s(x,y)

(3)

递推公式计算ii(x,y), 则只需遍历原图像一次, 通过递推关系就可将其积分图分解, 从而避免不必要的重复计算。

如需计算任意区域的像素和, 同样有快速计算方法。如图1所示, 若需要计算D区域的像素和, 则可按照

P(D)=P(A+B+C+D)-P(A+B)-P(A+C)+P(A)

(4)

计算。

按照积分图的定义,ii(x,y)即为点(x,y)左上部分的面积, 则有

图1 任意区域像素和计算Fig.1 Pixel and calculation in any region

P(D)=ii(4)-ii(3)-ii(2)+ii(1)

(5)

故可在常数时间计算出D区域的像素和, 从而计算出某图像区域的Haar特征值。一般而言, 为每个Haar构造的弱分类器通过确定一个合理的优化阈值实现, 该阈值使得用该特征进行分类时错误率足够小[11]。假设存在一个包含n个样本的训练集S={(x1,y1),…,(xn,xn)}, 其中xi∈X(i=1,2,…,n)表示训练样本,yi∈Y是xi对应的判别标志, 且有Y={-1,1}。对于第i个训练样本的第j个弱分类器

(6)

其中Fj(xi)表示子窗口中第j个Haar特征的值,θj表示设定的阈值,pj用于控制不等号的方向。为使以上弱分类器能用于对人脸进行区分和鉴别, 还需对其进行适当的组合或优化。而AdaBoost算法正是通过寻找对人脸区域及非人脸区域区分能力最好的那些Haar特征, 从而得到由这些特征对应的弱分类器组合生成的对人脸区分能力最优的强分类器。其过程为如下。初始化样本权值

(7)

其中w1(i)表示第1轮训练中第i个样本的初始权值,p表示S中正样本的总数,q表示S中负样本的总数, 有p+q=n。

对于t=1,2,…,T,T为迭代次数, 进行如下循环。

1) 权值归一化

其中wt(i)表示第t轮训练中第i个样本的权值,i=1,2,…,n。

2) 对特征j训练出其弱分类器hj, 计算其加权误差

选择加权误差最低的分类器htmin作为此次循环的分类器。

3) 按照

更新样本权值。当分类正确时,ht(xi)=yi,ei=0; 分类错误时,ht(xi)≠yi,ei≠0。由T个弱分类器得最终的强分类器

(8)

由上述过程可见, 每次迭代在当前的概率分布上找到了一个具有最小误差的弱分类器, 然后调整概率分布, 减小当前分类器分类正确的样本权重, 而增大其分类器错误的样本权重, 从而使那些被错误分类的样本得到重点学习, 因而得到的强分类器具有统计上的客观性。

通过以上的方法得到的单个强分类器只能针对某些Haar特征进行判别, 并不能直接用于判断某一窗口是否是人脸, 因此需要多个强分类器, 综合多个强分类器的判别结果进行决策。为此, 提出了一种级联方式的Adaboost人脸检测方法[12,13], 即整个检测系统由多层分类器组成, 每层都是一个由Adaboost算法得到的强分类器, 通过多层过滤, 最终得到人脸窗口。图2给出了强分类器级联图。

图2 强分类器级联图Fig.2 Classification of strong classifiers

在图2所示的结构中, 前面若干级分类器只需少量特征就可排除大量的非人脸, 后面的若干级则需要大量的特征排除那些非人脸, 因为越到后面说明待检测窗口就越像人脸。这样可极大地减少计算量, 提高人脸检测的速度。这样的级联结构使每个节点都具有较高的通过率, 但总的检测结果基本不受影响。例如, 在检测人脸时, 几乎99.99%的人脸窗口都被检出, 且允许通过, 但有50%的非人脸也得以通过。总检测率并没有因此而急剧降低, 因为20个节点使得总的检测率达到0.999 920≈98%, 而错误接受率仅为0.520≈0.000 1%。

由于原图像的尺寸较大, 如果直接对原图像进行人脸检测, 每检测一帧所耗费的时间过长。因此, 先对原图像进行缩放, 在缩放的图像上进行人脸检测, 然后在原图像上标定出检测结果。但存在的缺点是如果人脸离摄像头较远, 存在误检和漏检等情况。在距摄像头距离不变的情况下, 其检测效果如表1所示。

表1 检测效果对比表

由表1可知, 缩放后的图像虽然在检测率上有一定的减小, 但是检测时间却大大降低, 因此检测的实时性显著提升。如图3所示, 无论白天黑夜, AdaBoost人脸检测算法受光照的影响较小。这主要是由于AdaBoost训练库中包含了光线较暗时的人脸图像, 因此无论是白天还是晚上, 都具有较高的检测率。

a 白天 b 夜晚图3 Adaboost人脸检测Fig.3 Face detection of Adaboost

2 驾驶员眼睛检测

在检测到人脸的基础上, 笔者将Adaboost的人眼检测算法、 边缘检测算法和肤色分割算法相结合进行人眼的精确定位。基于肤色分割的面部特征提取, 将图像从RGB空间转换到YCrCb色度空间[14]并使其色彩和亮度分离, 在不考虑亮度分量时, 肤色像素在此色度空间被呈现为较好的聚类[15]。其变换公式为

(9)

其中Y表示颜色亮度,Cr表示红色分量,Cb表示蓝色分量,Cr和Cb一起表示颜色的色度信息, 并且Cr和Cb之间是二维独立的, 这样就有效地将亮度和色度分隔开, 并且人体肤色在Cb、Cr空间中都具有较好的聚类, 也非常适合于将肤色区域从图像背景中分割开。在YCrCb彩色空间里, 肤色在Cr,Cb通道内都在一个相对稳定的范围内。通过

C=E[(x-M)(x-M)T],x=[Cr,Cb]T,M=E(x)

(10)

确定肤色点在二维空间中的二维高斯模型[16]。其中x为每个像素的色度分量,M和C分别为均值和方差。先将图像从RGB彩色空间转换到YCrCb彩色空间, 然后运用

(11)

计算该像素点属于肤色区域的概率, 即得到该像素点与肤色在二维高斯空间中分布中心的相似度。其中P(Cr,Cb)代表了图像中各像素点与肤色的相似程度, 其值越大, 在图像中就越接近白色, 表示其属于肤色的概率就越大。图4是对Cr、Cb通道进行肤色相似度计算后的图像。

图5为二值化图像。由图5可见, 对所检测到的人脸区域进行肤色相似度计算后, 人脸的大部分肤色区域亮度很高, 接近白色, 但由于光照不均衡, 造成部分肤色区域灰度值较小, 但与眼睛区域的灰度相比, 仍然比较大, 如果选择合适的阈值, 可以把肤色区域与眼部特征分开。

为缩小定位范围, 根据人脸几何特征“3庭5眼”的关系, 眼睛和眉毛分布在人脸区域一个集中的矩形范围内。观察图6所示“3庭5眼”特征示意图, 可近似认为眼睛眉毛集中在人脸高度1/4~1/2范围内, 在实时视频中标定此区域, 对所得到的二值化图像(见图5)进行边缘检测并用矩形框标定检测到的特征。根据眼睛是长方形的特点, 可排除一部分误检。在环境光线亮度比较均匀的情况下, 这种检测方法能准确定位出眼睛位置, 但如果环境太暗, 则会出现漏检和误检的问题。

图4 肤色形似度计算结果图像 图5 二值化图像 Fig.4 Image of skin color image Fig.5 Binary image

运用Adaboost算法定位眼睛的检测方法与基于训练的Adaboost人脸检测方法相似, 只是在训练样本时采用的人眼库, 但有时还是会有误判。将上述两种检测结果相结合, 能精确定位出眼睛位置。图7为眼睛检测的框定图, 实验验证, 在光线均衡的视频中, 该方法可较准确地检测出眼睛区域。算法在不同环境下的准确率如表2所示。

图6 3庭5眼特征 图7 人眼检测结果 Fig.6 5 Eye characteristics of atrium Fig.7 Human eye test results

测试集环境变化测试总数准确检测检测率/%1光照均衡1 00098898.82光照不均1 00085185.13配戴眼镜1 00020220.24脸部倾斜1 000550555眼睛闭合1 00088188.1

由表2所示, 利用笔者眼睛检测算法分别在光照均衡、 光照不均、 配戴眼镜、 脸部倾斜及眼睛闭合情况下进行测试。由测试结果可知: 光照均衡条件下, 通过调节适当的肤色阈值, 可将眼睛检测率提高到98.8%, 漏检样本可能由眼睛闭合造成, 也可能由姿势倾斜造成; 光照不均条件下, 由于二值化人脸样本存在高光或者偏光带来的干扰, 导致灰度图像中肤色与眼睛并不能完全分开, 造成检测率下降; 佩戴眼镜对眼睛检测的干扰巨大, 训练的样本中没有包含戴眼镜的样本; 脸部倾斜, 对基于灰度人眼检测影响较大, 究其原因, 也是由于灰度图像中肤色与眼睛并不能完全分开, 影响判别条件的适用性; 眼睛闭合情况下, 准确率较高, 调整肤色阈值可使眼睛区域无论睁开或者闭合都能较为准确定位。

3 驾驶员疲劳状态分析

眼皮运动是一种视觉行为, 可有效反映一个人的疲劳程度。根据易于测量并且疲劳状态代表性强等性能指标, 笔者选择两个具有代表性的眼皮疲劳评价参数, 对其进行实时提取[17], 分别为眼睛开闭时间内眼睛闭合时间所占的百分比(PERCLOS: Percent Eyelid Closure over the Pupil Time)和眼皮平均闭合速度(AECS: Average Eyelid Closing Speed)。

PERCLOS的测量原理如图8所示。通过测量t1~t4的时间节点可计算出PERCLOS的值

(12)

图8 测量PERCLOS值的原理Fig.8 Measures the PERCLOS value principle

其中f代表眼睛闭合时间的百分率, 即PERCLOS值;t1是眼睛最大瞳孔闭合到80%瞳孔所用时间;t2-t1是眼睛80%瞳孔闭合到20%瞳孔所用的时间;t3-t2是眼睛20%瞳孔闭合到20%瞳孔张开所用时间;t4-t3是眼睛20%睁开到80%睁开所用时间。定义当眼睛瞳孔开度大于20%是睁开, 等于或更小为闭合。眼睛睁开或闭合是通过将其与标准眼睛图像像素的模板比较得出的, 时间可通过每帧图像处理的时间算出。

AECS是眼皮的平均闭合速度, 一般用眼皮从完全睁开到完全闭合所经历的时间表示, 该参数也能较好的反应疲劳程度。因此AECS的计算方法为

tAECS=teveryn

(13)

其中tAECS代表眼皮平均闭合速度, 即AECS;tevery为每帧处理时间;n为连续闭眼的帧数。

笔者运用一种基于阈值分割的眼睛区域像素计算法, 由于肤色区域与眼睛区域存在很大差别, 因此可有效得到分离, 并通过计算眼睛面积进行眼睛状态的判定。一般情况下, 眼睛的大小与眼睛睁开程度成正比, 通过二值化图像眼睛区域的面积就能大体判断出眼睛的开合度。此方法较模板匹配算法简单, 易于实现, 较拟合曲线可靠性强。算法如下。

1) 分开标定左眼和右眼区域, 计算眼睛区域面积。

2) 记录连续50帧眼睛区域面积, 由于此50帧内保留睁眼和闭眼两种状态, 因此需进行冒泡排序, 求取瞳孔面积最大40帧平均值, 作为后续判断的基准。

3) 眼睛闭合阈值选择, 调整阈值R, 观察实验结果并评估眨眼判断准确率, 当眼部区域面积小于R时, 认定为眼睛闭合。如果在单位时间内眼睛闭合的帧数大于某一阈值, 即认定驾驶员处于疲劳状态。

信息融合[18]是利用计算机技术对来自多个传感器观测信息进行分析和综合处理。从而得出决策和估计任务所需信息的处理过程。信息融合的另一种说法是数据融合。但其内涵更广泛, 更确切, 更合理, 也更具有概括性, 其不仅包括数据, 而且包括了信号和知识。

笔者采用的信息融合技术是将眼睛疲劳不同参数进行相关融合, 得到最终的可反映驾驶员疲劳状态的综合指标。公式如下

(14)

其中m为某只眼睛疲劳指数权重,n为另一只眼睛疲劳指数权重[19,20],ffatigue为经过信息融合的驾驶员疲劳指数。疲劳指数与已知的阈值d比较是否疲劳驾驶: 当ffatigue>d时, 输出显示驾驶员为疲劳状态; 当ffatigue≤d时, 输出显示驾驶员为正常状态。

4 仿真结果

笔者实现的基于视频图像的眼疲劳检测, 基于Windows 7平台, 在Microsoft Studio 2010开发环境中采用MFC环境和开源视觉库OpenCV实现。整个软件的实现界面如图9所示。

图9 软件实现界面Fig.9 Software implementation interface

显示窗口分为5部分: 软件界面、 驾驶员视频加载区、 二值化图像显示区、 调试区域和缩放视频显示区。每个部分功能如下。

1) 软件界面。界面上有6个按钮和两个文本框, 按下每个按钮都会执行不同的操作。

2) 驾驶员视频加载区和调试区域。运行时点击“打开摄像头”按钮后摄像头才被打开, 弹出“VIDEO”窗口, 才开始捕捉视频, 同时会弹出“阈值设置”的窗口, 用于后续操作中设置阈值, 共有3个阈值, 前两个是二值化操作的阈值, 最后一个是设置睁眼与闭眼分界点的阈值。当要停止软件运行, 点击界面的“退出”按钮直接退出。

3) 缩放视频显示区。点击按钮“视频缩放”后, 会弹出“缩放视频”这个窗口, 人脸检测即在此窗口进行, 为了缩短程序运行时间, 标定人脸图像时在原像上进行。

4) 二值化图像显示区。点击“人脸定位”和“人眼定位”按钮之后, 会弹出“BINARY”这个窗口, 前两个阈值大小要根据这个窗口进行调整。

在准确定位眼睛后, 点击“眨眼频率”按钮, 通过“阈值设置”中第3个进度条确定眼睛闭合的阈值。通过前文所述方法判断是否为疲劳驾驶。

5 总 结

笔者主要研究对象是基于视觉的驾驶员疲劳检测方法, 通过对视频图像的采集、 预处理与图像增强、 人脸检测、 眼睛定位以及疲劳算法的研究, 实现了疲劳检测系统的相关流程, 经测试分析, 该算法具有较高的实时性等特点。

参考文献:

[1]朱淑亮. 基于视频图像处理与信息融合的驾驶员疲劳检测技术研究 [D]. 济南: 山东大学机械工程学院, 2008.

ZHU Shuliang. Research on Driver Fatigue Detection Based on Video Analysis and Information Fusion [D]. Jinan: School of Mechanical Engineering, Shandong University, 2008.

[2]姜华. 基于模式识别的驾驶员疲劳状态检测系统研究 [D]. 哈尔滨: 哈尔滨工业大学汽车工程学院, 2011.

JIANG Hua. Study on Driver Fatigue Detect System Based on Pattern Recognition [D]. Harbin: School of Automobile Engineering, Harbin Institute of Technology, 2011.

[3]王军. 驾驶员疲劳检测算法研究 [D]. 北京: 北京交通大学电子信息工程学院, 2017.

WANG Jun. Study on Driver Fatigue Detection Algorithm [D]. Beijing: School of Electronic Information Engineering, Beijing Jiaotong University, 2017.

[4]黄每裕. 欧洲人告别疲劳驾驶 [J]. 劳动安全与健康, 2000(11): 48.

HUANG Meiyu. Europeans Bid Farewell to Fatigue Driving [J]. Work Safety and Health, 2000(11): 48.

[5]朱序谋. 国外如何防止疲劳驾驶 [J]. 道路交通管理, 2000(12): 19.

ZHU Xumou. How to Prevent Fatigue Driving Abroad [J]. Road Traffic Management, 2000(12): 19.

[6]章毓晋. 图像工程(上册): 图像处理 [M]. 北京: 清华大学出版社, 2006: 65-69.

ZHANG Yujin. Image Project (Uploaded): Image Processing [M]. Beijing: Tsinghua University Press, 2006: 65-69.

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

CAO Juying. Study on Fatigue Detection of Motor Driver Based on Eyes Tracking Technology [D]. Changsha: School of Computer Applied Technology, Central South University, 2007.

[8]江俊. 人眼定位算法设计与人脸识别系统的软件移植 [D]. 武汉: 华中科技大学电子信息与通信学院, 2012.

JIANG Jun. Design of Eyes Location Algorithm and Software Porting for Face Recognition System [D]. Wuhan: School of Electronic Information and Communications, Huazhong University of Science and Technology, 2012.

[9]罗超. 基于驾驶员行为特征的疲劳驾驶检测方法的实现 [D]. 武汉: 武汉理工大学信息工程学院, 2013.

LUO Chao. The Realization of Driver Fatigue Detection Method Based on Driver Behavior Characteristics [D]. Wuhan: School of Information Engineering, Wuhan University of Technology, 2013.

[10]郑培, 宋正河, 周一鸣. 机动车驾驶员驾驶疲劳测评方法的研究状况及发展趋势 [J]. 中国农业大学学报, 2001, 6(6): 101-105.

ZHENG Pei, SONG Zhenghe, ZHOU Yiming. Study Situation and Developing Trend on Detecting and Evaluating Techniques of Motor Driver Fatigue [J]. Journal of China Agricultural University, 2001, 6(6): 101-105.

[11]YANG M H, KRIEGMAN D J, AHUJA N. Detecting Faces in Images: A Survey [J]. Pattern Analysis and Machine Intelligence, IEEE Transactions on, 2002, 24(1): 34-58.

[12]郭克友, 储江伟, 王荣本. 驾驶员眼部状态识别方法的研究 [J]. 系统工程与电子技术, 2003, 25(10): 1186-1188.

GUO Keyou, CHU Jiangwei, WANG Rongben. Study on the Recognition of the Driver’s Eye States[J]. Systems Engineering and Electronics, 2003,25(10): 1186-1188.

[13]WANG R B, GUO L, TONG B L, et al. Monitoring Mouth Movement for Driver Fatigue or Distraction with One Camera [C]∥The 7thInternational IEEE Conference on Intelligent Transportation Systems. Washington, D C, USA :AAAI Press, 2004: 314-319.

[14]WANG Tiesheng, SHI Pengfei. Yawning Detection for Determining Driver Drowsiness[C]∥Proceedings of IEEE International Workshop on VLSI Designer and Video Technology. Suzhou, China: IEEE Press, 2005: 373-376.

[15]LIN C. Face Detection in Complicated Backgrounds and Different Illumination Conditions by Using YCbCr Color Space and Neural Network [J]. Pattern Recognition Letters, 2007, 28(16): 2190-2200.

[16]夏良正, 李久贤. 数字图像处理 [M]. 南京: 东南大学出版社, 2005.

XIA Liangzheng, LI Jiuxian. Digital Image Processing [M]. Nanjing: Southeast University Press, 2005.

[17]廖传锦, 秦小虎, 黄席樾. 以人为中心的汽车主动安全技术综述 [J]. 计算机仿真, 2004, 21(9): 152-156.

LIAO Chuanjin, QIN Xiaohu, HUANG Xiyue. The State of Arts of Human-Centered Vehicle Active Safety Technology [J]. Computer Simulation, 2004, 21(9): 152-156.

[18]黄超, 谢康林, 杜平. 基于Adaboost的快速人脸跟踪算法 [J]. 计算机工程, 2004, 30(S): 373,374.

HUANG Chao, XIE Kanglin, DU Ping. A Fast Face Tracking Algorithm Based on Powerful Adaboost [J]. Computer Engineering, 2004, 30(S): 373,374.

[19]杨露菁, 余华. 多源信息融合理论与应用 [M]. 北京: 北京邮电大学出版社, 2006.

YANG Lujing, YU hua. Multi-Source Information Fusion Theory and Application [M]. Beijing: Beijing University of Posts and Telecommunications, 2006.

[20]李志春. 驾驶员疲劳状态检测技术研究及工程实现 [D]. 镇江: 江苏大学汽车与交通工程学院, 2009: 67-69.

LI Zhichun. Research on Driver’s Fatigue Status Detection Technology and Realization in Engineering [D]. Zhenjiang: School of Automotive and Traffic Engineer, Jiangsu University, 2009: 67-69.

猜你喜欢

肤色人脸分类器
有特点的人脸
一起学画人脸
肤色(外一首)
Conversation in a house
人的肤色为什么不同
为什么人有不同的肤色?
三国漫——人脸解锁
基于差异性测度的遥感自适应分类器选择
基于实例的强分类器快速集成方法
基于层次化分类器的遥感图像飞机目标检测