一种基于人脸关键点定位的面部疲劳检测方法与流程

文档序号:15272887发布日期:2018-08-28 22:39阅读:248来源:国知局

本发明属于人脸识别及判断技术领域,更为具体地讲,涉及一种基于人脸关键点定位的面部疲劳检测方法。



背景技术:

疲劳检测是通过检测人体各种疲劳特征,及时发现疲劳状态并给出预警信号,涉及到许多学科的知识,是一个十分具有研究价值与现实价值的课题。驾驶员疲劳检测目前有较多的研究方法,按检测类别大致分为基于驾驶员生理信号的检测、基于驾驶员的操作行为的检测、基于车辆状态信息的检测和基于驾驶员生理反应的检测等方法。其中,基于驾驶员视觉图像的非接触式的检测具有非常大的潜力。但是现有的检测基于图像的驾驶员疲劳检测方法精确性不够,实时性不强,特别是当驾驶员头部发生移动的时候会出现检测结果有较大误差。

利用adaboost算法训练分类器对驾驶员图像进行人脸检测,获得人脸矩形框,在矩形框内进行stasm特征点定位,识别眼睛特征点,获取大致的眼睛矩形范围图像是比较常见的检测方法,但是该方法对训练样本要求比较高,眼睛嘴巴关键点需要分开计算,耗时较长,并且精度不高,对后续的疲劳检测计算有一定的影响,而且当头部有所偏移旋转,会造成判断结果有较大误差。

本发明公开了一种基于人脸关键点检测的疲劳检测系统。该系统搭建成本低,对于人脸左右的转动也具有良好的鲁棒性,并且实时性良好,驾驶员处于疲劳状态能够及时发出提醒,可以将需要的眼睛和嘴巴关键点准确快速的检测出来。在判断是否疲劳的时候,本发明采用几何方法进行判断,保证了准确性的同时,也提高了速度。



技术实现要素:

本发明的目的在于克服现有技术的不足,提供一种基于人脸关键点定位的面部疲劳检测方法,根据人脸关键点的相对位置,利用几何方法来判断是否眨眼和打哈欠等比较明显的疲劳特征。

为实现上述发明目的,本发明一种基于人脸关键点定位的面部疲劳检测方法,其特征在于,包括以下步骤:

(1)、提取单位时间t内驾驶员驾驶时包含整个面部表情的视频流;

(2)、获取每一帧中人脸图像的n=32个人脸关键点

(2.1)、利用回归方法实现当前人脸图像中的人脸对齐

设第k个人脸关键点在正常人脸形状上的坐标为在当前人脸图像中的坐标为k=1,2,…,n;通过回归的方法,将回归到上实现人脸对齐;

其中,表示第k个人脸关键点在正常人脸形状上所对应的sift特征,h()表示非线性特征提取函数,表示第k个人脸关键点在正常人脸形状上的坐标位置;δxk表示第k个人脸关键点在正常人脸形状上和当前人脸图像上的坐标差值;||||2表示求二范数;

(2.2)、在对齐后的当前人脸图像中提取人脸关键点

其中,φk-1=h(d(xk-1))是上一组人脸关键点提取出的sift特征,h、jh分别是xk-1的海森矩阵和雅可比矩阵;

(2.3)、sdm方法使用梯度下降向量rk和重缩放因子bk更新xk,使xk成功收敛为得到第k个人脸关键点坐标;

xk=xk-1+rk-1φk-1+bk-1

同理,按照上述方法依次提取出当前帧中剩余n-1人脸关键点坐标;

(2.4)、将32个人脸关键点用向量表示为n=(n1,n2,…,n32)

(3)、对提取的n=32个人脸关键点进行标注,其中,将n1~n6个人脸关键点标注为左眼关键点,将n7~n12个人脸关键点标注为右眼关键点,将n13~n32个人脸关键点标注为嘴部关键点;

(4)、根据标准三维模型与二维投影之间的关系,将倾斜的头像进行矫正

