摘"要:随着交通行业的迅猛发展,疲劳驾驶已经成为引发交通事故的重大隐患。为了减少驾驶者在长时间连续驾驶或睡眠不足的情况下,因身体和心理疲劳导致的驾驶能力下降、反应迟钝、判断失误等现象,本文利用Dlib人脸检测模型,通过EAR算法、MAR算法综合分析眼睛闭合程度、眨眼频率、嘴巴张开程度与打哈欠次数等多个人脸特征参数来判断驾驶员的状态,并向司机发出警报,从而能在疲劳初期及时提醒驾驶员休息,显著提升了驾驶安全性,以减少发生不测的概率。
关键词:EAR;MAR;疲劳检测
在交通运输行业快速发展的同时,道路运输的繁忙程度和复杂程度也越来越高。作为交通活动的主要参与者之一,驾驶者的安全意识和驾驶状态直接关系到道路交通的安全与畅通。近年来,由于驾驶者疲劳驾驶导致的交通事故频发,引起了社会各界的高度关注。疲劳驾驶,即驾驶者在长时间连续驾驶或睡眠不足的情况下,驾驶员身心发生变化,从客观上表现为感知、判断、反应等能力下降,操作失误的概率上升。重度疲劳时,往往还会有昏睡的情况发生,使驾驶人员无法正确驾驶车辆,从而引发交通事故,这已经成为一个亟须解决的道路交通安全问题。
一、相关方法
疲劳驾驶的客观检测分为三种:以车辆驾驶方式为基础,以驾驶员生理特征为基础,以驾驶员面部特征为基础。
(1)以车辆驾驶方式的检测为基础。通过在车内安装传感器,对驾驶员的驾驶状态进行分析,通过采集数据,如方向盘的转动角度、车辆的车速变化、车辆的行驶轨迹等。蔡素贤等[1]通过车辆运行数据检测驾驶员疲劳驾驶状态,但真实的交通状况复杂多变,且受个人驾驶习惯差异影响较大,因此准确度不高。
(2)以驾驶员生理特征为基础。通过司机佩戴相关设备,通过司机生理数据的变化,直接得到司机的驾驶状态,从而采集司机的心电、脑电、眼电等数据。张鸿[2]研究疲劳驾驶侦测及其预警方式,以驾驶人生理电信号码为基础,虽然精确度较高,但由于采集资料需驾驶人佩戴采集装置,因此会对驾驶人安全驾驶造成一定影响。
(3)以驾驶员面部特征为基础。通过摄像机捕捉分析驾驶员眨眼次数、打哈欠次数、点头次数等信息,判断驾驶员疲劳状态。在对车手疲劳状态的测试中,这样的做法已经成为一种主流的潮流。李庆臣[3]研究疲劳驾驶侦测,以MTCNN、PERCLOS为蓝本,针对司机面部特征,但侦测精确度与实时性尚有欠缺。
因此,针对以上检测方法中影响驾驶员驾驶精准度不高的问题,通过Dlib库+OpenCV来实现对驾驶员面部的检测,结合EAR算法和MAR算法来判断驾驶员的驾驶状态,一旦超出阈值就会发出警报。
二、Dlib工作原理
Dilb是一个用于机器学习算法和面部坐标显示的一个开源学习工作包。Dlib检测出面部的68个特征点如图1所示,其中最为关键的如眼睛、鼻子、嘴巴被很清晰地标识出来。左右两只眼睛分别采用6个特征点进行判断是否眨眼,嘴巴则采用20个特征点来判断是否有打哈欠发生,鼻子采用9个特征点来识别疲劳驾驶程度。文章仅仅阐述眼睛和嘴巴关键点的作用。
三、检测方法
(一)人脸疲劳特征分析
研究表明,随着疲劳程度的增加,眼部周围肌肉逐渐放松,眼皮会呈现下垂的状态。正常情况下,眼睛睁开时眼皮与眼球有一定的相对位置关系,而疲劳时眼皮可能会遮盖更多的眼球部分影响视野范围。当身体疲劳时,颈部肌肉力量减弱,难以长时间支撑头部直立状态,因此头部会不自觉地向下垂,往往还会伴随着打哈欠的情况。所以通过眼睛张开程度、眨眼频率、点头次数、打哈欠次数就能判断司机的疲劳程度。相比较而言,人在疲劳状态下打哈欠嘴巴张大,点头打瞌睡姿势发生变化,个体差异较大的特点会影响疲劳检测的准确性,因此文章将其作为辅助条件,对驾驶员的疲劳状态进行判断。
(二)眼部疲劳检测算法
Dlib模型如图1所示,通过人眼高度和宽度之间纵横比例,即EAR参数来计算单位时间内的眨眼次数[4],使用Dlib库可以提取到左右眼的12个特征点。其中P37~P42为左眼地标,P43~P48为右眼地标。
左眼的EAR值计算公式如下:
EARL=P38-P42+P39-P412P37-P40
右眼的EAR值计算公式如下:
EARR=P44-P48+P45-P472P43-P46
在眨眼的过程当中,人眼是同时运动的,所以可以通过求左右眼EAR的平均值最终算得EAR的值。
EAR平均值计算公式如下:
EAR=EARL+EARR2
当人眼正常睁开时,EAR值短时间内变化不大,波动幅度在0.2附近[5]。人眼在闭合的时候,EAR值下降很快,完全闭合的时候EAR值接近于零。通过多次模拟实验对比发现,0.17的初始阈值设置可以满足本实验要求。为此对于摄像头捕捉到的每一帧EAR值,将其与阈值0.17进行比较,当EAR由某一数值迅速降至0.17及其以下,再迅速升至0.17以上时,判定为眨眼。
(三)嘴部疲劳检测算法
文章通过嘴巴的长度宽度纵横比,即MAR值来计算单位时间内的打哈欠次数,使用Dlib库可以提取到嘴巴的20个特征点,其Dlib模型如图2所示。其中P49到P55的距离为嘴巴长度,用P51、P59、P53、P57这四个点来判断嘴巴的纵坐标。通过这6个特征点的坐标差值变化来判断打哈欠时嘴巴的张开程度。
其MAR值计算公式如下:
MAR=P51-P59+P53-P572P49-P55
通过计算MAR值来判断是否打哈欠,当人们打哈欠时张口幅度明显大于人们平时说话,但是由于打哈欠时嘴部的开合程度存在很大的个体差异,因此文章将该特征作为疲劳特征的次要检测点。由于吃饭、说话和打哈欠有明显的不同,经过多次实验比对分析,最终文章设定检测到MAR值大于阈值0.85且1分钟内超过8次判定为疲劳驾驶。
(四)综合检测流程
首先,读取摄像头中的画面,利用一种基于头部姿态的估测算法,获取二维人脸的特征点坐标,将这些特征点与3D人脸模型进行匹配,从而确定3D特征点和相应的2D特征点之间的变化情况,最终利用旋转矩阵对人脸的倾斜度进行确认,对俯仰角和滚动角进行计算,判断是否超出阈值,从而判断摄像头是否能检测到人脸。其次,根据提取到的嘴部信息和眼部信息,计算EAR和MAR的值,当一分钟内检测到EAR或者MAR的值小于阈值的次数分别超过8次的时候,就可以判断其为疲劳驾驶且发出警报。具体综合检测流程如图2所示。
四、疲劳驾驶检测结果分析
表1、表2、表3、表4、表5、表6分别为从戴眼镜闭眼检测较亮环境、戴眼镜闭眼检测较暗环境、不戴眼镜闭眼检测较亮环境、不戴眼镜闭眼检测较暗环境、打哈欠检测较亮环境和打哈欠检测较暗环境六方面来进行检测。戴眼镜闭眼较亮环境下,Dilb检测出的人脸68个特征点较为准确;当人出现困意时,眼睛睁开程度会减小甚至闭合,出现打哈欠的情况,此时系统经过EAR算法和MAR算法进行判定人处于疲劳状态,并在系统中发出提示,从而提醒驾驶员。具体检测数据如表1、表2、表3、表4、表5、表6所示。
为了验证系统的准确性,实验的时间由高到低再变高,从而尽可能地排除偶然性。在较亮的环境下,无论是否戴眼镜疲劳检测结果较为准确。然而,模拟的隧道等较暗环境中眼镜对于人脸的定位影响较大,从而导致对疲劳检测结果产生影响。
结语
本文实现了一个基于Dlib的疲劳驾驶检测系统,采用了EAR眼部纵横比检测、MAR嘴部纵横比检测等判断方法,对驾驶员的驾驶状态进行了实时的监控,并在检测到疲劳时对他进行报警提醒。这套系统相比于其他检测方法具有更高的可行性,比如,生理信号检测、驾驶状态检测有了更高的可行性。通过系统经实验验证,能够准确、及时地识别驾驶员的疲劳状态,预防发生交通事故。未来工作将聚焦于提升系统的鲁棒性与准确性,以及探索更多维度的疲劳评估指标,以进一步保障道路交通的安全与顺畅。本研究的成功实施,为智能交通安全领域的发展贡献了一份新的力量。
参考文献:
[1]蔡素贤,杜超坎,周思毅,等.基于车辆运行数据的疲劳驾驶状态检测[J].交通运输系统工程与信息,2020,20(04):7782.
[2]张鸿.基于驾驶员生理信号的疲劳驾驶检测及其预警方法研究[D].长春:吉林大学,2021.
[3]李庆臣.基于面部特征的疲劳驾驶检测系统设计[D].郑州:郑州大学,2019.
[4]王丹卿.基于面部特征与深度学习的疲劳检测算法的研究[D].镇江:江苏大学,2023.
[5]王梅霞,徐怡彤,杨照宇,等.基于Dlib与OpenCV的疲劳驾驶检测系统[J].中阿科技论坛:中英文,2023(03):8892.
课题项目:南通理工学院“优秀本科毕业设计(论文)培育计划”(BS202406)
作者简介:李王蔚(2002—"),男,汉族,四川成都人,本科在读,研究方向:信号处理。
*通信作者:周丽丽(1989—"),女,汉族,江苏南通人,硕士研究生,讲师,研究方向:信号处理。