基于表情识别的疲劳驾驶监测系统的设计与实现

2023-06-03 18:04王策陈向曦王超蔡朝朝
电脑知识与技术 2023年10期

王策 陈向曦 王超 蔡朝朝

关键词: 疲劳驾驶监测;表情识别;SSD;Python;PyTorch

中图分类号:TP311 文献标识码:A

文章编号:1009-3044(2023)10-0022-03

0引言

在互联网时代,人脸表情识别已经成为计算机视觉任务中的一个重要研究方向,不仅是个人情感的外在表现,更是日常生活中人与人之间情感传播与交流的重要方式。同时,自动表情识别技术的发展可以帮助计算机拥有对情绪的理解,在人机交互问题上能提供更有效的解决方法。

驾驶员在疲劳状态下驾驶车辆是造成交通事故的重要原因之一[1]。2008年中国因疲劳驾驶导致的道路交通事故共2 568起,其中死亡1 353人,受伤3 129 人,造成的直接财产损失约5 738万元[2]。研究驾驶员疲劳监测方法,监测驾驶员疲劳状态,在其疲劳时进行提醒或干预,对于保护驾驶员及行人的安全有重大意义。

1研究现状

雷凌俊等人[3]对三角波、阿尔法波和贝塔波作为脑电信号进行采集,并利用CNN算法对脑电数据进行识别,他们通过特定脑电图波形的选择,脑电图信号的预处理,集中度和静坐度的判别算法研究从而对驾驶员进行疲劳判定。

徐礼胜等人[4]通过基于短时心电信号的疲劳驾驶检测算法提取的特征,并设计一种随机森林分类器并基于这些特征进行分类,在疲劳驾驶监测上具有良好的分类效果,平均准确率达到91%。

Wang Qingjun等人[5]通过传感器采集的方向盘信号、转角信号、呼吸信号等疲劳监测信号相融合,提出异质信号融合的疲劳驾驶监测算法,最终使得算法具有良好效果。

吕秀丽等人[6]利用SSD网络定位驾驶员的眼睛与嘴巴区域,并结合人脸68特征点等方法共同判定驾驶疲劳状态,在YawDD 数据集上的检测准确率达97.2%。

2模型设计

2.1 数据集

本文采用从AI Studio下载的公开疲劳驾驶分类数据集,进行训练和测试共2914张图像,单张大小为640×480的三通道图像,样本图像如图1所示。下载路径为:https://aistudio.baidu.com/aistudio/datasetdetail/85880。该数据集被标注类别为四种open_eye、closed_eye、open_mouth、closed_mouth 分别表示眼睛的开闭和嘴巴的开闭,标注图像如图2所示。

2.2 SSD网络

SSD网络[7]是由Wei Liu等人提出的一种卷积神经网络目标检测算法,它提供了一种多尺度特征图预测分类和回归的思想,精确度和速度都很高。其采用VGG16作为基础模型,然后在VGG16的基础上新增了卷积层来获得更多的特征图以用于检测,如图3 所示。

如图3所示,本文使用SSD网络,通过VGG16和多卷积层对驾驶员图片中的眼睛与嘴巴进行特征提取,并通过改进参数等方法调试网络,实现对数据集进行疲劳驾驶分类训练,来筛选预测结果。

2.4 疲劳驾驶判定方法

2.4.1 PERCLOS值

卡内基梅隆研究所经过反复实验和论证,提出了度量疲劳/瞌睡的物理量PERCLOS (Percentage  of EyeIid CIosure over the PupiI, over Time, 简称PER?CLOS),它被定义为每分钟眼部闭合程度超过某一闭值(70%、80%)的时间比例,其具体实现公式如下所示。

PERCLOS 值[8]具有三个最常见标准EM、P70 和P80用于确认眼睛的闭合状态,分别意味着瞳孔被遮挡比例为50%、70%、80%时,眼睛的闭合,本文采用P80标准。

2.4.2 嘴巴闭合状态

司机在驾驶时的疲劳判定还可以从嘴部特征入手。文章通过计算每一帧闭合状态,确定嘴巴纵横比。设定上下嘴唇闭合时,特征值为0,上下嘴唇完全张开时,特征值为1。当上下嘴唇张开时,其间距会变大,设定打哈欠时的特征值为G(G = 0.5)。当超过1 秒时间的嘴巴纵横比特征值大于G时,就被认定为打哈欠行为。

2.5 模型性能测试

为测试模型的可靠性,体现该疲劳驾驶系统的效果,文章使用从AI Studio下载的公开疲劳驾驶分类数据集,对该模型的准确率(Accuracy) 进行计算。

TP(True Positive):分类器预测结果为正样本,实际也为正样本。

TN(True Negative);分类器预测结果为负样本,实际为负样本。

最终该模型通过测试集测试后,准确率达到了92.15%。验证了该疲劳驾驶系统的有效性与可靠性。

3 系統实现

3.1 功能设计

本文疲劳驾驶监测系统模块结构如图4所示,主要有三个部分组成,即预处理模块、检测模块、判断模块。预处理模块主要是通过OpenCV工具进行数据的处理,将输入数据调整为300×300的大小,并对输入数据进行去均值处理;检测模块主要通过本文提出的SSD算法对输入图像的眼部、嘴部进行检测;判断模块用于判断驾驶员驾驶状态,即闭眼时间比例,张嘴时长进行判断,最后得出当前驾驶员驾驶状态。具体疲劳驾驶监测流程图如图5所示。

3.2 软件设计与测试

该系统软件开发以Python 语言开发,采用Py?Torch作为深度学习开发框架。首先,通过摄像头读取数据,然后进行预处理并送入算法模型中进行分类检查,最后计算PERCLOS值和打哈欠检测,判断疲劳驾驶状态。使用OpenCV框架部署实现实时监测,运行测试如图6所示。

4总结

本文介绍了疲劳驾驶国内外研究现状,并成功搭建SSD网络模型对疲劳驾驶进行识别,使用OpenCV 框架部署实现实时监测。实现基于表情识别的疲劳驾驶监测系统的设计,对疲劳驾驶监测有不错的效果。在设计过程中,还存在部分问题,比如SSD网络中主干特征提取网络VGG16可以换为更轻量级的网络,以及在复杂环境下,疲劳驾驶监测的不稳定性。希望将来可以实现更加稳定、高效、轻量的系统。