APP下载

基于变分自编码器的人脸表情识别

2023-08-10党宏社陆馨蕊王汝明

计算机应用与软件 2023年7期
关键词:编码器人脸卷积

党宏社 王 淼* 陆馨蕊 王汝明

1(陕西科技大学电气与控制工程学院 陕西 西安 710021)2(潍坊英轩实业有限公司 山东 潍坊 262400)

0 引 言

人脸表情是人类交流过程中表达情感最自然、最直观的方式之一,且55%的有用信息是通过表情来传达的[1]。因此,近年来人脸表情逐渐成为图像处理领域研究的热门,在教育、陪伴机器人、侦察、医疗等领域具有广泛的应用价值和深远的研究意义。

传统的人脸表情识别方法主要是在人为手动提取特征的基础上,再使用支持向量机(SVM)进行表情分类。如LBP(Local Binary Pattern)、Gabor、梯度方向直方图(HOG)等,但这种手工特征的表示能力较差,且光照、性别、个体差异及人为干扰等因素对其影响较大[2]。目前深度学习在许多领域取得了较好的结果,并在某些任务中超越了传统方法。所以研究者开始将深度学习应用于表情识别中[3]。基于深度学习的方法可以自动学习到人脸图像中复杂的特征描述,具有较强的鲁棒性且可以避免人为手工提取特征造成的误差,使得深度学习成为人脸表情识别领域的研究热潮。但有监督学习需要大量的带标签样本进行网络训练以保证模型的效果,无法直接在数据量较小的样本中得到较好的结果,然而在实际中,利用人工标记大量表情数据是非常费时耗力的事情。在面对海量无标记的数据时,无监督的特征学习正逐渐成为研究的新热点[4]。文献[5]将生成对抗网络(GAN)应用于人脸表情识别中。文献[6]在表情识别中使用了去噪自编码器、稀疏自编码器、自编码器构成了5层的堆栈混合式自编码器。

受文献[7]的启发,本文在传统自编码器网络的基础上,将卷积变分自编码器引入人脸表情识别中,提出一种基于卷积变分自编码器的人脸表情识别方法,首先利用卷积神经网络构建卷积变分自编码器。然后利用人脸识别领域中大量的无标签的人脸样本作为特征学习所需的数据,对卷积变分自编码器进行无监督训练;然后将变分自编码器中编码网络部分输出的低维特征输入到卷积神经网络中,构成表情识别网络;最后使用表情数据集对表情识别网络进行有监督训练,得到训练好的完整的表情识别网络。

1 表情识别算法设计

1.1 整体框架

图1 基于变分自编码器的人脸表情识别系统框架

1.2 算法流程

表情识别主要分为表情特征提取和特征分类两步,而表情特征提取作为表情识别的关键步骤,直接影响着识别结果的好坏,为了提高表情特征提取能力,本文采用变分自编码器的思想,通过变分自编码器中解码网络不断重构编码网络输出的隐变量,使得重构图像尽可能地接近输入的原始图像,从而提高特征提取能力。

(1) 无监督训练变分自编码器:在对变分自编码器进行无监督训练阶段,使用无表情标签的CelebA人脸数据集作为网络输入,通过变分自编码器将输入的高维数据映射为均值向量μ和标准差向量σ,利用重参数技巧Z=μ+εσ,ε~N(0,1)得到隐变量特征Z,再利用解码器将低维隐特征变量Z还原成高维特征得到重构的人脸图像,通过不断地优化原始人脸图像和重构的人脸图像之间的误差,使重构的人脸图像尽可能地还原原始人脸图像,从而保障隐变量Z中包含的原始人脸特征信息通过解码网络后能尽可能还原出原始人脸图像。利用变分自编码器的无监督特征学习过程为表情识别网络提供良好的初始参数,从而达到提高网络的特征提取能力的目的。

(2) 有监督训练卷积网络:使用带表情标签的人脸表情数据经过编码器得到的低维特征和表情标签对卷积网络部分进行有监督训练,通过反向传播算法调整网络权重,最终得到训练好的表情识别网络。

(3) 人脸表情图像分类:输入表情数据集的测试数据,使用已经训练好的完整的表情识别网络进行表情分类识别。

1.3 网络设计

