一种基于深度学习的疲劳检测方法、系统和计算机设备与流程

文档序号:17091138发布日期:2019-03-13 23:29阅读:405来源:国知局
一种基于深度学习的疲劳检测方法、系统和计算机设备与流程

本发明涉及汽车驾驶辅助终端领域,具体涉及一种基于深度学习的疲劳检测方法、系统和计算机设备。



背景技术:

随着社会的快速发展,道路上交通车辆呈现井喷式增长,交通事故也频繁发生。发生交通事故最主要的原因是司机疲劳驾驶,在行车过程中反应过慢。所以,实时检测司机开车时的疲劳状态是非常重要的,及时的提醒司机往往能够大大减少交通事故的发生。目前疲劳检测的方法也是多种多样的,就视觉识别方法来说有以下几种:

(1)纯图像算法处理的疲劳检测算法:adaboost人脸检测算法检测人脸;对人脸区域进行水平投影和垂直投影定位人眼;根据大津法取阈值二值化眼睛区域;最后,通过二值化之后的图像判断眼睛的是张开还是闭合。优点:速度很快,在良好的光照条件有比较好的识别效果;缺点:无法适应复杂的光照条件,所以应用场景单一。

(2)传统的机器学习疲劳检测算法:利用adaboost或者jda算法进行人脸检测,然后使用lbp特征进行人脸特征点定位并且跟踪,跟踪人脸特征点可以找到人眼位置,将人眼区域输进去支持向量机里面分类判断疲劳状态。优点:速度也是较快,模型鲁棒性增强;缺点:无法区分眼睛张开程度,对于小眼睛情况全部认为是闭眼。

(3)深度学习的疲劳检测算法:利用mtcnn检测人脸,同时利用mtcnn输出的人脸特征点定位眼睛,将定位出来的眼睛输入深度学习模型通过直接分类判断疲劳。优点是:人脸定位准确,疲劳分类准确;缺点:mtcnn人脸检测速度比较慢,分类结果不能实时反映眼睛张开状态。



技术实现要素:

本发明的主要目的在于提出一种基于深度学习的疲劳检测方法、系统和计算机设备,能够使得识别速度更快,识别效果更好。

本发明采用如下技术方案:

一方面,本发明提供一种基于深度学习的疲劳检测方法,包括:

获取当前帧视频流图片;

通过基于第一深度学习模型的人脸跟踪算法提取当前帧视频流图片的人脸位置信息和人眼位置信息;

基于所述人眼位置信息,通过基于第二深度学习模型的眼睛状态识别算法提取眼睛上下边缘特征点landmark的位置信息;所述人脸位置信息包括人脸框的位置信息;所述人眼位置信息包括每只眼睛左右两个眼角的特征点位置信息;

根据眼睛上下边缘特征点landmark的位置信息计算眼睛张开程度,判断出疲劳状态。

优选的,所述通过基于第一深度学习模型的人脸跟踪算法获得当前帧视频流图片的人脸位置信息和人眼位置信息,具体包括:

步骤a1,判断当前帧视频流图片的前一帧是否检测有检测到人脸;如果没有,使用mtcnn算法检测当前帧视频流图片的人脸位置并保存,不再执行其他步骤;否则,执行步骤a2;

步骤a2,将前一帧检测到的人脸位置扩大预设倍数后作为当前帧人脸框图并归一化到指定尺寸;

步骤a3,通过第一深度学习模型识别出当前帧人脸框图是否包括人脸;如果包括,执行步骤a4;

步骤a4,通过第一深度学习模型提取当前帧人脸框图的人脸位置信息;并通过第一深度学习模型提取当前帧人脸框图的人眼位置信息。

优选的,所述第一深度学习模型输出3个全连层,分别为fc1、fc2和fc3;其中,fc1全连接层输出2个神经元用于人脸分类,fc2输出4个神经元用于人脸框位置提取,fc3输出8个神经元用于人眼位置提取。

优选的,所述第一深度学习模型的损失函数如下:

l=l1+l2+l3

l1表示人脸分类使用的交叉熵损失函数,表示如下:

