问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

基于深度学习的疲劳驾驶检测

创作时间:
作者:
@小白创作中心

基于深度学习的疲劳驾驶检测

引用
CSDN
1.
https://blog.csdn.net/qq_42722197/article/details/137710810

随着汽车保有量的增加和交通安全问题的日益突出,疲劳驾驶检测技术具有重要的现实意义。本文将介绍基于深度学习的疲劳驾驶检测技术,包括课题背景、实现目标、市面上的检测方法、相关数据集以及具体的算法实现步骤,包括基于头部姿态的检测方法和基于CNN与SVM的疲劳检测方法。

1. 课题背景

关于对疲劳驾驶的研究不在少数,不少学者从人物面部入手展开。人类的面部包含着许多不同的特征信息,例如其中一些比较明显的特征如打哈欠、闭眼、揉眼等表情特征可用来作为判断驾驶员是否处于疲劳状态的依据。随着计算机技术的不断发展,尤其是在人工智能相关技术勃发的今天,借助计算机可以快速有效的识别出图片中人脸特征,对处于当前时刻驾驶员的精神状态做出判断,并将疲劳预警信息传达给司机,以保证交通的安全运行,减少伤亡事故的发生。

2. 实现目标

经查阅相关文献,疲劳在人体面部表情中表现出大致三个类型:打哈欠(嘴巴张大且相对较长时间保持这一状态)、眨眼(或眼睛微闭,此时眨眼次数增多,且眨眼速度变慢)、点头(瞌睡点头)。本实验从人脸朝向、位置、瞳孔朝向、眼睛开合度、眨眼频率、瞳孔收缩率等数据入手,并通过这些数据,实时地计算出驾驶员的注意力集中程度,分析驾驶员是否疲劳驾驶和及时作出安全提示。

3. 当前市面上疲劳驾驶检测的方法

通过对疲劳驾驶在不同方法下研究进展的分析,可以更清晰的认识的到当下对该问题较为有效的判定方法。根据研究对象的不同对检测方法进行分类,具体分类方法如图

基于驾驶员面部特征的检测方法是根据人在疲劳时面部变化来分析此时的精神状态。人在瞌睡、疲劳时面部表情与清醒时有着明显的区别。通过装置在车辆中的摄像头对驾驶员人脸图片的采集,利用计算机图像处理和模式识别,可以有效检测驾驶员的疲劳特征信息,比较直观的特征有:打哈欠,眨眼,低头等。

4. 相关数据集

收集的疲劳检测数据集

驾驶疲劳人脸数据库图片来源分为 3 部分,每部分均包含疲劳、轻度疲劳和非疲劳三种精神状态类别。样本数据库共 4800 张图像,其中疲劳状态有 1622 张数据样本,轻度疲劳有 1506 张数据样本,非疲劳状态有 1618 张数据样本。各部分数据结构如下:网络采集部分疲劳包含 435 张样本图片,轻度疲劳状态包含 430 张样本图片,非疲劳状态包含 432 张样本图片,共 1297 张样本数据图像;视频数据库采集部分疲劳状态包含 1037张样本图像,轻度疲劳状态包含 1030 张样本图片,非疲劳状态包含 1036 张样本图片,共 3103 张样本数据图像;

5. 基于头部姿态的驾驶疲劳检测

5.1 如何确定疲劳状态

  • 思路一:可利用姿态估计结果(如Pitch的读数)来判断是否点头及点头幅度
  • 思路二:或用鼻尖处30号点的前后移动值(或是方差,方差表示一个单位时间数据的偏离程度,程度越大,则表示发生点头动作的概率越大、点头幅度越大)

5.2 算法步骤

  • 第一步:2D人脸关键点检测;
  • 第二步:3D人脸模型匹配;
  • 第三步:求解3D点和对应2D点的转换关系;
  • 第四步:根据旋转矩阵求解欧拉角。

5.3 打瞌睡判断

头部姿态判断打瞌睡得到实时头部姿态的旋转角度过后,为头部旋转角度的3个参数Yaw,Pitch和Roll的示意图,驾驶员在打瞌睡时,显然头部会做类似于点头和倾斜的动作.而根据一般人的打瞌睡时表现出来的头部姿态,显然很少会在Yaw上有动作,而主要集中在Pitch和Roll的行为.设定参数阈值为0.3,在一个时间段内10 s内,当I PitchI≥20°或者|Rolll≥20°的时间比例超过0.3时,就认为驾驶员处于打瞌睡的状态,发出预警。

6. 基于CNN与SVM的疲劳检测方法

6.1 网络结构

将卷积神经网络作为特征提取器,支持向量机作为分类识别器并通过串联将两者结合,构造理想的深度识别模型,提高对驾驶员疲劳的识别准确率。本次课题主要以实现提高识别精度为目的,设计使用的特征提取网络结构中卷积层、池化层以及全连接层个数均为两层;在网络的结尾处添加一层支持向量机作为识别分类器;

根据对卷积神经网络的描述,这里设计使用的网络结构为:输入层、二层卷积层、二层池化层、二层全连接层以及 SVM 分类器组成的卷积神经网络对采集数据进行实验。

可将网络视为三个部分,数据输入部分即网络输入层,为特征提取部分由卷积层和池化层构成,SVM 为分类识别部分;三部分网络串联出整体识别框架,且相互间约束不大,为后续优化工作提供了条件。

6.2 疲劳图像分类训练

网络的训练由于数据量较大进行实验时将数据分为多个批次,每个批次中含有 20张图像,经过前向、反向传播后更新网络参数,训练出误差合适的网络。测试时,图像由网络进行识别,根据得到的识别正确率来验证网络的可行性。

疲劳驾驶检测需对网络进行训练,在保证网络训练准确率达到一定精度后即可对图像进行判别;疲劳驾驶网络训练算法过程如下:

Step1:网络初始化:初始化网络学习率η,在数值范围[0,1]中随机初始化网络参数权值及偏置值;设置网络结构:卷积核大小为 5×5,每批次样本数量 20;

Step2:随机选择数据库内面部表情图像并依次输入网络,网络按照送入每一批次的图像进行训练;

Step3:网络将训练得到的输出值同图像期望值进行比较,计算出输出误差;

Step4:根据反向传播原理将误差反向传播计算,并调整网络参数权值和偏置值;

Step5:判断迭代次数,达到期望的迭代步数后转到 Step6,否则转到 Step3;

Step6:将 CNN 提取到的图像特征传入 SVM 中进行训练;

Step7:结束。

6.3 训练结果

将建立起的数据集进行实验,实验中分别在每一批次下对识别正确和错误个数进行统计,然后同批次中图片数量相比,得出最终的准确率和损失率(错误率)。

模型测试结果

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号