APP下载

表情识别算法研究进展与性能比较

2018-03-05崔凤焦

计算机技术与发展 2018年2期
关键词:识别率分类器人脸

崔凤焦

(北京科技大学 计算机与通信工程学院,北京 100083)

0 引 言

1970年,研究者开始关注表情识别并进行了相关研究。GALTON于1888年和1920年在《Nature》上发表了两篇论文,主要是表情识别在身份识别方面的应用,这是最早关于表情识别应用的文章。1971年,Ekman P和Friesen W N研究了6种基本表情(高兴、悲伤、惊讶、恐惧、愤怒、厌恶),并采集上千幅不同人的表情组成了一个表情库[1],这是一个系统的图像库。自表情识别的出现到现在已取得了一定的进展[2-3],但由于对表情的研究相对复杂,而且会受到光照、角度等外因的影响,发展相对比较缓慢。目前,市场上也缺乏较好的应用系统。此外,由于现有表情库都是在特定条件下采集的,使得研究具有一定的局限性。

在已有研究的基础上,采用卷积神经网络(convolutional neural network,CNN)、支持向量机(support vector machine,SVM)和Adaboost三种算法对Cohn-Kanade表情库进行了分类识别,并结合参数优化、算法结构设计、算法融合等对算法进行了对比分析,为下一步的研究工作提供基础和参考。

1 算法综述

1.1 卷积神经网络

CNN是对传统神经网络的改进,它引入了卷积和降采样(pooling)技术。1988年,Lecun Y等[4]第一次成功训练了多层CNN。2012年,Hinton G E等[5]将CNN应用于ImageNet图像库,相对之前的研究,其错误率降低了6%(前五个由25%的错误率降为17%)。CNN在手写字符识别[6]、人脸识别[7]、图像边缘检测[8]、车牌字符识别[9-10]、交通信号识别[11]、身份证号码识别[12]、人脸表情识别[13]等领域取得了很好的效果[14-15]。

CNN每层的输出特征图,是上层特征图被具有学习性的卷积核卷积后通过激励函数得到的,如式(1)所示:

(1)

f表示特征图选择集合;X表示卷积核;k表示CNN的结构层数;b表示CNN输出图各自的偏置量。

网络结构的子采样层中输出特征图的数目和输入特征图的数目一致,但是输出特征图较小,子采样层形如式(2):

(2)

其中,down()为子采样函数,子采样实际上是对输入图像进行区域求和的过程,区域大小为n*n。图像经过采样处理会在两个维度缩小n倍,所以输出图像比输入图像小。每个输出有一个特定的乘性偏置和加性偏置,b为输出图像的加性偏置。

1.2 支持向量机

SVM[16-17]是一种模式识别方法,由VAPNIK等在1998年提出,它的实现目标是达到结构风险最小的同时为2种及以上的样本数据找到一个最优的分类面。SVM和卷积神经网络都是学习性算法,不同之处在于,SVM采用数学上的方法实现,优化技术也是数学实现。

SVM算法做分类,关键要选择合适的核函数。为了实现核函数的广泛应用,采用松弛系数(gamma,g)和惩罚系数(c)来校正。

SVM算法原理如图1所示。

1.3 Adaboost

Adaboost运用迭代思想,训练某个训练集的多个弱分类器,最终级联为一个强分类器。2001年,Viola P和Jones M[18]使用Adaboost算法对人脸进行检测,首次提出了“积分图”,并建立了真正意义上的检测系统:Haar分类器=Haar-like特征+积分图方法+Adaboost +级联。算法过程如下:

图1 SVM算法原理示意图

(1)对要训练的样本集进行标定:(x1,y1),(x2,y2),…,(xL,yL),gj(xi)为第i个样本的第j个Haar-Like特征,xi∈X为训练样本,yi∈Y=(-1,1)对应真假样本,T为循环的最大次数;

(2)给权值设定默认值wi,j=1/2m,1/2n,其中m为正样本数,n为负样本数,样本总数L=m+n;

(3)进行T轮训练,Fort=1,2,…,T:

(a)所有权重的样本进行归一化处理:

(3)

(4)

式(4)可由pj决定,但只可选择±1两种情况。

