APP下载

基于改进八度卷积算法的人脸表情识别

2023-06-13唐小煜林逸鑫

关键词:八度集上人脸

唐小煜,王 东,林逸鑫,李 萍

(华南师范大学物理与电信工程学院/华南师范大学电子与信息工程学院/广东省量子调控工程与材料重点实验室/广东省光电检测仪器工程技术研究中心,广州 510006)

人脸表情是人类传达情感状态最有效、最普遍的信息。近年来,人工智能领域发展迅速,人脸表情识别的应用场景逐渐广泛,例如人机交互、智慧课堂和智能驾驶等领域,人脸表情识别已逐渐成为计算机视觉中的一个研究热点。

目前的人脸表情识别方法通常分为传统方法和深度学习方法两大类,其中传统方法大多采用手工特征或浅层学习,例如基于局部二值模式(Local Binary Patterns,LBP)[1]、主成分分析法[2]、非负矩阵分解法[3]、Gabor小波变换法[4]和方向梯度直方图(Histogram of Oriented Gradient,HOG)[5]等,这些方法在某些特定的情况下能够取得较好的实验结果,但是容易受到其他因素影响,比如光照、角度和姿态因素,而且在真实场景中的鲁棒性不高。

随着深度学习技术的发展和人脸数据集的逐渐充实,深度学习方法也逐步应用于人脸表情识别研究中,如:MATSUGU等[6]采用卷积神经网络(Convolutional Neural Networks,CNN)解决面部表情中的主观独立性问题和图片中的人脸表情位置、角度问题;SUN等[7]通过区域的 CNN(R-CNN)学习人脸表情特征;HUANG[8]提出融合VGG网络和ResNet网络,以提高模型性能,但是存在参数多、计算量大的问题;冯杨等[9]借鉴了VGG16模型,提出了基于小尺度卷积核的人脸表情识别方法,使用多层小尺度卷积块代替大卷积核,减少了参数。为了更加有效地提高模型准确率,学者们在分类器、数据集和损失函数上进行研究,如:GEORGESCU等[10]提出使用SVM代替卷积神经网络的分类器;WANG等[11]针对数据集中存在的标注不确定性问题,提出了SCN+ResNet18模型;LI等[12]提出了基于粗-细标签和蒸馏的自适应人脸表情识别方法;崔子越等[13]通过设置概率阈值对Focal Loss进行改进,从而减少了误标注样本对模型性能产生的影响;XUE等[14]提出了基于Transformer的人脸表情识别方法,使模型注意到更多的表情局部特征,并且在全局视野下关注局部特征与表情类别的关系,从而提升模型性能。这些方法虽然准确率较高,但是存在网络结构复杂、参数多和计算量大等问题,而且没有考虑人脸表情特征图中信息的冗余和激活函数导致的神经元失活问题。

卷积神经网络是一类包含卷积计算且具有深度结果的前馈神经网络,近年来在图像处理中广泛应用并取得许多突破性的研究成果[15-17]。CHEN等[18]认为传统卷积神经网络的特征图中存在冗余,提出了八度卷积(Octave Convolution)算法,在降低冗余的同时提高了模型的特征提取能力,但是该算法的参数多、结构复杂。针对以上问题,本文提出一种基于八度卷积改进的人脸表情识别模型(OCNN):使用改进的八度卷积,有效提取人脸表情中的高频特征、减少特征图中的低频冗余;采用最新的激活函数来增加模型的非线性表达能力;使用自适应平均池化下采样层代替全连接层,从而达到减少参数量、计算量且提高准确率的效果。最后,在FER2013、FERPlus、RAF-DB数据集上进行对比实验,以验证模型效果。

1 改进的八度卷积算法

1.1 改进的八度卷积模块

卷积神经网络中的核心是卷积操作,该操作对特征图的计算公式如下:

X(l+1)(i,j)=(Xl⊗Wl)(i,j)=

(1)

