APP下载

基于机器视觉的疲劳驾驶检测算法研究

2023-06-21王彦博张剑书孙新元

智能计算机与应用 2023年6期
关键词:欧拉角关键点人脸

王彦博, 张剑书, 孙新元

(南京工程学院计算机工程学院, 南京 211167)

0 引 言

疲劳驾驶行为是造成交通事故的主要因素之一,交通事故常常会造成巨大的经济损失,甚至威胁到驾乘人的生命安全[1]。 据交通部统计,中国每年因疲劳驾驶导致的交通事故约占所有交通事故的20%,在特大交通事故中占比40%,且其发生数量呈现出逐年升高的趋势[2]。 因此,通过各项技术手段实现对驾驶员的疲劳检测,并及时给予提醒是必要的。

近年来,随着机器视觉技术和机器学习的兴起,人脸检测和面部信息提取技术得到了进一步的发展,在人工智能等领域发挥着举足轻重的作用,基于驾驶员的面部图像数据分析面部状态,以实现对驾驶员疲劳检测与预警,在驾驶安全领域具有重要的实用价值和研究意义[3]。 Hernandez 等[4]提出了以驾驶员脑电信号为基础的疲劳检测方法;在针对图像数据的疲劳检测方面,Majdi M S 等[5]提出了一种基于卷积神经网络和随机决策森林的驾驶员注意力分散检测方法,其分类准确率能达到95%。

本文提出了一种基于机器视觉的驾驶人疲劳检测算法,针对车内监控设备采集的司机面部图像进行预处理,提取出面部关键点信息;融合眼部、嘴部和头部姿势3 个特征,分别检测驾驶员的眨眼、打哈欠和点头行为,从而综合评价驾驶人的疲劳状态。

1 疲劳特征提取

疲劳特征提取是实现疲劳检测算法的前提。 与正常状态相比,人在疲劳时,嘴巴、眼睛和头部姿势会表现出较大差异。 因此,基于机器视觉的疲劳检测需要先提取被检测目标的相关面部和头部运动特征。 本文基于Dlib(一个包含机器学习算法和工具的C++工具包)中的人脸关键点检测技术实现面部特征提取,Dlib 提供的人脸检测模型能够快速获取到包括面部、眼睛、鼻子、嘴巴等部位轮廓的68 个关键点,如图1 所示。

图1 面部68 个关键点位置Fig. 1 The location of the 68 key points on the face

在检测出这些关键点之后,可以通过计算眼睛和嘴巴纵向与横向的比例,来判断其张开与闭合程度,也可以将这68 个关键点间的信息,投射在3D模型上,获得面部的朝向与姿势,计算头部旋转的欧拉角,获得头部的姿态与动作。

1.1 基于纵横比的眨眼特征提取

从检测到的68 个关键点中提取出左右眼睛的轮廓坐标,并计算眼部纵横比EAR(Eye Aspect Ratio),可以估计驾驶人眼睛的张开或闭合程度,眼睛关键点位示意如图2 所示。

图2 眼部关键点Fig. 2 Key points of eyes

EAR1与EAR2分别表示左眼与右眼的纵横比,Pn表示关键点坐标(xn,yn) ,左眼关键点序号为37~42,右眼关键点序号为43 ~48,取上述关键点对双眼纵横比进行计算,公式(1)和公式(2):

取EAR1与EAR2均值作为驾驶人当前状态的EAR值。

1.2 基于纵横比的张嘴特征提取

将纵横比公式运用在嘴部横纵比MAR(Mouth Aspect Ratio)提取时,为了准确计算嘴巴的张开程度,主要提取序号为51、59、53、57 的关键点和序号为49、55 的关键点的横坐标进行纵横比的判断,嘴部关键点示意图如图3 所示。

图3 嘴部关键点Fig. 3 Key points of mouth

MAR计算公式(3)如下:

1.3 基于HPE 算法的头部姿势特征提取

