程荣标,方向尧,曾思伟,姜大志
基于Adaboost和回归树集合技术的疲劳识别研究
程荣标,方向尧,曾思伟,姜大志
VDT(Visual Display Terminal)作业是指用计算机视觉显示终端进行各类信息处理工作的总称.VDT作业人群的疲劳识别是维护工作健康的重要手段.本文使用普通摄像头获取人脸数据,用Adaboost人脸识别与基于回归树集合的人脸特征标记准确定位眼睛和嘴部,最后用统计学的方法对用户的工作状态进行实时识别.与传统方法相比,本文提出的方法在准确度和实时性方面有了较大的提升,为疲劳诊断提供一条可借鉴的方案.
VDT,疲劳监测,Adaboost,回归树集合
VDT(Visual Display Terminal)作业是指用计算机视觉显示终端进行各类信息处理工作的总称.VDT的作业方式虽大幅提升生产效率,但易激增工作压力,诱发过度疲劳,甚至过劳死.《中国青年报》报道:我国每年过劳死人数达60万人,位列全球第一,每天约超过1 600人因劳累引发疾病而死亡.对VDT作业者的疲劳状态进行识别,从而进行及时的干预与调节,避免过度疲劳,具有良好的理论与应用价值.
国内对疲劳识领域取得不少的成果.例如,赵琳采用基于积分投影变换的方法定位眼睛和嘴部位置,然后进行驾驶员的疲劳驾驶识别[1].申琳采用人脸的结构特征和经验知识提取眼睛和嘴巴的位置块图像[2].朱婧采用积分投影函数与混合投影函数相结合的方法来定位眼睛位置[3].提取出眼睛和嘴部位置后再对眼睛和嘴巴的状态进行疲劳判断.
从上述的研究来看,对疲劳状态的研究一般都面向疲劳驾驶研究,而对疲劳状态的检测,则取决于人的眼睛和嘴部信息.这就给后续的研究带来两点,其实,一是拓展疲劳检测的外延,二是提升技术手段,提高眼睛与嘴部识别的效率.本文拓展疲劳检测的外延,通过摄像头采集VDT作业者的眼睛与嘴部的信息,分析其状态变化从而对VDT作业者的疲劳状态作出判断.具体方式是:首先是通过Adaboost算法对人脸进行检测,然后通过Vahid Kazemi和Josephine Sullivan提出的基于回归树集合的方法获得出眼睛和嘴部的标记点[4].通过标记点计算出眼睑的高度和嘴部的大小,采取PERCLOS方法[5]对VDT作业者进行疲劳判定.
面向VDT作业者的疲劳实时识别系统的实现,对算法的运行效率提出了更高的要求,本文采取的方法是对摄像头采集到的图像进行压缩,在保证检测人脸的精确度下提升人脸的检测速度来达到实时的目的,对整个系统的实时性、可用性来说具有重要的意义.本文融合Adaboost和回归树集合技术,提出一种新的混合算法,对眼睛和嘴巴的定位准确,具有较好的鲁棒性和实时性,可以快速而准确地提取眼睛和嘴部信息,同时能适应一定的环境复杂度.
因为Adaboost和回归树集合算法在识别率和处理速度方面能够很好地满足本系统对识别正确率和实时性的要求,所以本系统分别采用这两个算法进行人脸和人脸关键点检测.
1.1 Adaboost算法
Schapire提出了Boosting算法,它是一种用来提高弱分类算法准确度的方法[6].后来,Freund和Robert E.Schapire根据Boosting算法,提出了Adaboost算法,它是自适应的Boosting算法[7].其基本思想是利用大量的分类能力一般的弱分类器,通过某种方法叠加起来,形成一个分类能力比较强的强分类器.之后再将这些强分类器进行级联,形成级联分类器.
理论上,如果弱分类器的分类正确率要比随机判断的正确率要高,当弱分类器的个数无穷多时,强分类器的正确率将趋于100%.在人脸识别方面,Adaboost算法正是因为这点而有着很高的识别率.除此之外,此算法使用了积分图对人脸特征进行计算以及使用级联的思想构造分类器,这有效提高识别的速率.
Adaboost算法流程如下:
(1)初始化,给每个训练样本赋予相同的权值:1/N
(2)迭代,循环下面4个步骤,m=1,2,…,n(m表示迭代的次数)
1)基本分类器:
2)计算训练数据集上的分类误差率:
3)计算基本分类器在最终分类器中所占的权重:
4)计算样本的新的权值分步,用于下一轮迭代:
1.2 回归树集合算法
Vahid Kazemi和Josephine Sullivan提出了一种用于人脸关键点检测算法,Ensemble of Regression Trees(这里称作回归树集合).该算法的处理速度极快(单人人脸关键点检测需时约为1ms),在实时性和高质量检测方面具有很大的优势.除此之外,它还能处理训练集中部分关键点标定缺失的情况.回归树集合算法是一种基于树的级联回归器,其主要思想描述如下:
(1)级联的回归器
假设S(shape)是图像I中包含p个面部标记的坐标矢量,t是级联序号,是S的现行估计值,对于每个回归器rt(·,·),下一级的估计值为Sˆ(t+1),则:
(2)训练级联回归器
1)初始化
(3)基于树的回归器
回归函数rt的核心是在梯度上升的过程中适应残余目标.其过程如下:
1)形状不变分割试验
假设u和v分别是图像中两个像素的位置,ku是mean shape中离u最近的面部标记,定义其到u的偏移为:
在mean shape中u的近似值为
其中si和Ri是用于将shape转化为mean shape的矩阵,目的是使下面的值最小化:
v的偏移v′也是同样的定义.
2)选择分割结点
对于每棵回归树,随机生成候选分割集θ′s,然后采用贪心策略选择θ*,通过候选分割集,可以最小化平方误差.如果 是一个节点的候选值,这相当于最小化
3)特征选取
这里提供一种指数级的优先选取法使距离更接近的点更容易选取:
(4)处理关键点标定缺失
式(20)可以更新为
其中Wi是一个含有向量(wi1,wi1,wi2,wi2,…,wip,wip)T的对角矩阵.如果wi,p为0,代表面部标记缺失,如果wi,p为1,代表存在.
2.1 实验描述
本文采用的硬件设备为:英特尔第三代酷睿i5-3230M,@2.60GHz双核处理器,Nvidia GeForce GT 740M显卡,12G内存.为了检验Adaboost和回归树集合算法相结合之后的准确性和实时性,本研究使用由丹麦技术大学所提供的人脸数据库对不同的算法进行眼睛和嘴部的精确度测试,随后使用相应的算法对单位视频流进行疲劳判别.实验程序的总体流程图如图1所示,该实验先从摄像头获取的视频流中进行帧提取,然后对每一帧图像进行预处理、人脸识别和特征提取,最后根据提取的特征进行疲劳判别并作出疲劳预警.实验结果表明,使用Adaboost和回归树集合算法对眼睛和嘴部进行精确定位计算,不但拥有单独使用回归树集合算法对眼睛和嘴部进行精确定位计算的准确性,而且拥有单独使用Adaboost的实时性,从而为疲劳判别的准确性和实时性提供了进一步保障.
2.2 眼睛和嘴部的疲劳信息提取
2.2.1 PERCLOS值原理
PERCLOS是 PercentEye Closure的缩写,指在一段时间内眼睛闭合所占时间的百分比.该方法是卡内基梅隆大学经过大量的实验和反复的研究后提出的,通过计算PERCLOS值的方法来检测疲劳状态[6].
对于眼睛闭合的判断,通常有三种标准:
(1)P70:以眼睑遮住瞳孔的面积至少超过70%计为眼睛闭合,统计闭合时间的百分比作为标准;(2)P80:以眼睑遮住瞳孔的面积至少超过80%计为眼睛闭合,统计闭合时间的百分比作为标准;(3)EM:以眼睑遮住瞳孔的面积至少超过一半计为眼睛闭合,统计闭合时间的百分比作为标准;
根据美国高速公路安全管理局(National Highway Traffic Safety Administration,NHTSA)的实验显示,P80最能够接近于真实的疲劳发展状态.本文采用P80作为眼睛闭合的判断.
图1 实验总体流程图
下列公式(22)给出了PERCLOS的计算方法:
在公式中:fp表示PERCLOS值;t1表示眼睛睁开程度减小到80%的时刻;t2表示眼睛睁开程度减小到20%的时刻;t3是眼睛再次睁开到20%的时刻;t4是眼睛再次睁开到80%的时刻.
在图像视频序列中,帧数与时间相对应,故将时间比换算为帧数的百分比:
在公式(23)中,h代表眼睛闭合帧数,H代表总帧数.
2.2.2 打哈欠次数
在一般情况下,VDT工作者的嘴部处于闭合状态;当VDT工作者交谈时,其嘴部处于半张开状态,而不会一直处于大幅度张开的状态.如果VDT工作者出现疲劳并开始打哈欠时,嘴部会在一定时间内处于大幅度的张开状态,并不断重复这个过程.如果嘴部处在大幅度的张开状态一段时间,我们可以认为VDT工作者打了一个哈欠.
因为在图像视频序列中,帧数和时间相对应.所以在实验当中,我们记录VDT工作者的嘴部张开状态的最大程度M,然后在规定时间内,通过检测嘴部张开程度超过80%M的帧数来记录一次打哈欠的情况.
2.2.3 眨眼频率
眨眼频率即单位时间内的眨眼次数,在正常情况下,人的眨眼次数为15~20次/分钟,每次眨眼耗时0.25~0.3 s.VDT工作者在疲劳时,眨眼的频率会发生变化.
在实验中,实时记录1 min内眼睛高度的极大值和极小值,一次极大值和极小值的出现记为一次眨眼.设Sblink为1 min内的眨眼次数,则眨眼频率为(单位:次/s):
当VDT工作者的眨眼频率大于或小于一定阈值时,可视为进入疲劳状态.
2.3 疲劳判别
2.3.1 测眨眼原理
本文计算作业者眼睑高度,眨眼时眼睑高度呈现大-小-大的变化,即在一帧视频的前后邻域表现为极小值,在眼睑高度为平均高度的80%以下时判断.而邻域的取值基于:人眼平均眨眼时间为0.2~0.3 s内,视频帧率为25/s,所以取整后可取5或6帧作为一次眨眼过程.
2.3.2 疲劳判别过程
疲劳判定流程如图2所示,首先收集30 s为一段分析视频,判断PERCLOS值是否大于30%,如果是,则判断为疲劳.若PERCLOS小于30%,则看眨眼频率是否大于15次/30 s,如果是,则判断为疲劳.若眨眼频率小于15次/30 s,则看平均眼睑高度是否为眼睛最大高度的80%,如果是,则判断为疲劳,若否,则视为清醒.
3.1 疲劳判别结果
表1所示为其中10段视频的实验结果,分别计算fp值、fblink值、平均眼睑高度以此来判断实验者的疲劳状态,同时与实验者的
实际疲劳状态进行对比.实验结果表明,本疲劳判断方法的准确率为90%.
表1 疲劳判别实验结果表
3.2 特征数据集分析与对比
为了验证本文提出的算法对人眼睛和嘴巴部分识别的准确性,本文使用不同的算法对丹麦大学所提供的人脸数据库(http://www2.imm.dtu.dk/~aam/)中40个人的6种不同角度共240张图片提取人眼高度和嘴部面积,其中算法包括单独使用Adaboost、单独使用回归树集合、Adaboost+回归树集合算法.然后将3种算法所测出来的特征数据和人脸数据库的准确数据进行对比.另外,在3种算法运行过程中,记录其计算每一帧所耗费的时间,然后对比3种算法的运行时间.
图3为用折线图的方式绘制出了丹麦技术大学人脸数据库的准确数据和分别使用3种算法对其测试的结果.从折线图可以看出,单独使用Adaboost算法可以定位到眼睛,但是几乎无法精确刻画出眼睛的高度;单独使用回归树集合算法可以定位到眼睛,同时可以准确刻画出眼睛的高度,总体平均准确率达84.17%;而使用Adaboost结合回归树集合算法,不但可以定位到眼睛,而且刻画眼睛高度的总体平均准确率可达到84.24%.
图4为分别使用3种算法计算丹麦技术大学人脸数据库每张人脸图片的嘴部面积后绘制的折线图.从图中可以发现,单独使用Adaboost算法虽然定位到了嘴部区域,但是无法精确刻画出嘴部面积;单独使用回归树集合算法可以定位到嘴部区域,其刻画嘴部面积的准确率可达到76.13%;而使用Adaboost算法结合回归树集合算法,不但可以定位到嘴部区域,而且其刻画嘴部面积的准确率可到达81.20%.
图3 眼睛高度图
图5为记录分别使用3种算法对丹麦技术大学人脸数据库的每张人脸图片计算眼睛高度和嘴部面积所耗费的时间.由结果可以发现,单独使用回归树集合算法计算每张人脸图片所花费的时间平均约为322.08 ms;单独使用Adaboost算法每张耗费的时间平均约为266.29 ms;而使用Adaboost算法结合回归树集合算法,其计算每张图片所花费的时间平均约为176.88 ms.
从实验的结果表明,使用Adaboost结合回归树集合算法,其测试眼睛高度和嘴部面积的准确率可以达到单独使用回归树集合算法的精度,甚至更高.另外,其检测一张图片所花费的时间最短,比单独使用Adaboost算法每张图片少约89.41 ms,比单独使用回归树集合算法每张图片少约145.20 ms.可以说明,使用Adaboost结合回归树集合算法检测人脸眼睛高度和嘴部面积,不但比单独使用Adaboost算法具有更好的实时性,而且准确性可以与单独使用回归树集合算法相媲美.
图4 嘴部面积图
图5 运行时间图
本研究针对VDT工作者的工作环境特点,提取工作者眼睛和嘴部的特征进行疲劳识别.因此,眼睛和嘴部识别的精确度决定了疲劳识别的准确性.基于这种环境下,算法不但必须具有实时性,而且需要较高的准确性.本文采用Adaboost算法和回归树集合算法相结合.使对VDT工作者进行疲劳判别的过程中,不但具有Adaboost算法的实时性,而且还具有回归树集合算法的准确性.实验结果表明,将Adaboost算法和回归树集合算法相结合来进行疲劳判别,是可行、有效的.不足之处在于我们只对眼睛和嘴部信息进行判别,那么难免会产生误差.有机会我们将与医学界人士一起进一步探究出引起人疲劳的真正原因,这将给疲劳预测带来新机.
随着科技的进步和人们对自已的身体健康的更加注重,相信疲劳识别的准确度和实时性会在将来有不少的提高.单靠眼睛和嘴部的信息也存在准确率不高的缺点,所以我们还将寻找其他有效的非接触特征进行实验研究,比如VDT作业者的心率变化等.
参考文献
[1]赵琳.基于人脸识别的疲劳驾驶监控方法研究[D].长春:长春工业大学,2015.
[2]申琳.基于视频图像的驾驶员疲劳检测[D].天津:天津大学,2012.
[3]朱婧.基于视频图像信息提取的疲劳驾驶检测技术研究[D].南京:南京理工大学,2009.
[4]KAZEMI V,SULLIVAN J.One millisecond face alignment with an ensemble of regression trees[C]//IEEE Conference on Computer Vision and Pattern Reagnitirn.IEEE,2014:1867-1874.
[5]苑玮琦,滕红艳.眼睛疲劳程度判定方法研究[J].计算机工程与应用,2013,49(17):199-203.
[6]SCHAPIRE R E.The strength ofweak learnability[J].Machine Learning,1990,5(2):197-227.
[7]FREUND Y,SCHAPIRE R E.A decision-theoretic generalization of on-line learning and an application to boosting[C]//European Conference on Computational Learning Theory.Springer-Verlag,1995:119-139.
Research on Fatigue Identification Based on Adaboost and Ensemble of Regression Trees
CHENG Rongbiao,FANG Xiangyao,ZENG Siwei,JIANG Dazhi
(Department of Computer,Shantou University,Shantou 515063,Guangdong,China)
VDT(Visual Display Terminal)operation is the general term that describes the use of computer visual display terminal to do different kinds of information processing works.Fatigue recognition is an important means of maintaining a healthy work for VDT workers.In this paper, an ordinary camera is used to acquire the image information and the Adaboost algorithm is used for face recognition.A method based on ensemble of regression trees is applied to find out the accurate coordinates of eyes and mouth.The job status of worker in real time can be identified. Compared with traditional methods,the new method significantly improves accuracy and real-time performance,and provides a reference for the diagnosis of fatigue.
VDT;fatigue recognition;Adaboost;ensemble of regression trees
TP 391.4
A
2016-08-22
姜大志(1982—),男,江苏南京人,博士,副教授.研究方向:智能计算.E-mail:dzjiang@stu.edu.cu.
国家自然科学基金项目(61502291);广东省高等学校优秀青年教师培养计划项目(YQ2015070);广东省普通高校特色创新项目(2015KTSCX039,2016WTSCX035);广东省教育科学研究教育科研项目(2015GXJK037);广东大学生科技创新重点项目(pdjh2016b0192);汕头大学国家基金培育项目(NFC15005).
1001-4217(2017)02-0066-09