钟明静,卢涵宇,李丹杨*,兰海翔,侯汝冲,胡正江
(1.贵州大学 大数据与信息工程学院,贵州 贵阳 550025;2.贵州力创科技发展有限公司,贵州 贵阳 550018)
人脸表情是表达情感的重要方式之一,面部表情是人类表达情感和意图的自然和直接的手段,表情识别也是社会交际中最强大、最具挑战性的任务之一。随着计算机和人脸检测技术的快速发展,通过对机器的训练,让具有非人类思维的机器对人脸面部表情的分类,以及分类结果精确着实是学者们目前面临的一大挑战[1-17]。因此研究表情识别的算法对一些领域有着至关重要的意义。
在图像处理中,计算机视觉特征提取是一个重要的阶段,它标志着图像处理从图形化到隐式数据描述的转变。ZHANG等[1]和HEGDE等[2]用Gabor小波基于纹理特征提取方法作了深入研究。2016年,COSSETIN等[3]通过中心像素和其位置像素之间的阈值化得到LBP特征和韦伯局部人脸纹理特征(WLD)。2014年,TAYLOR等[4]提出了一种独立分量分析(ICA)利用多通道观测提取局部特征的特征提取方法。POURSABERI等[5]在2012年提出KNN(K-最近邻)算法是评价模型和其他模型之间关系的一种分类方法。HERNANDEZ等[6]提出SVM的四种类型核函数能发挥更好的性能。经典的贝叶斯神经网络分类器是一种分类方法,它和反向传播算法(BP)都对表情进行分类,MAHERSIA等[7]用贝叶斯分类法获得更好的分类精度。近年来,用得较多的分类器还有CNN, DNN等,但是上述提到的特征提取的方法都是基于单一特征对表情进行识别,而单一的特征往往不能准确描述图像内容,无法描述表情中细微的特性和变化,所以近几年来不少学者就此作出了一些改进,比如王敏等[8]生成自定义融合公式得到融合特征的公式,并提出了自适应随机权值多特征融合的图像分类,罗微等[9]将局部二值模式和方向梯度直方图融合木材缺陷的特征进行分类。
在此基础上,笔者提出了从粗略到细的一种策略对特征进行融合,采用提取全局和低维特征的主成分分析(principal component analysis, PCA)进行特征提取。通过对图片的像素值,经过一系列的预处理,得到原始数据,也就是原始特征,再利用原始特征进行PCA降维,利用提出的策略方法进行特征层融合,将此作为输入数据用作BP神经网络的训练与测试数据,提高了表情识别率。
随着表情图像的采集条件越来越复杂以及手机像素的提高,提取后的特征具有高维向量,一般采用主成分分析、线性判别等降维算法对这些特征向量进行降维。PCA是一种能够线性降维方法,可消除数据之间相关性并减少数据选择工作量。其中,奇异值分解(singular value decomposition, SVD)可以作为PCA算法中的特征分解,SVD能直接在原始矩阵上进行矩阵分解。此外,PCA仅使用了SVD的右奇异矩阵,没有使用左奇异矩阵。左奇异矩阵可以用于压缩行数,而右奇异矩阵可以用于列数,并且还达到了PCA降维的目的。
在PCA中,根据协方差矩阵得到特征值,这是数据集中的重要特征,该方法可在保留有绝大部分原始数据信息的情况下仅利用少数几个主成分值来代替,实现数据降维[10]。通过对样本协方差矩阵进行奇异值分解并构造降维投影轴为:
(1)
[U,S,V]=svd(∑),
(2)
式中:m为样本数量,n为样本维数,x(i)表示第i个样本,降维距离误差为:
(3)
(4)
为确保降维输出能够很好地对原始数据进行解释,贡献率取值为0.99。
通过SVD对数据的处理,就可以得到更低维的数据集来表示原始数据,进而较好地去除了噪声和冗余信息,以此达到了优化数据、提高算法识别效果的目的。
BP神经网络(back propagation neural networks)是一种基于误差反向传播算法训练的多层感知器前馈网络,它具有较强的非线性适应性,较好的容错性以及较强的自组织、自学习与自适应能力[11]。常见的BP网络由一个输入层、多个输出层和若干个隐含层组成,输出层采用线性传递函数,采用误差反向传播学习算法进行权值调整。通过预测输出和期望输出得到误差实现权值以及阈值的更新,以此循环使得训练的网络达到最优[12]。
设节点i和节点j之间的权值为wij,节点j的阈值为θj,每个节点的输出值为xj,而每个节点的输出值是根据上层所有节点的输出值、当前节点与上一层所有节点的权值和当前节点的阈值以及激活函数来实现,具体表示如下:
(5)
其中f为激活函数,一般选取S型函数。
在BP神经网络中,误差信号反向传递是基于Widrow-Hoff学习规则的,假设输出层的所有结果为dj,误差函数如下公式:
(6)
根据梯度下降法,权值矢量的修正量正比当前位置上E(w,θ)的梯度,对于第j个输出节点有:
(7)
根据梯度下降法,那么对于隐含层和输出层之间的权值和阈值调整如下:
(8)
而对于输入层和隐含层之间的权值和阈值调整同样类似求得。
在大多数研究者的研究中,更多的研究点是对特征提取算法的修改以及对分类器的改进,一般分类方法先进行数据预处理,再特征提取,最后表情分类,在本文中特征提取用主成分分析法,从图片的像素值经过裁剪、压缩等预处理,将预处理后的数据进行PCA特征提取,再用BP神经网络作为分类方法。
但是在图像的表征上,如何更好的描述关键特征,研究的人却少。例如2019年童靖然等[13]在针对单模态在目标多尺度检测效果较差的问题提出了一种基于可见和红外双模态特征金字塔融合的行人检测算法,还有王世芳等[14]将关键尺度下的多种特征融合在一起成为特征金字塔特征对行人检测,该方法也取得了在检测精度和速度上的效果。根据其他研究者的研究点,笔者认为对于原始特征,它的信息量比较丰富,但缺点是数据冗余,除了主要关键特征,其他背景、噪声等因素也多,会导致重点不突出。而PCA特征提取降维后的特征,能够突出核心重点的人脸特征,但是在变换过程中损失了一些细微的人脸信息量。于是,为了达到两者的综合,笔者提出了本文的人脸表情识别方法。
通常用PCA进行表情识别是将图像在特征向量形成的低维表情空间中的投影坐标作为特征进行分类识别的。但是在这一过程中,PCA将信息集中在少数的维度特征上,不可避免地带来信息的损失,同时也带来特征间关系的变化和特征重要性的改变。这种改变一方面提高了数据区分度,对模式识别带来正面效应,另一方面也变动了数据间的关系,而基于变换后的数据进行建模并不一定能反映数据的真实情况,因此具有一定的风险性。
使用图像像素可以得到原始特征,该特征真实反映了数据间相互关系和本质特征,且从整体出发描述数据概况。无论是人类认知,还是格式塔理论,还是Navon理论都明确指出全局特征的认知将优于局部特征。因此,使用图像原始特征识别图像满足人类认识规律。但是原始图像中充斥冗余特征,且相当部分特征对识别帮助不大,反而会降低机器学习能力。因此,结合全局特征与局部特征将有利于提升模式识别效果。
基于以上,为了让特征提取更好地用于表情识别中,笔者采用基于从粗到细策略的特征层融合方法,使得融合后的特征在尽可能保留数据间真实信息和整体认知的同时引入对于部分重要特征的关注,并加强分类能力,在本文的JAFFE[15]、COPE表情[16]、GEMKI-4K[17]数据集上,结果超过了预期的效果,达到了真正的提高表情识别率的目的。
本文将提取一组的表情特征称为特征描述,用于表征当前表情和新的表情特征。笔者用以下的步骤来提取面部表情图像的特征得到融合后的特征:
Step1:输入表情图像,将其转换为灰度图像,生成梯度阵列并进行归一化。
Step2:二维人脸图像通过将每一行或每一列连接成一个长向量来表示一维向量X=[X1,X2,X3,…,XN],其中X为训练图像。
Step3:n个特征空间中利用映射向量提取权值向量P(k)=[P1,P2,P3,…,PN],产生主成分Q(i)=Q1,Q2,Q3,…,Qn,给出Q(J)=XK(j)×PK(j),计算协方差矩阵XTX得到特征向量和特征值。
Step4:根据特征向量对应的特征值对特征向量进行从高到低的排序,选择组成特征向量的分量。选择这些分量后,就可以得到新的数据集,接着对向量进行转置,将其增加到原始数据集的左边。
Step5:提取特征向量用于检测表情样本。
经过五个步骤后,就得到了处理好的表情特征,把原始特征和降维后的特征融合起来,这样不仅得出了主成分向量,而且还让信息较丰富的原图也融合进来,也没有在特征降维后损失缺失的信息,这样在训练网络中能够更加准确地预测出正确的表情。
在本文中使用文献[15-17]数据集,几个数据集的样本数量不是很大,最少图片张数213张,最多4 000张。利用主成分分析法通过对原始数据进行非监督降维方法,得到最优特征向量,再用特征向量作为BP神经网络的输入参数,建立表情预测模型。
BP神经网络预测分网络构建、网络训练和网络预测三个步骤,本实验选择包含一个隐含层的3层BP网络结构,这样同时也能实现输入到输出的任何非线性映射。BP神经网络的步骤如下:
Step1:初始化。给每个连接权值wij、wjk、阈值θ1与θ2赋予区间(-1,1)内的随机量,随机选取一组训练和验证集提供给网络。
Step3:通过隐含层的输出bj、连接权值wjk和阈值θ2计算输出层各单元的输出Lt,然后通过传递函数计算输出层各单元的响应Yt。
Step5:随机选取下一个学习样本向量提供给网络,返回到step 3,直到训练和验证样本训练完毕。
Step6:将测试样本提供给网络以验证网络分类的正确性。
损失函数(loss function)是用来估量模型的预测值f(x)与真实值Y的不一致程度,以下是本文模型的损失函数:
(9)
连续迭代参数以最小化损失函数J(θ),其中θ是可训练参数(包括权重和偏移)。λΦ(θ)是正则化项(regularizer),损失函数越小,说明模型对于该样本预测越准确,机器学习中为了防止出现过拟合现象,通常会在残差损失函数后面加上正则化项来限制模型复杂度。本文认为参数wi接近于0的个数越多,系统的复杂度越低,过度拟合的可能性就越小。在训练的过程中就需要找到使目标函数最小时的λΦ(θ)值。
算法分为特征的提取和融合、分类模型的训练。主成分分析作为本文的特征提取和降维,将PCA特征和原始特征结合作为我们特征融合的部分,这么做的目的是在特征上结合了两种特征的优点,并以实验证明,与其他分类算法相比较,本文的特征融合确实有助于提高分类精度。
本文共采用了三种表情数据库,数据库信息简述如下:
① JAFFE数据集[15]:本数据集共有7种表情(愤怒、厌恶、害怕、高兴、悲伤、惊讶、中性),JAFFE持有10个日本女性的表情与7个面部表情共213张图片,JAFFE数据库中的每个图像都包含256×256像素分辨率,见图1。
图1 JAFFE数据库样本
② COPE数据库[16]:本数据集是首个公开的针对婴儿疼痛表情分类的数据库,包括26个年龄为出生18 h~3 d不等的健康白种新生儿的204张彩色照片。有两种表情(疼痛和非疼痛),即60张疼痛表情照片和144张非疼痛照片。
③ GEMKI-4K数据库[17]:2009年,Whitehill等建立的笑脸人脸图片数据库,图片来自全世界形形色色的人,数据库中的人脸图片姿态范围为:低头,抬头,左右旋转,但都保持在20°正面范围内。除了姿态、光照的变化,还包含年龄、性别、种族、配饰、眼睛遮挡等各种干扰因素。GEMKI-4K数据库中的每张图片按照是否微笑被手动标记为两类:笑脸和非笑脸,其中笑脸图片2162张,非笑脸图片1 828张。
本文的重心在于研究融合后的数据对情感识别的提升效果,因此仅采用基本数据预处理方式,其步骤如下:
① 由于文献[15-17]中数据库的原始图像中最大的分辨率是256×256,所以需要对其进行压缩和裁剪,经裁剪后的表情图像去除了背景等干扰区域,如图2所示。为方便之后的计算,须将数据库中图像大小统一为24×24,同时为了凸显人脸区域特征,需要裁剪背景区域,仅保留人脸区域,截取方法采用的是opencv的人脸识别工具,用Matlab作为语言接口,可以对人脸区进行分割。
② 将所有图片转化为灰度图。本文收集到的COPE和GEMKI-4K数据集采用的是RGB颜色模式,处理图像要分别对RGB三种分量进行处理,进行加权平均能得到较合理的灰度图像,既所需要的表情特征数据。利用在“1.1节”所提出的PCA特征降维对表情特征进行处理,并构造组合特征。再采用BP神经网络作为分类器对数据进行迭代训练和识别,得到最终的表情识别率。最后,对数据进行处理后,将数据按照7∶2∶1的数据比例分为训练集、验证集和测试集,并采用十倍交叉法得到最终实验结果。
(a)裁剪前
(b)裁剪后
(c)裁剪前
(d)裁剪后
图2 裁剪前后的高兴表情图像
Fig.2 Happy facial expression images before and after cropping
首先本文分别用三种表情数据直接进行BP神经网络的分类与识别,未对特征数据进行降维或融合处理,在这里本文设置第1组实验对照组:实验1是对原始特征进行BP神经网络训练;实验2是对裁剪后的特征进行训练,看裁剪后的识别率是否有所提高,参数设置隐含层都为3层,训练迭代次数为1 000次,在“2.3节”中提到λΦ(θ)是正则化项,因为损失函数越小,说明模型对于该样本预测越准确,所以对于每组实验都有一个最优的参数λ,这里也在实验结果中记录出来。因为采用了交叉验证法,所以将平均识别率最高的作为结果。实验结果如表1所示。
表1 三个数据集进行BP神经网络训练识别率对比
实验结果分析:①三个数据集对于裁剪后的特征进行BP神经网络训练,都表现出了比原始特征更好的分类性能,这原因就在于,原始图像有很多未处理的对于分类下降的因素,裁剪后的图像对原始图像人脸的背景、头发等干扰区域进行了必要的去除,这种裁剪后的特征平均识别率分别提高了7.22 %、6.77 %和4 %。②对于参数λ,是本文的正则项,笔者发现原始特征的λ较裁剪后的λ更低,这说明该特征的简单提取虽然在识别率上提高了,但是损失函数比原来增大,模型的性能并没有多大的提升,因此本文需要更深层次的特征提取提高分类精度以及更强大的模型。
为了对比采用不同降维方法的实验性能,第2组实验加入了PCA特征降维处理。实验3采用基于裁剪后的特征对其进行PCA降维特征,对其进行训练;实验4采用本文提出的特征层融合结合BP神经网络方法,分别对3个数据集进行训练,实验结果如表2所示。
表2 特征层融合结合BP必要性验证识别率对比
实验结果分析,从表2数据的结果可知:① 3个数据集对于本文提出的特征融合进行BP神经网络训练,都表现出了比单个PCA特征更好的分类性能,这种特征融合后的特平均识别率分别提高了5.1 %、4.6 %和1.4 %。②特征融合的参数λ比单个特征PCA降维特征更小,说明本文提出的模型不仅能在分类精度上提高,而且鲁棒性也越好。
为了比较和其他分类方法的性能好坏,本文设置第3组实验。考虑到研究者较多数用的分类器也是比较经典的分类器,笔者采用支持向量机(SVM)与本文的方法进行对比,还有随机森林、KNN,BAYES分类器对三种表情数据进行分类测试。实验5采用特征融合结合BP改进的神经网络方法对三个数据集进行识别率验证;实验6利用几种经典的分类算法对三种表情预处理的数据进行分类和训练。并比较两者的分类效果,得出实验结果并分析,实验结果如表3所示。
在SVM的参数设置中,本文设置核函数类型为RBF函数,随机森林中决策树个数为10,KNN中的k值设置为1。
表3 本文方法与其他分类方法性能结果对比
本文提出一种基于从粗略到细作为特征层融合的方法,采用BP神经网络训练分类的表情识别方法,并针对训练方法,利用比较经典的分类方法SVM、KNN等对其进行性能验证。通过几组对比实验结果,表明本文方法相较预处理后的特征及PCA降维处理特征,训练得到的结果与本文提出的特征层融合的方法虽然在训练时间上没有过多的提升,但在对识别率上有了一定提升,且仅带来训练时间的小幅度增加,适用于情绪识别这类对精度要求高,对实时性要求较低的领域。另外,与其他一些分类器相比,针对SVM只能对小数据进行分类的不足,BP神经网络在对数据训练的维度没有太多的要求,且对表情的识别率也得到提高。下一步将研究的工作重点是如何用更佳的分类器以减少训练的时间并得到更好的识别结果,并对分类器的融合上有待更加深入的研究。