利用HPE(Head Pose Estimation,HPE)算法进行头部姿势预测。 首先需要获得2D 人脸关键点坐标,并将2D 坐标分别与3D 人脸模型进行匹配,计算3D 与2D 关键点之间的转换关系,根据旋转矩阵求解欧拉角。 转换时需要使用到世界坐标系(UVW)、相机坐标系(XYZ)、图像中心坐标系(uv)和像素坐标系(xy)。

世界坐标系转换到相机坐标系,公式(4):

相机坐标系转换到像素坐标系,公式(5):

像素坐标系转换到世界坐标系,公式(6):

图像中心坐标系转换到像素坐标系,公式(7):

由公式(4)~公式(7)可以获得旋转矩阵,基于此可以求出欧拉角,公式(8):

其中,θ、ϕ和φ分别为章动角、旋进角和自转角,三者共同构成欧拉角。

将2D 人脸关键点与3D 人脸模型进行映射匹配,根据旋转矩阵计算头部旋转欧拉角,便可以获得头部姿势和运动状态。

2 驾驶人疲劳检测结果

驾驶人疲劳检测算法通过融合EAR、MAR和HPE算法提取的眼部、嘴部和头部姿势3 个特征,实现对驾驶员面部状态的实时检测。 为了获得更加合理的检测阈值,本文在模拟疲劳驾驶的视频数据集YawDD 上对算法和数值变化进行了实验与测试。YawDD 数据集中包含29 位志愿者在静止车辆中模拟长时间驾驶后的疲劳状态录制的正面视频,视频中志愿者的行为包括眨眼、打哈欠、注意力分散、交谈等行为,视频样例如图4 所示。

图4 YawDD 数据集样例Fig. 4 Example of YawDD dataset

通过眨眼、张嘴和头部姿势特征提取方法对YawDD 数据集中志愿者的视频进行测试,得到的EAR和MAR数据变化趋势曲线如图5 所示。 从图5可以发现,驾驶员在眼睛睁开时,对应的EAR值在0.3 ~0.4 区间波动;而在出现眨眼或闭眼动作时,EAR值则会瞬间下降至0.2 以下,并趋于0。 因此,可以设置判断眨眼的阈值为EAR <0.2 且保持2帧。

图5 YawDD 数据集中EAR、MAR 变化曲线示例Fig. 5 Variation curve of EAR and MAR under fatigue state of volunteers in YawDD dataset

另外,驾驶员在正常状态下,MAR值较小,交谈时MAR值在0.3~0.5 之间上下波动;而在打哈欠时,MAR值将迅速增大至0.6 及以上,并会持续一段时间。 因此,在进行打哈欠检测时将MAR阈值设置为0.6,当MAR >0.6 并保持12 帧之后,则计算为打哈欠一次。 此外,驾驶员平视前方时,视线水平角度约为0°,当低头打瞌睡时,平视角度将会下降,因此可以将低头检测的阈值设置为0.3,即在一段时间内,低头欧拉角大于20°或平视角度变换比例超过0.3 时,则认为低头或点头一次。

经过统计分析,驾驶人在疲劳驾驶状态下的每分钟平均眨眼次数超过20 次,打哈欠次数超过5次,并且会存在头部角度较低,以此作为该段时间内疲劳判断的标准,疲劳检测的结果如图6 所示。

图6 疲劳检测结果Fig. 6 Results of fatigue detection

3 结束语

本文提出了一种基于机器视觉的疲劳驾驶检测方法,通过Dlib 完成了驾驶人面部关键点的检测,并从中提取驾驶人疲劳状态相关的特征,基于此实现对驾驶人疲劳状态的实时检测。 该方法仅需在车内部署一个小型监控摄像头,而不需要复杂的脑电设备或可穿戴设备,因此不会对驾驶人的动作或行为造成任何影响,具有一定的实际应用价值。

猜你喜欢

欧拉角关键点人脸
聚焦金属关键点
肉兔育肥抓好七个关键点
有特点的人脸
三国漫——人脸解锁
从CATIA位置矩阵求解欧拉角的计算方法分析
一种基于EGI和标准人脸模板的三维人脸点云拼合算法
马面部与人脸相似度惊人
医联体要把握三个关键点
大姿态角入水时的鱼雷半实物仿真方法研究
长得象人脸的十种动物