其中,yi表示分类0或者1的标签,0表示不是人脸,1表示为人脸;pi表示模型预测的概率值;

l2表示人脸框位置提取使用的欧式损失函数,表示如下:

其中,分别表示当前预测人脸框的4个值与当前人脸框标签的4个值;

l3表示人眼位置提取使用的欧式损失函数,表示如下:

其中,分别表示当前预测人眼位置点的8个值与当前人眼位置点标签的8个值。

优选的,所述通过基于第二深度学习模型的眼睛状态识别算法提取眼睛上下边缘特征点landmark的位置信息,具体包括:

步骤b1,基于提取的人眼位置,以左右两个眼角特征点间的距离为眼睛尺寸,将一只眼睛的中心扩大预设倍数后作为当前帧人眼框图并归一化到指定尺寸;

步骤b2,通过第二深度学习模型识别出当前帧人眼框图是否包括人眼;如果包括,执行步骤b3;

步骤b3,通过第二深度学习模型提取当前帧人眼框图的眼睛上下边缘特征点landmark的位置信息;其中,眼睛上下边缘特征点landmark包括左右两个眼角的特征点、上眼睑边缘特征点和下眼睑边缘特征点;所述上眼睑和下眼睑的边缘特征点点数相同且呈对称分布。

优选的,所述第二深度学习模型输出2个全连层,分别为fc4和fc5;其中,fc4全连接层输出2个神经元用于人眼分类;fc5输出预设个神经元用于眼睛上下边缘特征点landmark位置提取。

优选的,所述第二深度学习模型的损失函数如下:

l_eye=l1_eye+l2_eye

l1_eye表示人眼分类使用的交叉熵损失函数,表示如下:

其中,yi_eye表示分类0、1或-1的标签,0表示不是人眼,1表示是人眼,-1表示部分人眼;pi_eye表示模型预测的概率值;

l2_eye表示眼睛上下边缘特征点landmark位置提取使用的欧式损失函数,表示如下:

其中,分别表示当前预测眼睛上下边缘特征点landmark的若干个值与当前眼睛上下边缘特征点landmark标签的若干个值;m_eye表示预设的眼睛上下边缘特征点landmark个数。

优选的,所述根据眼睛上下边缘特征点landmark的位置信息计算眼睛张开程度,判断出疲劳状态,具体包括:

根据眼睛上下边缘特征点landmark的位置信息计算眼睛张开程度;

根据眼睛张开程度,使用perclos中p80准则判断司机是否疲劳。

第二方面,本发明提供一种基于深度学习的疲劳检测系统,包括:

图片获取模块,用于获取当前帧视频流图片;

人脸跟踪及位置提取模块,用于通过基于第一深度学习模型的人脸跟踪算法提取当前帧视频流图片的人脸位置信息和人眼位置信息;所述人脸位置信息包括人脸框的位置信息;所述人眼位置信息包括每只眼睛左右两个眼角的特征点位置信息;

人眼特征点提取模块,用于基于所述人眼位置信息,通过基于第二深度学习模型的眼睛状态识别算法提取眼睛上下边缘特征点landmark的位置信息;

疲劳分析模块,用于根据眼睛上下边缘特征点landmark的位置信息计算眼睛张开程度,判断出当前帧是否为疲劳状态。

第三方面,本发明提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现所述的疲劳检测方法。

与现有技术相比,本发明的有益效果如下:

(1)本发明一种基于深度学习的疲劳检测方法、系统和计算机设备,能够在嵌入式ram平台上实现疲劳状态检测,且在白天复杂环境或者黑夜不同光线下有很高的识别率;

(2)本发明一种基于深度学习的疲劳检测方法、系统和计算机设备,基于第一深度学习模型对mtcnn检测到的人脸进行快速跟踪,跟踪目的是提高每帧人脸检测速度,同时输出跟踪获得当前帧的人脸位置和人眼位置;

(3)本发明一种基于深度学习的疲劳检测方法、系统和计算机设备,基于第二深度学习模型输出眼睛图像的分数(是否眼睛)以及眼睛上下边缘特征点landmark的位置,通过眼睛分数和landmark计算眼睛张开程度;并根据眼睛张开程度,使用perclos中p80准则判断司机是否疲劳。

