基于多特征融合的疲劳驾驶状态识别方法研究

2022-05-06 06:06胡峰松程哲坤徐青云彭清舟全夏杰
关键词:人眼特征参数差值

胡峰松,程哲坤,徐青云,彭清舟,全夏杰

(湖南大学信息科学与工程学院,湖南长沙 410082)

随着汽车数量的迅猛增长,汽车在给人们生活带来快捷与便利的同时,频繁的道路交通事故也带来了惨重的经济损失,人民的生命安全受到了巨大的威胁,疲劳驾驶已成为全球一个严重而亟待解决的交通安全问题[1].研究表明,应用机器学习、模式识别等技术对疲劳驾驶状态检测识别及预警的方法效果较好[2-3],能有效预防道路交通事故的发生,疲劳驾驶检测技术已逐步从研究领域转移到工业应用领域并不断发展完善[4-5].

疲劳驾驶识别研究领域目前还存在很多难点,在不同的场景下如戴太阳镜、光照明暗等都会影响识别的准确率[4].疲劳驾驶状态信息包括眼部疲劳信息、嘴部疲劳信息和头部疲劳信息,识别方法可分为单一特征疲劳信息识别和多特征疲劳信息识别,而单一特征疲劳信息识别的准确率有待提高[6].本文主要根据多特征疲劳信息来进行疲劳驾驶状态识别.首先,基于SVM的睁闭眼状态识别算法判断眼部疲劳状态,然后通过嘴部高宽比和点头频率判断嘴部和头部疲劳状态,最后融合多特征进行疲劳驾驶状态识别.

1 眼部疲劳状态判断

1.1 人眼定位

使用由Kazemi 和Sullivan 提出的基于级联回归树的人脸关键点定位算法进行人眼定位[7].如图1(a)中人脸特征点模型所示,根据图中关键点序号可以知道每个特征点的位置,如左眼的序号为36~41,右眼的序号为42~47.根据眼部特征点的序号,提取的左、右眼部区域如图1(b)所示的左、右长方形方框区域.其定位计算规则如下:

图1 基于特征点的人眼定位示意图Fig.1 Eye location schemes based on feature points

式中:We为人眼特征点36 到39 之间的水平距离,He为人眼特征点37到41之间和38到40之间垂直距离的平均值,而W和H为定位的眼部区域的宽和高.

1.2 基于SVM的睁闭眼状态识别

为了能更为精准地识别人眼睁闭状态,使用两个特征:人眼纵横比和人眼黑色像素累积差值作为支持向量机SVM 分类器的输入,使用SVM 来识别图像中人眼的状态.

1.2.1 计算人眼纵横比

为了能准确快速识别眼睛的睁闭状态,我们计算眼睛的高度和宽度之间的纵横比(eye aspect ra⁃tio,EAR).睁眼时的纵横比在个体之间的差异基本上很小,并且对于图像的均匀缩放和面部的旋转是完全不变的[8].图2为左眼在睁开与闭合状态下检测到的6个关键点,眼睛纵横比计算式为:

图2 人眼6个关键点示意图Fig.2 Schemes of the six key points of human eyes

为了精确地识别眼部状态,取双眼EAR 的平均值作为眼睛睁闭识别的特征:

计算视频图像连续200 帧左、右眼的纵横比,得到的结果如图3 所示.当发生眨眼时,EAR 值迅速减小接近于0,然后慢慢增加至接近于正常情况下睁眼时的EAR值.

图3 EAR均值结果图Fig.3 EAR average results

1.2.2 基于自适应阈值计算人眼黑色像素累积差值

定位人眼区域,然后选取局部自适应阈值算法对人眼图像进行二值化,经过形态学开闭操作和中值滤波处理后,能较好地呈现眼睛轮廓及细节,表1为右眼不同情况下的二值图像.

表1 不同情况下的人眼二值图像Tab.1 Binary images of human eyes under different conditions

当人眼闭合时,尽管可能会受睫毛和眼睑等暗区域的影响,但是最大暗部在瞳孔区域不会出现.所以与睁眼相比,当眼睛闭合时,二值图像中的黑色像素的数量会急剧减少.但是,由于黑色像素的数量会随着人眼与摄像头之间距离的改变而改变,当距离变大时,在图像中眼睛区域缩小,因此黑色像素的数量减少.

