文摘

近年来,疲劳驾驶一直是一个严重威胁交通安全,使疲劳检测的研究热点领域。研究疲劳识别改善交通安全具有重要意义。然而,现有的疲劳检测方法在检测精度和效率仍有改进空间。为了检测司机是否疲劳驾驶,本文提出一种疲劳状态识别算法。方法首先使用MTCNN(多任务卷积神经网络)来检测人脸,然后DLIB(一个开源软件库)是用于定位面部关键点提取每一帧的疲劳特征向量。多个帧的疲劳特征向量序列拼接成一个时间特性和发送到LSTM(长短期记忆)网络获得最终的疲劳特性值。实验表明,与其他方法相比,疲劳状态识别算法提出了在精度方面取得了更好的效果。该方法的平均精度的检测要点脸高达93%,运行时间是不到一半的普通DLIB方法。

1。介绍

汽车已经成为最受欢迎的交通工具。随着汽车使用的频率不断增加,交通事故也在增加。在许多交通事故,疲劳驾驶是主要原因之一。疲劳驾驶造成了许多重大交通事故,造成人民生命和财产的巨大损失。

中方有关交通法规规定,开了4个小时没有休息,疲劳驾驶。在美国的一项调查显示,超过一半的司机承认他们已经疲劳驱动(1]。当一个司机疲劳,他的浓度,判断能力,和反应灵敏度降低2]。这些因素会使交通事故更容易发生。长途驾驶是最容易疲劳驾驶,常常会导致安全事故。因此,疲劳驾驶检测技术已成为交通安全领域的研究热点。

目前,疲劳检测方法分为以下几类:基于生理信息的方法,基于车辆状态的方法,基于计算机视觉的方法,方法基于信息融合模型(3]。

生理信息主要指的是司机的呼吸频率,脉搏、血压和心率。这些参数可以快速和准确地反映一个人的身体和精神状态。基于生理信息检测方法不仅有强大的实时性能,也有精度高(4]。然而,司机需要穿相关设备在检测过程中,将影响司机的正常运行,以便实际应用是有限的。车辆的状态是指车辆的轨迹,操纵方向盘,车道偏移。这些检测方法间接分析驾驶员疲劳状态通过分析车辆信息(5]。这些方法的主要缺点是精度低。基于计算机视觉的检测方法可以快速、准确地检测驾驶员疲劳状态通过捕获和分析司机的脸实时视频。这些方法不需要司机穿的相关设备和具有良好性能的检测率和可靠性。这些方法的主要困难是面对图像处理。信息融合方法的综合利用生理信息,车辆信息和计算机视觉算法来检测驾驶员的疲劳状态。这样做的优点就是它可以提高检测的准确性,但缺点是很难建立一个信息融合模型和获取各种信息。

本文的主要贡献是提出一个新的、高精度、实时的基于计算机视觉的疲劳检测方法。我们将MTCNN和DLIB结合在一起,使我们能够提取面部特征快速和准确,然后结合多个帧的面部特征使我们疲劳的判断更准确的结果。该方法首先将视频图像帧和削减通过MTCNN面部区域,然后使用DLIB库提取眼睛的疲劳特性和嘴巴为每个图像帧。最后,疲劳特性的多个帧输入识别网络基于LSTM获得疲劳的判断结果。

近年来,许多学者和机构进行了大量的研究基于计算机视觉的疲劳驾驶检测。

D 'orazio眼睛检测等人提出的一种算法。算法利用虹膜几何信息来确定整个图像(6]。太阳等人研究了闭上眼睛和疲劳之间的关系,他们使用PERCLOS检测司机的疲劳和获得更好的检测结果7]。马等人设计了一个晚上系统检测驾驶疲劳状态。他们用深框架基于ConNN和验证它在他们自己的数据集8]。张等人创建了一个模型来解决上的太阳镜疲劳检测的影响,曾经世界宗教自由的数据集(9]。古普塔等人通过摄像头观察司机的面部特征和分类疲劳水平通过主成分分析和支持向量机(SVM)分类器10]。Junaedi和阿克巴计算PERCLOS通过检测眼睛和用它来判断疲劳。他们用YawDD数据集(11]。萨瓦河和Becerikli试图使用支持向量机算法来检测驾驶员疲劳。在他们的研究中,他们使用打哈欠,内部区域的嘴,和闪烁的数量来确定驾驶员疲劳程度的数据集(12]。医生等人设计了一个基于瞳孔光反射驾驶员状态检测系统。他们用瞳孔大小轮廓和SVM分类器来判断司机的状态(13]。李等人设计了一个基于ConNN人类行为识别分类系统。他们提出了一个基于LBP-EHMM的人脸识别算法14]。刘等人提出了一个驾驶员疲劳检测算法使用一个二束网络模型与多个面部特征。他们应用伽马校正提高图像对比来获得更好的结果(15]。Savaş和Becerikli提出了多任务对流神经网络模型来检测司机困倦、疲劳。眼睛和嘴的特征用于模型驱动程序的行为。这些特征的变化是用于监控驾驶员的疲劳16]。刘等人提出了一个疲劳检测算法的基础上,深度学习面部表情分析。他们训练面部关键点检测模型通过多个局部二进制模式和演算法分类器(17]。Ed-Doughmi等人提出了一个方法来分析和预测司机困倦,应用递归神经网络对司机的脸,在帧序列。他们使用了一个3 d卷积网络基于一个重复神经网络架构的多层模型检测司机的嗜睡(18]。

