深度宽残差网络注意力机制的人脸表情识别

2023-02-27 07:27倪锦园张建勋张馨月
关键词:示例人脸残差

倪锦园,张建勋,张馨月

(1.重庆理工大学 计算机科学与工程学院, 重庆 400054; 2.东北大学悉尼智能科技学院, 河北 秦皇岛 066004)

0 引言

面部表情是人类表达情感和想法最自然的方式之一,因此人脸表情识别在计算机视觉领域上一直是个热门的研究课题。随着相关领域的持续发展,人脸表情识别在检测精神疾病、疲劳驾驶、人机交互、情感机器人、智能安保等诸多方面有着广泛的应用[1-3]。

在早期的研究过程中,人脸面部表情的特征基本上是由手工提取,但是由于自然环境下面部表情易受遮挡,背景和姿势等诸多因素的影响,导致识别的精度并不高[4]。近年来,深度学习在图像识别上取得了阶段性突破成果,自从AlexNet[5]神经网络在ImageNet计算机视觉识别比赛上[6]取得了较好结果,深度学习就大幅应用在计算机视觉领域中,kaya等[7]将目标图像特征和人工制作的Gabor二元模式特征结合起来,提高了模型对特征提取的性能。Shi等[8]提出了一种基于多分支交叉连接卷积神经网络的人脸表情识别方法,该方法是基于残差连接、网络中网络和树结构共同构建的,它还为卷积输出层的求和增加了快捷的交叉连接,使网络间的数据流更加平滑,提高了每个感受域的特征提取能力。Kim等[9]用面部表情测器结合人脸面部的特征点降低了背景噪音的影响。

虽然上述的多数研究都能够提取特征,但仍存在着一定的缺陷,例如,人脸面部采集过程中易受到光照、背景和姿势等因素的影响,导致模型在训练面部样本集时,特征提取能力不足,学习能力下降。深度学习模型的网络层数也在一定程度上影响了分类识别的精度,即随着网络层数的不断增加,会出现梯度消失的现象,此时网络模型出现过拟合,造成识别精度的下降。

1 理论基础

为了缓解在深度神经网络中增加深度带来的梯度消失问题,引入了残差学习单元,通过恒等映射调整输入输出的关系来解决深层网络难以优化的情况,在ResNet残差学习模块中,若神经网络输入为x,同时H(x)为最佳映射,经过非线性卷积层去实现F(x)=H(x)-x,则自身的恒等映射表示为H(x)=F(x)+x。这种恒等映射就可以降低模型的复杂性和计算量,减缓了随着层数堆叠造成的梯度消失等问题,使得堆积层从输入的图像特征中更容易学习到新的特征,从而能够获得更优的性能,也更容易优化和训练,ResNet残差学习模块如图1所示。

图1 ResNet残差学习模块

2 本文方法

2.1 整体架构

由于全连接神经网络层数过少会导致模型对目标图片的特征表达能力有限,过多则会出现梯度消失的现象,同时受到噪声的影响,会导致模型提取人脸面部特征能力不足。结合以上问题,设计了一种基于宽残差网络的注意力机制模型,包括优化了顺序的带小卷积滤波器的宽残差模块,压缩和自适应校正网络层,预激活残差单元模块,改进的随机擦除模块等,模型的整体架构如图2所示。

图2 模型的整体架构

在预处理阶段时,通过翻转、平移、旋转、对比度归一化等一系列措施对面部图像进行增强处理,然后通过改进的Random Erasing方法对人脸表情进行随机擦除,增强了模型的泛化能力,而且提升了模型对遮挡和掩盖的鲁棒性。然后将预处理后的目标图片放入网络,首先进入宽残差网络模块,然后通过压缩和自适应校正网络模块对面部特征进行提取,最后进行分类处理。

2.2 深度宽残差注意力模型

该网络输入的目标图像大小为48×48,通道数为3,每个卷积层后面会有一个BN层和ReLU激活函数层,通过扩增卷积层的通道数,使模型每层卷积层能够表达更多的特征信息。

为了在一定程度上预防模型过拟合,在每个宽残差注意力模块后设有一个丢弃正则化Dropout,宽残差模块中的小型卷积核可以使模型进行降维操作,BN层可以加快模型训练时的收敛速度并且有效防止梯度消失的情况。为了提高网络的特征表示能力,在每个宽残差模块后面都设有一个压缩和自适应校正网络模块,宽残差注意力模型如图3所示。

图3 宽残差注意力模型

每10个宽残差注意力模块后,输出的维度减半,通道数翻倍,然后通过Global-Ave-Pooling层降低过拟合的风险并减少了计算的参数,最后通过Softmax层对图片进行分类处理,类别一共包含了生气、厌恶、害怕、开心、伤心、惊讶、中性7类,模型参数如表1所示。