为了减少人眼与摄像头距离因素的影响,将人眼图像归一为同一尺寸,计算连续两帧之间的黑色像素差.一般在两个以上的连续帧中可以观察到闭眼的动作,因此当连续两帧的差值小于0 时,开始累计差值.人眼一次眨眼过程中,黑色像素数量变化如图4(a)所示.根据图4 可以看到:第54 帧由于差值大于0而没有累积差值,导致其被错误地识别为睁眼状态.

图4 黑色像素累积差值Fig.4 Cumulative difference of black pixels

根据文献[9]提出的方法,使用自适应阈值的方法累积差值.规定“状态0”和“状态1”两种状态,当人眼区域二值化图像的黑色像素的差值小于0 时,从“状态0”变为“状态1”.在“状态1”时,若差值小于阈值T(t),累积差值并保持状态不变;若差值大于或等于阈值T(t),不累积差值且状态变为“状态0”.请参考图5.

图5 自适应阈值黑色像素累积差值算法流程Fig.5 Black pixel adaptive threshold cumulative difference algorithm process

计算方法如下:

式中:N(t)是第t帧的黑色像素数量,ΔN(t)为第t帧与第t-1 帧之间的差值,D(t-1)为“状态1”中在第t-1 帧的累积差值,α为0 到1 之间的恒定值,最优α值通过检测睁闭眼的准确性确定.由第t-1 帧的累积差值D(t-1)得到第t帧的自适应阈值T(t).使用自适应阈值可正确地将第54 帧识别为闭眼.图6 为使用自适应阈值计算人眼二值图像的黑色像素累积差值的结果图,可以看出该方法能较好地识别闭眼状态.

图6 自适应黑色像素累积差值Fig.6 Adaptive black pixel cumulative difference

1.2.3 睁闭眼状态测试

从ZJU眨眼视频数据集[10]的80个视频中选取睁眼样本2 000张,闭眼样本700张;从NTHU 驾驶员疲劳检测视频数据集[11]中选取睁眼样本2 000张,闭眼样本1 300张;同时自采集睁眼样本2 000张、闭眼样本4 000 张,总共采集睁、闭眼图像各6 000 张.对人眼纵横比、黑色像素累积差值这两类特征参数数据进行归一化处理.在进行分类器训练前,需要选择合适的核函数,当特征与分类标签之间的关系为非线性时,选择RBF 核函数,故本文采用RBF 核函数进行模型训练.

从样本数据中选择8 000组数据进行训练,剩余的4 000组数据对睁闭眼状态进行测试,其测试结果如表2所示.

表2 睁闭眼状态检测结果Tab.2 Test results of open state and shut-down state

从表2 可以看出,提出的方法对睁闭眼状态识别的准确率较高.表3 为使用不同算法的识别结果对比.

表3 不同算法识别结果对比Tab.3 Identified results comparison of different algorithms

1.3 眼部疲劳信息提取

当人处于疲劳状态时,会出现眨眼频率增加、闭眼时间增长、打哈欠等现象,严重时甚至会出现打瞌睡的现象.研究发现,人在正常情况下每分钟眨眼10次到25 次不等,眨眼一次眼睛闭合持续的时间约为0.2 s左右.根据这一现象,本文选取最能表现疲劳状态的三个眼部指标作为眼部疲劳特征参数:基于PERCLOS 准则[13]的ECR(闭眼帧数所占比)、MECT(最长持续闭眼时间)和BF(眨眼频率).

1.4 眨眼检测

由图3 的EAR 值计算结果可知,一次眨眼过程中,EAR 值先减小直至接近于零,然后逐渐增大至正常睁眼状态值.设E为EAR 阈值,K为判断眨眼的帧数阈值.当EAR 小于阈值E时,眼睛开始闭合;当其值接近于正常睁眼状态值即大于E时,眼睛完全睁开.我们统计该过程中EAR

