APP下载

基于多特征融合的眼睛状态检测算法研究

2021-03-08梁元辉吴清乐曹立佳

计算机技术与发展 2021年2期
关键词:人眼虹膜人脸

梁元辉,吴清乐,曹立佳

(1.四川轻化工大学 自动化与信息工程学院,四川 宜宾 644005;2.四川轻化工大学 人工智能四川省重点实验室,四川 宜宾 644005)

0 引 言

随着车辆急剧增多,交通事故严重威胁着人们的生命和财产安全。根据世界健康组织的报告,交通事故是损害人生命的十大原因之一[1]。为了减少疲劳驾驶所导致的交通安全问题,对疲劳驾驶自动检测的研究具有重要意义。基于人脸显著特征检测的算法可直观地定位眼睛所在的位置,然后利用积分投影、眼睛角点、眼帘曲率、上下眼帘高度等方法判断眼睛的状态[2-6],但这些方法在光照不均、人脸倾斜、佩戴眼镜、驾驶员改变等环境中效果较差。You等人[7]提出的眼睛宽高比(eye aspect ratio,EAR)[8]结合PERCLOSE[9]方法来判断驾驶员是否疲劳,该方法在降低检测时间的同时取得了较高的准确率。该算法考虑了个体差异但只有EAR作为判断依据,在光照变换、人脸倾斜、佩戴眼镜等条件下检测效果较差,具有很大的局限性。周云鹏等人[10-12]利用面部的多个特征融合检测驾驶员是否疲劳驾驶。周涛等人[13-15]利用人眼状态检测驾驶员是否疲劳驾驶。

在上述研究的基础上,该文对驾驶员的眼睛状态检测方法进行改进,算法融合了人眼张开角度、EAR以及人眼虹膜等多个特征进行人眼开闭的判断。

1 人眼特征提取

1.1 人脸检测及眼睛定位

Dlib是一个开源的工具箱,包括了机器学习模块、深度学习模块、图像处理模块等[9]。它常被用来解决工业和学术界实际难题,用它开发的复杂算法在机器人开发、嵌入设备、手机和大型高级性能计算环境频繁使用。级联姿势回归(cascaded pose regression,CPR)算法常被用于估计检测物体的姿态,该工具箱通过CPR[16]算法以及标记的人脸68个特征点的回归器获取驾驶员的人脸特征,通过眼睛的状态检测判断驾驶员是否疲劳。如图1所示,该文采用了Dlib中人脸检测和人脸68个特征点模型检测视频中的人脸,并返回人脸特征点坐标、人脸框及人脸角度等。

图1 人脸检测及特征点

1.2 EAR

在1.1节中获取了人脸的特征点,对于每个眼睛都有6个对应的特征点,两个眼角的特征点,以及分布在上下眼帘上的4个特征点。这些特征点确定了眼睛在图像中的具体位置。EAR[8]在文献[8]中被用来检测眼睛眨眼的频率。EAR值可通过图2中的6个点来计算,计算公式如下:

(1)

如图2给出了眼睛的EAR值,其中(a)眼睛张开的6个特征点;(b)眼睛关闭的6个特征点;(c)不同眼睛大小的驾驶员眼睛开闭的EAR曲线。由图2可以看出,眼睛的张开和关闭所对应的EAR的值差别比较大。因而EAR值是一个可靠的评价眼睛开闭的参数。

图2 EAR

根据驾驶员驾驶中的情形设定四种场景,分别是正常状态、人脸倾斜状态、戴眼镜状态、光照不均状态。根据经验设定EAR的阈值为0.3。每种场景判断眼睛开闭的结果和实际眼睛开闭的结果比较,结果一致则设定标签为0,结果不一致则设定标签为1,图3给出了四种场景下的EAR数据和实际眼睛状态的比较结果,横坐标为每个场景视频的帧数,纵坐标为比较的结果。除了正常状态下EAR可以用来检测眼睛开闭状态外,其他三种情况如果只用EAR对眼睛开闭状态进行判断,判断结果错误较多,因而在这些场景中EAR是不可靠的,需要借助其他方法进行辅助才能更好地判断。经过反复的测试发现EAR在人脸倾斜、戴眼镜、光照变换、眼睛周围有光斑等情况下非常不可靠。

图3 各种场景的EAR和实际眼睛状态比较

1.3 眼角张开角度

