关于卷积神经网络的人脸表情识别研究

(整期优先)网络出版时间:2023-04-17
/ 4

关于卷积神经网络的人脸表情识别研究

杜彦琦1

1武汉学院信息工程学院

摘要:为了避免传统的表情识别中复杂的显式特征提取过程,文中提出了一种用于人脸表情识别的卷积神经网络( CNN) 首先,对人脸表情图像进行归一化预处理,并使用可训练的卷积核提取隐式的特征。然后,采用最大池化方法对提取的隐式特征进行降维处理。最后,采用 Softmax 分类器对测试样本图像的表情进行分类识别。使用图形处理器( GPU) 在 CK + 人脸表情数据库上进行了实验,结果表明了 CNN 用于人脸表情识别的性能和泛化能力。

关键词:人脸表情识别; 卷积神经网络; 深度学习; 图形处理器; 特征提取

0引言

人脸表情是人类交流的一种有效表达方式,人脸表情识别作为情感计算系统的关键技术,是实现人机交互的基础。人脸表情识别系统通常包括人脸图像的获取与预处理、表情特征提取和表情分类,其中表情特征提取在表情识别系统中影响着整个系统的识别正确率。正因为如此,有关表情特征的构建和提取一直受到广泛关注,提出了活动外观模型 (AAM) 、小波变换、局部二元模式(LBP)、方向梯度直方图(HOG)、局部判别分量分析(LDCA)等。这些方法的共同点就是使用一组人工设计的特征,在一定程度上损失了原有的特征信息,或者假设属性之 间互相独立,往往与实际应用环境不相符合。于是, 近年来在机器学习领域出现了以深度学习( Deep Learning) 为突破点的纯数据驱动的特征学习算 法。深度学习算法不同于传统的浅层学习算法, 如局部线性嵌入(LLE)、 拉普拉斯特征映射(LE)、等度规映射(ISOMAP)、不相关 局部敏感鉴别分析(ULSDA)、二维局部保持鉴 别分析(2D-LPDA)等,它舍弃了依靠人工的显式特征提取方法,通过逐层地构建一个多层的深度神经网络,让机器自主地从样本数据中 学习到表征这些样本的更加本质的特征,从而使得 学习到的特征更具有推广性和表征能力。

本文提出一种基于卷积神经网络(CNN) 的人脸表情识别方法。对人脸表情图像进行归一化预处理,并使用可训 练的卷积核提取隐式的特征,并采用最大池化 方法对提取的隐式特征进行降维处理,同时使其具 有一定的旋转、平移不变性。最后,采用Softmax分类器对测试样本图像的表情进行分类识别,将人脸表情分成高兴、惊讶、愤怒、悲伤、厌恶、恐惧、中性共 7 类。

1 深度学习和卷积神经网络

  深度学习在目标和行为识别方面都取得了较好的研究成果,本质上是对拥有深层结构的模型进行训练的一类方法的统称。深层结构是相对于浅层结构而言的。浅层结构模型通常包含不超过一层或两层的非线性特征变换,这个方法能够获取对平移、缩放和旋转不变的观测数据的显著特征,因为图像的局部感受区域允许神经元或者处理单元可以访问到最基础的特征。近年来,CNN 在 ImageNet大规模视觉识别挑战赛(ILSVRC) 中已连续刷新了图像分类和目标定位任务的识别率纪录。2012 年,Krizhevsky 等首次将 CNN 应用于ILSVRC中,所训练的深度卷积神经网络在ILSVRC-2012 挑战赛中,取得了图像分类和目标定位任务的第一名。其中,在图像分类任务中,前 5 选项错误率为 15.3% ,远低于第二名的26. 2% 的错误率。从 CNN 首次应用于ILSVRC挑战赛并取得突出的成绩,到2014 年挑战赛中几乎所有参赛队伍都采用基于CNN 的深度学习方法,并将分类错误率降低到 6.7% ,可看出深度学习方法在图像识别领域具有巨大优势。

2 CNN 结构设计