表1 模型参数

2.3 改进的小型滤波器的宽残差网络构建

传统的神经网络随着网络层数的增加,往往可以提取更多的特征信息,但是简单地堆砌神经网络层数容易出现梯度消失的情况,最终导致识别精度反而不如浅层网络。通过残差网络在一定程度上可以改善该情况,但是传统残差网络过于追求网络的层数,忽略了残差单元模块,所以随着残差模块的叠加,模型的性能提升并不明显。

为解决上述问题,提出了改进的小型滤波器的宽残差网络,对残差模块进行改进,用卷积层的通道数乘以系数K来进行扩展,从而拓宽了卷积核,在参数量相同且实验结果达到同一准确率的情况下[10],宽残差网络(WRN)的深度只有传统残差网络的1/50,并且在训练速度上还有一定提升,但是模型宽度的增加会导致参数数量的增加,于是考虑使用小卷积滤波器,因为小卷积核滤波器相比于大卷积核,参数量明显降低,模型的计算量也随之下降,卷积核参数如表2所示。

表2 卷积核参数

因此在改进WRN模块过程中,在大卷积核后面加入一个小卷积滤波器来减少目标图片特征,达到对目标图片降维的作用,从而提高模型的训练速度。改进的WRN模块结构如图4所示。

图4 改进的WRN模块结构

改进的WRN模块结构中,为预防模型过拟合现象,采用在小卷积滤波器后面加入丢弃正则化方法,其中每个卷积层后都加入了BN层做归一化处理和ReLU激活函数,k表示扩展通道的系数值。

2.4 压缩和自适应校正网络模块

为了进一步提取不同人脸面部表情的深层特征,提高面部表情识别的精确度,该模型引入了压缩和自适应校正网络模块(Squeeze-and-Excitation),该模块是一种通道注意力机制,可以对通道维度上的特征图权重进行重新分配[11-12],其中,v=[v1,v2,…,vc]是一个已经学习到的滤波器核,vc=[v1c,v2c,…,vcc],X=[x1,x2,…,xc],Ftr输出为U=[u1,u2,…,uc],示例如下:

(1)

式中: *表示卷积;uc表示第c个通道的输出;vc表示第c个通道的卷积核;xs表示卷积核输入的第s通道的2D空间核。可以看出,输出的Fm是由所有通道的和来生成的,所以在通道上的依赖性被隐式地嵌入至滤波器核中,而滤波器核的作用是捕获目标图片像素点空间的相关性,所以通道间的依赖性和滤波器捕获的空间相关性是一直联系的。

2.4.1提取通道间依赖关系(squeeze)

首先对于一个H′×W′×C的特征输入X,进行Ftr操作,也就是常规的卷积操作,得到待处理的W×H×C的特征图U。接着对得到的U分别进行2种操作:Fsq和Fscale。Fsq是对于每一个通道上都采用一种全局平均池化的操作,示例如下:

(2)

式中:uc表示特征图u的c个通道分别进行平均池化的操作;Zc表示压缩生成的通道描述符,空间维度为W×H,然后得到1×1×C的特征图z。

2.4.2自适应校正(excitation)

为了全面捕获通道依赖性,使用特殊通道依赖的门机制来对各个通道上的特征进行激活处理,调整每个通道的反馈,让网络利用全局信息有选择地增强有益的特征通道,并抑制无益的特征通道,从而实现特征通道的自适应校正,excitation相当于2次全连接操作,示例如下:

s=Fex(z,W)=σ(g(z,W))=σ(W2∂(W1z))

(3)

式中: ∂和σ分别表示激活函数ReLU和Sigmoid,第一次用降维层W1(C/r×C)与z(1 × 1 ×C)得到1 × 1 ×C/r的张量,其中C表示通道数,r表示降维的比例(该模型设为4),然后通过激活函数ReLU,并与升维层W2(C×C/r)相乘得到1×1×C的张量,最后通过Sigmoid函数输出,最终输出通过重新调节变化输出U得到,示例如下:

(4)

式中:s得到的是(0,1)区间的数,将uc中每个通道的二维矩阵中每个数都与对应的sc相乘,即得到最终输出。

对在人脸面部表情识别过程中,面部表情特征部分缺失的问题,压缩和自适应校正网络模块在通道上对特征图的权重进行重新分配,更好地提取有益的面部特征信息而抑制无用特征信息。

2.5 改进的预激活的残差单元结构

