人脸眨眼检测:Real-Time Eye Blink Detection using Facial Landmarks

Real-Time Eye Blink Detection using Facial Landmarks

使用面部关键点进行实时眨眼检测

摘要:

本文提出了一种检测标准摄像机视频序列中眨眼的实时算法。在野外数据集上训练的关键点探测器对照相机的头部方向、不同的光照和面部表现表现出良好的鲁棒性。实验表明,如果关键点被精确地检测到,足以可靠地预测出睁开眼睛的水平。因此,该算法估计关键点位置,提取一个标量量-眼睛长宽比(EAR),用来描述每个帧中的睁开度。最后,SVM分类器在短时间窗口中检测眼睛眨眼作为EAR值的模式。这个简单的算法在两个标准数据集上优于当时最先进的结果。

1 介绍

检测眼睛眨眼很重要,例如在监控人类操作员警惕性的系统中,例如。司机嗜睡;在系统警告电脑用户盯着屏幕没有眨眼很长时间来防止干眼睛和计算机视觉综合征;在人机接口,跟残疾人进行互动、或人脸识别系统中的反欺诈保护。

现有的方法可以是主动方法或被动方法。主动的方法是可靠的,但使用特殊的硬件,通常是昂贵的和侵入性的,例如。红外照相机和照明器,可穿戴设备,眼镜与一个特殊的特写照相机观察眼睛。而被动式系统只依赖于一个标准的远程照相机。

人们提出了许多在视频序列中自动检测眨眼的方法。有几种方法是基于眼睛区域的运动估计。通常,面部和眼睛是通过中Viola-Jones 类别探测器。接下来,通过光流、稀疏跟踪或帧对帧的强度差异和自适应阈值设定来估计眼睛区域的运动。最后,决定眼睛是否被眼睑覆盖。另一种方法是从单个图像中推断出睁开眼的状态,例如。通过与开眼和闭眼模板的相关匹配,眼睛区域上的启发式水平或垂直图像强度投影,拟合寻找眼睑的参数模型,或活动形状模型。

前一个方法的一个主要缺点是,它们通常隐含地对设置施加太强的要求,比如相对的面部摄像头姿势(头部方向)、图像分辨率、照明、运动动力学等。特别是使用原始图像强度的启发式方法很可能非常敏感,尽管它们具有实时性能。

然而,现在强大的实时面部关键点检测器,可以捕捉人类面部图像上的大部分特征点,包括眼角和眼皮,见图1。大多数最先进的关键点检测器提出了一个回归问题,即学习从图像关键点位置或其他关键点参数化的映射。这些现代关键点探测器是在“野外数据集”上训练的,因此它们对不同的光照、各种面部表情和中等的非额脑旋转是稳健的。一个最先进的探测器的关键点定位的平均误差通常低于眼部间距离的5%。最近的方法甚至可以显著地实时地运行良好。
人脸眨眼检测:Real-Time Eye Blink Detection using Facial Landmarks_第1张图片

​ 图1

因此,我们提出了一种简单而有效的算法来检测最近的面部关键点检测器检测眨眼。一个标量重新改变睁眼度的标量。最后,具有每帧的睁眼估计序列,眼睛眨眼由SVM分类器发现,该分类根据眨眼和非眨眼模式的例子进行训练。

在[14]中提出的面部分割模型与该方法相似。然而,他们的系统是基于主动形状模型,报告的处理时间约为每帧5秒,并且通过观察较长的序列估计的统计数据使开眼信号归一化。因此,该系统仅可用于离线处理。本文提出的算法是实时运行的,因为关键点提取和线性SVM的时间成本可以忽略不计。

本文贡献:

  • 两个最先进的关键点检测器[1,16]可靠区分开眼和闭眼状态的能力在一个具有挑战性的野外数据集和各种人脸图像分辨率上得到了定量的证明。
  • 提出了一种将关键点检测器和分类器相结合的实时眨眼检测算法,在两个数据集上实现最好的结果。

2 提出方法

人脸眨眼检测:Real-Time Eye Blink Detection using Facial Landmarks_第2张图片

​ 图2

眨眼动作是一个快速闭合的过程,眨眼持续差不多为100-400ms。

我们提出利用最先进的面部关键点检测器来定位眼睛和眼睑的轮廓。从图像中检测到的关键点中,我们推导出作为睁眼状态估计的眼展宽比(EAR)。由于每帧的EAR不一定能正确识别眼睛眨眼,因此训练了一个考虑更大时间窗口的分类器。