(c)满足最佳阈值条件下,从已训练好的简单分类器中找到εj最小的ht;

(4)强分类器为:

(5)

其中,αt=ln(1/βt),它的值与ht(第t轮的分类规则)的预测错误相关,αt是对ht的评价,ht的重要性与αt的大小成正比。

上述算法的迭代过程共循环T次,每次权值分布都不相同,由此对正样本确定一个新的权值分布P,在P上得到一个新的弱分类器。所以,T次循环共有T个弱分类器,最后得到的强分类器是训练好的所有弱分类器权值的平均。

2 实验结果与分析

选用的样本均来自Cohn-Kanade库,实验图片总数为2 126张,其中包括anger(381张)、disgust(302张)、fear(280张)、happy(312张)、sadness(240张)、surprise(380张)、common(102张)、contempt(129张)8类表情。

从Cohn-Kanade表情库中取不同测试者的一部分图片作为样本集,其中60%作为训练集,40%作为测试集;实验循环15次,并取它们的平均值作为最终的实验结果。

2.1 人脸检测

在进行表情识别之前,要先进行人脸区域检测和归一化处理,把非面部区域的部分去掉(例如头发),减小非人脸区域以及人脸角度偏离所造成的不必要的误差,以提高识别精度,裁剪图片统一为64*64。

提取人脸数据,然后进行特征提取,提取维度为4 096。采用LBP进行全局特征提取,检测窗口为若干个16*16的小区域。对于每个区域中的某个像素点i,将其周围的8个像素点进行比较,值大于i的计为1,小于i的计为0,最后得到8位二进制数,即得到i的LBP值;计算所有小区域的直方图,即LBP值的概率,把LBP的统计直方图作为表情图的特征向量,并对直方图做归一化。最后,把所有区域的统计直方图合并为一个特征向量,即人脸的特征,提取的特征为4 096维,然后训练分类器进行表情分类。

2.2 基于卷积神经网络的表情识别

2.2.1 卷积神经网络结构设计

CNN的网络结构主要由网络层、卷积层、子采样层和输出层组成。在进行结构设计时,网络层总数和每层的神经元个数都是考虑的主要因素。其中输出层有8个(因为共8种表情)神经元。

识别正确率随着CNN网络层数的增加而提高,但是层数越多CNN的结构就会越复杂,训练权值参数的效率就会降低。采用7层卷积神经网络结构,输入层为64*64的图像,卷积核的大小为5*5,3个卷积层C1,C3,C5,2个子采样层S2,S4,1个全连接F6和1个输出层。卷积神经网络结构如图2所示。

图2 卷积神经网络结构

2.2.2 识别结果

卷积神经网络神经元输出的特征图如图3所示。

图3 卷积神经网络神经元输出特征

CNN的识别结果如表1所示。

表1 CNN识别结果

表情训练样本数测试样本数识别率/%anger22815380.15common614178.90contempt775272.56disgust18112176.81fear16811270.64happy18712569.31sadness1449675.83surprise2288075.14

注:平均识别率为74.92%。

2.3 基于支持向量机的表情识别

2.3.1 基于SVM的表情识别实现方案设计

SVM算法处理二类问题,而8种表情是多分类问题,所以要采取一定的方法使得SVM可以识别8种表情。采用以下2种分类方式使SVM实现N分类:一种是1vs(N-1);另一种是1vs1。选择1vs1的方法,训练N*(N-1)/2个分类器,判断某点属于分类器i还是属于分类器j。在N类问题中,有N个一对一的两类SVM分类器,任意两类之间都有1个分类超平面。故8类表情,共构造28个分类超平面。

2.3.2 支持向量机的参数设置

在MATLAB平台调用Libsvm-3.20工具箱,选择SVM的不同c,g参数进行识别调试,并比较识别结果,以寻找最优参数。其中,c是惩罚系数,表示对误差的宽容度,值越高,越不能容忍误差的出现;g是选择径向基函数作为核函数后,该函数自带的一个参数,隐含地决定了数据映射到新的特征空间后的分布。参数选择结果对比,c选为4左右、g为2^(-8)左右时为最佳参数选择。

2.3.3 识别结果