CNN 是一个前馈式神经网络,能从一个二维图像中提取特征,采用反向传播算法来优化网络中的参数。本文设计了一种用于人脸表情识别的 CNN结构,如图 1 所示。不包括输入层,该网络由 7 层组 成,其中包括 3 层卷积层( C1、C2 和 C3) 、2 层池化 层( S1 和 S2) 、1 层全连接层和 1 层 Softmax 层。输 入层是 96 × 96 的人脸像素矩阵。卷积层和池化 ( Pooling) 层有若干个特征图(Feature Map) ,每个特 征图都与其前一层特征图以局部连接的方式相连 接。卷积层 C1、C2、C3 分别使用 32、64、128 个卷积核进行卷积操作,每个卷积层使用的卷积核的大小都为 5 × 5; 池化层 S1S2 使用的采样窗口的大小为2 × 2; 全连接层含有 300 个神经元,与池化层 S2 进行全连接; Softmax 层含有 7 个神经元,对全连接层输出的特征进行分类,将人脸表情分成7 类。

1 用于人脸表情识别的CNN结构

2.1 卷积层

自然图像中不同子块的统计特性通常具有一致性,这意味着可以将从图像某一子块学习到的特征作为探测器,然后遍历整幅图像的所有子块,来获得其他子块同一特征的激活值。CNN 中的卷积层就是利用图像的上述固有特性,用不同的可训练的卷积核分别与前一层所有的特征图进行卷积求和,并加上偏置,然后再将结果经过激活函数的输出形成当前层的神经元,从而构成当前层不同特征的特征图。一般地,卷积层的计算表达式为

                  (1)

为表述方便,称第 l 层为当前层,第 l - 1 层为前一层; yl j 表示当前层第 j 个特征图;表示当前层第 j 个特征图与前一层第 i 个特征图的卷积核; 表示前一层第 i 个特征图; 表示当前层第 j 个特征图的偏置,实验中令 = 0,可使网络能够快速训练,同时减少了学习的参数; 表示与当前层第 j 个特征图连接的前一层所有特征图的数量; M 表示当前层特征图的数量; θ(·) 表示激活函数,实验中采用修正线性单元(ReLU)函数,而不是常用的 sigmoid 或者双曲正切函数(tanh) ,因为ReLU更能产生稀疏性。ReLU函数的表达式为

                          (2)

实践证明,采用ReLU激活函数训练后的网络具备适度的稀疏性,能很好地解决反向传播参数调整过程中传统激活函数可能产生的梯度消失问题,加速网络收敛。

卷积层为特征提取层,每个神经元的输入与前一层的局部感受野( 即图像子块) 相连,并提取该局部的特征。卷积层 C1 采用 5 × 5 的卷积核对 96 × 96 像素的输入图像进行卷积操作,即每个神经元指定一个 5 × 5 局部感受野,所以经卷积操作以后得到的特征图大小为( 96 - 5 + 1) × ( 96 - 5 + 1) = 92 × 92。通过 32 个不同卷积核的卷积操作,得到 32 个特征图,即提取了 32 个不同的局部表情特征。同一特征图的每一神经元共享权值( 使用相同的卷积核) ,但它们接收来自不同局部感受野的输入。卷积层 C2 采用64 个5 × 5 的卷积核再对卷积层 C1 输出的特征图进行卷积操作,得到 64 个特征图,每个特征图的大小为( 92 - 5 + 1) × ( 92 - 5 + 1) = 88 × 88。卷积层 C3 采用 128 个 5 × 5 的卷积核对池化层S1 输出的特征图进行卷积操作,得到 128 个特征图,每个特征图的大小为( 44 - 5 + 1) × ( 44 -5 +1) = 40 × 40。

2.2 池化层( 下采样层)

特征图的个数随着卷积层层数的递增而增加,导致学习到的特征维数将急速增加,如果直接用所有学习到的特征去训练 Softmax 分类器,会带来维数灾难的问题,所以通常在卷积层之后用一个池化层来降低特征维数。池化层的作用是采用最大池化(Max-pooling) 操作进行下采样,所以,池化层也称下采样层。下采样并不改变特征图的数目,只是将特征图变小,使特征图的输出对平移、缩放、旋转等变换的敏感度下降。如果采样窗口的大小为 n × n,那么,经过一次下采样后,特征图的大小变为原来特征图的 1 /n × 1 /n。池化的一般表达式为

                      (3)