上述说明仅是本发明技术方案的概述,为了能够更清楚地了解本发明的技术手段,从而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下列举本发明的具体实施方式。

根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述及其他目的、优点和特征。

附图说明

图1为本发明实施例的基于深度学习的疲劳检测方法的流程图;

图2为本发明实施例的基于深度学习的疲劳检测方法前向预测的整体流程图;

图3为本发明实施例的第一深度学习模型的训练流程图;

图4为本发明实施例的第一深度学习模型训练数据标注图;

图5为本发明实施例的第二深度学习模型的训练流程图;

图6为本发明实施例的第二深度学习模型训练数据标注图;

图7为本发明实施例的基于深度学习的疲劳检测系统结构框图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步的详细描述。

参见图1所示,本实施例一种基于深度学习的疲劳检测方法,包括:

s101,获取当前帧视频流图片;

s102,通过基于第一深度学习模型的人脸跟踪算法提取当前帧视频流图片的人脸位置信息和人眼位置信息;所述人脸位置信息包括人脸框的位置信息;所述人眼位置信息包括每只眼睛左右两个眼角的特征点位置信息;

s103,基于所述人眼位置信息,通过基于第二深度学习模型的眼睛状态识别算法提取眼睛上下边缘特征点landmark的位置信息;

s104,根据眼睛上下边缘特征点landmark的位置信息计算眼睛张开程度,判断出疲劳状态。

具体的,参见图2所示,基于深度学习的疲劳检测方法具体包括:

s201,获取当前帧视频流图片。

s202,判断当前帧图片的前一帧是否检测到人脸。

s203,如果前一帧没有检测到人脸,使用mtcnn算法全图检测人脸,并且保存当前帧人脸位置,不做后面疲劳检测处理;所述mtcnn算法使用现有的算法,本实施例不做具体描述。

步骤204,如果当前帧的前一帧已经检测到人脸,将之前检测到的人脸位置扩大1.5倍并且尺寸归一化到64*64,使用第一深度学习模型进行跟踪,快速输出新的人脸位置,如果跟踪到人脸,保存下当前人脸位置信息和人眼位置信息。参见图4所示,所述人脸位置信息包括人脸框的位置信息;所述人眼位置信息包括每只眼睛左右两个眼角的特征点位置信息。

步骤205,根据获得的每只眼睛左右两个眼角的特征点位置信息,以一只眼睛左右两个眼角的特征点距离为眼睛的尺寸,将以一只眼睛的中心扩大1.5倍并且尺寸归一化到64*64的正方形作为眼睛的区域。

步骤206,将提取的眼睛区域输入第二深度学习模型预测,输出当前的区域是否是眼睛分数,如果不是眼睛则不做疲劳检测,如果是眼睛则根据预测的眼睛上下边缘特征点landmark位置计算人眼张开程度。

具体的,是否是眼睛的分类结果是通过眼睛分数来体现的,因此,只有第二深度学习模型识别出的眼睛分数达到一定的值后才认为识别到了眼睛。

参见图6所示,眼睛上下边缘特征点landmark包括左右两个眼角的特征点、上眼睑边缘特征点和下眼睑边缘特征点;所述上眼睑和下眼睑的边缘特征点点数相同且呈对称分布。具体的,可以根据对称的上眼睑特征点和下眼睑的边缘特征点做距离计算来判断人眼张开程度。当结果距离大时则认为张开,当结果距离很小则认为闭合,判断张开和闭合的阈值可以由实际测试获得。

步骤207,根据perclos中p80的准则判断司机是否疲劳,统计2.5s内司机眼睛瞳孔超过80%被遮住的帧数占总帧数的比例是否大于0.4;如果大于,则认为疲劳;否则,判断为不疲劳。

进一步的,参见图3所示,所述第一深度学习模型的训练流程包括:

s301,收集人脸图片并标注人脸框和左右两个眼角的特征点。