2.1 特征描述

对于每一帧图像,人眼的关键点被检测处理。人眼长宽比(EAR)计算公式定义如下:

在这里插入图片描述

其中p1, …p6是2维的关键点位置,如图1所示。

当眼睛睁开时候,EAR的值几乎不变,但是当眼睛闭合时候,EAR几乎为0;它对人和头部的姿势不敏感。睁开眼睛时候的长宽比在个体之间的差异很小,另外它对图像的均匀缩放和面部的平面内旋转是完全不变的。

由于双眼是同步眨眼,双眼的EAR的平均值作为最终的值。

2.2 分类

通常不认为EAR的低值意味着一个人在眨眼。当受试者故意闭上眼睛更长时间或进行面部表情、打哈欠等,或EAR捕捉到关键点的短暂随机波动时,EAR可能会出现低值。

基于此,提出了一个以时间窗口作为输入的分类器。实验发现,对于眨眼时眼睛最闭的帧,±6帧会对眨眼检测有重大影响。因此,对于每一帧,通过连接其±6相邻帧的EARs来收集一个13维的特征

由一个线性SVM分类器(称为EARSVM分类器)从人工注释的序列中训练来实现的。之后收集数据并制作正负样本。区分序列是睁眼,还是闭眼两种状态

3 实验

进行了两种实验:

  • 测量关键点检测器精度的实验
  • 评价整个眨眼检测算法性能的实验

3.1 关键点检测的准确性

为了评估被测试的关键点探测器的准确性,我们使用了300-vw的数据集,该数据集包含50个视频,每一帧都有一个面部关键点的精确标注;

以下测试的目的是证明最近的关键点探测器在检测眼睛方面特别健壮和精确。眼罩和眼睑的轮廓。因此,我们准备了一个数据集,一个300-大众的子集,包含睁开眼睛和闭着眼睛的样本图像。更准确地说,有了真实关键点标注,我们根据眼睛高宽比对每个主题的帧进行排序(等式中的EAR(1)),并采取10帧的最高比率(睁大眼睛),10帧的最低比率(大部分眼睛紧紧闭上)和10帧随机采样。因此,我们收集了1500张图像。此外,所有的图像后来都被次采样(连续10次乘以0.75),以评估在小的人脸图像上的测试探测器的准确性。

评测了两个当时最先进的关键点检测器:

  • Chehra
  • Intraface

人脸眨眼检测:Real-Time Eye Blink Detection using Facial Landmarks_第3张图片

注意到,人脸并不总是镜头的正面,表情并不总是正常的,人们经常在情绪上说话或微笑,等等。有时人们戴眼镜,头发偶尔会部分遮住一只眼睛。这两个探测器通常表现都很好,但intraface对非常小的人脸图像更健壮。

定量分析,人脸图像的关键点检测的精度是由通常定义的平均相对关键点定位误差来测量的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f7uEMBKc-1623927763553)(C:\Users\DELL-3020\AppData\Roaming\Typora\typora-user-images\image-20210617181805713.png)]

其中xi是图像中关键点i的地真位置,ˆxi是探测器估计的关键点位置,N是一些关键点,归一化因子κ是眼间距(IOD),即图像中眼睛中心之间的欧几里得距离。

首先,计算了平均相对关键点定位误差的标准累积直方图,结果如下,第一个图是全部的49个关键点,下面是人眼区域的12个关键点结果

计算了所有平均IOD约为80px的原始图像以及具有IOD≤50px的所有“小”人脸图像(包括次采样图像)的结果。

人脸眨眼检测:Real-Time Eye Blink Detection using Facial Landmarks_第4张图片

对于所有的关键点,Chehra有更多的非常小的错误(高达IOD的5%),但是intraface更稳健,在IOD10%以下的错误出现更多。

对于眼部关键点,intraface总是比Chehra更精确。如前所述,intraface对小图像比Chehra强大得多。在下面的实验中可以进一步观察到这种行为。

下面一组实验也能支持上述观点:

在15000张图片上进行测试,我们测量了一个平均定位误差µ作为由IOD确定的人脸图像分辨率的函数。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
(img-XUZvoDHo-1623927763555)(C:\Users\DELL-3020\AppData\Roaming\Typora\typora-user-images\image-20210617182506125.png)]
即在给定范围内具有IOD的人脸图像集上的平均误差。研究结果如图所示。可以看到,Chehra的IOD<20px图像很快失败。对于较大的人脸,平均误差是可比较的,尽管眼睛关键点的平均误差略好一些。

