毛君宇,何廷年,郭 艺,李爱斌
西北师范大学 计算机科学与工程学院,兰州 730070
面部表情是人类交流中帮助人们理解他人意图的重要因素。1971年,美国心理学家Ekman和Friesen定义了七种基本面部表情,分别是快乐、悲伤、愤怒、恐惧、惊讶、厌恶和中立[1]。另外Ekman和Friesen开发了一种面部动作编码系统来分析人的面部动作,人的面部表情可以分解为不同的面部动作单元组合[2]。人们可以通过面部表情来推断其他人的情绪状态。面部表情识别技术在精神分裂症和创伤后应激障碍等医学辅助诊断、学生教育、娱乐等方面[3]具有广泛应用前景。
尽管人们对于面部表情识别技术已经取得了进步,但仍面临一些挑战,如:多尺度表情特征提取,遮挡情况下的表情识别[4]。现有研究大多采用深度网络进行表情识别,但其中的特征提取阶段往往忽略了捕捉表情特征的多样性及其尺度的可变性,使用具有单一尺寸和单一类型的卷积核提取特征破坏了动作单元的连续性。另外由于人脸对齐不精确或人脸配准错误、特征位置不准确,增加了从面部图像提取特征的难度[5]。在现实生活中,复杂的光照、面部视角和头部姿势的变化等因素产生的各种遮挡会对表情识别造成影响。这些遮挡为提取的特征引入噪声和离群值,严重影响面部表情识别的准确性。对于一张有遮挡的面部表情图像,人类可以根据其他未遮挡的区域综合判断这是什么表情,对于计算机来说,遮挡区域往往会影响最终的表情识别效果。
为了更好地解决表情特征的多尺度提取以及降低真实场景中遮挡对识别效果的影响,提高表情的识别准确率,本文工作概括如下:
(1)由于面部表情与多个动作单元的组合相关,本文提出使用金字塔卷积网络进行表情图像特征提取,不同大小卷积核组成的金字塔卷积单元可以提取到图像的多尺度特征,提高模型的非线性表达能力。
(2)在数据扩充的基础上,提出了利用全局注意力模块来提高含有重要信息的采样子图像的特征权重,抑制噪声干扰,以此提升表情识别效果。
(3)提出的金字塔卷积和全局注意力模型在公共人脸表情数据集CK+、RAF-DB、AffectNet进行实验,验证了该方法的有效性。
本章对于近年来真实场景下表情识别的方法,以及注意力机制和金字塔卷积的研究进行了探讨。
对于真实场景下的面部表情识别,因物品造成的直接遮挡,或者光照、姿势变化等因素造成间接遮挡是表情识别的固有挑战之一。以往解决面部遮挡问题的方法可分为两类:特征重建方法、子区域分析法。特征重建方法使用一种检测算法来寻找被遮挡的区域,并对其进行重建从而进行识别。Zhang等人[6]提出了一种鲁棒的方法,利用蒙特·卡罗方法(Monte Carlo method)提取一组基于Gabor的脸部模板,并将这些模板转换成模板匹配距离特征。模板匹配距离特征依赖于特定表情数据集中的模板选择,在跨数据集条件下不具有良好的泛化能力。Cornejo等人[7]通过鲁棒主成分分析(robust principal component analysis,RPCA)重建了被遮挡的面部区域,并提取直方图统计变换特征(census transform histogram,CENTRIST),他们应用K最近邻(K-nearest neighbor,KNN)算法和SVM(support vector machine)算法进行分类。另一个特征重建方法是学习一个生成模型,它可以从被遮挡的人脸中重建出一个完整的人脸[8-9]。特征重建方法依赖于不同遮挡条件下的训练数据,但是由于遮挡的位置和类型太多,使得去表情图像遮挡的效果不理想。
子区域分析方法将人脸分为若干子区域,并根据这些区域对表情进行分类。Adil等人[10]利用Gabor滤波器提取感兴趣区域的特征,将提取到的重要特征再送入SVM中进行分类。Dapogny等人[11]提出在表情图像的局部子区域上训练随机森林,并使用局部表情预测(local expression predictions,LEPs)作为高级特征表示,LEPs可以结合起来描述不同的面部表情以及动作单位。Li等人[12]设计了一种用于感知遮挡的网络PG-CNN(patch-gated convolution neutral network),它能自动感知人脸的遮挡区域,聚焦于划分的24个含有更多特征信息的非遮挡子区域,并将24个子区域输入到一个注意力网络中,从中得到加权级联局部特征。Li等人[13]进一步扩展了PG-CNN的方法,通过引入全局候选单元来补充人脸图像的全局信息来进行表情识别。然而,这些方法都要基于人脸关键点来选择子区域,这一过程在遮挡的人脸图像中并不精确,大大降低了网络的性能。
由于真实场景中的遮挡复杂多样,特征重建方法依赖大量不同遮挡条件下的训练数据才能有较好的效果,且人脸细节重建不理想。以往的子区域分析法依赖人脸关键点进行子区域划分,而遮挡会影响人脸关键点检测。需要一种不依赖人脸关键点检测的表情识别方法,进行真实场景中的表情识别。
在杂乱无章的视觉场景中,人类能够快速地定位到显著的物体,这是人们视觉感知的注意机制。根据应用域的不同,可以将注意力域分为空间域、通道域、时间域、混合域等。张爱梅等人[14]提出了一种注意力分层双线性池化残差网络进行表情识别,该方法采用通道注意力机制显式地建模各通道的重要程度,为输出特征图分配不同的权重,按权重值大小定位显著区域。Gera等人[15]将空间域和通道域的注意力结合到CNN中进行情感分类,它综合考虑了每个通道的局部空间连接模式和不同通道之间的相互依赖性。李国豪等人[16]采用时空注意力机制进行人脸微表情识别,时间注意力模块用于学习表情序列的运动信息,将注意力集中在表情序列中判别性较强的帧。Wang等人[17]提出了一个新型区域注意力网络,通过主干卷积网络提取各个区域特征,加权得到注意力特征信息,以提高遮挡和姿势变化条件下的面部表情识别准确性。Farzaneh等人[18]提出了一种深层注意力中心损失(deep attentive center loss,DACL)方法,提出的DACL集成了一种注意力机制,以CNN提取的中间空间特征图作为上下文,估计与特征重要性相关的注意力权重,以自适应地选择重要特征元素的子集以增强辨别力。本文在Wang等人[17]提出方法的基础上,提出全局注意力模块,注意力机制允许根据需要选择更加显著的特征,本文的全局注意力模块可以更好解决真实场景表情识别问题。
深度神经网络在训练过程中,通过卷积操作提取图像特征信息,不同尺寸的卷积核可以学习的空间特征也不尽相同。对于小目标和含有噪声的目标而言,细节特征信息至关重要,像素级的偏差往往会导致识别出现错误。金字塔卷积(pyramidal convolution,PyConv)[19]可以通过多个不同尺度的卷积核处理输入信息。PyConv的主要优点是多尺度处理,具有不同的空间分辨率和深度。与标准卷积相比,PyConv可以在不增加额外成本的情况下扩大卷积核的感受野。这些不同类型的PyConv内核带来了互补的信息,有助于提高网络的识别性能。具有较小感受野的卷积核可以关注细节,捕捉关于较小对象的特征信息,而增加核的尺寸可以关注较大对象的更可靠特征。金字塔卷积可以捕捉表情特征的多样性及其尺度的可变性,保持了面部动作单元的连续性。
本文提出了一种基于金字塔卷积网络及注意力机制的网络模型进行表情识别。它主要由两个模块组成,即金字塔卷积网络、全局注意力模块,如图1所示。PyConv-Attention网络模型从原始表情图像中裁剪多张子图像,然后将这些子图像和原始表情图像一起输入到金字塔卷积网络中进行特征提取。随后将金字塔网络提取的特征送入全局注意力模块,为每个特征图分配一个特征权重。原特征图与特征权重相乘,将这些区域特性聚合为一个全局表示,利用全局特征表示对表情进行预测。
图1 PyConv-Attention网络模型Fig.1 PyConv-Attention network mode
首先进行人脸对齐,根据固定位置左上、右上、中下以及中心区域将原始表情图像采样裁剪出多张子图像。与根据人脸中鼻子、嘴巴、眼睛等关键点采样不同,该采样方法不依赖人脸关键点检测,且不会破坏不同面部动作单元组成的多尺度信息。其中左上区域、右上区域、中下区域大小为原始图像的80%,左上区域和右上区域更多关注由眼睛和鼻子以及周围肌肉变化组成的不同表情,避免了图像中嘴部存在噪声影响识别效果。中下区域避免了图像中额头存在噪声影响识别效果。由于部分人脸表情主要集中在人脸中心区域,如惊讶、快乐、恐惧等表情由嘴巴及脸颊周围的肌肉变化组成,以原始图像的80%和90%分别裁剪两张中心区域的子图像。所有子图像生成后,调整图像尺寸,使其符合主干CNN的输入大小。
研究表明,嘴、眼睛、眉毛和鼻子等形成了不同的动作单元,这些面部单元的组合形成了人脸表情。考虑到面部表情与多个动作单元相关,金字卷积网络可以提取到多尺度特征。
PyConv为一个金字塔卷积单元,如图2所示,由不同大小和不同深度的卷积核堆砌而成,随着卷积核尺寸的增加,它的深度相应减小,这些卷积核能够捕捉图像中不同级别的细节特征。对于金字塔卷积单元,由于使用了不同深度的卷积核,采用了分组卷积的方式,输入特征图被分成若干组,并且针对每组输入特征图应用不同深度的卷积核进行特征提取。当分组为1时,即为标准卷积,其中卷积核的深度等于输入特征图的通道数。当输入特征地图被分为n组时,卷积核的深度减小为d/n,其中d为输入特征的通道数。
图2 金字塔卷积Fig.2 Pyramidal convolution(PyConv)
在用于图像识别的各种方法中,由于深度残差网络易于优化,不会随着网络深度增加而降低网络性能,成为广泛使用的方法之一。本文提出的模型架构主要基于深度残差网络构建,用以提取表情图像特征的网络基于残差网络进行修改。对于表情识别的PyConv网络架构,主干网络使用ResNet50[20],并将ResNet50中的部分卷积核替换为改进的金字塔卷积单元。该网络分别采用9×9、7×7、5×5、3×3四个不同尺寸的卷积核,以提取表情图像中的多尺度特征。修改后的金字塔卷积网络结构如图3所示,主要对4个残差块进行了修改。对于第一层残差块,将原始尺寸为3×3的卷积核改为金字塔卷积单元,由9×9、7×7、5×5和3×3不同尺寸的卷积核组成,步长为1,并对输入的特征图进行分组,分别为16组、8组、4组和1组。每种尺寸的卷积核输出16张尺寸相同的特征图,PyConv4得到64张输出特征图。训练每个残差块后使用ReLU(rectified linear unit,ReLU)作为激活函数,以及使用批归一化(batch normalization,BN)对激活值进行处理。
图3 金字塔卷积网络Fig.3 Pyramidal convolution network(PyConv network)
提出的全局注意力模块如图1虚线框所示,原始图像和采样子图像通过金字塔卷积网络提取特征后,送入全局注意力模块经过一个全连接层和Sigmod激活函数计算该图像的特征权重ai,最终进行加权求和得到一个全局的特征表示Fm。将原始图像表示为I0,将子图像表示为I0,I1,…,Ik,并将主干网络表示为r(I*;θ)。图像I*的特征集X定义为公式(1):
其中,Fk是经金字塔卷积网络提取的特征,θ是金字塔卷积网络的参数,k表示经裁剪得到的多张子图像。
通过金字塔卷积网络提取的子图像特征,送入全局注意力模块使用全连接层和Sigmoid激活函数来计算注意力权重。第i个子图的注意权重表示为公式(2):
其中,q是全连接层的参数,f表示Sigmoid激活函数,ai取值范围为[0,1]。
将所有子图像特征及其注意力权重归纳为一个全局表示Fm,Fm即为最终的特征表示,输入到分类器中进行预测。如公式(3)所示:
由于在一张表情图像中存在某一重要特征信息区域,设置了注意力损失函数对原始图像和子图像的注意力的权重进行了限制。该损失函数强制要求来自子图像的注意力权重之一应大于原始表情图像权重。注意力损失函数公式如式(4)所示:
其中,∂为超参数,本文中设置为0.03,μ0是原始图像的注意力权重,μmax表示所有子图像的最大权重。
在分类器中,采用交叉熵损失函数来训练表情多分类,交叉熵描述了预测的概率分布和真实概率分布之间的距离。
3.1.1 数据集
本文在3个公开的人脸表情数据集上进行实验,分别是实验室数据集CK+[21],以及两个真实场景下的数据集RAF-DB[22]和AffectNet[23]。CK+包含来自123名采集者的593个表情图像序列,这些序列表现出面部表情从自然到最高峰值的转变。在这些序列中,基于面部表情动作编码系统(FACS)将118名采集者的327个序列标注为7种表情(快乐、悲伤、愤怒、厌恶、惊讶、蔑视和恐惧)。由于数据量较少,对图像进行镜像翻转、旋转等操作进行数据扩充,随机选择其中的4/5为训练集,其余1/5作为测试集。
RAF-DB为真实场景的面部表情数据集,该数据集包含单标签子集和双标签子集。单标签子集包括7类基本情绪(惊讶、恐惧、厌恶、快乐、悲伤、愤怒、中立);双标签子集包括12类复合情绪。在本实验中,使用了具有7类基本情绪的15 339张图像,数据集分为训练集和测试集,其中训练集为12 271张图像,测试集为3 068张图像。
AffectNet包含超过一百万张来自互联网的图片,这些图片是通过使用情感相关标签查询不同的搜索引擎获得的。它是迄今为止最大的表情数据集,提供两种不同情感模型(分类模型和维度模型)中的面部表情,其中约有29万张图像被手动标记为8种(惊讶、恐惧、厌恶、快乐、悲伤、愤怒、蔑视、中立)面部表情。图4为数据集样本图像展示。第一排是CK+数据集样本图像,第二排为RAF-DB数据集样本图像,最后一排为AffectNet数据集图像样本。
图4 数据集样本图片(第一至第三行依次为CK+、RAF-DB、AffectNet)Fig.4 Sample images of databases
3.1.2 数据预处理及实验设置
因为不同数据集的图像大小各有不同,在训练模型之前,需要对数据进行预处理,将所有图像的大小调整为224×224×3。使用ResNet-50作为主干网络,另外,使用的ResNet-50网络在ImageNet数据集上进行了预训练。
本文实验在Windows 10操作系统下基于深度学习框架PyTorch1.5.0实现,硬件环境:CPU为Intel®Core™i5-9400,主频为2.9 GHz,内存为32 GB,显卡为NVIDIA GeForce GTX 1660Ti,显存大小为6 GB。采用随机梯度下降法(stochastic gradient descent,SGD)训练,将初始学习率设为0.01,动量为0.9,权重衰减为1×10-5。由于不同数据集中的样本存在差异,模型在不同数据集上的收敛速度不同,本实验在CK+、RAF-DB、AffectNet数据集上的迭代轮数分别为100、200和200。在CK+训练过程中,第40和80轮学习率以0.9的衰减率进行衰减;在RAF-DB、AffectNet训练过程中,每50轮学习率以0.9的衰减率进行衰减。
为了研究所提方法的有效性,以ResNet50网络作为主干网络,融合金字塔卷积以及注意力机制构造模型,在CK+、RAF-DB、AffectNet三个数据集进行实验,并和其他方法进行了对比。
3.2.1 子图像实验评估
为探究网络输入中不同数量子图像对表情识别的影响,在RAF-DB数据集上设置了五组对照实验,第一组仅采用原始图像作为网络输入,此时该图像特征的注意力权重为1,全局表示特征与经过金字塔卷积网络提取之后的一致;第二组采用原始图像加左上、右上、中下区域三张子图像;第三组采用原始图像加左上、右上、中下、中心区域四张子图像进行实验;第四组为左上、右上、中下、两张中心区域子图像加原始表情图像;第五组设置为左上、右上、中下、两张中心区域子图像、一张随机位置子图像加原始表情图像。其中前三组所有采样子图像根据原始图像的80%进行采样裁剪,第四组中心区域子图像分别按照原始图像尺寸的80%、90%进行采样裁剪,其他子图像为原始图像的80%。第五组中随机位置按照原始图像尺寸的80%采样,其余设置与第四组相同。再将所有图像尺寸调整到224×224×3,使其符合网络输入大小,最终实验结果如表1所示。
表1 不同数量采样图像在RAF-DB的实验对比Table 1 Experimental comparison of different number of sampled images of RAF-DB
根据表1可得,随着采样子图像数量的增加,识别的效果也随之增加,但准确率的增长幅度趋于稳定。在第四组、第五组实验中,识别准确率较好,准确率分别达到87.34%和87.47%。考虑到准确率增长趋于稳定,过多增加采样子图像数量会造成计算量的增加,在后续实验中,统一采用第四组采样方法。
3.2.2 CK+实验结果
提出的模型在CK+数据集上的混淆矩阵结果如图5所示。对于快乐、悲伤、愤怒、厌恶、惊讶和恐惧六种表情,识别准确率都在95%以上。识别准确率最低的表情“蔑视”也达到了94%,对于“快乐”“惊讶”这两种特征比较明显的表情,识别率达到了99%以上。
图5 CK+混淆矩阵Fig.5 Confusion matrix of CK+
所提出的模型与其他主流方法在CK+数据集上进行了对比,实验结果如表2所示。可以看到,本文所提出的模型在CK+数据集的准确率为98.46%。与Gabor[10]、WLS-RF[11]、pACNN[13]、SCAN[15]四种方法相比分别高出6.27、4.16、1.43、1.15个百分点。可以看到,本文提出的PyConv-Attention Network在实验室数据集上的识别取得了较为满意的准确率。
表2 CK+数据集上的实验对比Table 2 Experimental comparison of CK+database
3.2.3 RAF-DB实验结果
图6是在数据集RAF-DB的混淆矩阵,结果表明,该方法对“快乐”“中性”“惊讶”和“悲伤”四种特征明显的表情识别准确率较高。而对于外观变化并不明显的表情“恐惧”和“厌恶”两种表情识别率为79%和80%,对于“惊讶”“快乐”“中立”等表情的识别准确率较高。
图6 RAF-DB混淆矩阵Fig.6 Confusion matrix of RAF-DB
表3是RAF-DB数据集上与其他方法的对比结果。本文方法取得了87.34%的准确率,仅次于DACL[18]深层注意力中心损失方法。与方法gACNN[13]和RAN[17]相比,本文模型在关注图像重要区域的同时,通过金字塔卷积网络进行特征提取,这样使得网络提取到多尺度特征。和WGAN[9]相比,本文方法不依赖人脸的关键点检测,可有效避免因关键点检测有误对表情识别造成的影响。
表3 RAF-DB数据集上的实验对比Table 3 Experimental comparison of RAF-DB database
3.2.4 AffectNet实验结果
图7是在AffectNet数据集上对八种表情识别的实验结果,由于数据量大且每类表情图像数量不均衡,这是实验中最具有挑战性的数据集。实验结果中,只有“快乐”取得了80%以上的准确率,其次是“恐惧”和“中立”识别效果较好,而“蔑视”表情为44%的识别准确率。
图7 AffectNet混淆矩阵Fig.7 Confusion matrix of AffectNet
表4是AffectNet数据集上对表情识别的对比情况,本文在所有对比方法中,与EPI[8]、gACNN[13]、RAN[17]、WGAN[9]相比,准确率分别提高了4.03、1.67、0.95、0.72个百分点。本文提出的方法在RAF-DB和AffectNet两个数据集上,与gACNN[13]、RAN[17]、WGAN[9]三种方法相比,均有不同程度的领先。EPI[8]提出的特征重建网络,会丢失一些重要的细节特征或者将原始表情图像重建为其他表情图像,因此效果和其他方法相比较差。从本文方法在三个公开数据集上的表现以及与现有方法的对比分析结果来看,本文提出的方法具有一定的先进性。
表4 AffectNet数据集上的实验对比Table 4 Experimental comparison of AffectNet database
3.2.5 消融实验
本文方法包括金字塔卷积模块和全局注意力模块两个主要部分,为了分析不同部分对表情识别效果的影响,以CK+和RAF-DB数据集为例进行消融实验。
本小节设置仅使用ResNet50网络,与分别加入全局注意力和金字塔卷积的模型进行对比实验,分析两个模块对识别性能的影响,在CK+和RAF-DB两个数据集的实验结果如表5所示。可以看出相较于ResNet50基线网络,加入全局注意力和金字塔卷积在两个数据集中识别准确率都有一定提升。通过添加注意力机制,促使网络关注特征明显的子图像,识别准确率相较于ResNet50基线网络在CK+和RAF-DB数据集有3.23和6.18个百分点的提升。金字塔卷积通过集成不同尺度的卷积核获取信息丰富的多尺度特征,使网络学习不同表情中的细微差异,相较于基线网络在CK+和RAF-DB有2.12和4.41个百分点的提升。全局注意力与金字塔卷积的共同作用在CK+和RAF-DB数据集上相较于基线网络分别提高了4.87和8.8个百分点的准确率,说明了本文方法的有效性。
表5 CK+和RAF-DB数据集消融实验结果Table 5 Ablation experimental results of CK+and RAF-DB databases
本文以残差网络作为基础框架,设计了融合金字塔卷积和全局注意力的人脸表情识别模型。金字塔卷积能够学习到多尺度的特征信息,提高模型的非线性表达能力;注意力机制能够使网络更多关注重要特征信息,抑制噪声干扰。所提模型在CK+、RAF-DB、AffectNet三个公开表情数据集上分别取得了98.46%,87.34%,60.45%的准确率,结果优于诸多人脸表情识别方法。后续工作中,将对模型结构继续进行优化,以进一步提高模型的表情识效果。