具体的,收集各种应用场景(白天,夜晚,强光,暗光,逆光和正常光照)的人脸红外图片,并且标注人脸框位置face(x,y,w,h)和每只左右两个眼角的特征点,标注标准如4所示。其中,人脸框为正方形,人脸框用于跟踪,左右两个眼角的特征点用于定位眼睛位置。

s302,样本和标签的预处理。

具体的,在视频流中不同帧之间人脸位置会发生改变,如果帧率快的话人脸上下左右变化偏移量的不大可以使用跟踪算法修正人脸位置以及预测左右两个眼角的特征点位置。以人脸中心区域扩大人脸的1.5倍作为标准框,然后以标准框为基准类似训练mtcnn数据生成方式一样随机生成正负样本。最终处理出来的图片尺寸归一化到64*64,标签分为3部分,分类标签0或者1,目标框回归标签为scale_x,scale_y,scale_w,scale_h(其中,scale_x表示人脸框左上角点的x坐标,scale_y表示人脸框左上角点的y坐标,scale_w表示人脸框左上角点向右的宽度大小,scale_h表示人脸框左上角点向下的高度发小),两只眼睛左右两个眼角的特征点的定位标签为scale_point1_x,scale_point1_y,scale_point2_x,scale_point2_y,scale_point3_x,scale_point3_y,scale_point4_x,scale_point4_y,分别表示两只眼睛左右两个眼角的特征点的x和y坐标值。带scale标识的是经过编码过后的标签,具体的处理方式可以参考mtcnn的数据处理方式。

s303,样本的训练。

本实施例所使用的第一深度学习网络基本架构是基于lightcnn架构作精简的,网络输入大小是64*64。图片经过网络提取特征后输出为3个全连层fc1、fc2和fc3,fc1输出2个神经元用于人脸分类,fc2输出4个神经元用于人脸框位置提取,fc3输出8个神经元用于两只眼睛左右两个眼角的特征点的提取。

训练时,人脸分类使用交叉熵损失函数计算,表示如下:

其中,yi表示分类0或者1的标签,0表示不是人脸,1表示为人脸;pi是网络预测出来fc1经过caffe框架softmax层计算后输出的概率值。

人脸框框位置提取的损失使用欧式损失函数计算,表示如下:

其中,分别表示当前预测人脸框的4个值与当前人脸框标签的4个值。

两只眼睛左右两个眼角的特征点的提取也是使用欧式函数计算,表示如下:

其中,分别表示当前预测人眼位置点的8个值与当前人眼位置点标签的8个值。

最终整个网络的损失函数:l=l1+l2+l3,学习网络参数目的是使网络输出与标签之间的总损失l达到最小。

进一步的,参见图5所示,所述第二深度学习模型的训练流程包括:

s501,收集眼睛图片并标注眼睛上下边缘特征点landmark。

具体的,以1:1的比例收集张开眼睛和闭合眼睛的图片,为了增加泛化能力,需要收集各种光照环境的图片。

参见图6所示,本实施例之中,眼睛上下边缘特征点landmark标注的方式是人眼8点信息(当然也可以更多或更少个点,但上眼睑和下眼睑的边缘特征点点数需相同且呈对称分布,且必须包括人眼左右两个角点),并且以人眼左右两个角点为基准,计算这两点的距离然后以人眼中心扩大1.5倍的框当做人眼框eye(x,y,w,h);

s502,样本和标签的预处理。

具体的,样本和标签的预处理训练样本的生成方式与训练mtcnn中训练onet的方式相似,使用onet样本生成的方式主要为了进行样本增强。具体为在摄像头拍摄到的图片上随机生成一定大小的候选区域roi,当候选区域与人眼眶区域的iou>0.65认为是正样本,iou<0.3认为是负样本,0.4<=iou<=0.65认为是部分样本。正样本的分类标签为1表示是眼睛,负样本的分类标签为0表示不是眼睛,部分样本的标签为-1表示部分眼睛;其中正样本和部分样本的8点特征点标签为:scale_point1_x,scale_point1_y,scale_point2_x,scale_point2_y,scale_point3_x,scale_point3_y,scale_point4_x,scale_point4_y,scale_point5_x,scale_point5_y,scale_point6_x,scale_point6_y,scale_point7_x,scale_point7_y,scale_point8_x,scale_point8_y,分别图6中8个特征点的x和y坐标值。带scale标识的是经过编码过后的标签,具体的处理方式可以参考mtcnn的数据处理方式。

