APP下载

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

2022-05-30胡峰松程哲坤徐青云彭清舟全夏杰

湖南大学学报·自然科学版 2022年4期

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

摘要:针对交通安全中疲劳驾驶状态识别问题,使用单一的疲劳驾驶特征的方法识别率较低,本文提出一种基于面部多特征加权和的疲劳识别方法,通过人眼状态检测算法提取眼部疲劳参数,即持续闭眼时间、闭眼帧数比、眨眼频率,通过打哈欠状态检测得到打哈欠次数和打哈欠持续时间,通过头部运动状态分析得到点头频率,建立融合以上六个特征的驾驶疲劳状态检测模型来评估驾驶员的疲劳等级并进行相应的预警.实验测试数据选自NTHU驾驶员疲劳检测视频数据集的部分数据.经实验调整后,发现该方法的识别准确率较高,识别效果好.

关键词:驾驶安全;特征点定位;眨眼状态识别;多特征融合;疲劳识别

中图分类号:N39文献标志码:A

Research on Fatigue Driving State Recognition Method Based on Multi-feature Fusion

HU Fengsong,CHENG Zhekun,XU Qingyun,PENG Qingzhou,QUAN Xiajie

(College of Computer Science and Electronic Engineering,Hunan University,Changsha 41008 China)

Abstract:Aiming at the problem of fatigue driving state recognition in traffic safety,the recognition rate of using a single fatigue driving feature is low. This paper studies and proposes a fatigue recognition method based on the weighted sum of facial multi-features. The eye fatigue parameters,such as continuous eye closing time,eye closing frame ratio and blink frequency,are extracted by human eye state detection algorithm. The number and duration of yawning are obtained through yawning state detection,the nodding frequency is obtained through head motion state analysis,and a driving fatigue state detection model integrating the above six characteristics is established to evaluate the drivers fatigue level and give the corresponding early warning. The experimental test data are selected from part of the NTHU driver fatigue detection video data set. After experimental adjustment,it is found that this method has high recognition accuracy and provide a good recognition effect.

Key words:driving safety;feature point positioning;blink of an eye state recognition;multiple feature fusion;fatigue recognition

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

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

1眼部疲劳状态判断

1.1人眼定位

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

W=1.6×We,H=3×He(1)

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

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

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

1.2.1计算人眼纵横比

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

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

EAR=Mean(EARleft,EARright)(3)

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

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

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

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

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

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

计算方法如下:

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

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可以看出,提出的方法对睁闭眼状态识别的准确率较高.表3为使用不同算法的识别结果对比.

1.3眼部疲劳信息提取

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

1.4眨眼检测

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

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

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

2嘴部疲劳状态判断

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

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

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

当驾驶者处于困倦状态时,会接连不断地打哈欠,每次打哈欠嘴部持续张开时间约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)所示:

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

3头部疲劳状态判断

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

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

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

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

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

4.1疲劳状态识别算法

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

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

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

F=∑Vi×Wi,i=(ECR,MECT,BF,NF,YF)(10)

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

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

4.2实验结果分析

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

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

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

5结束语

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

参考文献

[1] LIANG Z M. A fatigue driving detection algorithm based on support vector machine [J]. Review of Computer Engineering Studies ,2019,6(4):87-92.

[2] DUA M,SHAKSHI,SINGLA R,et al. Deep CNN models-based ensemble approach to driver drowsiness detection[J]. Neural Computing and Applications,202 33(8):3155-3168.

[3] DOUDOU M,BOUABDALLAH A,BERGE-CHERFAOUI V. Driver drowsiness measurement technologies:current research,market solutions,and challenges[J]. International Journal of Intelligent Transportation Systems Research,2020,18(2):297-319.

[4]潘陈听.深度学习在视频动作识别中的应用[J].计算技术与自动化,2020,39(4):123-127.

PAN C T. Application of deep learning in video action recognition [J]. Computing Technology and Automation,2020,39(4):123127.(In Chinese)

[5] ABDULLAH M H,RAMAN K J,AZMAN A,et al.Driver fatigue detection [ C ] //Information Science and Applications (ICISA)2016.Singapore:Springer Singapore,2016:269-278.

[6] BRANDT T,STEMMERR,RAKOTONIRAINY A. Affordable visual driver monitoring system for fatigue and monotony[C]//2004

IEEE International Conference on Systems,Man and Cybernetics .The Hague,Netherlands:IEEE,2004:6451-6456.

[7] KAZEMI V,SULLIVAN J.One millisecond face alignment with an ensemble of regression trees[ C]//2014 IEEE Conference on Computer Vision and Pattern Recognition.Columbus,OH,USA:IEEE,2014:1867-1874.

[8] SOUKUPOVA T,CECH J. Real-time eye blink detection using facial landmarks[J]// Cent. Mach. Perception,Dep.Cybern. Fac.Electr. Eng. Czech Tech. Univ. Prague,2016:1-8.

[9] LEE W O,LEE E C,PARK K R. Blink detection robust to various facial poses[J].Journal of Neuroscience Methods,2010,193 (2):356-372 .

[10] PAN G,SUN L,WU Z H,et al.Eyeblink-based anti-spoofing in face recognition from a generic web camera[ C]//2007 IEEE 11th International Conference on Computer Vision.Rio de Janeiro,Brazil:IEEE,2007:1-8.

[11] WENG C H,LAI Y H,LAI S H.Driver drowsiness detection via a hierarchical temporal deep belief network[C]//Computer Vision - ACCV 2016 Workshops. 2017.

[12]黄洁媛,岑翼刚,张琳娜,等.基于卷积神经网络的人眼状态检测[J].扬州大学学报(自然科学版),2018,21(3):25-29.

HUANG J Y,CEN Y G,ZHANG L N,et al.Eye state detection based on convolutional neural network[J].Journal of Yangzhou University(Natural Science Edition),2018,21(3):25-29.(In Chinese)

[13] WU Q,SUN B X,XIE B,et al. A PERCLOS-based driver fatigue recognition application for smart vehicle space[C]//2010 Third International Symposium on Information Processing. Qingdao,China:IEEE,2010:437-441 .

[14] ABTAHI S,SHIRMOHAMMADI S,HARIRI B,et al. A yawning measurement method using embedded smart cameras[C]//2013 IEEE International Instrumentation and Measurement Technology Conference(I2MTC). Minneapolis,MN,USA:IEEE,2013:1605- 1608.

[15] ABTAHI S,OMIDVEGANEH M,SHIMOHAMMADI S,et al.YawDD:a yawning detection dataset[C]// Proceedings of the 5th ACM Multimedia Systems Conference. MN,USA:IEEE,2014:24-28.

[16]戴詩琪,曾智勇.基于深度学习的疲劳驾驶检测算法[J].计算机系统应用,2018,27(7):113-120.

DAI S Q,ZENG Z Y. Fatigue driving detection algorithm based on deep learning [J]. Computer Systems & Applications,2018,27 (7):113-120.(In Chinese)