本文提出一种基于VAE的表情识别方法,该方法是在VAE的基础上设计一种新的表情识别网络,该表情识别网络由变分自编码器中的编码网络和卷积神经网络两部分组成。

变分自编码器(VAE)是Kingma等[8]提出的,VAE是采用两个神经网络建立了两个模型,分别是Encoder和Decoder。本文设计的变分自编码器的网络结构如图2所示,其中:h、w、c分别表示输入输出图像的高、宽、通道数;k表示卷积核的大小;s、p分别表示步长及填充。变分自编码器的编码网络的输入是128×128大小的人脸图像,自编码器中有5个卷积核大小为4、步长为2、边界填充1的卷积层,其中每个卷积层后均采用批量归一化(BN)和LeakyReLU激活函数;卷积层后连接两个全连接层,第一个全连接层有512个神经元,第二个全连接层输出通过重参数技巧得到的256维隐变量Z。为了能够还原出128×128大小的人脸图像,解码网络中先连接一个具有8 192个神经元的全连接层,然后是5个与卷积操作作用相反的卷积核大小是为4、步长为1的反卷积层组成,每个反卷积层后采用BN和激活函数ReakyReLU。当输入为128×128大小的人脸图像经过编码网络后得到均值向量μ和标准差向量σ,经过重参数技巧后得到256维的隐变量特征Z,然后再经过解码网络还原出128×128大小的人脸图像。

图2 VAE网络结构示意图

在对VAE使用无监督训练完成后,使用训练好的VAE实现的人脸表情识别网络,如图3所示该网络由变分自编码器的编码部分和卷积神经网络两部分组成。将预训练后的卷积变分自编码网络中编码网络输出的隐变量Z作为卷积神经网络的输入,构建完整的表情识别网络,使用带表情标签的人脸表情数据对表情识别网络中的卷积神经网络部分进行有监督训练。128×128×1的原始人脸图像经过编码网络后得到256维的特征,将256维的一维特征使用Reshape函数重构成16×16×1的矩阵,然后将其作为卷积神经网络的输入。卷积神经网络部分包括两个卷积核为5×5、步长为1的卷积层,两个池化窗口为2×2、步长为2的最大池化层,以及神经元个数为1 024的全连接层和神经元个数为7的Softmax层。为了防止过拟合,在全连接层加入了参数设置为0.25的Dropout层。

图3 使用VAE改进的表情识别网络

2 实验验证

2.1 实验环境

实验采用的深度学习软件框架是PyTorch,实验的硬件平台为Intel(R) Xeon(R)CPU E5-2680 v2,内存为16 GB,GPU为10 GB的NVIDIA GeForce RTX 2080Ti。

2.2 数据集以及数据预处理

本文采用的数据集有CelebA(CelebFaces Attribute)人脸数据集[9]、JAFFE表情数据集[10]和CK+数据集[11]。其中无表情标签的CelebA数据集用来对卷积变分自编码器进行无监督特征学习,JAFFE和CK+人脸表情数据集均用来验证基于卷积变分自编码器的人脸表情识别算法的表情分类性能。

CelebA人脸数据集中包含10 177个名人的202 599幅人脸图像,图像大小均为218×178,CelebA数据集是用来训练卷积变分自编码器。

JAFFE数据集共213幅,是在实验室环境下对10名日本女性所表现出的7种基本表情采集构成的数据集。

CK+数据集是表情识别中比较常用的数据库,此数据库包含了采集自123名测试人员的593段表情图片序列,显示了表情从平静到剧烈,选取每段表情序列的最后1至3帧图像构成表情识别数据集。

在实验前,需要对用到的所有数据集进行预处理,将所有图像的尺寸均缩放到128×128大小作为网络的输入。

2.3 重建人脸图像的结果分析

为验证卷积变分自编码器有较好的重建人脸图像的能力,使用CelebA人脸数据集分别对卷积变分自编码器和卷积自编码器进行无监督训练,然后将重建的人脸图像可视化。自编码器将输入的高维人脸数据直接通过编码部分得到低维的隐向量,然后隐向量通过解码部分重构成原始图像,这个过程类似于数据压缩。而变分自编码器是基于变分贝叶斯推断的生成式网络。