其中,Wl(x,y)c×k×k代表k×k的卷积核,Xc×h×w代表输入输出特征图,X(i,j)代表输出特征图中坐标为(i,j)的像素,i,j{0,1,…,Ll+1},Ll+1=(Ll+2p-f)/s+1,Ll为特征图Xl的宽度或高度,s为每次卷积步长,p为特征图边缘空白填充的宽度。

(2)

图1 改进后的八度卷积模块Figure 1 The improved octave convolution module

1.2 八度卷积块

八度卷积块由批标准化和激活函数组合而成。由图2可知:每个八度卷积块包含2个八度卷积层,每个卷积层中又结合了批归一化层和动态激活层。其中八度卷积层中的卷积核大小为3×3,特征图边缘空白填充参数p为1,步长为1。与仅使用1层大尺度的卷积层相比,使用多层小尺度的卷积层可以保持相同感受野且减少参数量。

图2 八度卷积块结构Figure 2 The structure of octave convolution block

通常使用的激活函数为ReLU函数,其表达式为f(x)=max(0,x)。该函数的特点是当神经元输入的加权和为负数时,函数的梯度为0,神经元的输出也为0,从而导致一些神经元失效。针对ReLU函数在负区间神经元失活的问题,目前已有一些解决方法,例如LeakyReLU函数[20]在输入为负值时输出一个接近于0的正数;PReLU函数[21]使用一个带参数的ReLU函数。但是这些方法的实际应用效果并不明显,本文使用根据输入动态调整参数的DyReLU激活函数[22],以期在不增加网络深度和宽度的前提下,有效提高模型表达能力。DyReLU激活函数的结构如图3所示,其中,x代表输入数据,y=fθ(x)(x)代表最终的激活函数,斜率θ根据输入数据进行自适应调整,从而得到不同斜率的激活函数。DyReLU有3种工作形式(DyReLU-A、DyReLU-B、DyReLU-C),本文选用性能较好、超函数计算参数适中的DyReLU-B,即空间共享而通道不共享形式。

图3 DyReLU激活函数示意图Figure 3 Diagram of DyReLU activation function

1.3 OCNN模型结构

本文提出的基于改进八度卷积的人脸表情识别模型(OCNN)框架如图4所示,该模型由4个八度卷积块、4个最大池化层、1个自适应平均池化层和1个全连接层组成,其中:4个八度卷积块的卷积核大小均为3×3,步长和填充均为1,卷积核个数分别为64、128、256、256;最大池化层的池化核大小为2×2、步长为2。网络输入尺寸为90 px×90 px的灰度图,由八度卷积块1输出64张尺寸为90 px×90 px的特征图,再经过池化层进行下采样,得到64张尺寸为45 px×45 px的特征图;重复3次相同操作后得到256张尺寸为5 px×5 px的特征图,然后经过自适应平均池化层生成256张尺寸为2 px×2 px的特征图,最后展平后接全连接层输出。

图4 OCNN模型的网络结构Figure 4 Network structure of OCNN model

在OCNN模型的网络结构中,自适应平均池化层用于降维,以减少模型参数。因为在卷积神经网络中,全连接层的作用是将最后一层卷积得到的特征向量做乘法操作,实现降维后输出到softmax层中,从而得到每个类别对应的得分。因此,全连接包含大量的参数,训练时消耗内存且容易导致过拟合。目前虽然已经有一些解决过拟合的方法,例如在全连接层后面加入一个dropout层,随机失活一部分神经元,但这样的操作会导致训练速度慢,而且存在参数量大的问题。自适应平均池化层是根据指定的输出参数,对输入的特征图进行取均值操作,其输出与输入的每个特征图的像素相关,因此,该池化层拥有全局感受野,且本身不带任何参数,能在不增加参数的同时将特征图进行降维,以减少模型的过拟合。

2 实验评估

为了验证本文模型的有效性,在3个数据集上进行实验。实验使用基于PyTorch框架的Python语言,实验平台是Ubuntu18.04 LTS系统,CPU是Xeon Gold 5218@2.3 GHz,内存、硬盘大小分别为64 GB、1 TB,显卡为NVIDIA gtx2080ti。模型训练使用的优化器是随机梯度下降法(Stochastic Gradient Descent,SGD),批次大小设置为64,初始学习率为0.005,每训练10个epoch后衰减为原来的0.9倍,总共迭代200次。

