APP下载

基于多尺度特征注意力机制的人脸表情识别

2022-01-22孔韦韦滕金保

计算机工程与应用 2022年1期
关键词:空洞特征提取人脸

张 鹏,孔韦韦,滕金保

1.西安邮电大学,西安 710121

2.陕西省网络数据分析与智能处理重点实验室,西安 710121

人脸表情在人类之间的沟通交流中发挥着重要作用,在日常生活中,面部表情虽然是一种非语言的交流方式,却比语言和动作能更好地表达人的心理活动[1]。随着计算机技术的进步与发展,计算机的应用领域逐渐增多,其中将计算机技术应用到人脸表情识别成为了一个新的研究热点。人脸表情识别在智能驾驶、刑事侦查和医疗辅助等领域都有着广泛的应用[2-3],如在智能驾驶领域,系统通过实时获取人脸表情信息来判断驾驶员是否处于疲劳驾驶状态,避免发生交通事故;在刑事侦查领域,通过分析犯罪嫌疑人微妙的表情变化来判断对方是否撒谎,辅助警察侦破案情。

人脸表情识别算法也在不断发展,传统人脸表情识别算法是通过手工设计特征提取器进行特征提取,如主成分分析法(principal component analysis,PCA)[4],局部二值模式(local binary patterns,LBP)[5]和梯度方向直方图(histogram of oriented gradient,HOG)[6]。Zhu等[7]提出先用等效主成分分析进行表情特征提取,再用线性回归分类器做表达式分类器,该方法大幅度提高了表情特征提取的鲁棒性。He 等[8]提出一种基于几何纹理融合特征和高阶奇异值分解的人脸表情识别算法,该算法将面部表情识别问题转变成张量域,并使用高阶奇异值分解提取独立的表情特征,从而有效地排除了由于个体面部差异而对表情识别造成的干扰。然而,传统算法在进行特征提取时,所用的手工特征提取器容易忽略对分类有较大影响的特征信息,导致识别准确率一直不高。而深度学习则不需要人为设计特征提取器,深度学习是通过训练网络结构,用误差反向传播算法不断优化网络参数,使网络自动提取图像特征信息。2006年Hinton等[9]提出了深度信念网络,使深度学习重新引起了大家的重视。研究人员基于深度学习设计了许多经典的网络结构,如AlexNet[10]、GoogLeNet[11]等。由于深度学习取得的巨大成功,许多领域的研究都开始选择用深度学习,人脸表情识别的研究同样引入了深度学习技术,并取得了远超传统算法的效果。Salunke等[12]将卷积神经网络应用到人脸表情识别任务中。Zhou 等[13]设计了一个模块化的多通道深度神卷积神经网络,并用全局平均池化来防止过拟合。Li 等[14]提出了一种基于深度残差网络ResNet-50 的特征提取方法,该方法结合卷积神经网络进行人脸情绪识别。Agrawal等[15]研究了不同的参数对人脸表情分类结果的影响,对不同大小的卷积核和过滤器数量进行了全面评估。Hu等[16]提出了注意力机制网络SENet(squeeze-and-excitation network),该网络通过学习的方式来自动获取每个特征通道的重要程度,然后依照重要程度去增强对当前任务重要的特征并抑制对当前任务用处不大的特征。Li 等[17]提出一种基于注意力机制的自动人脸表情识别网络,该网络将LBP特征与注意力机制相结合,增强了注意力模型,获得了更好的结果。

卷积神经网络在人脸表情识别过程中,虽然相较于传统方法取得了明显的进步,但网络结构通常是简单地将卷积层和池化层线性叠加,对图像的多尺度特征提取不充分,且对重要的特征针对性不强。因此,本文提出了基于多尺度特征注意力机制的人脸表情识别方法,对人脸表情识别问题进行研究。

1 多尺度特征注意力模型

在设计网络架构时,若网络层数选取过少则会对图像信息的表达能力有所欠缺;若网络层数选取过多则会出现过拟合现象。本文综合考虑各种因素,设计了一种基于多尺度特征注意力机制的网络模型,包括浅层特征提取层、多尺度特征提取层、通道注意力机制模块和全连接层。网络模型如图1所示。