SVM的识别结果如表2所示。

表2 SVM识别结果

表情训练样本数测试样本数识别率/%anger22815371.45common614165.63contempt775262.24disgust18112173.81fear16811270.14happy18712568.31sadness1449665.89surprise2288065.73

注:平均识别率为67.90%。

2.4 基于Adaboost的表情识别分类

2.4.1 Adaboost分类器结构设计

采用Adaboost级联分类器进行面部表情识别时,分别采用3级和5级级联,并比较识别效果。实验过程从有两个特征的一个强分类器开始,通过调整它的阈值达到最小错误率,得到相对较好的人脸分类器。

2.4.2 识别结果

3级和5级级联Adaboost分类器识别结果对比如表3所示。

表3 3级和5级Adaboost识别结果对比

表情训练样本数测试样本数3级识别率/%5级识别率/%anger22815363.2765.18common614164.7567.32contempt775268.4368.70disgust18112170.7171.01fear16811269.0570.23happy18712572.3172.89sadness1449669.7971.25surprise2288073.8273.72

注:平均识别率分别为69.02%和70.04%。

由表3可知,5级级联分类器的识别率较高。因此,采用5级级联Adaboost分类器的识别结果作为最终的实验结果。

2.5 实验结果及算法性能分析

通过比较可知,CNN的平均识别率最高,即对Cohn-Kanade表情库的识别中,CNN是三类算法中识别效果相对较优的算法。根据实验结果,针对鲁棒性、参数设置和处理时间等对这三类算法进行性能比较。

鲁棒性:即算法的稳定性,在实验中CNN对图片畸变的承受能力是最强的,主要因为CNN二次抽样的特点使其具有很好的鲁棒性。

参数设置:CNN的参数设置相对复杂,参数的初始值不能太小、权重参数以及设置梯度更新步长等都较复杂;SVM主要是参数c,g和核函数的参数设置,以及与对应的Libsvm-3.20工具箱参数的设置,寻找最优c,g,比CNN的参数设置相对简单一些;Adaboost基本不用调参。

处理时间:Adaboost的处理速度是最快的,研究表明Adaboost在训练样本充足时可适应特别复杂的分类面。

3 算法分析及其发展趋势

3.1 算法的优缺点分析

3.1.1 卷积神经网络

CNN的算法结构比传统神经网络的要简单,最大的特点是权值共享,减少了计算时间,而且CNN处理图像时可把原图直接输入网络,特征提取也较简单,因此会简化处理,加快处理速度。目前广泛应用于人工智能、模式识别、人机交互和图像处理等方面,多分类问题用CNN处理可得到更好的效果。

缺点:实现相对复杂;网络训练时间较长;用CNN处理数据,由于考虑其泛化性,需要对处理的样本进行编号,在实际的研究中,很少有数据是有类标号的,如果进行人工标号会大大降低工作效率。

3.1.2 支持向量机

SVM是基于统计学的算法,属于模式识别方法,主要用于解决分类问题。SVM是把数据从低维变换到高维,并转换到线性问题来处理,所以具有较高的效率和精度。

缺点:SVM是小样本的学习算法,在处理大量的样本数据时不能取得很好的效果;SVM本身是解决二类问题的算法,因此应用在多分类问题上有一定的局限性。因此,SVM的改进方向主要针对多分类问题和大数据样本问题。

3.1.3 Adaboost

Adaboost为迭代算法,具有较高的分类精度。Adaboost级联分类器是由几级弱分类器构成,而构造弱分类的过程并不复杂,所以Adaboost分类器的形成也不复杂,构造极其简单;此外,Adaboost分类器中各级弱分类器都是独立的,可以选择自己的方法进行结构组成,由此可得Adaboost算法是为各级级联提供框架。Adaboost的另一个优点是没有过拟合问题。Adaboost同时也存在一些缺点:噪声会影响其分类结果;对样本的训练时间较长;最终结果受制于弱分类器的选择。

3.2 算法的改进方向

根据各个算法的上述缺点,有针对性地提出三种算法的改进方向。