其中,(α,β,γ)表示标准三维模型中人脸姿态的三个旋转角度,qk表示当前人脸图像中第k个人脸关键点的位置向量,pk表示标准三维模型中第k个人脸关键点的位置向量,r代表旋转矩阵,τ为空间偏移向量,c为伸缩因子;

其中,旋转矩阵r三个矩阵相乘得到:

(5)、根据左右眼关键点之间距离判断是否闭合

(5.1)、根据左右眼关键点的坐标位置,分别计算出左、右眼两个眼角关键点间的距离d1、d2,以及左、右眼四个眼睑关键点间的距离,其中,左眼中上下对称的两组眼睑关键点间的距离为d3、d4,右眼中上下对称的两组眼睑关键点间的距离为d5、d6;

(5.2)、判断左眼是否闭合:用左眼中眼角关键点间距离d1除以眼睑关键点间距离d3、d4之和,得到比值δd1,再将δd1与左眼闭合阈值t1=3.3比较,如果δd1>t1,则表明左眼闭合,反正则表示左眼未闭合;

(5.3)、判断右眼是否闭合:用右眼中眼角关键点间距离d2除以眼睑关键点间距离d5、d6之和,得到比值δd2,再将δd2与右眼闭合阈值t2=3.4比较,如果δd1>t2,则表明右眼闭合,反正则表示右眼未闭合;

(6)、根据嘴部关键点之间距离判断是否闭合

在嘴部关键点中,选取上、下嘴唇正中间各一个关键点,并计算这两个关键点间距离d;再将距离d与嘴部开合度阈值ζ=40比较,如果d>ζ,表示嘴部张开程度大于正常情况,反正则表示嘴部闭合或正常张嘴;

(7)、重复步骤(2)~(6),直到处理完单位时间t内视频流中的所有帧图像;

(8)、利用peclos方法来检测是否处于疲劳状态

在单位时间t内,以每一分钟为单位,利用peclos方法统计一分钟内驾驶员左右眼睛闭合次数,以及眼睛闭合时所占的时间比例,如果每分钟内左右眼睛闭合次数在10次以内,且眼睛闭合时所占的时间比例在4s以内,则判定该驾驶员在本分钟为正常眨眼,否则判定该驾驶员在本分钟内为疲劳驾驶;如果单位时间t内疲劳驾驶的分钟数大于阈值σ,则判定该驾驶员在该时间段t内为疲劳状态;

利用peclos方法统计一分钟内驾驶员嘴部张开程度大于正常情况的次数,以及嘴部张开程度大于正常情况时所占的时间比例,如果嘴部张开程度大于正常情况的次数在2次以内,且嘴部张开程度大于正常情况时所占的时间比例在2s以内,则判定该驾驶员在本分钟为正常张嘴,否则判定该驾驶员在本分钟内为疲劳驾驶;如果单位时间t内疲劳驾驶的分钟数大于阈值ρ,则判定该驾驶员在该时间段t内为疲劳状态。

本发明的发明目的是这样实现的:

本发明一种基于人脸关键点定位的面部疲劳检测方法,先提取单位时间内驾驶员驾驶时包含整个面部表情的视频流,再对视频流中的每一帧图像进行处理,通过每一帧图像中人脸关键点来判断每一帧图像中是否存在眼睛闭合或嘴部张开过大等情况,最后利用利用peclos方法来检测单位时间内视频流中出现眼睛闭合或嘴部张开过大的次数,从而判断驾驶员是否出现疲劳驾驶,具有非常好的扩展性和灵活性。

同时,本发明一种基于人脸关键点定位的面部疲劳检测方法还具有以下有益效果:

(1)、通过使用sdm算法,直接获得了需要的眼睛和嘴部关键点,与adaboost算法比较更适用与驾驶员检测,速度也有比较明显的提高;

(2)、通过检测出的关键点之间的相对位置关系来判断是否疲劳,与检测瞳孔是否被眼皮遮挡等方法比较,具有十分明显的优势,可以省去很多算法步骤,降低了计算复杂度,优化了系统,几何方法同时也提高了计算的速度和准确性;