s503,样本的训练。

具体的,本实施例所使用的第二深度学习网络基本架构也是基于lightcnn架构作精简的,网络的输入是64*64,其中,fc4全连接层输出2个神经元用于人眼分类;fc5输出预设个神经元用于眼睛上下边缘特征点landmark位置提取。

l1_eye表示人眼分类使用的交叉熵损失函数,表示如下:

其中,yi_eye表示分类0、1或-1的标签,0表示不是人眼,1表示是人眼,-1表示部分人眼;pi_eye表示模型预测的概率值。需要说明的是,-1的标签仅用于样本处理时做标注,样本训练时并不作为分类结果输出,即fc4全连接层输出2个神经元的分类结果为0和1,0表示不是人眼,1表示是人眼。

l2_eye表示眼睛上下边缘特征点landmark位置提取使用的欧式损失函数,表示如下:

其中,分别表示当前预测眼睛上下边缘特征点landmark的若干个值与当前眼睛上下边缘特征点landmark标签的若干个值;m_eye表示预设的眼睛上下边缘特征点landmark个数。

最终整个网络的损失函数:l_eye=l1_eye+l2_eye,学习网络参数目的是使网络输出与标签之间的总损失l_eye达到最小。

参见图7所示,本实施例一种基于深度学习的疲劳检测系统,包括:

图片获取模块701,用于获取当前帧视频流图片;

人脸跟踪及位置提取模块702,用于通过基于第一深度学习模型的人脸跟踪算法提取当前帧视频流图片的人脸位置信息和人眼位置信息;所述人脸位置信息包括人脸框的位置信息;所述人眼位置信息包括每只眼睛左右两个眼角的特征点位置信息;

人眼特征点提取模块703,用于基于所述人眼位置信息,通过基于第二深度学习模型的眼睛状态识别算法提取眼睛上下边缘特征点landmark的位置信息;

疲劳分析模块704,用于根据眼睛上下边缘特征点landmark的位置信息计算眼睛张开程度,判断出当前帧是否为疲劳状态。

各模块具体的实现方法与一种基于深度学习的疲劳检测方法各步骤的具体实现一致,此处不再重复描述。

本实施例还公开了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现所述疲劳检测方法。

本发明的基于第一深度学习模型的人脸跟踪算法,在前一帧已经检测到人脸的基础下,利用之前的人脸位置实现跟踪,不需要全图重新检测人脸,大大加快了人脸检测的速度,最终经过优化的第一深度学习深度学习模型,使用腾讯的ncnn框架在处理频率1ghz的四核芯片上使用单核处理达到20ms左右的跟踪速度。跟踪带来的益处:每一帧全图检测人脸速度达不到实时,利用深度学习跟踪效果比传统的跟踪算法效果更好,同时相当于检测人脸速度达到50帧每秒。

本发明的基于第二深度学习模型的眼睛状态识别算法,通过第二深度学习模型输出的眼睛上下边缘的特征点定位,然后通过特征点的对应的位置关系,根据眼睛上下边缘的特征点计算眼睛的张开程度。数据丰富前提下,通过深度学习模型定位的特征点更加准确,而且应对各种复杂环境人眼landmark定位有更好的鲁棒性。相比于使用分类方式判断眼睛是否闭合的方法,利用landmark可以实时计算眼睛的张开程度,实时检测眼睛张开变化趋势,可以获得更好的判断效果。所述第二深度学习模型在上面所提到的处理芯片中预测一次的速度是30ms左右。所以,正常情况下使用第一深度学习模型和第二深度学习模型识别一张图片的总和时间大约在50ms左右,而且使用深度学习跟踪和识别疲劳获得更精确的识别结果。

上述仅为本发明的具体实施方式,但本发明的设计构思并不局限于此,凡利用此构思对本发明进行非实质性的改动,均应属于侵犯本发明保护范围的行为。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1