在宽残差网络中加入激活函数可以更好地拟合训练数据,增强宽残差网络的非线性建模能力,在不用激活函数的情况下,每一层的网络输出都来源于上一层网络输入的线性函数,这样迭代的神经网络也只是简单的堆砌,输出都是输入的线性组合,隐藏层的效果得不到体现。所以,在网络中加入激活函数是有必要的。在宽残差网络加入的是修正线性单元ReLU激活函数,示例如下:

(5)

ReLU激活函数由于非负区间的梯度为常数,所以在一定程度上解决了梯度消失的情况,同时让模型处于一个更于稳定的状态。

深度网络学习过程本质上是为了研究数据分布,在处理数据时,若每批数据分布都不同,训练时网络每次都要去适应不同的数据分布,这样会影响网络的训练速度,因此需要对数据进行批量归一化处理。当神经网络对输入的数据做预处理时,需要做近似白化预处理,示例如下:

(6)

(7)

(8)

(9)

(10)

(11)

通过BN层对数据进行归一化操作,BN层可以对每一层输入的数据进行统一处理,改善网络梯度的同时使网络有更大的学习率,可以大幅度提高网络的训练速度。传统残差单元结构采用“卷积层+BN层+ReLU层”的排列结构,每一个卷积层后面加入BN层,然后再插入ReLU激活函数,残差单元结构如图5所示,其中(a)表示传统残差单元模块,(b)表示预激活残差单元模块。

图5 残差单元结构

由于在传统残差单元中,BN层和ReLU层放在卷积层后面,缺少对输入图像的处理,在一定程度上限制BN层的作用。对残差单元结构进行改进,提出了一种预激活残差单元结构,该方式就是把BN层和ReLU激活函数移到卷积层之前,形成“BN层+ReLU层+卷积层”的新顺序,这种结构就构成了一种预激活的模式,该方式增强了网络的正则化,让模型具有非线性的学习能力,有效降低了模型过拟合的风险,加快了网络的训练速度和收敛能力。

2.6 改进的随机擦除方法

遮挡是影响网络泛化能力的一个重要因素,当神经网络模型结构过于复杂的时候,模型往往会出现过拟合,通过在预处理阶段对人脸面部表情进行随机擦除处理,可以缓解该现象。Random Erasing(随机擦除)模块在预处理阶段将对模型做2种操作之一:在图片的任意位置选择随机大小的矩形区域,将该区域的像素值替换为随机值;不对目标图片做任何处理。

预处理阶段将设定目标图片随机擦除的概率为p,随机擦除公式示例如下:

Se=S×random(Sl,Sh)

(12)

(13)

(14)

式中:S表示原始图像的面积;Sl和Sh表示随机擦除图像的最小阈值和最大阈值;re表示遮挡矩阵的长宽比;Se表示随机擦除的面积;He表示随机擦除矩阵面积的高;We表示随机擦除矩阵面积的宽,随机擦除参数如表3所示。

表3 随机擦除参数

图像上随机选择一个点Pe=(xe,ye),xe和ye的限定示例如下:

(15)

由于面部表情图片的背景噪声会影响识别的精度,而且随机擦除处理不一定能覆盖人脸表情区域,造成原始数据集的冗余,为了保证随机擦除的区域一定在人脸位置,对随机擦除方法进行了改进,重新限定了xe和ye的坐标值,示例如下:

(16)

式中:Rx、Ry、Rxl、Ryl分别表示人脸图像范围左上顶点的真实坐标值和右上顶点的真实坐标值,通过限制对随机点Pe点的选取范围,使每次随机擦除都能覆盖人脸表情范围,随机擦除方法和改进方法对比如图6所示。

图6 随机擦除方法和改进方法人脸表情

由图6可知,改进的方法可以保证每次随机擦除都在人脸表情的范围,在训练集样本中加入随机擦除的图片,人为扩展训练样本的数据集,提高模型的鲁棒性,有效降低了模型过拟合的风险。

3 实验与分析

3.1 实验准备

为验证NSENet网络模型的准确性和有效性,将NSENet网络模型在fer2013、ck+数据集和JAFFE数据集上进行对比消融实验。该实验基于Tensorflow深度学习框架进行训练,在Pycharm上进行测试,硬件环境配置如下:Win10操作系统、CPU主频2.9 GHz的Intel Core i7-10700F和16 G内存以及NVIDIA GeForce RTX 2060(6 GB)显卡。在实验过程中,随机选取70%的人脸表情图像作为训练集,30%的人脸表情图像作为测试集,实验参数设置如表4所示。

表4 实验参数设置

3.2 人脸表情数据集

FER2013人脸面部表情数据集由35 886张人脸面部表情组成,其中训练集含有28 708张,测试集和验证集都有3 589张,而且每张图片都是由固定大小为48×48的灰度图像组成,共包含了7种表情,FER2013的人脸表情图像因为遮挡和姿势,对比度较低,背景等因素的干扰,导致识别难度较大。