(3)、通过眼睛检测与嘴巴检测结合,可以从不同的角度来判断驾驶员状态,不再单一的检测驾驶员一个特征,为后续的发展提供了可能性与方向。

附图说明

图1是本发明基于人脸关键点定位的面部疲劳检测方法流程图;

图2是人脸关键点分布图;

图3是人眼二维示意图。

具体实施方式

下面结合附图对本发明的具体实施方式进行描述,以便本领域的技术人员更好地理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本发明的主要内容时,这些描述在这里将被忽略。

实施例

图1是本发明基于人脸关键点定位的面部疲劳检测方法流程图。

在本实施例中,如图1所示,本发明一种基于人脸关键点定位的面部疲劳检测方法,包括以下步骤:

s1、利用摄像头实时监控驾驶员,使驾驶员的整个头部区域均处中监控范围内,然后提取以10分钟为一个单位,驾驶员驾驶时包含整个面部表情的视频流。

s2、获取每一帧中人脸图像的32个人脸关键点

常用的面部特征提取算法采用参数化表观模型(pams)表达面部特征,该方法在人为标定数据集上使用主成分分析(pca)方法建立目标模型。但这种方法需要优化许多参数(50-60个),这也就导致其很容易收敛到局部最优解,无法得到准确的结果,而且pams仅仅对于训练样本中的特殊对象具有良好的效果,推广到一般性的对象时,检测鲁棒性不佳,最后,由于大多数据集包含的样本的局限性,pams只能对对称模型进行建模,无法解决非对称表情状态下的问题(如睁一只眼,闭一只眼)。

基于以上的限制,本发明使用superviseddesentmethod(sdm)方法,该方法使用非参数形状模型,对非训练样本的情形具有较好的泛化能力。,下面我们以其中一帧图像为例,进行具体的分析。

s2.1、利用回归方法实现当前人脸图像中的人脸对齐

设第k个人脸关键点在正常人脸形状上的坐标为在当前人脸图像中的坐标为k=1,2,…,32;通过回归的方法,将回归到上实现人脸对齐;

其中,表示第k个人脸关键点在正常人脸形状上所对应的sift特征,h()表示非线性特征提取函数,表示第k个人脸关键点在正常人脸形状上的坐标位置;δxk表示第k个人脸关键点在正常人脸形状上和当前人脸图像上的坐标差值;||||2表示求二范数;

s2.2、在对齐后的当前人脸图像中提取人脸关键点

其中,φk-1=h(d(xk-1))是上一组人脸关键点提取出的sift特征,h、jh分别是xk-1的海森矩阵和雅可比矩阵;

s2.3、sdm方法使用梯度下降向量rk和重缩放因子bk更新xk,使xk成功收敛为得到第k个人脸关键点坐标;

xk=xk-1+rk-1φk-1+bk-1

同理,按照上述方法依次提取出当前帧中剩余n-1人脸关键点坐标;

如图2所示,我们最终得到32个人脸关键点,从1到32对其进行标号。

s2.4、将32个人脸关键点用向量表示为n=(n1,n2,…,n32),其中,n1~n32分别一一对应图2中的1~32。

s3、对提取的32个人脸关键点进行标注,如图2所示,其中,将n1~n6个人脸关键点标注为左眼关键点,将n7~n12个人脸关键点标注为右眼关键点,将n13~n32个人脸关键点标注为嘴部关键点;

其中,在左眼关键点中,n1、n4为左眼两眼角关键点,n2、n3为左眼上眼睑两关键点,n5、n6为左眼下眼睑两关键点,n2、n3和n5、n6关于n1、n4连成的直线对称;

在右眼关键点中,n7、n10为右眼两眼角关键点,n8、n9为右眼上眼睑两关键点,n11、n12为右眼下眼睑两关键点,n8、n9和n11、n12关于n7、n10连成的直线对称;