最后一次测试与眨眼探测器直接相关。我们测量了EAR的精度作为IOD的函数。平均EAR误差定义为真EAR和估计EAR之间的平均绝对差。计算两个子集:闭合/关闭(平均真比0.05±0.05)

人脸眨眼检测:Real-Time Eye Blink Detection using Facial Landmarks_第5张图片

睁开眼睛(平均真比0.4±0.1)。闭上眼睛的误差更高。原因可能是,这两个探测器在发生故障时都更有可能睁开眼睛。可以看到,IOD<20px的比率误差导致了Chehra的开/闭眼状态之间的主要混淆,然而,对于较大的面孔,该比率估计得足够准确,以确保可靠的眨眼检测。

3.2 眨眼检测的评估

在两个标准数据库上用眨眼的基本真实注释进行评估。

  • ZJU:由20个受试者的80个短片组成。每个受试者有4个视频:2个有眼镜,2个没有眼镜,3个视频是正面的,1个是向上观看的。平均视频长度为136帧,平均包含约3.6个眨眼。平均IOD为57.4像素。

  • Eyeblink8:包括8个长视频,由4个主题微笑,头部自然旋转,用手捂住脸,打哈欠,喝酒,可能用键盘往下看。分辨率为640×480像素,平均IOD为62.9像素,平均每个视频大约50个眨眼。本文将半眨眼当作完全眨眼,这点与ZJU保持一致。

除了测试所提出的EAR SVM方法,它们被训练以检测特定的眨眼模式,我们与一个简单的基线方法进行比较,即设定阈值EAR值。

人脸眨眼检测:Real-Time Eye Blink Detection using Facial Landmarks_第6张图片

使用EAR SVM的实验是以跨数据集的方式进行的。这意味SVM分类器在Eyeblink8上进行训练,并在ZJU上进行测试,反之亦然。

为了评估探测器的准确性,将预测的眨眼与真眨眼进行了比较。真正数的数量被确定为具有非空间的地真眨眼的数量具有检测到的眨眼的部分。假负片的数量被计算为与检测到的眨眼不相交的真实眨眼的数量。假阳性的次数等于检测到的眨眼的次数减去真实阳性的次数,再加上检测到过长的眨眼的惩罚。只有检测到眨眼比平均眨眼长度A的两倍,才会计算惩罚。每长一眨眼长度L的LA次数都被计算为假阳性。

ZJU数据库似乎相对简单。它主要认为,每只闭眼都是一眨眼。因此,精确的召回曲线如图所示。 EAR阈值设定和两个EAR SVM分类器几乎是相同的。这些曲线是分别是通过跨越EAR和SVM输出分数的阈值来计算的。 本文的提出的方法由于其他方法(图中的A.B,C)

人脸眨眼检测:Real-Time Eye Blink Detection using Facial Landmarks_第7张图片

人脸眨眼检测:Real-Time Eye Blink Detection using Facial Landmarks_第8张图片

最后,我们测量了整个眨眼检测器精度与数据集上的平均IOD的依赖性。ZJU数据库的每一帧都被子采样到90%,80%,……,占其原始分辨率的10%。同时使用Chehra-SVM和Intraface-SVM进行评估。对于每个分辨率,计算精确召回曲线(AUC)下的面积。检测结果见图。我们可以看到,与Chehra关键点,精度仍然非常高,直到平均IOD约30px。检测器在使用IOD<20px的图像上出现故障。intraface关键点在低分辨率下好得多。这证实了我们之前对关键点的准确性的研究。

4 结论

本文提出了一种实时眨眼检测算法。我们定量地证明,只要基于回归的面部关键点检测器足够精确,就可以可靠地估计眼睛的张开程度。而它们对低图像质量(很大程度上的低图像分辨率)和野外环境(非正面、光照差、面部表情)都很强大。

使用鲁棒的关键点探测器和基于简单的SVM眨眼检测,在两个标准数据集上取得了最优的效果。该算法可以实时运行,因为除了实时关键点检测器外,眨眼检测的额外计算成本可以忽略不计。

所提出的SVM方法使用了眼睛长宽比(EAR)的时间窗口,其性能优于EAR阈值设定。另一方面,在较长的序列不可用的情况下,阈值设定可用作单个图像分类器来检测眼睛的状态。

你可能感兴趣的:(人脸,眨眼检测,关键点检测,svm)