江苏省常州市交通运输指挥中心 江苏 常州 213000
摘要:疲劳驾驶检测相关研究对交通安全具有重要的意义,尤其随着“智慧交通”理念的提出,智能交通系统成为当前发展的主流趋势。疲劳驾驶检测系统主要通过构建疲劳检测模型进行人脸检测,获取驾驶人员脸部、眼部及头部的疲劳特征变化对疲劳驾驶作出科学的判断和预警,在保证驾驶人员不受到干扰的情况下,获得较高的检测准确率,有效提升了最终的检测效率,对于降低因疲劳驾驶而产生的交通安事故发挥着重要的作用。
关键词:智能交通系统;疲劳驾驶;检测系统;模型
0前言
现如今,全球经济在稳步地发展,对于交通的各类需求也在逐渐增长,车辆驾驶也渐渐地成为了现实生活以及工业生产中必不可少的行为。交通事故每年造成数亿人的直接经济损失,被波及影响的间接经济损失更是天文数字。
交通事故起因种类繁多,如车辆机械故障、酒后驾驶、违规违法驾驶、车辆超载超员、疲劳驾驶等等一系列原因。美国国家交通安全办公委员会的相关资料显示,58%的重大交通事故都与驾驶人员精神状态注意力不足、疲劳驾驶有关;欧盟交通研究联合实验室对欧洲货运交通安全统计数据表明,交通事故的中的货运卡车事故中64.5%由疲劳驾驶造成。
在人体生理学信号角度,疲劳是正常的人类生理反应,但行驶中的车辆驾驶人员疲劳技术状态带来的后果是致命的。驾驶人员生理疲劳的外在表现常为打瞌睡、打哈欠、身体反应速度变慢、注意力不集中等。人体生理疲劳程度会随着程度的加深带来不同的驾驶行为,不同的疲劳程度表现的具体驾驶行为如表1所示:
表1不同疲劳程度下的驾驶行为
驾驶行为 | 疲劳 | 瞌睡 | 正常 |
车速控制 | 反应较慢 | 反应慢或无反应 | 动作快捷 |
身体动作 | 多动如伸腰、扭动头部等 | 长时间闭眼,身体摇摆 | 正常坐姿 |
方向修正 | 调整不及时 | 几乎不操作 | 及时修正 |
根据以上统计数据足以见得疲劳驾驶对于交通和公众生命财产安全危害巨大,同时大部分车辆驾驶人员都很难及时感知自身疲劳状态,疲劳驾驶也成最可怕的隐形杀手,因此针对驾驶人员疲劳状态的实时监测和预警成为重点研究方向。
1疲劳检测模型
人脸识别分为四个部分:人脸检测、人脸对齐、人脸验证和人脸识别。人脸检测通常被理解为对图像中的人脸进行检测和包围。人脸对齐是对鼻子、眼睛、眼睛等特征的标准提取,图1所示68点人脸标准点。人脸对齐的根本目的即是对人脸进行准确形状定位,目前主流人脸对齐算法为基于回归的方法,本设计将采用基于集成回归树(Ensemble of Regression Trees)的人脸对齐方法[1]。
树在机器学习领域被不断运用,目前常用的种类就包括二叉树、决策树等,及众多树组成的森林概念算法,甚至衍生出了“随机蕨”这一系列类树结构。本设计所用到的GBDT则是一种类随机森林结构,与随机森林结构相差不大,主要差异于:
1. 每一棵树之间的关系是串行的,并非是并行的关系,因此一棵树的建立在前一棵树的基础之上。
2. 每一棵树的叶子节点上存的是残差,这也是GBDT的特点之一,只有通过叶子节点上保存的残差,才能使形状不断地回归,从而回归到真实形状。
该方法不直接预测工作面关键点的位置,而是预测标准工作面残差的计算方法。也就是说,通过构造一个级联的残差回归树,可以将人脸形状逐步恢复到实际形状,每个残差回归树的每个叶节点存储一定数量的残差回归。当输入落在节点上时,在输入端加上残差值,最后叠加所有残差值完成面对齐。
仿射变换
仿射变换是一种通过对坐标的平移和缩放操作来将原有坐标系映射到新的坐标系的操作,本文根据人脸的关键点,利用仿射变换实现旋转和平移,并将人脸位置映射到标准人脸位置。
图168点人脸标准点*
仿射变换可以通过矩阵计算的方式实现图像的平移缩放翻转旋转等操作,在二维平面坐标系内,仿射变换可以表示为:
上式中,为待计算坐标点,为仿射变换结果,为仿射变换系数。若考虑线性变换矩阵,平移向量,则对于二维坐标系上的点,可以便改写为矩阵形式:
2疲劳检测
2.1眼部判断
目前针对眼球疲劳程度判断的最好方式为PERCLOS算法。PERCLOS算法(Percentage of Eyelid Closure over the Pupil Time)利用单位时间内眼球被覆盖百分比来对车辆驾驶人员进行疲劳程度检测。
图2 眼睛的6个面部标志
每只眼睛都由6个(x,y)坐标表示,如图2所示,从坐标的左角开始,然后沿该区域的其余部分顺时针旋转。根据PERCLOS算法可知一个反应坐标宽度和高度之间存在的关系的方程:
其中p1,…,p6是2D面部界标位置。公式中的分子计算垂直视界之间的距离,分母计算水平视界之间的距离,因为只有一组水平点,但是两组在垂直点的眼睛张开的纵横比基本相同,但眨眼时两组的长宽比迅速降至零。可以避免使用图像处理技术,而只需依靠眼睛界标距离的比率来确定一个人是否在眨眼。更直观的表示见图3所示。
图3 眼睛长宽比数据图
打开眼睛时查看眼睛标记。右上角:眼睛闭上时的眼睛标记。底部:绘制眼睛的长宽比随时间的推移。眼睛的纵横比降低表明眼睛是闭着的。
左上角,我们的眼睛完全张开-此处的眼睛长宽比会很大,并且随着时间的推移会相对保持恒定。一旦眨眼(右上角),眼睛的宽高比就会急剧下降,接近零。下图显示了视频剪辑中眼睛长宽比随时间的变化曲线。眼睛长宽比是恒定的,然后迅速下降到接近零,然后再次上升,表示闪烁。
2.2嘴部判断
眼部检测所引出的PERCLOS算法可以类比给出同样的嘴部特征MAR的概念用来反映嘴部的开合状态。嘴部的特征点如图4所示。
图4 嘴部特征点
给出相同特征公式:
当MAR大于0.5认为嘴巴张大状态(打哈欠),计算5秒内打哈欠状态持续时间>=15%,这时如果眼睛闭和时间>=15%,认为疲劳。
2.3头部位置检测
利用二维图像将头部位置映射到三维图像上,得到人脸姿态的方向。检测到的主要参数是俯仰(绕X轴旋转)、偏航(绕Y轴旋转)和滚转(绕Z轴旋转)。俯仰角、偏航角和滚转角通俗来讲就是抬头、摇头、转头。如图5所示:
图5头部动作解析
物体相对于相机的姿态可以使用旋转矩阵和平移矩阵表示:
平移矩阵:物体相对于相机的空间位置关系矩阵,用T表示;
旋转矩阵:物体相对于相机的空间姿态关系矩阵,用R表示。
世界坐标系到相机坐标系:
相机坐标系到像素坐标系:
上式的求解用DLT(Direct Linear Transform)算法结合最小二乘进行迭代求解,最小二乘的目标函数可为:
其中,带^的变量为预测值,其余为测量值。
相机畸变处理:
相机坐标系转换为图像中心坐标系:
相机坐标系至像素坐标:
3系统功能实现及测试
3.1系统功能模块
本文所研究的基于OpenCV+Dlib疲劳检测系统是老师横向项目组成,图像采集头将采集到的图像信息给终端进行反馈,处理完成发出预警或保持静默。如图6所示为设计模块流程:
图6设计模块流程
本设计研究了一种多要素结合的疲劳检测方式,通过wxFormBuilder完成产品显示界面。软件环境可同时兼容win系统也可同时进行嵌入式部署。基于OpenCV视觉库,核心编程语言为Python[2]。
本文所采用的检测逻辑不同于现有的单视觉线索判断方式,采用多视觉线索综合判断。实时监测眼部、头部、面部特征生理信号细节反馈,从眼睛闭合、眨眼、凝视方向、打哈欠和头部运动等检测驾驶员状态。
3.1.1检测模块内容
(1)脸部检测:脸部检测主要分为人脸定位、人脸识别、人脸跟踪。人脸定位的作用是在图像中通过识别面部特征点以检测人脸并标记出位置;人脸识别的作用是将在新图像中检测到的面部数据和已储存的数据进行匹配;人脸跟踪的作用是在每帧图像上跟踪之前图像帧里发现的人脸。
(2)头部检测:由三个姿态角构成,基于CNN设计头部跟踪系统以图像中脸部区域为输入,通过检测出的面部特征点结合默认的头部模型,可以得到大概的头部姿态。通过进一步跟踪已发现的面部特征和寻找到的更多特征,可以获取更多的数据用以添加到头部模型中,进而更新头部的几何特性。系统运行中,此过程不停的循环,从而以三维姿态角持续输出头部的当前姿态[3]。
(3)眼部检测:根据识别出的人脸和头部姿态进一步识别出眼睛的位置及其状态,主要用于进行疲劳状态和注意力是否分散的计算。其中,利用眼睛开度等信息基于PERCLOS算法原理来判断疲劳状态。
(4)嘴部检测:与眼部检测相同原理,根据面部特征进一步测算嘴部开合程度阈值,二分类信息化,将打哈气与正常说话区分开。
3.1.2系统视听化
(1)闭眼预警:当驾乘人员闭眼超过0.8s,发出语音预警。
(2)低头预警:当驾乘人员点头次数过多或者长时间低头发出语言预警。
(3)打哈气预警:当驾乘人员出现明显的困倦生理信号如打哈欠时,发出语音预警。
(4)注意力预警:当驾乘人员注意力未集中在车道上一定时间后发出预警。
3.1.3系统具体运行逻辑如图7所示:
图7系统运行流程图
3.2系统测试与分析
针对疲劳检测系统进行车载环境测试,测试车型为别克英朗,嵌入式终端安装结果如图8所示。车载终端硬件平台为树莓派4B+CCD摄像头。为了更符合驾驶状态,测试时间分别取在下午14:00左右、午夜12:00、清晨6:00,这三个时间段为疲劳驾驶高发时间段、此时实验结果更真实。检测方式为每位测试者随机做出相关疲劳动作模拟,对五位测试者进行测试,每位测试者进行两次测试,共10组数据(客观因素为戴眼镜、弱光、自然光下结果)。实验结果见表2、表3、表4:
图8 车载终端测试
表2 系统测试结果(自然光下)
行为 数据组 | 低头 | 闭眼 | 注意力不集中 | 打哈欠 | 眨眼 | 检测效果 |
1 | √ | √ | √ | 成功识别 | ||
2 | √ | √ | √ | 成功识别 | ||
3 | √ | √ | √ | 成功识别 | ||
4 | √ | √ | 成功识别 | |||
5 | √ | √ | √ | √ | √ | 未能成功识别 |
6 | √ | √ | √ | √ | 成功识别 | |
7 | √ | √ | √ | √ | 成功识别 | |
8 | √ | √ | √ | 成功识别 | ||
9 | √ | √ | √ | 成功识别 | ||
10 | √ | √ | 成功识别 |
表3 系统测试结果(弱光环境下)
行为 数据组 | 低头 | 闭眼 | 注意力不集中 | 打哈欠 | 眨眼 | 检测效果 |
1 | √ | √ | √ | 未能成功识别 | ||
2 | √ | √ | √ | 成功识别 | ||
3 | √ | √ | √ | 未能成功识别 | ||
4 | √ | √ | 成功识别 | |||
5 | √ | √ | √ | √ | √ | 未能成功识别 |
6 | √ | √ | √ | √ | 成功识别 | |
7 | √ | √ | √ | √ | 未能成功识别 | |
8 | √ | √ | √ | 未能成功识别 | ||
9 | √ | √ | √ | 成功识别 | ||
10 | √ | √ | 成功识别 |
表4 系统测试结果(佩戴眼镜)
行为 数据组 | 低头 | 闭眼 | 注意力不集中 | 打哈欠 | 眨眼 | 检测效果 |
1 | √ | √ | √ | 成功识别 | ||
2 | √ | √ | √ | 成功识别 | ||
3 | √ | √ | √ | 成功识别 | ||
4 | √ | √ | 成功识别 | |||
5 | √ | √ | √ | √ | √ | 未能成功识别 |
6 | √ | √ | √ | √ | 成功识别 | |
7 | √ | √ | √ | √ | 成功识别 | |
8 | √ | √ | √ | 未能成功识别 | ||
9 | √ | √ | √ | 成功识别 | ||
10 | √ | √ | 成功识别 |
根据表2、表3、表4中的数据得出如下分析:
4结束语
随着我国汽车数量的持续增加,每年因疲劳驾驶引发的交通事故逐渐增加,不但造成交通事故危害最大,而且也带来了严重的损失。因此,通过研发疲劳驾驶检测系统对驾驶人员进行疲劳驾驶检测,保证了检测效率的同时,提高了检测的准确性,对于降低交通事故发生的记录发挥着重要的作用,对打造智慧交通系统至关重要,进一步推动了我国交通事业的智能化发展。
参考文献:
[1]王秀,周枫晓,刘保罗,霍文怡.基于Dlib库的驾驶员疲劳驾驶检测系统[J].物联网技术,2021,11(12):26-29.
[2]马嘉健,赵海茹,付坤,丁敏.多特征信息融合的疲劳驾驶检测系统设计[J].玉溪师范学院学报,2021,37(06):43-48.
[3]张若萱,董晨,彭业诚,韩宇阳,张蔼婷,张照,李鑫磊,吴小刚,朱秀美.基于PFLD人脸识别的疲劳驾驶检测系统研究[J].信息记录材料,2022,23(03):123-126