参考1.2节CPR获取的特征点,取出眼睛的6个特征点,然后选取其中3个角点(P36、P37、P41)计算眼角的张开角度,两只眼睛的张开角度取其平均,该平均值作为眼睛状态检测算法的特征参数。眼睛张开角度计算公式如下:

(2)

1.4 人眼虹膜

通过1.2节CPR获取的特征点,取出眼睛的6个特征点,计算这些点的外接矩并将外接矩的坐标映射到原始图像中即可得到包括眼睛的感兴趣图像,如图4所示。人脸虹膜检测算法详细步骤描述如下:首先对原始眼睛图像做图像增强处理平滑噪声,然后通过自适应二值化操作获取虹膜的二值图像,再次对二值图像进行开闭操作以及孔洞填充,最后对二值图像的白色虹膜区块做椭圆拟合处理。椭圆的长轴和短轴范围不应超过眼睛左右角点之间的距离以及上下眼帘的距离。Tolba等人在文献[11]中也提出了关于虹膜检测作为眼睛状态判断的算法。人眼虹膜也可作为人脸倾斜、戴眼镜、光照变换、眼睛周围有光斑等情况下EAR不足的补充。

图4 人脸虹膜检测流程

图5给出了虹膜的检测图像。

(a)裁剪的眼睛图像 (b)dlib眼睛黑白图

2 基于多特征融合的人眼状态判断

参考1.2节数据分析,使用EAR算法进行眼睛状态判断时,在倾斜、戴眼镜、晚上欠光照样本中效果较差。而在复杂的环境中像素值比较敏感,鲁棒性差,导致人眼虹膜椭圆拟合算法性能较差。该文提出基于EAR、人眼虹膜相融合的人眼状态判断算法,图6给出了融合算法方案流程。首先通过视频流分别计算人眼EAR和虹膜椭圆拟合;其次,设定EAR的阈值和椭圆长短轴的阈值,EAR超过阈值设定标签Eflag为1,否则设定标签Eflag为0;椭圆长短轴同时小于阈值,设定标签Pflag为0,否则设定标签Pflag为1;再次,判断Eflag和Pflag的值是否一致,如果是,则输出结果为EAR或者人眼虹膜的结果,否则进行下一次判断。最后判断EAR和其阈值之差的绝对值是否大于ε,ε的值根据样本和EAR阈值来确定。如果大于则输出EAR的判断结果,否则输出虹膜的检测结果。将提出的多特征融合算法简称为EP算法,该算法结合了EAR算法、眼睛虹膜算法在检测眼睛状态时的优势,并且在检测到的EAR值与阈值比较接近时,利用眼睛虹膜的检测结果来进行辅助判断。

图6 EAR和人眼虹膜融合

3 实验结果分析

为了验证文中算法的有效性,对EP算法(提出的融合方案)、EAR算法、眼睛张开角度算法、虹膜算法进行了比较。测试视频为正常、夜晚、倾斜、戴眼镜睁闭眼视频,视频流分辨率为640*480、帧率为30 fps。实验设定EAR的硬阈值为0.3,ε=0.05。从表1可以看出,该文所提的方法在正常视频、倾斜视频、戴眼镜视频中比单纯EAR的方法眼睛开闭状态检测效果较好;在正常视频中和人眼虹膜检测算法相当,但倾斜视频、戴眼镜视频、晚上视频中比单纯人眼虹膜的方法眼睛开闭状态检测效果较好。综上比较,该方法获得检测视频的平均正确率为92%,和EAR、人眼虹膜、眼角相比明显提高了检测正确率,可以为疲劳驾驶检测提供更可靠的参考。

表1 实验结果

4 结束语

针对疲劳驾驶中的眼睛状态判断,提出了一种融合了EAR、人脸虹膜等多个特征的算法(EP算法)进行眼睛开闭状态判断,EP算法综合了EAR、眼睛虹膜在眼睛状态检测时的优势。结果表明,该方法可以有效提高眼睛开闭检测的准确率并且能满足实时检测的要求,但算法在晚上弱光照条件下的性能需要进一步提高以增强算法在夜晚的适应能力。

猜你喜欢

人眼虹膜人脸
田志强
双眼虹膜劈裂症一例
玻璃窗上的人脸
“刷眼”如何开启孩子回家之门
“刷眼”如何开启孩子回家之门
“刷眼”如何开启孩子回家之门
智力考场:有趣的图片测试
闪瞎人眼的,还有唇
“领家系”可爱脸VS“高冷系”美人脸
看人,星光璀璨缭人眼