一种实用的笑脸检测方法

时间:2022-11-20 15:15:00

注:本文内容是笔者在阅读、理解了相关英文文献之后,整理所得。原文为:Towards Practical Smile Detection, jacob Whitehill, Gwen Littlewort, PAMI 2009;


目前已经有很多的基于机器学习的方法用来进行人脸面部表情分析,然而,它们中的大部分都是在公开人脸库上进行测试。这些公开库里面仅有为数不多的几个人的图片,而且通常都是光照条件良好的图片。因此,用这些公开库做的表情分析算法,当应用在实际图片中的情况下,并不见得能取得较好的效果。鉴于此,作者通过网络采集了现实生活中几千个人的图片,构建了一个人脸图片数据库,名为GENKI。该数据库包含很多光照条件下的图片,室内条件,室外条件,各种年龄段,男的,女的,各种种族的,各种发型的,戴眼镜,不戴眼镜的,总共63000张图片。需要提醒的是,这些图片,都是来自网络上很多人的个人主页,个人博客等地方,并非学者或者研究人员拍摄,而是由实际生活中形形色色的人自己拍摄的。因此,这些图片在进行表情分析算法测试的时候,更能说明问题。GENKI里面的人脸图片的姿态范围是:低头,抬头,左右旋转,大概都在20°的正面范围内。所有的图片都被手工打上标签,大概45%的图片被标记为“happy,29%被标记为“unclear,26%的是“not happy”。为了比较算法效果,作者还采用Cohn-Kanade DFAT图片数据库来做为对比。

笑脸检测的流程图如下所示:

一种实用的笑脸检测方法

首先,对于任意一张输入图片而言,需要算法自动进行人脸和眼睛的检测定位(有很多的成熟解决方案,文中不再讨论,而仅仅关注于笑脸检测),之后,需要对人脸面部图片进行旋转、裁剪、缩放,从而使得眼睛中心位于图片上的固定位置,总之一句话,人脸和眼睛定位之后,需要进行配准对齐操作。接着,对图片进行特征提取,并将提取到的特征输入到分类器来进行分类判别,从而判定当前图片是笑脸还是非笑脸。性能测试是通过ROC曲线下的面积A’作为评价指标的。

训练集:

作者分别在DFATGENKI数据库上进行测试。其中,前面已经提到,DFAT数据库是在光照条件受到控制的情况下拍摄的图片(collected in controlled imaging condition);GENKI则来自网络;DFAT包含了97个人的实验室环境下的475个视频文件。每个视频文件中选择第一帧和最后一帧来做测试,因此,总共有475*2=950个样本,其中有一个图片没有找到人脸,因此,DFAT中的样本总有949个,选择其中标记为“smiling”和“non-smiling”的图片作为训练样本。GENKI数据库中,仅有“happy”和“not happy”的图片被选中。考虑到GENKI中的很多人脸并非完全的正面,因此,这里,仅仅选取被正面人脸检测算子检测到的图片。总体来说,DFAT中包含101个笑脸,848个非笑脸。GENKI中包含17822个笑脸和7782个非笑脸。

训练样本数量:

GENKI的测试集合(validation set)是在GENKI中随机选择5000个样本。DFAT则是将所有的949个图片作为测试集合。训练样本的数量依次选为{100200,500,949,1000,2000,5000,10000,20000}。对于DFAT而言,利用所有的949个图片进行训练

前期准备:

所有的图片需要转换为灰度图,旋转,裁剪,缩放,并根据双眼的位置将人脸统一缩放到24*24的大小。眼睛定位,有手工和自动两种方法。后面作者会比较自动眼睛定位算法和人工定位眼睛在笑脸检测的检测率上有何区别。

特征提取:

作者比较了5种常用的图像特征表示方法:

(1)Gabor Energy Filter(GEF),其实就是对图像做Gabor变换,8个方向,5个尺度,波长分别是1.17,1.65,2.33,3.3,4.67

(2)Box Filter(BF):类似于Haar features的特征提取方法;

(3)Edge Orientation Histograms(EOH):边缘方向直方图,

(4)BF+EOH

(5)LBP

作者通过对比发现,LBP对笑脸检测并无太大的用处,相对而言,Gabor,EG,EOH这三种特征描述方法更加适合于笑脸检测的特征描述算子,而它们作为特征时,采用不同的分类器,则有着不同的性能表现。具体请看下面的图表;

学习算法:

作者比较了两种常用的学习算法:GentleBoost和SVM。在实验中,GentleBoost的每一个分类器作者都训练了500次;而在SVM学些过程中,GEFBF整个被当做输入特征向量,同时,采用了bagging算法来降低训练次数(between 400 and 4000 examples per bag)。

    首先,采用BE+EOH作为特征,下表给出了测试结果:

一种实用的笑脸检测方法

DFAT上,仅有84.9%的正确率,而来自GENKI的同样数量的训练样本在DFAT上测试,达到了98.4%的正确率,GENKI上也取得了95.1%的效果。对比结果表明,来自网络的那种实际应用场合下的图片用来进行样本训练得到的分类器更适合于真实应用场合。

下图左侧图形则表明利用GentleBoost分类器和自动眼睛定位算法的时候,训练样本数量大小和检测率之间的函数关系图,中间的图形表明当采用BF+EOH作为特征时,自动眼睛定位算法和手动给定眼睛位置造成的检测率的下降情况,右边的图形说明了采用SVM作为分类器时的检测率;

一种实用的笑脸检测方法

人工给定眼睛位置和算法自动给定眼睛位置造成的检测率之间的差异可以用下表来表示:

一种实用的笑脸检测方法

总结:Gabor+SVM或者BF+GentleBoost在笑脸检测上都取得了较好的性能表现,而GaborGentleBoost结合,或者,BFSVM结合则并不理想。另外,手动给定眼睛位置会使得笑脸检测的检测率有所提升。但在实际应用中,这并非明智的选择。

    另外,需要提醒的是,文中提到的算法,最后被作者应用到嵌入式商业数码相机当中进行笑脸捕捉。