图1 多尺度特征注意力模型Fig.1 Multi-scale feature attention model

该网络输入图像的尺寸大小是48×48,浅层特征提取层包括两个卷积层(Conv1、Conv2)和两个最大池化层(Maxpool1、Maxpool2);多尺度特征提取层(包括Inception-a 和Inception-b)是在Inception 结构基础上并行加入了空洞卷积;通道注意力机制选用的是文献[16]所提的SENet,网络的最后是用全连接层和Softmax 层进行分类。模型的卷积核大小,步长和输出尺寸等参数如表1所示。

表1 中,3×3 reduce、5×5 reduce 和Dilated reduce 分别代表3×3、5×5 和Dilated 卷积前1×1 卷积核的数量;Pool proj代表Max pooling之后1×1卷积核的数量。

表1 模型参数Table 1 Model parameters

1.1 浅层特征提取层

卷积神经网络是由卷积层、池化层和全连接层交叉堆叠而成的前馈神经网络,卷积层的作用是提取一个局部区域的特征,不同的卷积核相当于不同的特征提取器,用来提取特定的局部特征。假设输入特征为X∈ℝM×N×D,其中每个切片Xd∈ℝM×N为一个输入特征,1 ≤d≤D;用卷积核Wp,1,Wp,2,…,Wp,D分别对输入特征X1,X2,…,XD进行卷积,将卷积结果相加,并加上一个偏置b就会得到卷积层的净输出Zp,再经过非线性激活后即得到输出特征Yp。计算过程如公式(1)、(2)所示:

其中,f(⋅)为非线性激活函数。

由于浅层卷积层提取的是图像的纹理特征,即无论什么网络模型,第一层卷积核学到的信息都很相似,都是条状、点状的信息。因此本文先用两个卷积层Conv1和Conv2 对输入图像进行卷积操作,Conv1 和Conv2 的层数分别是32层和64层,卷积核大小都是3×3,且都使用padding操作,得到的输出特征图尺寸大小不变;每个卷积层都引入非线性激活函数,使神经网络学习到非线性映射。本文引入修正线性单元(rectified linear unit,ReLU)激活函数,其公式如下:

f(x)=max(0,x)(3)

选择ReLU激活函数有以下优势:相对于线性函数来说,ReLU激活函数的表达能力更为优异;相对于非线性函数而言,ReLU激活函数梯度计算简单,且在非负区间的梯度为常数,使模型的收敛速度保持稳定。为降低模型复杂度,对卷积层Conv1和Conv2的输出特征都进行大小为2×2,步长为2 的最大池化操作(Maxpool1,Maxpool2),最大池化操作能很好地提取图像纹理特征信息。经过最大池化后,输出特征图的尺寸变为输入的四分之一,但个数并没有改变。

1.2 多尺度特征提取层

传统卷积神经网络如VGG16在处理图像分类任务时,为了提取图像的深层次特征,会使用堆叠卷积层和池化层的方式构建网络结构,这种结构不仅参数量多,而且对图像的多尺度特征信息提取不明显,本文通过在Inception结构基础上并行加入膨胀率为2的空洞卷积来提取图像的多尺度信息。

空洞卷积[18](dilated convolution)是一种不增加参数量的同时能增加输出单元感受野的一种卷积神经网络,其实现方式是在卷积核内部元素之间加入空洞,相当于在卷积核相邻两个元素之间加入零元素。插入的空洞个数被称为膨胀率(dilated rate)[19]。如图2 以3×3卷积核为例,展示在不同膨胀率下的空洞卷积。

图2 不同膨胀率的空洞卷积Fig.2 Dilated convolution with different dilated rates

图2 中的左、中、右三张图片展示了空洞卷积在膨胀率分别为1、2、3时的情况,其中红色方块表示3×3的卷积核。分析可知,当膨胀率为1 时,空洞卷积即为普通卷积;在卷积核尺寸相同情况下,空洞卷积膨胀率越大,卷积核的感受野越大。

