王子纯 方娇 邱敏霞 李鑫 杨雪
摘 要:随着我国经济的快速发展,汽车持有量逐年增加,与之相关的交通安全问题也日益突出,而疲劳驾驶是造成交通事故的主要因素之一。因此,关于疲劳驾驶的检测和预防成为现主要阶段研究的内容,包括对人脸进行检测定位、识别并判断眼睛状态从而判断驾驶人是否疲劳。目的在于用非接触式的设备实时监测驾驶人的生理状态并分析,有效检测出驾驶员的疲劳状态,以大大降低事故发生的概率,对解决当下交通安全问题有十分重要的现实意义。
关键词:疲劳驾驶;人脸检测;眼睛状态;模板匹配;眨眼频率
1 国内外研究现状
随着社会经济的发展,汽车已成为人们日常生活中不可或缺的交通工具,由汽车引起的交通事故也逐渐增多。根据世界卫生组织(WTO)2014年发布的《世界预防道路交通安全伤害报告》相关数据显示,疲劳驾驶在十大“影响交通事故发生的危险因素”中高居第3位。在我国,依据公安部交通管理局提供的数据,每年约有9 000人死于疲劳驾驶。疲劳驾驶被列为继超速行驶、酒后驾车之后引发道路交通事故的又一主要原因[1]。
驾驶员处于疲劳状态的主要表现为反应迟钝、思考能力与判断能力下降、视线模糊、注意力下降、眨眼频率加快等。疲劳时驾驶员动作失调,容易造成车辆失控,影响其他车辆驾驶、阻碍交通运输,大大增加了意外发生的可能性。因此,驾驶员疲劳状态的实时监测对降低事故发生的概率和解决交通安全问题都有十分重要的现实意义。
1.1 国外研究现状
(1)三菱的高级安全车通过测量方向盘及车辆运行过程中的相关参数,判断驾驶员的疲劳情况[2]。(2)日本东风日产汽车研究实验室设计出了驾驶员瞌睡检测装置[3]。该装置通过判断驾驶员眼睛的开闭状态,计算统计一定时间内的眨眼次数从而判断驾驶员的疲劳水平。
1.2 国内研究现状
(1)浙江大学研究的驾驶员防瞌睡装置[4],基于灰度投影的人眼定位,用边缘检测的方法对眼睛开闭状态进行判断,分析驾驶员当前的生理状态。
(2)郑州的工程师董世衍研制了一种防止驾驶员打瞌睡的报警系统[5]。装置主体是眼睛框架,通过红外线技术测试人眼的运动变化,由传感器将采集到的变化信息传送到主机,使其分析并报警或进行刹车操作。
2 人脸检测与眼睛定位
在疲劳驾驶检测技术中,要对图像中驾驶员的面部进行定位,以便进行下一步的眼睛定位。人脸的检测与眼睛定位过程如图1所示。
2.1 人脸检测与定位方法
人脸检测算法的本质就是确定一幅图像中是否有人脸存在,进而确定人脸在整幅图像中的位置。本文主要采用基于特征的人脸检测法,通过从处理后的图像中提取出某些特征与人脸特征进行对比,从而判断某一区域是否为人脸。基本过程为建立样本库,提取特征,训练分类器,获取视频,检测人脸,人脸跟踪。
人脸定位与跟踪使用KTL(Kanade Lucas Tomasi Tracking)算法[6],算法假设检测目标在视频中只产生小位移,并且目标的灰度变化不大[7]。基于KLT跟踪算法的过程如图2所示。
支持向量机(Support Vector Machine,SVM)是一种应用统计理论开发的新的学习机器[8],被广泛应用于数字识别、人脸检测识别等领域,是一个具有稀疏性和稳健性的分类器,可以进行非线性分类,其核心思想是:首先,将原始数据通过某个非线性映射嵌入到合适的高维特征空间中;其次,利用普通线性学习器对新空间中的模式进行分析和处理。训练好SVM后就可以根据相关特性进行人脸定位。
2.2 人眼定位方法
KLT算法和支持向量机可得到人脸的相关特征,面部位置确定后,开始定位眼睛。在眼睛定位时,本文使用Matlab工具箱中的vision包检测,检测器使用提琴琼斯检测算法和检测训练分类模型。采用SVM方法采集眼睛样本和非眼睛样本,其中,x表示眼睛向量,通过多次训练得到分类向量W和常数b。对眼睛进行检测的公式[9]为:
若f(x)的值大于0,则表示此模块为眼睛模块。
眼睛跟踪同样使用KLT算法,但是当相邻两帧的图像中眼睛位移偏大或特征点被遮挡时,眼睛可能会跟踪失败。对此,将在下一步的研究学习中进行相关算法的改进。
3 眼睛状态识别与疲劳判断
为了检测驾驶员的疲劳程度,先要识别驾驶员的眼睛状态,即判断眼睛的睁闭情况。本文主要采用模板匹配法进行眼睛状态的识别,并与眨眼频率相结合的方法对驾驶员疲劳状态进行检测。
3.1 眼睛状态识别方法
模板匹配法给出了眼睛的3个状态模板,分别是“睁”“闭”“半睁半闭”模板,还包括定义好的固定状态模板。处理视频流后,系统会把采集到的眼睛模块与固定模板进行比较,以模板相似度的最大值来决定眼睛的状态。此外,还有一种更灵活的可变模板,可以根据不同图像生成不同的状态模板,识别更准确,但是过程比较复杂,可进行更深入的研究。模板匹配计算相关系数[10]的公式如下:
其中,T为模板,S为待搜索图像。式中第二项反映了模板与图像的相关性,当模板与图像匹配时,该项有最大值。将其归一化,得到的相关系数如下。
当模板与图像匹配时,找出R的最大值,其对应的S(i,j)为匹配目标。
眼睛的闭合程度可以通过边缘复杂度法来计算,先要进行边缘提取。本文采用Sobel 算子[11],本质是反映相鄰或相距一定距离的像素点的灰度差异特征,可得到边缘的梯度方向信息,具有较强抑制噪声的能力,计算简单,易于实现。计算眼睛边缘复杂度公式如下:
其中,含左右眼睛的图像大小为 m×n,b(i, j)为二值图中的 0或1,a,b为调整权重。如果眼睛区域复杂度较大,说明眼睛为开眼,否则为闭眼。
3.2 判定疲勞算法
眨眼是眼睛从睁开到闭合再睁开的过程。正常情况下,人的眼睛每分钟10~15次,平均眨眼间隔4~5 s,眨眼持续时间在大多数情况下都可以有效判断疲劳[12]。基于眼睛状态识别,可以判断出每帧图像眼睛的睁闭状态。当前后两帧图像左右眼的状态相同,且分别为睁眼和闭眼时,可以定义为进行了一次眨眼。在1 min的时间内统计眨眼次数n,计算频率m,与定义好的阈值T进行比较。
4 研究结果
4.1 特征提取与睁闭眼的识别结果
基于相关人脸检测与跟踪算法,运行后的仿真结果如图3所示。在实际使用过程中,刘海和眼镜边框等相关因素会对眼部特征的提取产生影响,可能还会出现使用者面部侧偏等情况。
4.2 疲劳状态判断
本课题在PC机上进行了仿真模拟,利用摄像头采集实验者图像,进行人脸以及眼睛的识别定位,通过相关算法判别眼睛的状态并计算眨眼频率,从而判断使用者是否处于疲劳状态。图4为实现仿真分析的程序界面。
5 结语
为了完成基于眨眼检测的驾驶员疲劳检测技术的实现,本文做了大量的调查研究工作,学了各种相关知识与算法。利用摄像头采集实验者图像,之后进行人脸以及眼睛的识别定位,通过相关算法判别眼睛的状态并计算眨眼频率,从而判断使用者是否处于疲劳状态。
[参考文献]
[1]郝王蕾.基于人眼特征的驾驶员疲劳检测技术的研究与实现[D].沈阳:东北大学,2011.
[2]黄雄.基于人眼检测的疲劳驾驶预警研究[D].芜湖:安徽工程大学,2015.
[3]PHILIPPA H G,NATHANIEL S M,IAN J,et al.Investigating driver fatigue in truck crashes:trial of a systematic methodology[J].Transportation Research Part F:Psychology and Behaviour,2005(1):112-114.
[4]李峰,曾超,徐向东.驾驶防瞌睡装置中人眼快速定位方法研究[J].光学仪器,2002(4):70-72.
[5]王华容.道路交通心理学中的眼动研究[C].北京:第八次全国心理卫生学术大会论文汇编,2015.
[6]陈瑜,李锦涛,徐军莉,等.基于眼动特征的驾驶员疲劳预警系统设计[J].软件导刊,2020(3):1-4.
[7]赵团.基于计算机视觉的驾驶员疲劳检测技术的研究与实现[D].沈阳:东北大学,2010.
[8]宋普云.虹膜识别系统与支持向量机算法研究[D].天津:河北工业大学,2003.
[9]谢秀珍.基于机器视觉的驾驶员疲劳检测研究[D].长沙:中南大学,2010.
[10]郝王蕾.基于人眼特征的驾驶员疲劳检测技术的研究与实现[D].沈阳:东北大学,2011.
[11]ZHICHAO T,HUABIAO Q.Real-Time Drivers Eye State Detection[J].IEEE,2005(4):285-289