打呵欠和频繁的眨眼是最明显的司机疲劳的迹象。因此,第一个任务是确定人眼的状态和嘴的状态。通常有两种方法可以检测到眼睛和嘴。一个是直接检测眼睛和嘴的位置。另一种方法是首先找到面部区域,然后检测眼睛和嘴的位置。人类面临更多的信息,比人眼更稳定的特性。切割出表面积可以减少眼睛的测试范围的位置和避免干扰背景。

现有的人脸检测算法可以分为两类:一个是多级检测算法的基础上,提出区域。另一种是目标检测算法基于锚架(19]。前者的代表算法Faster-RCNN [20.]和MTCNN [21]。后者的代表算法S3FD [22)和SSH (23]。与传统的学习方法相比,基于深度学习检测方法不需要手动特征提取。大量的训练数据的支持下,将大大提高检测性能。

疲劳驾驶是一个连续的行为。因此,疲劳检测方法基于连续多帧肯定会比单帧的方法。多纳休提出LRCN框架(24),它可以处理连续多帧相关信息来执行行为的识别和分类。

3所示。方法

本文提出的框架如图1。我们将详细介绍每个部分的实现细节。

3.1。人脸检测

在这个任务中,我们使用MTCNN进行人脸检测,基于深度学习,可以快速高效地完成人脸检测和定位(25]。MTCNN可以检测面临的五个要点:左和右嘴角,鼻子,左派和右派的眼睛。然而,五个关键点提取面部疲劳信息不够,所以我们使用MTCNN人脸检测。MTCNN包括三个子网:建议网络(P-Net),完善网络(R-Net)和输出(O-Net)网络。MTCNN由他们(的瀑布26]。

3.1.1。P-Net

这个网络的主要任务是获取候选窗口的边界框和回归向量。候选窗口校准后,nonmaximum抑制是用于消除高度重叠的窗口。P-Net区域建议网络面临的地区。网络使用脸分类器来确定是否有在边界区域和使用回归和面部关键点的定位脸部区域的初步建议。这一部分将产出许多候选人windows和使用这些R-Net作为输入。

3.1.2。R-Net

这个网络的主要任务是消除错误的样品,继续获得边界框和回归向量。不同于之前的网络,R-Net有更完整的连接层。当测试样本通过P-Net层,窗户都得到许多候选人。该网络将过滤掉大量错误的候选窗口。最后,限定框回归和non-maximum抑制(NMS)进行选择的候选框来进一步优化预测的结果。

3.1.3。O-Net

这个网络是比前两个更复杂的网络。O-Net拥有256完全连接层。R-Net进一步过滤候选窗口后,这一层的网络还将计算面部特征点的位置。此外,该操作可以消除一些障碍物的影响,如太阳镜,帽子,和普通眼镜。

3.2。面部关键点检测

在这个阶段的任务,我们使用DLIB标签的要点脸。DLIB可以被视为一个机器学习的工具箱,旨在解决人脸关键点的提取。DLIB一旦启动,已经收到了广泛的关注,它可以应用于移动设备或大规模高性能计算环境中。像许多开源库,可以使用DLIB人员免费。我们选择DLIB图书馆,因为它可以提供培训和68年面部关键点提取工具。我们可以用它来获得68面部关键点和使用这些关键点提取疲劳特性(27]。

3.2.1之上。闭眼检测

显然,当人们的眼睛是睁着的,上下特征点之间的距离的眼睛会相对较大。闭着眼睛时,距离变得越来越小。眼睛价值计算通过使用眼睛的特征点的距离。在68个特征点在脸上,眼睛点对应37-42 43-48,分别。数据23分别显示的状态开启和关闭的眼睛。

眼睛值的计算公式如下:

分子代表的垂直特征点之间的欧几里得距离的眼睛,和分母是水平特征点之间的欧几里得距离的眼睛。两个点之间的欧氏距离计算如下: 在哪里 代表了坐标 的点一个分别和眼睛的水平和垂直的欧几里得距离可以表示如下: 在哪里 意味着A和B的平均值,然后眼睛的比例可以表示如下:

因为左右眼睛的价值计算过程是相同的,右眼的计算过程将不会重复。眼睛特征向量(EFV)组成

3.2.2。打哈欠检测

打哈欠检测类似于封闭的眼睛检测。口的要点是61 - 68。这些点组成我们的内阴唇的关键点。一些学者使用外阴唇的关键点。然而,由于个人唇差异,计算值不够准确。口值计算通过使用嘴特征点的距离,可以判断口的状态。口特征向量(MFV)只由嘴。数据45口的开启和关闭状态,分别。

水平和垂直的欧几里得距离口可以表示如下: 在哪里 意味着平均一个,B,C。

然后,长宽比的嘴可以表示如下:

3.3。疲劳识别网络

许多现有疲劳识别方法只使用单一的疲劳特性,这将导致许多误判。假设只有嘴信息是用来确定你是否累了,它可能会误判你的演讲疲劳28]。因此,疲劳检测结果通过分析一个单一的框架是不准确的。灵感来自LRCN [24),设计了两级疲劳识别方法。第一阶段是分裂的输入视频帧图片。的疲劳向量提取单帧通过MTCNN DLIB,和多个连续帧的信息组合起来形成一个时序特征向量。第二阶段如下:这些疲劳特征序列输入LSTM-based网络识别的疲劳状态。

3.3.1。时间疲劳特征序列

特征提取的任务需要提取每一帧的眼睛和嘴的状态值。因此,我们设定单帧特征向量长度为3。单帧图像的疲劳特征向量如下: 在哪里 表示状态的左眼和右眼 代表口的状态。

每一帧的特征向量 我们拼接多个帧的特征向量,和时间特性的序列 将会形成。向量长度为3,拼接帧的数量n。拼接过程如图6

如图6时间窗的长度是一个关键参数构造颞疲劳特征序列。如果长度太短,获得序列可能无法完全覆盖疲劳状态,过长时间窗口将导致序列包含过多的冗余信息。另一个重要参数是跳过帧的数量。由于相邻帧的信息几乎是一样的,没有必要每一帧中提取信息,计算这将造成很大的浪费,大大降低了效率。我们把每个视频样本两帧每秒的速度。因为疲劳过程通常不超过三秒钟,我们选择一个时间窗口的长度6和跳过帧数为2。

3.3.2。基于LSTM疲劳识别网络

LSTM精心设计避免长期依赖的问题。记住实际上是一个长期的历史信息的默认行为。LSTM各种问题上效果很好,现在广泛应用于模式识别。基于这个想法,基于LSTM疲劳识别网络应用。其结构如图7

如图7,LSTM网络的输入是一个序列的时间特性。特性的时间序列是由六个单帧特征向量。因此,LSTM也是6的长度。LSTM将返回一个概率值,代表司机的概率疲劳在当前时间窗口。当概率值超过0.5等于0.5,我们将这个值设置为1,表明驾驶员在疲劳状态。概率值小于0.5时,我们将这个值设置为0,这意味着当前期间司机清醒。只要一段时间被认为是疲劳,我们将把这个视频作为疲劳样品。

4所示。实验

4.1。数据集

在实验部分,我们选择了YawDD数据集和自建数据库来验证该方法的性能。

以下4.4.1。YawDD视频数据集

收集的数据集是阿布et al。29日),在一个静态环境中被捕。收集器收集大量的志愿者。志愿者组织是由司机不同的皮肤颜色、性别和年龄。他们做不同的动作根据指令正常开车,说,打呵欠。每个志愿者拍摄多个视频。当司机穿纯黑色太阳镜,人眼无法识别司机的眼睛状况。因此,我们选择了100个视频,志愿者不穿纯黑色太阳镜,包括50名男性和50名女性进行测试。一个数据集的一部分,如图8

4.1.2。自建数据集

YawDD数据集,自然有些司机在视频不打哈欠,但打开嘴巴打呵欠的行动。为了尽可能地捕获最自然的疲劳状态,我们疲劳的视频都是采集样本后,志愿者下班。工作很长一段时间之后,大多数人都更容易疲劳。我们不能保证每个样本捕捉自然打哈欠的动作,但我们拍摄的行为符合最自然的疲劳。我们的算法进行了测试的行为往往与实际疲劳和疲劳有关。第二,黄色人YawDD数据集的比例很低,主要是白人和印第安人。添加一个自建数据集可以帮助减少实验结果的差异造成的种族不同的皮肤颜色。

自建数据集是我们实验小组收集的。我们收集了10名志愿者和每个被击中两个视频:一个是正常的视频,另一个是一个疲劳的视频;其中包括关闭眼睛,说话,笑,打呵欠。这些视频有稍微不同的方向,嘴形状,以及他们是否戴眼镜,他们收集了不同照明条件下。数据集显示在图的一部分9

