APP下载

基于人脸识别技术的汽车防疲劳驾驶系统

2020-02-04戴燕玲

电子技术与软件工程 2020年12期
关键词:眼部人脸驾驶员

戴燕玲

(厦门软件职业技术学院 福建省厦门市 361024)

当今社会,因疲劳驾驶而引发的交通安全事故屡见不鲜,因此汽车防疲劳驾驶预警系统日益成为当今社会的研究热点。交通事故的发生就在几秒钟的时间内,经研究调查,系统提前2 秒钟预警将能减少92%的交通事故,提前0.5 秒钟预警,将会避免73%的交通事故。因此要想达到更为准确和快速的预警效果就要求处理器的处理性能和软件算法达到一个更高的水平。经研究表明,人的眼睛状态最能直接反映一个人的疲劳程度,本文采用一种简单而有效的眼睛状态识别算法,即通过识别驾驶员眼睛纵横比的变化及眼睛闭合的持续时间,来判断驾驶员是否处于疲劳状态,一旦系统检测到驾驶员处于疲劳状态,系统立即发出语音警示,提示驾驶员停车休息。

1 国内外研究现状

目前全世界只有美国的Attention Technologies 公司推出的DD850,已经通过美国交通运输部在全美进行推广,瑞典的SmartEye 公司推出的AntiSleep 系统已经商用,奔驰、沃尔沃的高端车系以及日本丰田公司在日本销售的13 代皇冠配有瞌睡报警系统,这些疲劳驾驶预警系统都是基于驾驶员生理反应特征的疲劳检测预警产品,如驾驶员的眼部状态,头部运动状态等,但这些产品只在国外高配车中使用,且在中国车型中都没有标配。

除此之外,还有通过检测驾驶员头部和嘴部运动,即是否低头和打哈欠来判定是否疲劳驾驶,其实人在疲劳状态时,不一定会低头和打哈欠,这也使得这些系统的实时性和准确性较差,漏判率较高。其实人在疲劳状态时,眼部的状态即眼睑闭合度及持续时间,是最能直接反映出人的疲劳程度,眼睑闭合度分析成为疲劳驾驶研究的重点方向。

2 驾驶员人脸和眼部定位

本文设计的防疲劳驾驶系统主要由如图1 几个模块构成。

系统首先通过高分辨率红外摄像头识别一系列带有面部特征的图像,首先通过检测人脸,然后再进一步定位眼睛部位。通过使用眼部模型确定上下眼皮的距离,即眼睛纵横比EAR 值,来确定眼睑闭合度。在时间维度上,根据前面数帧建立的模型综合判断是否疲劳驾驶,并语音警示同时GPS 显示停车休息地点。除此之外,系统还可以通过头部运动的识别,再经过时间维度比对,判断驾驶员是否处于分心状态,并语音警示,防止驾驶员因左顾右盼交谈等分心行为而引起的一系列交通事故。

2.1 人脸定位

人脸识别是计算机视觉最典型的应用之一,其经历过三个阶段,Harr 级联检测,HOG-SVM,以及深度学习.作为当前使用最广泛的视觉开源库opencv 和最流行的机器学习库dlib,它们实现了人脸检测算法。

图1:系统设计方案模块

图2:EAR 值随时间变化图

(1)Harr 级联检测,其优点是架构简单,几乎可以在CPU 上实时运行,可以检测不同的人脸,但其缺点是对于人脸方向改变或者人体姿势幅度过大时,均无法检测到人脸,不抗遮挡。

(2) HOG-SVM 方法。它是目前为止CPU 上运行最快的方法,适用于正面和略微非正面的人脸,其模型很小,很适合用于嵌入式芯片中,而且在小的遮挡情况下依然能正常工作。其缺点是不能检测小脸,因为其训练数据的最小人脸尺寸为80*80,而且在严重遮挡的情况下不能很好的工作,不适应侧面和极端非正面如俯视和仰视。

(3)深度学习方法,它是一类检测方法的总称,也是目前最流行的人脸检测方法。如opencv 中提供了opencv-dnn 人脸检测,dlib 中实现了dlib-cnn 人脸检测。其检测的准确度是三类方法中最高的。它一般适应于不同的人脸方向,可以检测各种尺度的人脸,而且在严重遮挡下依然能很好的工作。但其缺点是检测率速度,一般要求在gpu 上运行,在CPU 上运行,有的模型也能做到实时运行,但运行速度没有第二种方法快。