空洞卷积感受野计算如下:设输入层为ℝWin*Hin*Din,超参数如表2所示。

表2 空洞卷积的超参数Table 2 Hyperparameters of dilated convolution

经过空洞卷积操作后,其输出层为ℝWout*Hout*Dout,则输入层和输出层之间的关系为:

由上述关系可以得到,对于膨胀率为2 的空洞卷积,通过设置步长为1、填充值为2的方式可使输出尺寸保持不变。加入空洞卷积,增加了输出单元的感受野,提高了网络对图像不同尺度特征信息的提取能力。

需要说明的是,随着网络深度的增加,神经网络所提取的特征也越抽象,且每个特征所涉及的感受野也更大,因此相较于inception-a,inception-b 中3×3、5×5 卷积和空洞卷积的通道数比例有所增加。但网络层级加多时容易出现收敛速度变慢、数据分布不均等问题。因此,在改进的inception 结构中,每个卷积层后都加入批归一化(batch normalization,BN)操作,对输入的数据先做归一化处理再送入下一层。

1.3 通道注意力机制模块

卷积神经网络默认每个通道是同等重要的,而在实际情况中,不同通道的重要性是有所不同的,有的通道对最终的分类结果影响较大[20]。因此,对重要特征通道分配更多的权重就变得尤为重要,本文对经过多尺度特征提取层得到的特征引入压缩-激励模块(SENet),以增强对重要特征通道的响应。SENet 结构如图3 所示,包含了Squeeze、Excitation、Scale三个操作。

图3 压缩-激励模块Fig.3 Squeeze-Excitation model

(1)Squeeze操作

首先,对特征通道U=[u1,u2,…,uc]进行Squeeze 操作,即用全局平均池化的方式将每个特征通道上的W×H特征图压缩为一个具有全局感受野的实数,设压缩后的特征为z=[z1,z2,…,zc] ,对于其中的一个元素zc,代表了一个通道上的全局特征,计算过程如公式(9)所示:

(2)Excitation操作

为获取通道间的依赖关系,对Squeeze 操作得到的全局特征信息z进行Excitation 操作,具体过程为依次进行全连接Fc1、激活函数ReLU、全连接Fc2 和激活函数Sigmoid 操作,最终得到在(0,1)区间的归一化权重s。权重s的计算过程如公式(10)所示:

(3)Scale操作

对于输出特征X͂,其对应的权重值s可有效地表示不同特征通道对于表情识别任务的重要性。通过对多尺度特征提取层引入通道注意力机制,学习到不同特征通道的重要性,在模型的训练过程中,对于与表情识别结果相关的有用特征,SE 模块会加大对应特征通道的权重值来增强特征响应;而对于无用或干扰特征,SE模块则会减小对应特征通道的权重值来削弱特征响应。通过这种引入通道注意力机制的方式,模型的特征表示能力得到提升。

1.4 全连接层

在处理图像分类任务时,通常在最后卷积层后直接与若干全连接层相连接,但这样做的一个缺点是参数量太多,导致计算困难且容易出现过拟合现象。为改进这一缺点,本文先对上一层的输出进行全局池化,这样网络的参数量大大减少;接着再进行全连接操作,全连接层的作用是将网络特征映射到样本的标记空间做出预测;最后用Softmax 函数作为输出层,Softmax 函数接收一个k维向量作为输入,然后把每一维的值转换成区间在(0,1)中的某个值,假设网络的输入为Y1,Y2,…,Yk,则Softmax函数的运算如公式(12)所示:

其中,P表示样本向量x属于第i类别的概率,K表示总类别数,ω表示权值项。这些概率值相加的结果为1,输出层的最终输出结果是输入的视觉信息属于7 种表情概率的最大值所属的类别。

2 实验结果与分析

本章对所提出的方法进行实验验证,具体分为数据集的选取、实验环境的搭建、数据的增强、对照实验和消融实验五部分。

