复杂背景下的人眼状态与虹膜位置检测
2023-05-04于林泉陆军
于林泉, 陆军
(1.北京理工大学 自动化学院, 北京 100081; 2.哈尔滨工程大学 智能科学与工程学院, 黑龙江 哈尔滨 150001)
眼睛是人脸区域中传递信息最多的器官之一,从人眼中可以分析得到诸如情绪、视线、困倦程度等重要的人体状态[1]。人眼特征在疲劳检测、视线追踪、拍照检测等方向上都有重要的应用价值[2]。一般而言,人脸眼部区域的检测与应用分为人脸检测定位与人眼特征应用2个主要过程,其中人脸定位是人眼特征应用的基础与前提[3]。
国内外各种人脸定位的算法可以按照是否基于深度学习分为传统人脸定位算法与基于深度学习的人脸定位算法[4]。传统的人脸定位算法主要包括基于空间特征的定位算法、基于人脸自身特征的定位算法和基于统计模型的定位算法[5]。基于深度学习的人眼定位算法主要通过对神经网络的训练来实现检测[6]。目前精度较高的算法是在卷积神经网络基础上发展的目标检测网络[7],其分为以Yolo、SSD、RetinaNet等为代表的One-stage和以R-CNN、Faster R-CNN等为代表的Two-stage算法[8]。Redmon 等[9]提出的Yolo算法是目前较为流行的One-stage目标检测算法之一,之后出现的Yolov3、Yolov4[10]算法的性能也不断提高。Tan等[11]的EfficientDet算法也是性能较为优异的目标检测算法之一。Liu等[12]提出的SSD网络和Fast R-CNN网络等均是实验效果较好的目标检测网络。
人眼状态检测的方法主要包括基于人眼灰度信息的检测方法、基于人眼几何特征的检测方法、基于模板匹配的检测方法与基于特征点检测的方法[13]。其中基于特征点检测的方法通过对人脸图像中人眼关键点的检测与位置判断实现人眼状态的检测,具有较为广泛的应用[14]。但上述算法只能应用于图像质量较好的场景下,在图像模糊、含有光照干扰与阴影等场景下的效果较差。
针对常见人眼状态检测算法在图片较暗等情况下精度下降的问题,本文首先基于深度学习方法进行人眼定位,并在此基础上设计了基于直方图规定化与形状特征的人眼状态检测方法和基于鲁棒自适应的虹膜定位方法。通过控制模板图像的直方图分布规律,基于直方图规定化的方法削弱图像中阴影部分的干扰,并对人眼图像中的关键部位进行增强,从而更准确地检测虹膜的位置。
1 实验数据集的建立
常见的人脸数据集普遍存在亚洲人脸不足以及眯眼、闭眼等状态下人脸图像较少的问题,使用这些数据集训练的网络难以检测不同状态下的人眼。
针对该问题,本文设计了基于StyleGAN的定制化人脸生成网络。在图片生成器的内部,通过特定维度上的特征替换,将黄种人脸的特征赋值生成人脸;并通过修改控制向量在生成域内决定人眼开闭程度方向上的步幅大小,定制化生成人眼处于不同开闭程度下的亚洲人脸图像。
基于上述定制化生成的人脸图像与CAS-PEAL人脸数据集制作了实验数据集,对下述3种人眼定位网络进行训练与测试,并且使用该数据集中人眼处于不同开闭程度下的人脸图像对下述人眼状态检测方法与虹膜定位方法的精度进行测试。
1.1 基于Stylegan的数据集完善
1.1.1 Stylegan网络的结构
StyleGAN网络生成器的结构如图1所示,其主要由映射网络(mapping network)、样式模块(AdaIN)和生成网络(synthesis network)组成[15]。包含8个全连接层的映射网络将512×1的输入向量解耦为同样大小的中间向量W′,样式模块将W′变换为18个控制向量,生成网络在18个控制向量的基础上通过9次上采样与3×3卷积操作将4×4的初始图像变换为1 024×1 024的高清图像,并添加噪声丰富图像内容。
图1 特征码对图像特征的控制原理Fig.1 The control principle of feature codes on image features
1.1.2 黄种人脸的生成方法
StyleGAN生成图片的特征受到AdaIN中18个控制向量的影响,这些向量分别作用于生成网络里不同分辨率大小图片的生成过程中,因此不同控制向量所影响的图像特征也不同,具体过程如图2所示,特征码维度越高,所影响的图像特征就越精细。
基于图1所示原理,将生成图像的部分特征码替换为已生成黄种人脸图像对应的特征码,可以让其具有黄种人脸的特征,效果如图2所示。图2中将非黄种人脸的5~8维特征码替换为黄种人脸的特征码,得到一张具有黄种人面部特征的人脸图像。替换的特征码不同,新图片的特征便不一样,通过替换5~8维的特征码可以较好地赋予图像黄种人脸特征而不改变其他特征。
图2 黄种人脸特征的生成原理Fig.2 The formation principle of yellow face features
1.1.3 人眼开闭程度的控制方法
StyleGAN网络建立了(18, 512)维特征向量到(1 024, 1 024, 3)维生成图像之间的映射关系,每一幅生成图像都对应于生成域R18×512中的一个特征向量,图像属性(如人眼开闭程度)的变化则表现为特征向量在生成域中的移动。因此只要确定人眼开闭程度变化在生成域中对应的方向,就可以通过改变特征向量在该方向上的移动步幅控制人眼的开闭程度。
(1)
式中:pi与qi为变化前后的生成图片在生成域中的特征向量;pi_lable与qi_lable为二者对应的标签值,原理如图3所示;ei为人眼不同的开闭程度在生成域中各自对应的方向向量。
获得代表人眼开闭程度变化的方向向量后,可以生成人眼处于不同开闭程度下的定制化人脸图像:
E=E0+es
(2)
式中E0与E分别为人脸图像调节前后在生成域内的特征向量;s为调节步幅。
1.2 实验训练集与测试集
CAS-PEAL数据集是由中科院计算机研究所发布的亚洲人脸数据库[16]。该数据库共采集了包括595位男性与445位女性在内的共1 040位人脸志愿者在各种情况下的人脸图片共计99 450张。
考虑到常见人脸数据集的缺陷,在CAS-PEAL数据集与上述定制化生成图片的基础上建立本实验的训练集与测试集,其中训练集包含有1 000张人脸图片,测试集包含600张人脸图片,均使用labelimg图片标注工具进行了人眼单目标标注,标注过程如图4所示。后续分别基于该训练集与测试集进行人眼检测网络的训练以及人眼定位、人眼状态检测和虹膜定位算法的精度测试。
图4 人眼目标的标注结果Fig.4 The labeling result of human eye target
2 人眼定位及其应用
目前应用较广的人眼状态检测方法是通过对人眼区域局部特征点的检测实现的,在图像质量较好的情况下可以根据特征点之间的位置关系判断人眼状态。但是在图像较暗、对比度较差的情况下较难准确定位人眼特征点,从而降低状态检测的精度。
针对该问题,采用先定位人眼后提取特征的策略进行人眼状态与虹膜位置的检测。测试了3种目标检测网络的精度,并基于精度最高的Yolov5m网络设计了人眼检测网络。针对人眼分割区域中对比度较差等图像质量问题,采用直方图规定化的方法进行了图像增强,在增强后图像的基础上通过查找最小外接矩形提取人眼形状特征,克服了特征点检测等方法在图片较暗等情况下失效的问题。基于直方图规定化与Gamma变换对非闭眼的人眼图像进行增强,提高算法的鲁棒性,通过局部自适应二值化与霍夫圆检测对虹膜区域的轮廓特征与位置信息进行提取,并对虹膜区域的位置进行量化。
2.1 基于深度学习的人眼定位
传统人眼定位算法只适用于简单场景下的人眼检测,当存在障碍物遮挡、图像模糊以及头部姿态变化等干扰时精度会明显降低。由于对人眼区域的定位精度将直接影响后续人眼状态检测等方法的检测精度,因此选用定位精度更高的深度学习方法实现人眼区域的检测。
分别基于Efficientdet-D0模型、Yolov5s模型和Yolov5m模型搭建并训练了人眼检测网络。使用测试集对上述3种网络进行测试,具体测试数值在下面实验结果分析中给出。结果表明基于Yolov5m的人眼检测网络拥有三者中最好的综合性能,后续均使用该网络进行人眼区域的定位分割。
Yolov5m网络主要由输入网络、主干征提取网络(backbone)、特征融合网络(neck)以及预测网络(prediction)组成。主干网络中的Focus模块在保持原特征信息的基础上,缩减了输出图像的宽高,增加了输出图像的特征通道,输入图片的大小为608×608×3,输出图像大小为304×304×12,通过3×3的卷积核对该特征图处理后得到大小为304×304×32的最终输出结果。
2.2 基于直方图规定化与形状特征的人眼状态检测
当人眼图像对比度较低或质量较差时,基于特征点检测的人眼状态检测方法由于无法准确定位特征点而失效,此时的灰度图及灰度直方图如图5所示,无论是睁眼图片还是闭眼图片的灰度直方图均失去了原有的形状特征而难以进行状态检测。
图5 含有阴影干扰时的灰度直方图Fig.5 Grayscale histogram with shadow interference
通过深度学习方法进行人眼区域的分割,在分割后人眼图像的基础上设计了基于直方图规定化与形状特征的人眼状态检测算法。该算法通过直方图规定化对原始图像进行增强,在进行二值化与闭运算等预处理后,基于递归分治与旋转卡尺方法查找人眼区域的最小包围矩形,通过计算该矩形框的长宽比对人眼状态进行判断,有效地解决了因图像质量所导致的特征点检测失效的问题。
2.2.1 直方图规定化
直方图规定化主要由以下3个过程组成(其中待处理图像的灰度等级为M,模板图像的灰度级数为N,二者之间满足N≤M的前提条件):
1)将原始灰度图进行平衡化为:
(3)
2)获得目标图像的平衡化操作:
(4)
3)对第1)步中的灰度映射进行反变换处理,将待处理图像的灰度直方图变换为模板图像所规定的灰度直方图,采用组映射的方式将式(3)中的ps(si)变换到式(4)中的pu(ui)上去:
(5)
假定存在满足0≤I(0)≤…≤I(l)≤…≤I(N-1)≤M-1要求的整数函数I(l),其中,l=0,1,…,N-1寻找能够令式(5)中结果最小的I(l)值。
若式(5)中的l为0,则pu(ui)中的数值由ps(si)(0≤i≤I(0))所组成的一组数据进行映射;若式(3)中的l不为0,即为大于等于1的整数,则将ps(si)(I(l-1)≤i≤I(l))所组成的一组数据按照pu(ui)进行映射,组映射的原理如图6所示。
图6 组映射原理Fig.6 Group mapping schematic
2.2.2 直方图规定化的模板图像
为了解决对比度较低等图片质量问题,直方图规定化的模板要以去除外界干扰、增强人眼特征为目标。人眼特征较为明显的、对比度较高的闭眼与睁眼图像及其灰度分布直方图如图7所示。
图7 2种模板图像及其灰度直方图Fig.7 Two template images and their grayscale histograms
分别以图7中闭眼图像与睁眼图像为模板对质量较差的人眼图像进行处理的结果如图8所示。
其中图8(a)是直方图规定化前的人眼灰度图,包含闭眼与睁眼2种状态。图8(b)是以图7(b)中的理想闭眼图像为模板对输入图像进行增强后的人眼灰度图,虽然较好的去除了阴影干扰,但是对虹膜等人眼特征区域的削弱作用较强;图8(c)是以图7(d)中的理想睁眼图像为模板对输入图像进行增强后的人眼灰度图,虽然较好地增强了人眼特征,但眼角部位的阴影干扰仍有存留。问题的原因在于图7(b)中的低值区域占比过低而图7(d)中的低值区域占比过高。因此将模板中的低值区域占比设定在二者之间,使其既不过高也不过低,如图9所示。
图9 新模板的生成原理Fig.9 Schematic of the new template
基于该模板对上文的原始图像进行直方图规定化的结果如图10所示。增强后图像的灰度直方图与模板图像的灰度直方图理论上拥有相同的分布规律,所以增强后图像中不仅阴影较少,而且图片的对比度获得了提高,增强了眼部特征,便于后续对人眼状态进行判断。
图10 直方图规定化的效果Fig.10 The rendering of the histogram specification
2.2.3 人眼状态判断
在直方图规定化增强图片质量的基础上,设计了人眼区域形状特征的提取方法实现人眼状态检测,该过程主要分为3步:
1)图像二值化
直方图规定化后的人眼灰度图具有明显的双峰特征,需要滤除高值背景区域而保留低值人眼轮廓。基于最大类间方差的大津法是专门应用于双峰图像自动阈值的二值化算法,因此采用大津法对人眼区域进行二值分割,效果如图11所示。
图11 大津法自动阈值效果Fig.11 Otsu method automatic threshold effect diagram
2)闭运算
二值化后图片中的部分区域会出现空隙,为了避免对人眼形状的提取造成干扰,加入运算核大小为5×5的闭运算进行图像缺口填充,效果如图12。
图12 闭运算效果Fig.12 Closed calculation renderings
3)寻找最小包围矩形
通过边缘检测获得二值图像的轮廓曲线,基于递归分治的方法查找轮廓曲线的凸包,过程如下:
①寻找轮廓中横坐标最大与最小的点Pmax(x1,y1)与Pmin(x2,y2);
②遍历轮廓中的每一个点,假设其坐标为(x3,y3),计算其数值:
(6)
结果为正时,该点位于直线PmaxPmin左侧,反之则在右侧,据此将轮廓分为上包(左侧)与下包(右侧)2部分。
③式(6)的绝对值越大,则该点距离直线PmaxPmin越远,据此寻找上包中距离直线PmaxPmin最远的点Pm;将上包中ΔPmaxPminPm内的区域视为新的下包,将ΔPmaxPminPm外的区域视为新的上包;
④重复步骤(2)、(3),并以同样的方法遍历下包。
找到凸包后再基于旋转卡尺的方法寻找人眼轮廓凸包的最小包围矩形,过程如下:
①计算凸包中在x,y方向上的4个顶点Pxmax,Pxmin,Pymax,Pymin,过4个顶点做矩形;
②若矩形中某条边与凸包重合,则视该矩形为凸包的一个外接矩形,计算其面积并与当前最小面积比较,若小于当前最小面积则视该外接矩形为新的最小外接矩形;
③以该矩形为旋转卡尺,顺时针旋转四条边并保持矩形形状直至有一条边与凸包发生重合,重复步骤2);
④重复步骤②、③直至矩形转过90°。
由闭运算后的二值图经过轮廓提取、递归分治方法确定凸包、旋转卡尺方法寻找最小包围矩形的过程如图13所示,其中虚线是提取的轮廓,实线是凸包,外围框是最小包围矩形,图13(a)到图13(f)的长宽比计算结果分别为5.69、4.68、5.75、1.07、1.06、1.01。
图13 寻找最小包围矩形过程示意Fig.13 Schematic diagram of the process of finding the smallest enclosing rectangle
由图13可知睁眼图片与闭眼图片最小包围矩形的长宽比存在明显的不同,可据此进行人眼状态的判断。设定2个阈值a=2,b=3.5。假设人眼区域最小矩形的实际长宽比为x,则睁眼、眯眼与闭眼状态对应的变量关系分别为xb。
2.3 基于鲁棒自适应的虹膜定位
虹膜定位可以追踪人眼视线的方向,在图片拍摄过程中可以用于纠正被拍摄者的视线。此外,虹膜定位在活体检测、身份识别等方向上都有重要的应用价值。本文在人眼状态检测的基础上设计了基于鲁棒自适应的虹膜定位方法,当检测到人眼状态为睁眼或眯眼时,基于直方图规定化与自适应滤波等操作对虹膜区域进行检测并量化该区域的位置。
2.3.1 虹膜定位
实际的人眼分割图像往往因光照等不同因素的干扰而无法直接进行虹膜区域的分割,因此本文首先基于直方图规定化减弱干扰影响。
1)直方图规定化。
进行虹膜定位的前提是人眼状态为睁眼或眯眼,此时人眼灰度图的低值部分由于虹膜区域的外露而占比较大。为了增强虹膜区域的形状特征,在直方图规定化中应保留人眼图像的低值部分,因此使用图7(b)中的睁眼图像作为模板。该模板的灰度直方图存在低值部分的尖峰,如图14所示。
图14 直方图规定化模Fig.14 Histogram specification template map
基于该模板进行直方图规定化的效果如图15。
2)伽马变换。
伽马变换的计算过程为:
(7)
式(7)中Vin为归一化后输入图像的像素值,范围为0~1,输出图像像素值为Vout。当γ>1时,伽马变换主要针对输入图像中亮度值较高的区域进行拉伸;γ<1时,伽马变换主要针对输入图像中亮度值较低的区域进行拉伸。
图15中的结果表明,虽然直方图规定化可以整体上增强人眼图片的质量,但会对虹膜区域的形状造成略微的影响。为了保证虹膜区域形状的完整性,此处使用γ值大于1的灰度映射(γ=3)来增强图像中的低灰度值区域,其增强后的效果如图16。
图15 直方图规定化效果Fig.15 Histogram specification rendering
图16 Gamma变换效果Fig.16 Gamma transformation effect diagram
图16说明直方图规定化与Gamma增强结合后处理的图片中虹膜区域的特征得到加强,形状更加完整,且眼睛周围的阴影得到了很好的去除。
3)中值滤波。
使用模板大小为9×9的中值滤波去除图像复杂的纹理信息而保留其中的主要轮廓线,以减少后续图像边缘检测过程中的干扰,效果如图17所示。
图17 中值滤波效果Fig.17 Median filtering effect chart
4)自适应二值化。
通过针对局部区域自动计算阈值的自适应二值化方法来进行图像轮廓提取。将待处理的图像分割为不同的局部小块,针对每一个小块计算其内像素灰度值的特征并据此得到该区域的自动阈值。
将图像视为行向量,如图18所示,其中Pn代表图像二值化之前当前位置像素的灰度值大小,Tn代表该点像素在二值化后的灰度值大小。计算像素值为Pn的点附近s个像素的灰度值总和:
图18 二维图像一维化结果Fig.18 Two-dimensional image one-dimensional result map
(8)
按照式(9)计算该点在二值化后的灰度值大小。
(9)
该方法与大津法的区别在于后者是取双峰图像的自动阈值,目的在于获取图像低值或高值目标区域,而此处采用的局部自适应阈值由于只针对局部区域计算阈值,因此能够更好的提取虹膜区域的局部特征,便于后续对虹膜形状的检测。对经过中值滤波后的人眼图像进行局部自适应二值化的结果如图19所示。
图19 自适应二值化效果图Fig.19 Adaptive binarization renderings
5)霍夫圆检测。
对二值化后的人眼图像进行canny边缘检测,并基于检测到的轮廓特征进行霍夫圆检测以定位虹膜区域,结果如图20所示。
图20 霍夫圆检测结果Fig.20 Hough circle test result
2.3.2 虹膜位置的量化
在虹膜检测的基础上对虹膜的位置进行量化。如图21所示将虹膜在人眼区域中的位置量化为百分数的形式,并在图像的长边方向上将其划分为5个区域,通过判断虹膜中心所在区域来量化虹膜偏移的程度。
图21 虹膜位置量化原理Fig.21 Principle of quantification of iris position
3 实验测试与结果分析
3.1 定制化人脸图像的生成结果
定制化生成的亚洲人脸图像如图22所示,从左到右人眼的张开程度依次增加。
图22 StyleGAN网络生成结果图Fig.22 StyleGAN network generated result graph
3.2 人眼定位的测试与结果分析
使用批量大小为64的小批量随机梯度下降算法对网络进行训练以减少网络训练的计算成本,并使用Adam优化算法提高网络的训练效果,Adam算法的超参数β1、β2、ε分别为0.9、0.999、10-8。在Batch_size为32、学习率为0.001的条件下使用训练集对Efficientdet-D0网络、Yolov5s网络和Yolov5m网络进行了300次迭代训练。训练使用的GPU为Tesla K80,显存容量为24 GB,显存位宽为384 bit,CUDA版本为11.2。
使用测试集分别测试训练后3种网络的定位精度,测得Efficientdet-D0、Yolov5m和Yolov5s在测试集上的MAP@0.75大小分别为0.642 3、0.664 0、0.637。
在显存2 GB 的Genforce MX150设备上对3种网络的视频检测帧率进行测试,测得Efficientdet-D0、Yolov5m和Yolov5s在测试集上的检测帧率分别为1.97、12.27、19.28。
检测结果说明,Yolov5m网络的检测帧率并非最高,但已经可以满足大多数场合下的需求,并且其检测精度在三者中最高,因此本文中使用基于Yolov5m模型的检测网络进行人眼区域的定位。
3.3 人眼状态检测的测试与结果分析
使用基于直方图规定化与形状特征的检测方法对人眼状态进行检测的过程如图23所示。
图23 人眼状态检测方法的工作过程Fig.23 The working process of the human eye state detection method
在包含600张人脸图片的测试集上对人眼状态检测算法进行测试,得到该算法在睁眼、眯眼和闭眼状态下的检测精度分别为95%、85%、93%。
结果表明基于直方图规定化与形状特征的检测方法对图23(a)、图24 (c)、图24 (d)和图24 (f)中人眼区域较暗或包含阴影等情况以及图24(a)中曝光过强等情况下的图像均能准确判断人眼状态,克服了基于特征点检测等人眼状态检测方法在图像对比度较低时精度下降的问题,具有较强的稳定性,对3种不同的人眼状态均具有较高的检测精度。
图24 人脸状态检测结果Fig.24 Figure of face state detection result method
3.4 虹膜定位的测试与结果分析
基于鲁棒自适应的虹膜定位方法对不同视线方向下的人脸图片进行检测的结果如图25所示。在人眼处于正视以及不同程度斜视的情况下,该算法均能够准确地对人眼虹膜区域进行检测定位并显示当前虹膜的偏移程度。
图25 虹膜检测效果图与原图Fig.25 Iris detection effect picture and original picture
4 结论
1)基于StyleGAN网络的定制化人脸生成方法能够通过对网络特征码的替换以及特征向量的移动生成包含不同人眼状态的亚洲人脸图像,弥补了常见人脸数据集缺乏亚洲人脸以及眯眼、闭眼等不同状态下的人脸图像的缺点,为人眼检测网络的训练与测试提供了合适的数据集。
2)实验结果证明基于Yolov5m的人眼检测网络能够准确定位人眼,基于直方图规定化与形状特征的人眼状态检测方法能够有效增强图像质量,在睁眼、眯眼与闭眼3种情况下的检测精度分别为95%、89%、93%,在图像较暗等情况下仍有较高的检测精度,克服了基于特征点检测的人眼状态检测方法在图像较暗等情况下特征点定位困难以及精度下降的问题。
3)基于鲁棒自适应的虹膜定位方法能够有效地提取图像中的虹膜特征,并准确地量化虹膜区域的位置,具有较高的鲁棒性与准确性,该研究成果在图像质量检查、视线追踪等方向上具有重要的应用价值。