为了寻找最优阈值E和K,我们在ZJU 眨眼数据集上进行实验.ZJU中80个视频包含四种主题:未戴眼镜的正面视频、戴薄边框眼镜的正面视频、戴黑框眼镜的正面视频及未戴眼镜向上仰角的视频,每个主题20 组视频,每个视频中眨眼次数1 到6 次不等,数据集中总共包含255 次眨眼.图7 为不同EAR 阈值E值与连续视频帧数阈值K值下眨眼检测结果的精确率.根据图7 的结果,我们在提取眼睛疲劳参数眨眼频率时,选择计算EAR 小于阈值E=0.24 时的连续帧数.当EAR 大于该阈值时,若连续帧数也大于阈值K=3,则记一次眨眼.计算一个时间周期内眨眼的次数,即为眨眼频率.

图7 EAR阈值、帧数K值寻优结果Fig.7 The optimization results under different EAR threshold and frame number K values

以60 s 为一个时间周期,对周期内人眼状态进行统计分析,得到眼部疲劳特征统计值.以0 表示清醒状态,1 表示疲劳状态,记最长闭眼时间为MECT,闭眼帧数所占比为ECR,眨眼次数为BF.经实验及参考相关文献,得出三个眼部疲劳特征值之间的疲劳阈值如式(6)所示.

2 嘴部疲劳状态判断

嘴部检测定位的方法很多.基于级联回归树(Ensemble of Regression Tress,ERT)算法[10]的人脸关键点检测中,嘴部的位置序号为48~67.因此,我们可以根据该序号来定位嘴部并识别其状态.

本文主要通过计算嘴部高宽比(MAR)来判断嘴部状态.为了使MAR 值更为精准,如图8 所示,标记的P1~P10用来计算MAR 的10个特征点,欧氏距离的计算公式可参照式(7).

图8 嘴部10个关键点示意图Fig.8 Diagram of the mouth’s ten key points

我们知道,正常驾驶情况下,嘴部处于闭合状态;当与他人说话时,嘴唇处于开合不断变化状态,且张开幅度不大;而当处于疲劳打哈欠状态时,嘴巴张开幅度很大且持续时间较长[14].为了判断嘴部状态如讲话、打哈欠等,使用基于高宽比的方法在样本上进行实验,实验结果如图9 所示.由图9 可知:当MAR ≤0.4 时,嘴巴是闭合的;当0.4 0.8 时,处于打哈欠状态.根据上述分析,可以使用MAR 作为特征来识别嘴部状态.

图9 嘴部MAR检测结果图Fig.9 MAR test results in the mouth

当驾驶者处于困倦状态时,会接连不断地打哈欠,每次打哈欠嘴部持续张开时间约6 s,此时就需要停车休息,不宜继续驾驶.根据该现象,我们可以检测一个时间周期内司机打哈欠的次数,并据此来评估其是否疲劳.为了正确识别打哈欠状态,我们在YawDD 数据集[15]上进行实验,不断改变MAR 的阈值和连续帧数值,寻找最优高宽比MAR 的阈值M,并定义MAR 值高于阈值M的连续帧数为打哈欠的阈值K.找到最优阈值M=0.7 和K=15 后,在数据集上检测打哈欠,准确率约为95.6%.当嘴部高宽比MAR 连续15帧大于0.7时,我们则记一次打哈欠.图10中的t1到t4的时间差即为一次哈欠时间,当嘴部张开程度超过阈值时,我们检测是否打哈欠.以0 表示正常状态,1表示疲劳状态,嘴部疲劳状态取值条件如式(8)所示:

图10 嘴部状态示意图Fig.10 The mouth state diagram

式中:YF 表示打哈欠的次数,YT 为打一次哈欠持续的时间,阈值取N=3,t=4 s.

3 头部疲劳状态判断

驾驶员驾驶过程中的点头频率的检测是对头部运动分析的关键,也是疲劳驾驶检测的重要因素.当一个时间周期内点头频率超过某个阈值时,可以认为驾驶员处于疲劳状态.

依据定位到的眼部特征点位置信息,从实时性和准确性出发,本文提出了一种基于二维垂直方向的点头频率特征分析算法.取定位的双眼的中心点连线的中点作为头部位置检测点,根据该检测点在垂直方向上坐标y随时间的变化情况,计算一个时间周期内的点头频率.图11 为驾驶员打瞌睡时的y值与帧数之间的关系图.

图11 头部运动分析图Fig.11 Head motion analysis diagram