如图4和图5所示,分别为自编码器和卷积变分自编码器重建的人脸图像,其中第一行是原始的CelebA图像,第二行是重建的人脸图像。通过对比重建的人脸图像的清晰度可以看出卷积变分自编码器重建人脸图像的能力优于自编码器,即隐层变量能包含更多的原始人脸特征信息,所以文中用卷积变分自编码器来进行特征提取。

图4 原始图像与AE器重建的人脸图像的对比

图5 原始图像与VAE重建的人脸图像的对比

2.4 表情分类结果分析

本文的评价准则是表情分类的准确率,定义见式(1)。

式中:Ni为第i类表情的样本量;ni为第i类中识别正确的样本数量。

为了测试和评估人脸表情识别模型的分类效果,分别将预处理好的JAFFE和CK+数据集作为测试数据,图6和图7所示分别是在CK+数据集和JAFFE数据集上表情识别结果的混淆矩阵。

图6 CK+数据集上的混淆矩阵

图7 JAFFE数据集上的混淆矩阵

图6和图7中对角线部分是各类表情的识别率,其余部分数据为某表情被误分为其他类别的概率。通过对比各类表情的识别率得:无论是CK+数据集还是JAFFE数据集,本文算法在高兴(Happy)表情上的识别正确率最高;在JAFFE数据集中,厌恶和害怕这两种表情上的正确率明显偏低,而在CK+数据集上自然(Neutral)的识别率偏低。通过对数据集中原表情图像分析得:高兴表情的表情特征更加明显,而其他表情的表情特征有相似之处,所以更容易分类错误。

为了进一步验证本文算法的识别效果,设计了以下对比实验:

实验1:直接使用表情数据集训练一个7层的卷积神经网络。

实验2:使用变分自编码器的编码部分进行特征提取,然后直接对提取的特征输入Softmax分类层分类。

实验3:本文算法。

表1中列出了几个对比实验分别在JAFFE和CK+数据集上的识别率,在对比实验1中采用的CNN网络的网络结构和参数与本文算法相同,分析表1中数据发现,使用变分自编码器后在CK+和JAFFE数据集上的识别率比未使用自编码器的识别率分别提高了9.99百分点和14.75百分点;但将变分自编码器编码网络的输出特征直接输入到Softmax进行分类和与本文算法相比,本文算法的识别率略胜一筹。

表1 对比实验的实验结果(%)

表2中列举了不同表情识别方法在JAFFE和CK+数据集上识别率的对比结果,如:文献[5]中利用GAN的博弈思想不断增强特征提取能力和分类能力;文献[12]中使用卷积神经网络CNN提取人脸特征,并使用最大池化方法降维,Softmax进行分类;文献[14]中将改进的AlexNet应用于表情识别中。对比表中数据,无论是传统方法还是基于CNN的表情识别方法均取得了一定的效果,但是相比较而言,本文方法的识别效果更好。人脸表情识别部分结果示例如图8所示,图8(a)为识别正确的结果图。图8(b)为识别错误的结果图。图8(b)中左侧图像的表情标签是厌恶,但是从右侧的柱形图中可以看出,该表情被识别成伤心的概率最大。

表2 不同方法在JAFFE数据集和CK+数据集上对比(%)

(a) 识别正确的结果图

3 结 语

针对由于样本不足导致网络模型难以训练,从而影响识别结果的情况,本文提出的基于变分自编码器改进的人脸表情识别方法,通过无监督学习的方式使变分自编码网络有良好的特征提取能力,从而为表网络提供良好的初始参数,在一定程度上解决了因样本不足而导致的过拟合问题。通过实验验证了本文方法在表情识别方面是有效的。下一步将以野外表情数据集作为研究的对象,使网络在野外表情识别方面具有较好的识别能力。

猜你喜欢

编码器人脸卷积
基于3D-Winograd的快速卷积算法设计及FPGA实现
有特点的人脸
从滤波器理解卷积
三国漫——人脸解锁
基于FPGA的同步机轴角编码器
基于傅里叶域卷积表示的目标跟踪算法
基于PRBS检测的8B/IOB编码器设计
JESD204B接口协议中的8B10B编码器设计
马面部与人脸相似度惊人
长得象人脸的十种动物