其中, 分别表示当前层和前一层的第 j 个特征图; down(·) 表示一个下采样函数; 分别表示当前层第 j 个特征图的乘性偏置和加性偏置,实验中令 ; 为激活函数,实验中采用恒等函数。

池化层 S1 是对卷积层 C2 输出的特征图采用2 × 2的窗口进行下采样得到的,所以得到的特征图大小为 44 × 44,下采样并没有改变特征图的数目,所以特征图的个数还是 64 个。同理,池化层 S2 采用 2 × 2 的窗口对卷积层 C3 输出的特征图进行下采样操作,得到 128 个特征图,每个特征图的大小为20 × 20。

2.3 全连接层

全连接层的输入必须是一维数组,而前一层的池化层 S2 输出的每个特征图都是二维数组,所以首先将每个特征图对应的二维数组转换为一维数组,然后再将 128 个一维数组串接成 1 个 51 200 维( 20 × 20 × 128 = 51 200) 的特征向量,作为全连接层每一神经元的输入。每个神经元的输出为

                     (4)

其中, 表示神经元的输出值; x 表示神经元的输入特征向量; w 表示权值向量; b 表示偏置,实验中令 b = 0;θ (·) 表示激活函数,实验中采用 ReLU函数。

全连接层与池化层 S2 进行全连接,神经元的数目将影响网络的训练速度和拟合能力。实验结果表明,当神经元的数目为 300 时,效果较好。

2.4 Softmax 层

CNN 的最后一层采用 Softmax 分类器。Softmax分类器是一种多输出竞争型分类器。当输入给定样本后,每一个神经元输出一个取值在 0 到 1 之间的数值,该数值代表了输入样本属于该类别的概率。因此,选取输出值最大的神经元所对应的类别作为分类结果。

3 CNN 的参数训练实验结果分析

实验在基于 Python 语言的深度学习库 Theano 上进行,硬件平台为 AMAX 的 PSC-203G: Intel Xeon E5-1600 v2 CPU、主频3.7 GHz、内存 32 GB、Nvidia GeForce GTX 980Ti GPU、显存 6 GB。实验使用的训练样本和测试样本来自扩充的 Cohn-Kanade 人脸表情数据库(CK + ) ,选用了共计 950 幅表情图像,包含高兴( 140 幅) 、惊讶( 150 幅) 、愤怒( 165 幅) 、悲伤( 135 幅) 、厌恶( 135 幅) 、恐惧( 120 幅) 、中性( 105 幅) 7种表情。由于这些图像是用数码摄像机拍摄的面部图像,有些是彩色图像,有些是灰度图像,所以实验中先将所有图像剪裁并归一化成如图 2 所 示 的96 × 96像素的灰度图像。

图 2 实验中使用的 7 类表情图像的样例

为了提高识别结果的可靠性,实验中采用 5 次交叉验证方法。为了验证 CNN 在人脸表情识别上的有效性,实验对基于 LBP + SVM、MLP、CNN 的表情识别算法进行了比较,其结果如表 1所示。

表 1 不同算法在 CK + 上的识别性能比较

算法

识别率/%

LBP( 1,8) + SVM

66. 85

LBP( 2,8) + SVM

62. 08

MLP( 200-600-300)

77. 35

MLP( 600-1200-600-300)

81. 11

CNN

81. 50

表 1 中,LBP( 1,8) 和 LBP( 2,8) 分别表示 LBP算子采用圆周半径为 1 和 2、圆周上均匀分布 8 个邻点的圆形邻域; MLP( 200-600-300) 表示 3 层 MLP网络,每层分别包含 200、600、300 个神经元; MLP( 600-1200-600-300) 表示 4 层 MLP 网络,每层分别包含 600、1 200、600、300 个神经元。从表 1 的实验结果可以看出,CNN 取得了最高的平均识别率,比MLP( 600-1200-600-300 ) 提 高 了 近 0. 4% ,比 LBP(1,8) + SVM 提高了近 14. 7% 。针对深度神经网络在输入训练数据不足或者过训练时存在的容易过拟合问题,可以采取 dropout 策略或数据集扩增策略来防止过拟合。实验中CNN + D 采取了 dropout 策略,在网络的训练过程中,对于全连接层的神经元,以 0. 5 的概率将神经元的输出值清 0,而用反向传播算法更新权值时,不再更新与该神经元相连的权值; CNN + A 采取了数据集扩增策略,对训练集每幅图像做了如下变换: 旋转、水平平移、垂直平移、水平翻转,每种变换得到一幅新的图像,经扩增后的训练集样本达到了3 800个; CNN + AD 则同时采取了 dropout 策略和数据集扩增策略。表 2 给出了采取不同策略的 CNN 在表情识别率上的比较。