2.1 数据集

本文选用FER2013和CK+人脸表情数据集。FER2013数据集是2013年Kaggle面部识别挑战赛使用的一个数据集,共由35 887 张人脸表情图片组成,其中训练集有28 709 张,验证集和测试集各有3 589 张,表情共分为7种,具体表情对应的中英文标签分别是:0 anger 生气、1 disgust 厌恶、2 fear 恐惧、3 happy 开心、4 sad 伤心、5 surprise惊讶、6 neutral中性。每种表情的示例如图4所示。

图4 FER2013数据集示例Fig.4 FER2013 dataset example

CK+数据集[21]是Cohn-Kanade 数据集的扩展版本。CK+数据集样本是来源于不同国家、不同民族和不同性别的人脸表情,是目前较为完善的公开数据集。如图5展示了该数据集7 种表情示例,分别是愤怒、蔑视、厌恶、害怕、高兴、悲伤和惊讶。

图5 CK+数据集示例Fig.5 CK+ dataset example

2.2 实验环境

实验在如下环境中进行:使用的编程语言是python3.7,深度学习框架是keras2.3.0,操作系统是64位的Microsoft Windows 10,CPU 为i5-6200U,显卡为GeForce RTX2080 SUPER 8 GB。

2.3 数据增强

人脸表情数据集样本量较少,在网络的训练中会容易造成模型泛化能力差,为改善这一状况,本文对数据进行增强处理,即对原始图像进行旋转、偏移、反转等操作。为了使实验结果避免偶然性,本研究采用5折交叉验证法,将人脸表情样本均分为5份,每份都包含7种表情样本,在每次实验中,都选取其中4份作为训练集,另一份作为测试集,重复操作5 次,取平均识别率作为最终的识别结果,避免识别结果具有偶然性。

2.4 对照实验

为验证本文提出的多尺度特征注意力机制人脸表情识别方法的有效性,首先分别在有无多尺度特征注意力机制条件下对数据集进行仿真实验。本文模型在训练参数更新时使用的优化器是Adam,损失函数是交叉熵,批处理大小为128,总共进行了60 个epoch,将得到的实验结果绘制成图,分别如图6和图7所示。

图7 CK+数据集实验Fig.7 CK+ dataset experiment

图6是在FER2013数据集上得到的结果,其中蓝色曲线代表模型加入多尺度特征注意力机制得到的识别准确率,红色曲线代表没有引入多尺度特征注意力机制得到的识别准确率,此时既没有并行加入空洞卷积,也没有引入注意力机制。可以看到:随着训练次数的增加,蓝色曲线和红色曲线的准确率整体都在不断升高,在训练初期,模型的识别准确率增长迅猛;当训练至30个epoch 左右时,模型识别准确率增长缓慢;在第30 至47 个epoch 时,模型识别准确率会上下有所波动,但整体呈增长趋势;当训练至48 个epoch 左右时,模型的识别准确率变得非常平稳。

图6 FER2013数据集实验Fig.6 FER2013 dataset experiment

如图7 所示,对CK+数据集而言,模型在训练初期时,识别率同样迅猛增长,当训练至第27 个epoch 左右时,模型的增长就变得缓慢了,在第35个epoch后,模型的识别准确率变得很平稳。本文模型在引入多尺度特征注意力机制后,相较于原模型,在FER2013和CK+两个数据集上的识别准确率分别提高了2.24个百分点和1.56个百分点,证明了本文所提方法的有效性。需要说明的是,由于FER2013数据集中存在部分样本错误和标签错误,导致在该数据集上进行测试时,准确率通常不高。

为了验证本文方法的优越性,本文与多种经典算法相比较。

(1)AlexNet 是由8 个网络层组成,包括前5 个卷积层和后3个全连接层,并在每个卷积层和全连接层之后使用ReLU非线性激活。

(2)Salunke 等[12]设计了一个包含3 个卷积层和1 个全连接层的模型;并在每个卷积层之后都连接一个最大池化层和ReLU激活,模型在训练和测试时采用不同的数据集以克服识别未知面孔的问题。