2.1 数据集及预处理

实验选用的3个典型的公开数据集如下:

(1)FER2013数据集[23]:是一个典型的真实世界的人脸表情数据集,由谷歌搜索引擎收集,包括28 709张训练图像,3 589张验证图像和3 589张测试图像,包含了不同光照情况、姿势角度和比例的人脸。这些图像用7个表情标签(中性、快乐、惊讶、悲伤、愤怒、厌恶和恐惧)进行了注释。

(2)FERPlus数据集[24]:是FER2013数据集的扩展,有10个标签注释。本文使用在实验常用的7种基本情绪的图像。

(3)RAF-DB数据库[25]:包含了30 000张由40名受过训练的编码人员用基本或复合表情标注的面部图像。实验中只使用了具有基本表情的图像,其中12 271张图像用于训练,3 068张图像用于测试。

预处理是图像处理中不可或缺的步骤,本算法在预处理过程对数据进行增强处理。在训练阶段,首先将图片灰度化,尺寸调整为100 px×100 px,从中随机裁剪出尺寸为90 px×90 px的图像,随机角度旋转10°,再进行50%概率的水平翻转。在测试阶段,首先将图片灰度化,尺寸调整为100 px×100 px,分别从图片的左上角、右上角、中心、左下角和右下角裁剪出尺寸为90 px×90 px的5张图像,然后通过镜像操作得到另5张图像,将10张图像输入模型得到10个表情类别概率,将对应概率值取平均,从而得到模型对该图片的表情类别判断结果。

2.2 实验结果及分析

2.2.1 消融实验 在改进的八度卷积模块中,低频部分占比越高,模型的计算量越低。本文在RAF-DB数据集上,将设置不同低频分量占比的OCNN模型进行对比实验,其中将低频分量占比为0.00、0.25、0.50、0.75的模型分别记为OCNN-a、OCNN-b、OCNN-c、OCNN-d,参数量和计算量使用torchstat中的stat模块得到。由对比结果(表1)可以发现:(1)使用本文改进的八度卷积模块代替传统卷积,可以在不增加参数量的同时减少计算量,并提高准确率;(2)当低频分量占比为0.50时,模型的综合性能较优,计算量比传统的卷积将近减少40%,准确率提高了1%。

表1 不同低频分量占比模型的性能对比Table1 The performance comparation of models with different low-frequency components

在3个人脸表情识别数据集中,将准确率最高的OCNN-c模型与传统八度卷积模型进行对比实验。结果(表2)显示:OCNN-c模型的参数量更少,准确率更高。

表2 原始八度卷积模型和OCNN-c模型的对比Table 2 The comparation of original octave and OCNN-c convolution

在OCNN-c模型中,分别使用激活函数ReLU、DyReLU进行对比实验。将使用全连接层和自适应平均池化层的模型设为a组,未使用的设为b组,分别得到ReLU-a、DyReLU-a、ReLU-b、DyReLU-b子模型。对比结果(表3)表明:使用自适应平均池化下采样层能够有效减少参数量并提升模型性能;使用DyReLU激活函数的模型的准确率高于使用ReLU函数的模型,并降低了参数量。

表3 使用不同激活函数的OCNN-c模型的准确率Table 3 Accuracy of OCNN-c model with different activation functions

2.2.2 与经典网络模型的对比实验 大多数人脸表情识别模型是基于经典网络模型进行改进的,如AlexNet[15]、VGG16[16]、ResNet-18[17]和DenseNet-121[26]模型。在深度学习模型中,模型的计算量和参数量是评价模型性能的重要指标。其中,计算量可以从模型的乘加操作总量(Madd)上体现;模型训练后保存的权重参数文件大小(即存储空间,单位MB)可以准确地反映模型参数量大小,决定模型后续应用到实际硬件中的可能性。因此,本文将OCNN模型与上述4个经典网络模型进行对比实验,选择模型的计算量和参数量为评价指标。