表 2 采取不同策略的 CNN 在表情识别率上的比较

策略

识别率/%

CNN

81. 50

CNN + D

82. 90

CNN + A

84. 42

CNN + AD

84. 55

从表 2 的实验结果可以看出,采取的 dropout 和数据集增广策略较好地防止了过拟合的问题,提高了网络的泛化能力。另外,CNN 同一层特征图中神经元之间的连接权值共享的网络结构有利于并行学习,实验通过使用 GPU 的并行数据处理能力,加速了卷积神经网络的训练,大幅减少训练时间。

表 3 使用 CPU 和 GPU 的训练时间和识别率比较

处理器

训练时间/s

识别率/%

CPU

90. 00

82. 60

GPU

0. 25

82. 62

从表 3 的实验结果可以看出,在训练时间方面,GPU 所用时间远远少于 CPU,GPU 可将数据并行化处理,大幅缩短了训练所需的时间; 在识别率方面,两者几乎没有 差 别。因为除了分别用 CPU 或 者GPU 训练网络以外,其它的实验环境包括网络结构、参数,以及训练集和测试集都是相同的,故得到的识别率很接近。

结论:卷积神经网络是为了识别二维图像而设计的多层感知器,具有局部感知区域层次结构化、特征提取和分类过程相结合的全局训练的特点,在人脸表情识别方面具有如下优点: (1) 可以直接以图像的像素值作为输入,通过训练样本的图像数据进行自主学习,隐式地获得图像更抽象的特征表达,避免了传统人脸表情识别中显式的特征提取过程,特征提取和表情分类识别同时进行。(2) 神经元之间的连接是非全连接,且同一层特征图中神经元之间的连接权值是共享的,这种非全连接和权值共享的网络结构降低了网络模型的复杂度,减少了权值( 训练参数) 的数量,同时也有利于并行学习。(3) 池化层的下采样操作增强了卷积神经网络的鲁棒性,可容忍图像一定程度的畸变。

参考文献:

[1] PANTIC M,ROTHKRANTZ L. Automatic analysis of facial expressions: The state of the art[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2010,22( 12) : 1424 -               1445.

[2] FASEL B,LUETTIN J. Automatic facial expression analysis: A survey[J]. Pattern Recognition,              2003,36 ( 1 ) : 259 - 275.

[3]COOTES T F,EDWARDSGJ,TAYLORC J.Active appearance models[J].IEEE Transactions               on Pattern Analysis and Machine Intelligence,2001,23( 6) : 681 - 685.

[4]GU Wenfei,XIANG Cheng,VENKATESH Y V,etal. Facial expression recognition using radial encoding of local Gabor features and classifier synthesis[J]. Pattern Recognition,2012,              45( 1) : 80 - 91.

[5]卢官明,李晓南,李海波.新生儿疼痛面部表情识别方法的研究[J].光学学报,2008,28( 11) : 2109 - 2114. LU Guanming,LI Xiaonan,LI Haibo. Research on recognition for               facial expression of pain in neonates[J].Acta Optica Sinica,2008,28(11) : 2109 -               2114. ( in               Chinese)

[6]蒋斌,贾克斌. 一种用于表情识别的局部判别分量分析算法[J]. 电子学报,2014,42( 1) :               155 - 159.JIANG Bin,JIA Kebin. A local discriminative component analysis algorithm for               facial expression recognition[J].Acta Electronica Sinica,2014,42( 1) : 155 - 159.( in               Chinese)

[7]BELKINM,NIYOGIP.Laplacian eigenmaps for dimensionality reduction and data representation[J].Neural Computation,2003,15( 6) : 1373 - 1396.

[8]TENENBAUM J B,ILVE V D,LANGFORD J C. A global geometric framework for nonlinear               dimensionality reduction[J].Science,2000,290: 2319 - 2323.

依托项目:省级大学生训练项目S202213634037