对CNN结构方面的改进,是直接把图像输入网络进行处理,下一步研究工作把原始数据进行相应的预处理后再输入网络,提高识别精度,减少样本的训练时间;CNN各层映射结果一般是独立的,若用PCA或其他算法对CNN各层的映射结果进行降维融合,并作为最后的特征提取结果,可以提高识别率。

由于SVM在多类问题方面的应用有一定的限制,需要找到一定的方法来构造解决多类问题的SVM分类器,例如通过1vs1的分类方法来构造多类的SVM分类器。在今后的研究中可以采用其他方法,例如与其他算法结合,获得较好的分类效果。

Adaboost的改进方向主要考虑弱分类器的权值分配和算法间的结合,其中需要通过大量的实验掌握权值的选择方法,弱分类器的权值分配决定了Adaboost分类器的性能。

4 结束语

文中对CNN、SVM和Adaboost三种算法的算法结构进行了对比分析和改进设计,以分别实现对Cohn-Kanade表情库的识别,并根据实验结果对三种算法的优缺点进行了对比分析,对表情识别领域的研究与实际应用具有一定的参考价值。

[1] EKMAN P,FRIESEN W V.Constants across cultures in the face and emotion[J].Journal of Personality and Social Psychology,1971,17(2):124-126.

[2] MEHRABIAN A. Communication without words[J].Psychology Today,1968,2(4):53-56.

[3] 詹永杰,龙 飞,卜轶坤.基于独立子空间分析特征学习的表情识别[J].系统仿真学报,2015,27(10):2316-2319.

[4] LECUN Y,BOSER B,DENKER J S,et al.Backpropagation applied to handwritten zip code recognition[J].Neural Computation,1989,1(4):541-551.

[5] KRIZHEVSKY A,SUTSKEVER I,HINTON G E.Imagenet classification with deep convolutional neural networks[C]//Advances in neural information processing systems.[s.l.]:[s.n.],2012:1097-1105.

[6] 高 学,王有旺.基于CNN和随机弹性形变的相似手写汉字识别[J].华南理工大学学报:自然科学版,2014,42(1):72-76.

[7] 刘 洋,季桂树,王 刚.表情识别中基于轴对称的人眼定位方法[J].计算机技术与发展,2008,18(12):47-49.

[8] 叶 波.基于细胞神经网络的图像边缘检测研究[D].重庆:重庆大学,2012.

[9] 王李冬.一种新的人脸识别算法[J].计算机技术与发展,2009,19(5):147-149.

[10] 谢文浩,翟素兰. 基于加权稀疏近邻表示的人脸识别[J].计算机技术与发展,2016,26(2):22-25.

[11] 陈先昌.基于卷积神经网络的深度学习算法与应用研究[D].杭州:浙江工商大学,2013.

[12] 郑永森.基于卷积神经网络的身份证号码识别研究与实现[J].计算机光盘软件与应用,2015,18(3):13-14.

[13] 徐 鹏,薄 华.基于卷积神经网络的人脸表情识别[J].微型机与应用,2015,34(12):45-47.

[14] 孔 锐,张 冰.光照变化条件下人脸识别方法研究[J].系统仿真学报,2016,28(3):689-695.

[15] 白小叶,程 勇,曹雪虹.基于光照归一化分块自适应LTP特征的人脸识别[J].计算机技术与发展,2016,26(5):56-60.

[16] 祝曙光,胡晓峰,司光亚,等.仿真实验与SVM相结合的数据分类方法研究[J].系统仿真学报,2010,22(3):761-764.

[17] 黄永明,章国宝,董 飞,等.基于Gabor、Fisher脸多特征提取及集成SVM的人脸表情识别[J].计算机应用研究,2011,28(4):1536-1539.

[18] VIOLA P,JONES M.Robust real-time face detection[J].International Journal of Computer Vision,2004,57(2):137-154.

猜你喜欢

识别率分类器人脸
学贯中西(6):阐述ML分类器的工作流程
有特点的人脸
一起学画人脸
基于朴素Bayes组合的简易集成分类器①
三国漫——人脸解锁
档案数字化过程中OCR技术的应用分析
基于PCA与MLP感知器的人脸图像辨识技术
科技文档中数学表达式的结构分析与识别
人工智能现状和发展
浅谈多分类器动态集成技术