表1:疲劳判断实验结果

表2:分心判断实验结果

综合以上三种方法的优缺点,考虑到在汽车上一般都是使用嵌入式芯片,驾驶员的人脸图像位置较固定,一般都是正脸,且图像一般较大。因此选用第二种方法即HOG+SVM 方法作为驾驶员人脸检测的首选方法。

HOG 算法利用梯度及梯度方向的统计信息来描述图像,因为梯度往往产生在边缘处,可以描述局部目标的形状,且梯度受到光照条件变化的影响较小,同一个目标的梯度特征在或亮或暗的图像中具有一致性,与其它的图像描述特征相比,HOG 特征具有较好的光学不变性与几何不变性,尤其适用于目标检测。

2.2 眼部定位

识别出驾驶员人脸图像后,接下来最重要也是最关键的是驾驶员眼部的定位。本文使用面部标志估算算法检测人脸特征点并对齐人脸. 首先选取人脸的68 个特殊标志点模型, 从眉毛外沿至下颌底部, 包括眼睛轮廓和嘴部轮廓等,然后利用该算法提出的基于梯度增强(radient boosting)的框架,通过优化损失函数和误差的总和来学习回归树集合(Ensemble of Regression Trees, ERT), 检测出脸部图像中的68 个关键点, 最后对齐人脸, 并根据关键点序号定位出所需要的眼部、嘴部图像。

2.3 疲劳判断

众所周知,人在疲劳状态时,眼睑就会有一定程度的闭合,本文通过一种简单且有效的眼睑闭合度计算方法来判断驾驶员是否处于疲劳状态。首先计算眼睛纵横比(Eye aspect ratio,简称ERA),式中p1、p2、p3、p4、p5、p6 是人脸68个关键点中对应眼睛的6 个特征点,如下图4 所示。分子中计算的是眼睛的特征点在垂直方向上的距离,分母计算的是眼睛的特征点在水平方向上的距离。由于水平点只有一组,而垂直点有两组,所以分母乘上了2,以保证两组特征点的权重相同。

EAR 值在眼睛睁开时,基本保持不变,基本维持在0.25 左右,当眼睛闭合时,EAR 值会迅速下降,如图2 所示。

3 驾驶员头部运动识别

除了眼部状态之外,驾驶员低头,左顾右盼等分心行为,也会影响驾驶员的正常驾驶。此处利用HOG 方法的缺点,只能检测正脸或稍微非正脸。正常驾驶情况下,人脸都应该被检测到,如果驾驶员低头左顾右盼等行为发生,那么就会有连续很多帧人脸图像无法检测到,这里我们设定如果连续10 帧人脸图像未检测到,系统会立即给予警示,提示驾驶员专心驾驶。

4 疲劳驾驶检测实验

第一步,设定眼睛的纵横比EAR 值及其阈值,以及闭眼持续时间的阈值。

第二步,编写Python,OpenCV 和dlib 代码来执行人脸检测和检测示例视频流中的眨眼,判断驾驶员是否处于疲劳状态。

最后,根据实验结果,不断改进我们疲劳检测的方法。

实验测试的疲劳判断和分心判断的准确率和响应时间,分别如表1,表2 所示。

通过实验数据表明,本系统对驾驶员疲劳状态的识别率为91.2%,分心状态的识别率为90%,平均响应时间为100ms,系统识别具有较高的准确性和实时性,具有较好的应用价值。

5 结论

本文利用图像传感器识别驾驶员正面人脸,然后进一步识别眼睛,通过眼睛纵横比的变化判断眼睛的闭合状态,能精确的判断驾驶员疲劳程度,同时系统识别头部运动状态,又能实时监测驾驶员是否处于分心状态,极大提高了防疲劳驾驶系统的准确性和可靠性。同时驾驶员疲劳度输出数据可直接通过TCP/IP 或UDP 协议与GPS导航系统结合,显示出附近能够停车或休息的地点,而语音警示系统只有在车辆停下或恢复专心驾驶时后方能复位。

猜你喜欢

眼部人脸驾驶员
基于高速公路的驾驶员换道意图识别
驾驶员安全带识别方法综述
有特点的人脸
三国漫——人脸解锁
为什么要做眼部检查
戴眼罩有助消除眼部疲劳
如何消除用电脑后的眼部疲劳
起步前环顾四周是车辆驾驶员的义务
马面部与人脸相似度惊人
“王牌驾驶员”的来历