ck+是由Cohn-Kanda数据集的基础上扩展而来,一共包含了123个参与者,593个图片序列,ck+数据集都是在同一光照背景下采集的,采集环境较为优秀。

JAFFE数据集选取了10名日本女学生,每个人做出7种不同的表情,一共由213张照片,通过旋转、翻转、对比度增强、平移、裁剪、缩放、随机擦除等方法,将数据扩充到3 408张,人脸面部表情如图7所示。

图7(a)表示FER2013人脸面部表情示例,(b)表示ck+人脸面部表情示例,(c)表示JAFFE人脸面部表情示例。

图7 面部表情示例

3.3 网络模型实验

为验证NSENet网络模型的有效性,将对各个模块进行消融实验,实验结果如表5所示,Miniature filter表示宽残差块中1×1小型滤波器机制,SE表示压缩和自适应校正网络模块机制,Pre activation表示预激活残差单元机制,dropout表示丢弃正则化机制,Random Erasing表示随机擦除机制。

表5 NSENet网络消融实验准确率 %

通过对原始图像进行翻转、平移、旋转、对比度归一化、随机擦除等数据增强的操作之后,把处理后的图像输入到模型中,为了让模型能获取到更多人脸表情的局部特征,引入压缩和自适应校正网络模块对图像在通道上的权重进行重新分配,为了加快模型的训练速度和收敛能力,对宽残差模块的顺序结构进行了优化,并改进了宽残差块中的小型滤波器,为了缓解模型过拟合,加入丢弃正则化函数进行处理。最后通过和VGG16的对比实验发现,在FER2013数据集上准确率提升了3.60%,在ck+数据集上提升了3.83%,在JAFFE数据集上提升了3.83%,验证了NSENet网络模型在人脸面部表情识别中具有一定的有效性,同时保持着更优的性能。

消融实验曲线如图8所示,其中(a)表示FER2013消融实验,(b)表示ck+消融实验,(c)表示JAFFE消融实验,从图8(a)可以看出,NSENet的收敛速度最快,最高准确率达到72.49%,在迭代到250次的时候,准确率逐渐趋于平稳,同时可以看出压缩和自适应校正网络模块对该数据集的影响最大,在减少参数量的同时模型的准确率提升了2.81%,也兼具了更好的稳定性。

从图8(b)可以看出,改进预激活宽残差模块后,对模型的提升最大,准确率上升了2.1%,同时NSENet在迭代到150次的时候,趋于平稳,准确率最高达到99.29%。从图8(c)可以看出,NSENet收敛速度最快,大概迭代200次的时候,准确率趋于平滑,同时可以看出在JAFFE数据集中,压缩和自适应校正网络模块对实验的影响最大,加入该模块后,准确率提升了4.55%,同时也保持了更好的鲁棒性。

图8 消融实验曲线

3.4 现有方法对比

为验证NSENet算法在人脸面部表情识别的有效性,与表6列举的一些相关算法实验结果做对比,可以发现所提算法性能更好,表情识别的精度也更高,相较于一些传统的机器学习方法来说,NSENet算法具有较强的泛化能力,不同方法对比如表6所示。

表6 不同方法准确率 %

4 结论

提出了一种深度宽残差网络注意力机制的人脸表情识别方法,有效抑制了无关特征信息对模型的影响,同时减缓了神经网络层数过多造成梯度消失的情况。宽残差网络融合压缩和自适应校正网络模块更多关注特征信息,加快模型的收敛速度,提高模型的性能,改进的随机擦除方法扩充了训练集同时加强了模型对噪声的鲁棒性,小卷积滤波器的残差模块减小网络计算量的同时对目标图片进行了降维处理,优化的预激活残差单元结构大幅度提高网络的训练速度,减少了模型过拟合现象。所提模型(NSENet)在FER2013数据集上的准确率为72.49%,在ck+数据集上的准确率为99.29%,在JAFFE数据集上的准确率为94.87%,实验结果优于目前诸多现存的人脸表情识别方法,展现了较好的有效性和鲁棒性。但在面部表情有遮挡的情况下识别精度仍不够高,在未来要多关注这类数据集的识别性能。

猜你喜欢
示例人脸残差
基于双向GRU与残差拟合的车辆跟驰建模
有特点的人脸
一起学画人脸
基于残差学习的自适应无人机目标跟踪算法
2019年高考上海卷作文示例
常见单位符号大小写混淆示例
基于递归残差网络的图像超分辨率重建
常见单位符号大小写混淆示例
“全等三角形”错解示例
三国漫——人脸解锁