基于Python的驾驶员打哈欠在线检测方法研究

2020-03-07 05:33李刚王银烨张政儒许艳亭丁茹伊
汽车实用技术 2020年3期
关键词:人脸识别驾驶员

李刚 王银烨 张政儒 许艳亭 丁茹伊

摘 要:驾驶疲劳是造成交通事故的主要诱因之一。由世界卫生组织发布的调查研究结果表明,在高速公路中由疲劳驾驶引起的交通事故率占了将近百分之四十,驾驶疲劳检测和预警的技术也越来越受到研究人员的重视。而驾驶员打哈欠是疲劳形成过程中的一个直观指标,文章提出基于Python平台开发一套在线检测驾驶员打哈欠的系统,方法简单、指标稳定可靠,具有实际应用价值。

关键词:驾驶员;驾驶疲劳;打哈欠;人脸识别;Python

中图分类号:U471  文献标识码:A  文章编号:1671-7988(2020)03-137-03

引言

驾驶员在长时间的驾驶过程中,需长时间保持高度集中的注意力,随时准备应付各种复杂的内外部环境,易导致注意力不集中、判断能力下降、警戒性水平降低,致使驾驶员难以维持最初的良好技术水平,出现动作迟误或过早、操作停顿或修正不及时等不安全动作,由此引发重大的安全事故。例如,2018年1月14日,沈海高速(栖霞市境内)发生一起中型客车与大型牵引车追尾道路交通事故,造成8人死亡、6人受伤,调查认定驾驶人涉嫌疲劳驾驶。据高速网2017年05月16日报道,2016年,京沪高速淮安段共发生交通事故787起,其中因驾驶疲劳导致的交通事故414起,占事故总量的52.6%。驾驶疲劳与许多重大交通事故有着显著的因果关系,现已成为交通事故的主要诱因之一[1],给人民的生命、财产安全造成严重威胁。

高危车辆,包括客车、运输车辆、集装箱运输车辆、重载货车等,由于驾驶任务时间长、驾驶员脑负荷重,更易在驾驶途中产生疲劳,也就更容易导致交通事故的发生。由沃尔沃主导的一项对中国交通事故中的重卡驾驶员的调查数据显示,疲劳驾驶引发事故的比例高达73%[2]。所以对高危车辆的驾驶疲劳检测尤为重要,建立驾驶疲劳实时检测系统具有重要的社会意义和经济效益。

打哈欠是疲劳检测的一个重要指标[3],驾驶员打哈欠意味着大脑已进入疲劳状态。据报道,西安市公交总公司道路安全委员会出台政策规定,公交驾驶员在运营过程中连续打哈欠3次将被批评教育,以遏制因驾驶员精力不集中而造成的各类交通事故。针对打哈欠的检测,研究人员做了许多研究,例如,童兵亮利用嘴唇特征點定位得到的嘴部几何特征值,然后利用BP神经网络对驾驶员嘴部状态进行识别,识别准确率高达96.2%[3];张伟伟等人利用深度卷积网络和在线学习跟踪算法检测驾驶员打哈欠,识别准确率高达93.7%[4]。本文提出基于Python开发平台,利用人脸识别技术定位嘴部坐标,通过实时计算嘴部高宽比判断嘴部状态,然后进行打哈欠实时检测。

1 系统框架

1.1 Python库的调用

(1)cv2模块的调用,cv2模块是图像处理的一个模块,本系统中主要用于摄像头调用、图像的采集与读取、图像的灰度处理等。

(2)dlib库的调用,dlib库是整个打哈欠检测系统最为关键的库文件,能够提供各种机器学习算法和拥有大量的图像处理功能,本文主要用于人脸检测与识别、嘴部坐标确定等。

(3)Numpy库的调用,主要用于数组操作与运算,如嘴部状态特征参数的实时存储、特征值的计算、数组数据的提取与删除等。

(4)math库的调用,主要用于实现基本的数学运算功能,包括基本的加减运算、嘴部尺寸计算、嘴部高宽比的计算等。

(5)Winsound库的调用,主要用于系统扬声器的调用与设置,判断打哈欠后对疲劳进行预警。

2 打哈欠指标

通过摄像头实时采集人脸视频,经过人脸识别算法获得如图1所示的人脸68点图,获取68点图的二维坐标。众所周知,人嘴部正常闭合时,上下嘴唇之间的高度为h(63-67)=0、左右嘴角之间的宽度w(61-65)为一定值,当开始说话时h(63-67)变大、w(61-65)减小,深度疲劳打哈欠时h(63-67)最大、w(61-65)最小。因此,打哈欠指标可定义为:R=h(63-67)/w(61-65)。

3 系统流程

整体系统设计采用四个部分,这五个部分分工明确,互相结合:

第一步,定位人脸68点位置。通过import导入所需的库或模块,cv2.VideoCapture ( )调用内部或外接摄像头,通过cv2.cvtColor ( )对人脸图像进行灰度处理,通过dlib.get_ frontal_face_detector( )进行人脸检测,通过dlib.shape_predic tor ( )进行人脸68点进行定位。

第二步,计算打哈欠检测指标。通过def定义R的计算函数,w(61-65)为点61与点65之间的宽度,h(63-67)为点63与点67之间的高度,通过hypot( )函数计算,由此可计算打哈欠指标R。

第三步,设定阈值,判断是否存在打哈欠。R值随着打哈欠而增大,通过设定阈值T,当R>T时判定为打哈欠。

第四步,设定打哈欠预警条件及方式。当连续有5个R值大于T时,系统报警,设定持续时间t=500 ms,报警音频率f=1000Hz,通过winsound.Beep (f, t)实现系统报警。

4 结果与讨论

图2为采集的被试讲话、嘴部动作、打哈欠时的散点图,所有数据均为放大1000倍后的结果。如图2(a)所示,图中两个峰为打哈欠时的R数据,两个峰的左侧及中间为讲话与嘴部动作,由图可知,打哈欠时的R值明显大于讲话、嘴部动作时的数值。图2(b)为将所有原始数据四次方后再放大1000倍的结果,由图可见,通过处理后讲话、嘴部动作的波峰已消失,只有打哈欠时的两个峰存在,表面通过对原始数据进行四次方后可以提高数据的灵敏度,使打哈欠更易被识别。

5 结论

本文提出的基于Python的打哈欠检测指标能有效反映嘴部状态,通过对R指标四次方能有效去除说话、嘴部小动作的峰值,使打哈欠指标更显著。本文提出的驾驶员打哈欠实时检测系统识别准确度高,具有实际应用价值。

参考文献

[1]      李都厚,刘群,袁伟,刘浩学.疲劳驾驶与交通事故关系[J].交通运输工程学报,2010,10(2): 104-109.

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

[3]      童兵亮.基于嘴部状态的疲劳驾驶和精神分散状态监测方法研究 [D].吉林大学,2004.

[4]      张伟伟,糜泽阳,肖凌云,钱宇彬.基于深度卷积网络和在线学习跟踪的驾驶员打哈欠检测[J].中国机械工程,2019, 30(08): 902-911.

猜你喜欢
人脸识别驾驶员
人脸识别的“国标”来了
中科视拓开放商业版本人脸识别算法
荣耀畅玩7C:人脸识别
社会版(九)
“人脸识别”人工智能测谎仪研发成功
请你发明