4.2。实验结果和分析

这个实验的平台是Windows 10,国米的处理器(R) CoreTM i7 - 9700 k的主要频率3.6 GHZ CPU,内存是8 GB。Python编程语言。在实验中,我们把视频数据集分割成图像和使用MTCNN检测和作物图像。裁剪脸部图像后,DLIB图书馆是用来标记要点脸的眼睛和嘴的状态值计算。通过计算眼睛和嘴巴的长宽比,我们可以执行关闭眼睛检测和打哈欠检测。为了验证该算法的性能,我们把我们的算法与关键检测算法近年来提出的。实验结果如表所示12

12分别表明,我们的模型检测的精度和其他YawDD数据集和自建数据集的方法。可以看出,我们的模型明显优于其它算法。本文提出的方法有eye-mouth标记率高于其他方法。与Viola-Jones算法相比,我们的方法具有更好的检测结果的脸,眼睛,嘴巴。第二,YawDD数据集上的检测结果略低于自建数据集。这可能是由于小数量的视频在我们自建数据集。在实际的检测结果没有多少区别。接下来,我们比较不同的方法之间的检测时间。

34分别显示我们的模型的检测时间和其他YawDD数据集和自建数据集的方法。Viola-Jones算法使用积分图像计算其Haar-like特性,大大减少计算量。然而,该算法最初是用来检测额脸图像,它不是很健壮的侧面图像的检测。因此,其检测精度很低。头部姿态估计算法主要利用DLIB库来检测面部关键点。本文提出的方法首先使用MTCNN提取的脸,然后使用DLIB库来检测要点的脸。在检测的过程中关键点的眼睛和嘴,头部姿态估计算法使用DLIB探测整个画面,这就增加了数量的计算和检出率低。它可以从两个表中的数据,我们的方法比Viola-Jones算法延长检测时间,但是我们的平均检测精度高于11% - -15% Viola-Jones算法。与头部姿态估计算法相比,检测时间减少一半,和准确性是增加了8% - -10%。最后,我们比较疲劳检测的准确性。

56分别显示了疲劳检测我们的模型精度和其他YawDD数据集和自建数据集的方法。本研究选择的视频正常司机驾驶,说话,笑,打呵欠的数据集和分析驾驶员疲劳的结果通过眼睛和嘴的状态。我们使用MTCNN + DLIB DLIB + LSTM,头部姿态估计方法和Viola-Jones方法比较结果的方法。当使用DLIB + LSTM检测疲劳状态,直接DLIB检测整个画面,这不仅需要很长时间来检测,也有较低的精度。面部关键点的检测精度直接影响的判断疲劳状态。当我们使用MTCNN + DLIB检测疲劳状态,我们只有依靠单帧的疲劳特征值来确定疲劳状态,但疲劳是一个连续时间的行为。所以,这种检测方法的准确性显著低于我们的方法。除了这两个方法,我们也选择两种方法与我们的方法性能优越。它可以看到从表中的结果56我们的方法的准确率达到了88% - -90%。

5。结论

我们提出了一个疲劳检测算法基于面部关键点和短期记忆。因为面对包含更多的功能比眼睛和嘴,更容易被检测出来。所以,我们第一次获得了脸的形象和标志着眼睛和嘴的关键点在面对形象。这可以减少眼睛和嘴的范围也测试和避免干扰背景区域的图像。疲劳是一个持续的行为。很容易做出错误判断如果结果只依赖于单帧的眼睛和嘴特性,所以我们一个框架的疲劳特性值分割成一个时间序列和寄给LSTM网络疲劳特性。虽然我们的方法优于其他方法在面部关键点的提取精度和最终的疲劳测定准确性,检测在光线不足的性能还需要改进。我们的下一步是研究疲劳驾驶检测复杂的照明环境和关注疲劳测试的挑战在光线不足的情况下,如强光和弱光。这些应用场景更实用和更困难。当汽车进入一个隧道或晚上,我们怎么能及时识别司机的疲劳驾驶行为吗? This direction is also one of the current researches focuses in the field of fatigue driving detection.

数据可用性

使用的数据来支持本研究的发现可以从相应的作者。

的利益冲突

作者宣称没有利益冲突有关的出版。

确认

这项工作是支持部分由中国国家自然科学基金批准号。61872134和61872134下,部分科技项目下的湖南省交通部门批准号201935年长沙市科技计划的一部分在格兰特nos. kh200519 kq2004021,部分由国家重点研发计划批准号2017 yfc1703306,部分学校级别项目批准号下的湖南中医药大学2018 gl01。