(3)Zhou等[13]设计了一种模块化的多通道深度卷积神经网络,为了避免过拟合,使用全局平均池化作为网络的输出。

(4)Agrawal 等[15]提出两种新颖的CNN 架构:一种架构的过滤器数量随着网络深度的增加保持不变,而另一种架构的过滤器数量随着深度的增加而减少,这两种架构全部采用大小为8的卷积核。

(5)徐琳琳等[22]为了提取更多细微的人脸表情,设计了一个具有两个并行卷积池化单元的卷积神经网络来分别提取不同的图像特征,并将特征进行融合,最后用Softmax层进行分类。

(6)文献[23]提出在普通卷积池化操作基础上引入4层Inception结构,并用跨数据库的方式评估网络架构。

(7)钱勇生等[24]提出引入深度可分离卷积来减少网络参数,嵌入压缩奖励网络来学习网络特征权重,并通过加入空间金字塔池化来增强网络的鲁棒性方法。

本文模型与上述算法在FER2013 数据集上进行比较,结果如表3所示。

表3 不同算法在FER2013数据集上的识别率Table 3 Recognition accuracy with different algorithms on FER2013 dataset

由表3可知,在FER2013数据集上进行实验时,相对于以上提及的算法,本文模型获得了更好的识别效果。本文相较于经典卷积神经网络AlexNet的分类效果提升了3个百分点,AlexNet虽然达到了人类的识别水平,但训练时参数量多,需要耗费大量时间;相较于文献[12],识别效果提升了0.8 个百分点,文献[12]虽然是传统卷积神经网络的改进,但网络结果却是简单地堆叠卷积层和池化层,结构相对单调,没有很好地提取多尺度信息;相较于文献[15],识别效果提升了3.8 个百分点,文献[15]提出的网络结构是针对FER2013数据集而设计的,其结构最适合FER2013数据集,而对其他数据集的泛化能力较弱,且其在FER2013数据集上的识别准确效果也并不理想。文献[13]设计了多通道提取图像特征,文献[22]融合了不同图像特征,文献[23]通过引入4 层Inception来提取图像的多尺度信息,虽然这3 种算法都考虑了图像多尺度信息,但却没有考虑不同特征的重要性。相较于文献[24],识别效果提升了0.8个百分点,文献[24]虽然引入了注意力机制,但同时也引入了深度可分离卷积,深度可分离卷积能有效减少网络参数量,但同时也会一定程度弱化模型的识别能力。相比之下;本文模型不仅提取了不同尺寸特征,而且对不同特征的重要性赋予不同权重,进而提升了模型的特征表示能力。

对比不同算法在CK+数据集上的表现:

(1)李勇等[25]提出基于跨连接网络进行面部表情识别,将LeNet网络所提取的低层次特征和高层次特征相结合构造分类器。

(2)Li等[26]先用传统的Gabor滤波提取特征,然后用PCA降低特征维数,最后用深度神经网络进行识别。

(3)Zeng等[27]先用人脸对齐的方法对密集的人脸标志点进行精确定位,然后将以地标为中心的斑点中提取所有描述子串联起来,形成高维特征,再用基于深度稀疏自编码器对高维特征进行有效提取。

(4)Sun 等[28]提出混合SIFT 和CNN 所提取的特征,并用支持向量机进行分类。

本文模型与上述算法以及AlexNet、文献[22]等算法在CK+数据集上的表现进行对比,结果如表4所示。

表4 不同算法在CK+数据集上的识别率Table 4 Recognition accuracy with different algorithms on CK+ dataset