由对比结果(表4)可知:(1)在FERPlus和RAF-DB数据集上,OCNN模型的准确率最高;在FER2013数据集上,OCNN模型的准确率仅略低于VGG16模型。(2)OCNN模型的计算量最少,其中VGG16模型的计算量最大,约为OCNN模型的18倍,ResNet-18、DenseNet-121模型的计算量分别约为OCNN模型的2、3倍。(3)OCNN模型的参数量为2.7 M,权重文件的存储空间为10.4 MB,少于其他模型,其中VGG16模型的权重文件的存储空间约为OCNN模型的52倍,AlexNet、ResNet-18、DenseNet-121模型的权重文件分别约为OCNN模型的22、4、3倍。综上可知,与目前的4个经典网络模型相比,本文提出的OCNN模型的准确率更高、计算量更小且参数量更小,在人脸表情识别方面优于目前的经典模型。

表4 与主流网络模型的对比Table 4 The comparation of mainstream network models

2.2.3 与当前模型的对比实验 深度学习模型的准确率与数据量有关,数据量越大,训练的模型效果越好。已有研究结果[11-12,27-29]表明在大规模数据集上预训练能提升模型的准确率。将本文的OCNN模型在AffectNet数据集[30]上进行预训练,保存模型参数后在FER2013、FERPlus、RAF-DB数据集上训练,得到最终的实验结果后与现有模型进行对比。

由实验结果(表5至表7)可知:(1)使用大的数据集进行预训练后,OCNN模型在FER2013、FERPlus、RAF-DB数据集上的准确率都有提升,表明在大的数据集上进行预训练能够有效提升模型性能。(2)在FER2013、FERPlus数据集上,OCNN模型的准确率最高。(3)在RAF-DB数据集上,OCNN模型的准确率为88.50%,仅略低于GCN模型(88.92%)。

表5 不同模型在FER2013数据集上的实验结果Table 5 Experimental results of different models on the FER2013 dataset

表6 不同模型在FERPlus数据集上的实验结果Table 6 Experimental results of different models on the FERPlus dataset

表7 不同模型在RAF-DB数据集上的实验结果Table 7 Experimental results of different models on the RAF-DB dataset

综上所述,OCNN模型在3个常用数据集的准确率较高,计算量、参数量较少,适用于人脸表情识别领域。

3 结论

为解决人脸表情识别模型准确率低、参数多和计算量大的问题,本文提出了一种基于八度卷积改进的人脸表情识别模型(OCNN)。该模型改进了卷积模块,在原始八度卷积的基础上增加了低频分量,降低人脸特征图中的冗余;使用DyReLU函数来增加模型的表达能力,采用自适应平均池化下采样层代替全连接层。本文通过消融实验探究OCNN模型低频分量占比和激活函数选用,降低了模型大小和计算成本,在RAF-DB、FER2013、FERPlus数据集上都取得了较好的结果。与经典网络模型及当前模型的对比结果表明:OCNN模型不仅保证了准确率,还有效减少了参数量和计算量,比其他模型具有更高的鲁棒性和适用性,拥有应用在多种人脸表情识别场景的能力。

虽然OCNN模型在资源占用上有优势,但依然是在大算力平台上进行的,因此,后续工作中将进一步优化模型,以完成人脸表情识别算法的硬件实现,为基于移动设备的表情识别系统奠定基础。

猜你喜欢

八度集上人脸
有特点的人脸
Cookie-Cutter集上的Gibbs测度
链完备偏序集上广义向量均衡问题解映射的保序性
三国漫——人脸解锁
复扇形指标集上的分布混沌
钢琴演奏中的八度技巧
——探究李斯特钢琴曲《魔王》
马面部与人脸相似度惊人
刍议音乐表演与钢琴演奏中的八度技巧
试论音乐表演中如何进行钢琴演奏中的八度技巧
长得象人脸的十种动物