在嘴部关键点中,n13、n22为嘴角两关键点,n14~n21为上嘴唇8个关键点,n23~n32为下嘴唇10个关键点,上下嘴唇中的关键点等距离均匀分布。

s4、根据标准三维模型与二维投影之间的关系,将倾斜的头像进行矫正;

检测到人脸之后,人脸位置可能会侧向一边,这样会影响后续检测步骤的准确性,因此需要对检测到的图像进行旋转平移来保证人脸正对前方。

其中,(α,β,γ)表示标准三维模型中人脸姿态的三个旋转角度,qk表示当前人脸图像中第k个人脸关键点的位置向量,pk表示标准三维模型中第k个人脸关键点的位置向量,r代表旋转矩阵,τ为空间偏移向量,c为伸缩因子;

在本实施例中,qk为二维向量,pk为三维向量,因此需要通过伸缩因子c将三维向量转换为二维向量。

其中,旋转矩阵r三个矩阵相乘得到:

s5、根据左右眼关键点之间距离判断是否闭合

s5.1、如图3所示,根据左右眼关键点的坐标位置,分别计算出左、右眼两个眼角关键点间的距离d1、d2,以及左、右眼四个眼睑关键点间的距离,其中,左眼中上下对称的两组眼睑关键点间的距离为d3、d4,右眼中上下对称的两组眼睑关键点间的距离为d5、d6;如图3中n2和n5间的距离为d3,n3和n6间的距离为d4;

s5.2、判断左眼是否闭合:用左眼中眼角关键点间距离d1除以眼睑关键点间距离d3、d4之和,得到比值δd1,再将δd1与左眼闭合阈值t1=3.3比较,如果δd1>t1,则表明左眼闭合,反正则表示左眼未闭合;

s5.3、判断右眼是否闭合:用右眼中眼角关键点间距离d2除以眼睑关键点间距离d5、d6之和,得到比值δd2,再将δd2与右眼闭合阈值t2=3.4比较,如果δd1>t2,则表明右眼闭合,反正则表示右眼未闭合;

s6、根据嘴部关键点之间距离判断是否闭合

在嘴部关键点中,选取上、下嘴唇正中间各一个关键点,这两个关键点的连线使得左右眼关于这条线对称,如图2所示,选取关键点16和31,并计算这两个关键点间距离d;再将距离d与嘴部开合度阈值ζ=40比较,如果d>ζ,表示嘴部张开程度大于正常情况,反正则表示嘴部闭合或正常张嘴;

s7、重复步骤s2~s6,直到处理完10分钟内视频流中的所有帧图像;

s8、利用peclos方法来检测是否处于疲劳状态

在10分钟内,以每一分钟为单位,利用peclos方法统计一分钟内驾驶员左右眼睛闭合次数,以及眼睛闭合时所占的时间比例,其中,眼睛闭合时所占的时间比例=检测时间段内眼睛闭合帧数/检测时间段内总帧数×100%;

如果每分钟内左右眼睛闭合次数在10次以内,且眼睛闭合时所占的时间比例在4s以内,则判定该驾驶员在本分钟为正常眨眼,否则判定该驾驶员在本分钟内为疲劳驾驶;如果10分钟内疲劳驾驶的分钟数大于阈值σ,则判定该驾驶员在该10分钟内为疲劳状态;

利用peclos方法统计一分钟内驾驶员嘴部张开程度大于正常情况的次数,以及嘴部张开程度大于正常情况时所占的时间比例,其中,嘴部张开程度大于正常情况时所占的时间比例=检测时间段内嘴部张开程度大于正常情况时的帧数/检测时间段内总帧数×100%;

如果嘴部张开程度大于正常情况的次数在2次以内,且嘴部张开程度大于正常情况时所占的时间比例在2s以内,则判定该驾驶员在本分钟为正常张嘴,否则判定该驾驶员在本分钟内为疲劳驾驶;如果10分钟内疲劳驾驶的分钟数大于阈值ρ,则判定该驾驶员在该10分钟内为疲劳状态。

尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。

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