分析表4 可知,当在CK+数据集上进行实验时,传统的AlexNet 取得了87.03%的识别准确率;相较于文献[25],本文模型的效果提升了12.3个百分点,文献[25]采用低层次特征和高层次特征相结合,但通常来说,低层次中对分类有影响的有用特征比较少,因此结果准确率相对较低。相较于文献[26]效果提升了4.34 个百分点,文献[26]采用传统方法和深度学习相结合,采用Gabor滤波器提取特征,而本文是自动进行特征提取,因此得到的效果要更佳。相较于文献[22]、[23]和[27],本文的识别效果分别提升了2.01个百分点、2.84个百分点和0.25个百分点,无论是文献[22]提出的利用并行卷积来提取不同图像特征,还是文献[23]所提出用多层Inception结构来提取多尺度人脸特征,亦或是文献[27]所建立的深度稀疏自动编码器来提取高维特征,都没有考虑对不同重要性的特征区别对待,相比之下,本文模型对重要特征分配更大的比重,取得了更佳的实验效果。

2.5 消融实验

为了进一步验证本文所提方法的有效性,本文进行消融实验。其步骤依次如下:(1)首先在没有引入空洞卷积和注意力机制时进行实验,此方法记为Base;(2)在Base 方法基础上,加入空洞卷积但不使用注意力机制,此方法记为Base+Dilated;(3)在Base方法基础上,引入注意力机制但不加入空洞卷积,此方法记为Base+SENet;(4)在Base方法基础上,同时引入空洞卷积和注意力机制,即本文所提方法,记为Base+Dilated+SENet。表5展示了各方法在FER2013和CK+数据集上的识别结果。

表5 消融实验识别结果Table 5 Recognation results of ablation experiment%

由表5可以得到:当在Base方法上引入多尺度特征注意力机制时,在FER2013 和CK+数据集上得到的识别率分别是68.8%和96.04%;分析可知,当没有引入注意力机制时,得到的结果分别是67.14%和94.92%,识别效果分别下降了1.66个百分点和1.12个百分点,从而证明了引入注意力机制对人脸表情识别任务的有效性;当没有并行加入空洞卷积时,识别效果分别下降了0.43个百分点和0.31个百分点,从而证明了加入空洞卷积对人脸表情识别任务的有效性。

表6 和表7 分别表示FER2013 和CK+数据集在本文方法上的混淆矩阵。

表6 FER2013数据集混淆矩阵Table 6 Confusion matrix of FER2013 dataset%

表7 CK+数据集混淆矩阵Table 7 Confusion matrix of CK+ dataset%

由表6的混淆矩阵可知,本文模型对于高兴和惊讶两种表情的识别准确率最高,分别达到了87.16%和82.16%,是因为这两种表情面部特征夸张且运动幅度大,模型更容易提取特征;而模型对生气、恐惧和悲伤表情的识别效果较差,因为恐惧和悲伤都有拉开嘴唇和紧张前额的特征,而生气和悲伤则具有相同的眉毛特征、狭窄以及皱起的嘴角特征,这三种表情之间具有一定相似性,容易发生错误分类。模型在CK+数据集上的混淆矩阵和在FER2013数据集上的表现相似。

3 结束语

针对人脸表情识别问题提出一种基于多尺度特征注意力机制的人脸表情识别方法,首先提取人脸表情的浅层特征信息,其次,通过在Inception 结构基础上并行加入空洞卷积,提取人脸表情的多尺度特征信息,并通过引入通道注意力机制,增强模型对有用特征信息的响应。分别用FER2013 和CK+数据集进行实验,验证了本文所提方法的有效性;通过与其他经典算法相比较,取得了高于传统卷积神经网络的效果,进一步验证了本文方法的优异性。由于相似表情之间差异性较小,导致容易错分类。接下来的工作是如何在优化网络结构的同时扩大不同表情的类差距,使网络在保持轻量级结构的同时拥有较高的识别准确率。

猜你喜欢

空洞特征提取人脸
番茄出现空洞果的原因及防治措施
有特点的人脸
一起学画人脸
如何避免想象作文空洞无“精神”
空间目标的ISAR成像及轮廓特征提取
基于Gazebo仿真环境的ORB特征提取与比对的研究
基于特征提取的绘本阅读机器人设计方案
基于Daubechies(dbN)的飞行器音频特征提取
三国漫——人脸解锁
空洞的眼神