翟懿奎 刘 健
(五邑大学信息工程学院,广东江门 529020)
人脸表情识别是模式识别研究中的重要领域,其在人机交互、医疗护理、机器人等领域有着非常重要的应用价值[1]。研究者们提出了很多人脸表情识别算法并成功应用在相关任务中,但是在实际应用环境中,因人脸表情具备个体差异大、主观性强等因素,如何让计算机很好地理解并识别真实环境下的人脸表情成为人脸表情识别领域中的重要课题。
人脸表情识别和传统模式识别任务类似,其研究任务主要分为两个部分:特征提取和分类识别。针对这两个部分,研究人员提出许多方法。在人脸表情特征提取方面,主动形状模型(ASM)[2]等人脸表情几何特征提取方法,局部二值模式(LBP)[3]、局部相位量化(LPQ)[4]等人脸表情纹理特征提取方法,主成分分析(PCA)[5]、独立成分分析(ICA)[6]等人脸表情统计特征提取方法,以及Gabor滤波器(Gabor Filters)[7]等人脸表情变换域特征提取方法被提出,并取得了良好的效果。K近邻识别算法(KNN)[8]、人工神经网络(ANN)[9]、隐马尔可夫模型(HMM)[10]以及支持向量机(SVM)[11]等方法相继被提出并应用于人脸表情识别任务上。
与传统特征表达和识别方法相比,基于卷积神经网络的人脸表情识别方法通过构建多层非线性神经网络,从表情数据库中学习更深层次的表情特征,将样本图像从原始空间变换到抽象特征空间,从而提升识别效果。文献[12]等基于人脸表情数据集构建卷积神经网络并进行训练,实现人脸表情图像特征的自动提取和识别,获得了较好的效果。
基于大规模数据集,深度卷积神经网络在大量模式识别任务上取得了良好的效果[13]。然而在人脸表情识别等不包含大规模数据集的模式识别任务中,直接训练深度卷积神经网络的表现并不理想,而为小规模数据集上的模式识别任务构建大规模数据集是不太实际的。为此,许多研究者转而利用迁移学习来寻求解决方法,与直接在人脸表情数据集上训练相比,利用迁移学习方法能在准确率上获得较大的提升。文献[14]将VGG、ImageNet等典型深度卷积神经网络用于人脸表情识别任务,实现人脸表情特征提取和识别,获得了较好的结果。
尽管迁移学习方法在许多模式识别任务中都取得了良好的效果,但是在人脸识别模型迁移到人脸表情识别任务的工程中,迁移学习的表现依然欠佳。因在人脸表情识别任务中,需要识别的类别总数远小于其他任务类别总数(如人脸识别任务等)。在将模型迁移到人脸表情识别任务时,模型产生的特征对于人脸表情识别任务来说通常太复杂,且冗余信息较多,过拟合的情况仍然存在。为有效缓解模型迁移过程中产生的过拟合问题,提升人脸表情识别效果,本文将深度卷积神经网络(Deep Convolutional Neural Network, DCNN)和迁移学习方法(Transfer Learning)应用于人脸表情识别研究。本文将人脸识别网络模型在人脸表情数据库上进行微调训练。为了抑制过拟合,本文首先对SFEW2.0数据集进行数据增强,然后将双激活层(Double Activation Layer, DAL)和Softmax-MSE损失函数应用到微调后的网络模型上。为了检验识别效果,本文在经过数据增强处理的SFEW2.0数据集和FER2013数据集上分别进行测试,获得了主流识别效果。
本文主要内容安排如下:第2部分介绍本文采用的迁移学习模型、卷积神经网络模型以及本文提出的Softmax-MSE损失函数和双激活层网络结构;第3部分介绍实验结果并进行分析;第4部分对本文进行总结。
在模式识别任务中通常存在这样一个假设,即训练数据和待处理数据处在同一个样本空间中,它们有着相同的分布规律。但在实际应用中,这个假设是很难成立的。迁移学习因其能够实现在不同领域、不同任务间进行知识迁移,近年来越来越受到研究人员的关注。传统机器学习过程和迁移学习过程如图1和图2所示,传统机器学习过程注重于为多个学习任务分别训练不同的学习模型,而迁移学习过程更注重于利用其他不同任务中学习到的知识训练学习模型。
图1 传统机器学习过程Fig.1 Learning process of traditional machine learning
图2 迁移学习过程Fig.2 Learning process of transfer learning
在介绍迁移学习理论前,需要先介绍迁移学习相关符号和定义。首先介绍“域”和“任务”的概念[15]。在迁移学习中,一个“域”由一个特征空间χ和一个边际概率分布P(X)构成,其中X={x1,x2,…,xn}∈χ,迁移学习中主要有源域和目标域两个“域”。然后介绍“任务”的概念。对于一个特定的“域”D={χ,P(X)},一个“任务”主要由一个标签空间γ和一个主观预测函数f(·)构成,他们的关系为T={γ,f(·)}。
表1阐述了各类迁移学习方法与传统机器学习方法的联系。在迁移学习的研究中,主要将迁移学习分为归纳式迁移学习(Inductive Transfer Learning)、推导式迁移学习(Transductive Transfer Learning)和无监督迁移学习(Unsupervised Transfer Learning)三类[15]。将目标域与源域相同而目标任务与源任务不同但相关的迁移学习方式分为归纳式迁移学习,目标域和源域不同且目标任务和源任务也不同的迁移学习任务分为无监督式迁移学习,源域和目标域不同源任务和目标任务相同的迁移学习方法称为推导式迁移学习方法。
在人脸表情识别和人脸识别任务等相关任务中,模型提取的初层特征具有良好的通用性,在相关任务中都能够取得良好的效果,且在人脸识别任务中包含大规模带标签数据集。因此,本文采用归纳式迁移学习方法。本文选取人脸识别与人脸表情识别分别作为源任务与目标任务,将在大规模人脸数据集上训练得到的人脸识别模型迁移到人脸表情识别任务中。首先修改人脸识别网络模型[16]的全连接层和分类层结构,保持特征提取层结构不变。然后,修改原始人脸识别网络中的全连接层与Softmax分类层,使修改后的网络适用于人脸表情识别任务。称修改后的网络为Net EXP。在训练阶段,使用人脸表情识别模型中的参数初始化人脸表情识别模型。为了使训练过程平稳,在人脸表情数据库上以较小的学习率和权重衰减速率训练表情识别网络,得到人脸表情识别模型。为了获得更好的识别效果,本文在迁移学习过程中采用了“早停”的训练策略,即选择训练过拟合前的最优模型作为下阶段迁移学习的初始模型,并逐次减小训练学习率,直到模型测试达到理想状态。
卷积神经网络早在多年前就已经被应用于模式识别领域,近年来深度学习的发展使深度卷积神经网络的发展更加迅速。卷积神经网络能够在众多模式识别任务中取得快速进展主要得益于其特殊的两种网络结构方式:局部感知野(LRF)和权值共享(Sharing Weights)。
传统神经网络结构内部采用全连接结构,这对于小尺寸图像来说,计算整幅图像的特征是可行的。但是当图像尺寸变大时,计算图像特征会变得非常费时。卷积层通过采用局部感知野的方式,限制上下两层神经元之间的连接,使下层神经元仅连接上层神经元中的小块区域,从而解决大尺寸图像特征计算费时的问题。
权值共享是卷积神经网络另一个节省训练时间开销的方法。卷积神经网络通过连接若干卷积层(Convolutional Layer)和池化层(Pooling Layer),实现从输入图像到特征空间之间的映射。然后使用全连接层来实现从特征空间到类别空间之间的映射。在一个卷积层中包含若干类卷积核,每一类卷积核通过遍历输入特征图的方式提取特征,每一类卷积核提取一种图像特征,而多种卷积核组合可以提取输入特征图像的多种特征。
表1 迁移学习与传统机器学习的联系
图3 本文所采用原始网络结构Fig.3 Original network structure used in this paper
本文所采用的卷积神经网络模型Net EXP如图3所示。首先输入人脸表情图像经过卷积层处理,卷积核尺寸为5×5,输出96张特征图。特征图经过最大特征图层(Max-Feature-Map, MFM)处理,该层将上层卷积层输出的特征图平均分为两个部分,通过比较两部分对应特征图的大小,输出其中较大的特征图,特征图通过MFM层之后数量减少一半。MFM层输出的特征图经过最大池化处理后再经过10个“卷积层+MFM层”结构处理后输出至全连接层,“卷积层+MFM层”结构中卷积层采用3×3大小卷积核。最后全连接层接Softmax分类器输出图像所属的人脸表情类别。
在将人脸识别任务知识迁移到人脸表情识别任务的时候,主要有两个问题需要解决。第一个是通过迁移学习之后的人脸表情识别网络仍然含有大量冗余信息。这是因为在人脸表情数据库和人脸数据库数量级之间存在巨大差异。第二个问题是经过微调之后人脸识别网络模型对于人脸表情识别任务而言过于复杂,过拟合问题依然很严重。为了解决以上原因造成的过拟合问题,本文提出了一种Softmax-MSE损失函数。现有的Softmax损失函数只计算神经网络中Softmax层所有单个神经元的输出误差之和,并不关心类间误差。而Softmax-MSE损失函数将识别错误考虑进模型总体损失之内,使得人脸表情识别模型具有更好的识别效果,是一种损失敏感型的损失函数。
假设Loss层的输入输出神经元个数都为m,Loss层的输入集X={x0,x1,...,xm-1},在人脸表情识别任务中,X表示输入图像的识别结果向量,向量中每个元素表示输入图像属于元素代表类别的概率。则Loss层的第k个神经元经Softmax函数变换得到
(1)
(2)
如果CNN模型训练的batch size为n,则Softmax-MSE损失值L为
(3)
和原始Softmax损失函数不同,由式(1)、式(2)和式(3)可知,由于式(1)中xk-max(X)以及式(2)中kpk项的存在,在计算Softmax-MSE总体损失值时,输出层每个神经元的输出与该层神经元输出的最大值之差被考虑在总体损失函数之内,从而使Softmax-MSE损失函数在计算总体损失时,将类别间误差考虑在内。
为了继承Softmax损失函数的快速收敛优势,Softmax-MSE损失函数采用Softmax函数的梯度计算方法,即
(4)
具体地,和Softmax函数计算单个样本的梯度类似,针对单个样本在最后一层全连接层产生的输出xi,以及该样本产生的损失Lj,Softmax-MSE损失函数在计算其梯度时,对于网络模型在最后一层全连接层的第i个输出,若该神经元序号i与样本的真实标签值yi相等,则采用pi-1计入梯度值,若神经元序号i与真实标签值yi不相等,则采用pi计入梯度值。
在深度学习和模式识别领域中,ReLU激活函数因其稀疏连接和单侧激活的特点得到非常广泛的应用。ReLU激活函数能够在神经网络训练时加快神经网络的收敛速度,在大量深度学习和模式识别任务中取得好的效果。然而ReLU激活函数也因其稀疏连接和右侧线性激活的特点使其缺乏较强的非线性表征能力。一种新型的Maxout激活函数在文献[17]首次提,其具有较强的非线性表征能力,能够使网络模型获得更好的局部解。在文献[17]中的实验结果表明,采用Maxout激活函数的模型在MNIST和CIFAR-10获得了较为满意的效果。
ReLU激活函数和Maxout激活函数各有其优点。为了利用二者的优点,本文提出一种融合ReLU激活函数和Maxout激活函数的双激活层网络结构。本文在经过微调后的人脸识别网络中全连接层的后面加入双激活层(Double Active Layer, DAL)。双激活层网络结构图如图4所示,采用“Maxout+ReLU”两层结构,其通过应用Maxout激活函数的非线性能力与ReLU激活函数的稀疏性使网络获得局部最优解。在图4所示网络结构中,两组全连接层的输出连接至网络的最后一层卷积层。然后两组全连接层输出到Maxout层,该层找到两组全连接层输出中的较大值。最后Maxout层输出到ReLU层。在图4中,“IP1”和“IP2”表示全连接层。
图4 双激活层网络结构图Fig.4 Architecture of DAL layers
假设ReLU层的输入集为X,则输出集Y为
Y=max(0,X)
(5)
(6)
假设Maxout层的输入集为X,先把X等分成X1和X2两部分,再计算输出集Y,即
Y=max(X1,X2)
(7)
Maxout层梯度为
(8)
在双激活层计算过程中,式(7)用于前向传播计算过程,式(8)用于计算反向传播过程中的梯度。因ReLU的稀疏连接特性,网络模型更容易训练。从双激活层结构可以看出,由于Maxout计算过程中的输出集比输入集在维度上减少了一倍,使得双激活层结构也具备一定的数据降维能力。另外,从式(7)可知,Maxout函数还具备一定的非线性变换能力。
本文分别在SFEW 2.0数据库和FER2013数据库上进行实验。这两个数据库均包含“愤怒”、“厌恶”、“害怕”、“高兴”、“悲伤”、“惊喜”和“中性”7类表情。原始SFEW 2.0数据库包含958张训练图像,这对于微调人脸识别网络来说并不充足。因此本文针对SFEW 2.0数据库,通过在原始图像三个通道中加入随机噪声对数据库训练集进行了数据增强,测试集保持不变。为了增加人脸表情识别模型识别能力,对训练集进行挑选。将训练数据集中不包含人脸的图像和人脸检测器检测不到人脸的图像剔除出训练集。在下文中,称经过数据增强处理的SFEW 2.0数据库训练集为SFEW 2.0 new训练集。原始FER2013数据库训练集已包含足够量的训练集图片,本文不对FER2013数据集进行数据增强处理。
表2介绍了有关FER 2013训练集和SFEW 2.0 new训练集的详细信息,并显示了两个数据库训练集中每一类包含的图像数量。
本文人脸图像裁剪部分如图5所示,首先采用Viola Jones[18]人脸检测器检测人脸。然后根据人脸的5个特征点对图像中人脸部分进行裁剪,并输出裁剪后的人脸图像的灰度图片。裁剪后图像大小为144×144。
表2 FER 2013训练集信息和SFEW 2.0 new训练集信息
图5 SFEW 2.0数据库图像预处理Fig.5 The preprocessing on SFEW 2.0 dataset
本文在已经训练好的人脸识别模型上微调,这给训练人脸表情识别模型设定了一个好的训练起点。本文实验将基础学习速率设置为10e-5、训练模式设置为“fix”、momentum参数设置为0.9、gamma参数设置为5×10e- 6、power参数设置为0.75,其他solver参数根据表情数据库设置。在训练人脸表情识别模型的过程中,本文采取了“早停”的策略。即在训练过程中模型开始出现过拟合现象时,停止训练过程,以10e-1倍率降低基础学习速率并在“早停”前的最优模型上继续fine tuning过程,直到模型测试准确率不再提升。本文中实验在深度学习框架Caffe上进行。在FER 2013数据库上实验时,采用了同样的训练参数和“早停”策略。
本文在FER 2013和经过数据增强处理的SFEW 2.0数据库上进行实验。首先本文采用了第2.2节描述的网络结构Net EXP,然后在网络Net EXP第一个全连接层后添加双激活层并称该修改后的网络为Net EXP_DAL,将Net EXP中损失函数修改为Softmax-MSE并称该修改后的网络为Net Exp_MSE,最后本文将Net EXP_DAL网络中的Softmax损失函数修改为Softmax-MSE损失函数并称该修改后的网络为Net EXP_DAL_MSE。之后,分别在FER 2013数据库和经过数据增强处理的SFEW 2.0数据库上进行实验。本文方法与其他方法实验结果对比如表3所示。
表3 本文方法与其他方法实验结果对比
表4到表7分别给出了Net EXP、Net EXP_DAL、Net EXP_MSE以及Net EXP_DAL_MSE四个网络模型在FER 2013数据库上识别结果的混淆矩阵。对比表4和表5,本文所提双激活层网络结构在大部分表情类别上模型的识别准确率均获得提升,如“愤怒”、“高兴”、“中性”以及“惊喜”等表情。应用双激活层后,网络在“厌恶”和“害怕”的表情上识别率比原始网络低。应用双激活层后的网络容易将“厌恶”表情识别为“愤怒”,因为这两类表情体现负面情绪,在低表情强度时表现为大致相同的面部特征。应用双激活层后的网络容易将“害怕”表情识别为“悲伤”表情,因为在高表情强度时,两类表情包含“皱眉”和“张嘴”的面部特征。对比表4和表6,应用Softmax-MSE激活函数后,网络识别率在除“悲伤”和“惊喜”表情之外的所有表情上均获得提升。对比表4与表7,结合双激活层结构和Softmax-MSE激活函数后,网络在除“厌恶”和“害怕”之外的所有表情上识别率都有提升。
表4 Net EXP在FER 2013数据库上的混淆矩阵
表5 Net EXP_DAL在FER 2013数据库上的混淆矩阵
表6 Net EXP_MSE在FER 2013数据库上的混淆矩阵
表7 Net EXP_DAL_MSE在FER 2013数据库上的混淆矩阵
表8到表11分别给出了Net EXP、Net EXP_DAL、Net EXP_MSE以及Net EXP_DAL_MSE四个网络模型在SFEW 2.0数据库上识别结果的混淆矩阵。对比表8与表9可知,应用双激活层结构之后,网络在“愤怒”、“厌恶”、“中性”和“悲伤”表情上识别率有所提升,但在“害怕”和“惊喜”表情上识别率有所下降。对比表8和表10可知,应用Softmax-MSE损失函数之后,网络在除“愤怒”和“高兴”之外的表情上识别率均获得提升。对比表8和表11可知,应用双激活层网络结构和Softmax-MSE激活函数之后,网络除在“惊喜”和“愤怒”表情之外的表情上识别率均获得提升。
表8 Net EXP在SFEW 2.0数据库上的混淆矩阵
表9 Net EXP_DAL在SFEW 2.0数据库上的混淆矩阵
表10 Net EXP_MSE在SFEW 2.0数据库上的混淆矩阵
表11 Net EXP_DAL_MSE在SFEW 2.0数据库上的混淆矩阵