算法过程如下:当视频帧数较多时,图像可近似拟合为曲线,计算曲线极值点,极值点可将曲线分成许多单调的曲线.经实验得出,统计一个时间周期内单调递减段极小值点y值大于初始位置50 像素的极值点个数,即为点头次数NF;若曲线没有极小值点,则判断曲线是否单调递减,若为单调递减,则点头次数NF为1,否则为0.NF取值如式(9)所示:

若一个时间周期内点头次数NF 大于某个阈值,则NF 疲劳特征参数值为1,否则为0.经实验和相关文献可知:取N=10时,疲劳状态检测准确率最高.

4 基于多特征加权和的疲劳状态识别

4.1 疲劳状态识别算法

依据单一的疲劳特征来评估疲劳状态,其准确率要比将多个疲劳特征融合进行识别的方法低[16].因此,根据上述眼部、嘴部及头部的疲劳特征参数,本文提出了基于多特征加权和的疲劳等级识别算法,算法具体步骤如下.

将眼部、嘴部及头部的五个疲劳特征指标各自取权重值,经实验,其权重取值如表4所示.

表4 各疲劳特征参数的权重取值Tab.4 The weight of each fatigue characteristic parameter values

根据疲劳参数加权后值的不同,将状态分为三个等级:清醒、疲劳、重度疲劳.特征参数加权和计算如式(10)所示:

5个特征参数值分别乘以其对应的权重值,求和后便得到特征参数加权疲劳值F.

综合特征参数的权重值和疲劳等级,将特征参数加权值与疲劳等级相对应,根据对应关系便能判断出驾驶员的驾驶状态.对应关系如表5所示.

表5 疲劳值与疲劳等级对应关系表Tab.6 The relationship between the values of fatigue and fatigue level

4.2 实验结果分析

为了验证研究方法的性能,本文的实验在64 位操作系统的PC 上进行,采用python 编程语言,并结合Opencv 2.4.13 和Dlib18.17 函数库进行分析.实验测试数据来自NTHU 驾驶员疲劳检测视频数据集的部分数据.该测试数据中有5 种不同场景:白天戴眼镜、戴太阳镜和不戴眼镜,晚上戴眼镜和不戴眼镜.每个场景中选取5 组数据,每组数据包含清醒、疲劳和重度疲劳状态.

本文以60 s 为一个时间周期检测驾驶员疲劳状态,表6 为在不同场景下疲劳识别的结果,表7 为白天戴眼镜情况下各特征参数的计算结果、疲劳值与对应的疲劳识别结果.

表6 不同环境下疲劳识别结果Tab.6 Fatigue identification results under different environment

表7 白天戴眼镜疲劳识别结果Tab.7 Fatigue recognition results with glasses in the daytime

由表6 可以看出,本文提出的疲劳识别方法在白天的识别准确率比夜晚要好,在戴太阳镜时识别的精度较低,但是就整体而言,识别效果较好.

5 结束语

本文提出了一种融合三类疲劳参数指标加权和的疲劳识别方法,建立了疲劳识别系统,根据相应的比重进行加权计算疲劳值来判断驾驶者的疲劳程度.实验表明:本文的疲劳识别算法准确率较高,且效果较好.本文研究的算法,虽然在一定程度上能进行疲劳识别,但在太阳光很强和夜晚时的识别率还不理想.今后的研究可针对不同光照环境进行不同的光照处理,将该识别方法扩展到适用于更多的驾驶环境.另外,因为该识别方法只根据驾驶员的面部特征进行疲劳识别,未能考虑车辆特征如车辆偏移、车速、转达向盘转向等特征参数的影响,如何融合这些特征参数进一步提高识别的准确率,是下一步的研究方向.

猜你喜欢
人眼特征参数差值
基于视频图像序列的船用雷达目标检测和目标特征参数提取
田志强
数字日照计和暗筒式日照计资料对比分析
红细胞压积与白蛋白差值在继发性腹腔感染患者病程中的变化
融合LPCC和MFCC的支持向量机OSAHS鼾声识别
关注
闪瞎人眼的,还有唇
说话人识别特征参数MFCC的提取与分析
看人,星光璀璨缭人眼
人眼的视力为何达不到3.0?