轻量化卷积神经网络的面部表情分类研究
2021-06-23尚宇成陈格恩
尚宇成 陈格恩 洪 扬
(南京邮电大学,江苏 南京210000)
1 概述
计算机视觉技术飞速发展,人脸情绪识别技术也得到了快速推进,作为传达感情的一种方式,面部表情传达的信息占到了交流时传递信息总量的55%。常见的情感分为七类,包括开心、生气、惊讶、悲伤、害怕、厌恶和中性。人脸情绪识别主要包括图像采集、数据处理、特征提取以及情绪识别四部分,其中关键是对表情特征的提取,传统的检测方法设计较为复杂且已经不能满足准确性的要求,因此深度学习识别情绪方法随之诞生。大规模视觉识别挑战赛等竞赛提供了丰富的情绪数据,推动了深度学习技术的发展,其中卷积神经网络在分类识别任务上取得了显著成效。包含AlexNet、VGG、ResNet 等网络。
本文采用深度学习方法,在Xception 网络的基础上,设计训练轻量卷积神经网络,在FER2013 数据集上进行训练,在减少训练参数的同时提高识别准确率,最终达到了68.91%的识别率。
2 改进的卷积神经网络
2.1 卷积神经网络
卷积神经网络由传统的多层神经网络发展而来,加入了有效的特征提取部分、卷积层以及池化层,用来有效地提取特征以及减少训练参数,降低网络复杂度。最后的全连接层进行损失计算并得到分类结果。
2.2 改进的网络模型
本文在Xception 网络的基础上进行简化和改进,深度可分离卷积相较于正常卷积可以节省更多参数,其先对输入图像的三个通道RGB 分别进行空间卷积(单通道卷积),然后进行1*1通道卷积,与Inception 网络恰好相反。
本文模型首先在激活函数的选取上进行改进,常用的激活函数RELU,其优点很明显,因其无饱和区从而解决了梯度消失的问题,计算效率高,收敛快,但其负数部分恒为0,称为单侧抑制,学习率(Learning rarte)较大时,容易出现神经单元坏死,对数据无响应的问题。SELU,Scaled Exponential Linear Units (如公式(1)),存在饱和区,不存在死区,以及ELU,Exponential Linear Units(如公式(2)),都解决了Relu 函数造成的神经元“死亡”问题,也不存在梯度消失和梯度爆炸现象,本文分别采取两种激活函数进行实验。
其中α=1.6732632423543772848170429916717
λ=1.0507009873554804934193349852946
其次对深度可分离卷积网络进行轻量化处理,改进后的模型总参数为50263 个,而训练参数降为49287 个,先将输入图像进行两次3*3 卷积,Relu 激活,批归一化处理后,送入四个以SELU 或ELU 为激活函数的可分离卷积模块,每个模块中进行两次深度可分离卷积,批归一化,激活函数SELU 或ELU 激活,最大池化层以及残差直连,最后一个模块输出的数据经过1*1卷积及全局均值池化后送入Softmax 激活函数进行分类。
3 实验
3.1 实验环境
在windows10 64 位操作系统进行实验,实验采用Pycharm软件编程,在Keras 深度学习框架下搭建网络,其高度模块化,高级API 大大简化了代码量,几十行代码即可迅速搭建深度学习框架,且搭建的网络浅显易懂。在软件中安装keras、tensorflow、scikit-klearn、numpy、matplotlib、xlrd 等依赖包进行模型训练与数据处理。
3.2 数据集选取
3.2.1 FER2013
FER2013 表情数据集在Kaggle 人脸表情分析比赛提出。含有28709 张训练样本,验证集与测试集的样本数量均为3859张,像素大小规整。包含生气、厌恶、害怕、开心、悲伤、惊讶和中性七种类别的图像,对应数字0-6。该数据库人眼判别的准确率为65%±5%。
3.2.2 CK+数据集
CK+数据集是进行人脸表情识别最大的实验室数据集,发布于2010 年。包含有123 个对象的327 个被标签的序列。包含愤怒,轻视、厌恶、悲伤、惊讶、恐惧、快乐七种情绪。也是人脸识别中较为常用的一个数据库。
本实验采用FER2013 数据集进行模型训练。
3.3 数据处理
3.3.1 数据增强
在实际中,为了增加神经网络的学习能力,我们往往会增加神经网络的深度和广度,网络的加深会使学习的参数增多,数据集较小时,参数会拟合数据的全部特点,而不是数据间的共同特征,容易导致过拟合,使训练出来的模型缺乏泛化能力,准确率低。
数据增强即人为的对图像进行翻转、切割、旋转,可以防止过拟合现象,常见的数据增强方式包括随机旋转、随机裁剪、色彩抖动、高斯噪声等,可以增加数据的多样性,从而扩大数据量,增强训练网络的鲁棒性。本文设置参数随机旋转度数范围为10度,随机缩放范围为0.1,水平及垂直偏移的参数设为0.1,设置随机水平翻转,不进行去中心化及标准化。
3.3.2 训练参数
采用经过数据增强的FER2013 数据集,利用Keras 深度学习平台搭建改进的深度可分离卷积神经网络进行训练,并指定训练集的20%作为验证集,验证集与训练集无公共部分,设置分类个数(num_classes)为7 类,训练总轮数(epochs)为200 次,批大小(batch_size)为32 个,即每次训练时在训练集中选32 个样本,输入图像大小为1 通道,大小为48*48,并采用Adam 优化器降低损失。
3.4 实验结果分析(混淆矩阵)
通过多次实验得到实验结果,采用ELU 激活函数的识别率优于SELU。ELU 激活函数在FER2013 数据集得到的混淆矩阵如表1。
表1 FER2013 数据集七类表情混淆矩阵
由混淆矩阵可知,FER2013 数据集的七种表情中开心和惊讶的识别率较高,分别为:0.86 和0.81,而悲伤和害怕的识别率较低,为0.54 和0.46。可能是因其两种情绪的面部表情较为接近,难以分辨,以及可能存在的标签错误以及头发、手等遮挡物的遮挡。
模型识别的训练集与验证集的准确率如图1。
图1 训练集与验证集的准确率
改进的AlexNet[2]卷积神经网络的方法在FER2013 数据集上实现了68.85%的准确率。周章辉等[3]构建的双通道卷积神经网络在FER2013 数据集上准确率为66.7%。而徐琳琳方法[1]则在此数据集上达到了65.6%的识别率。本文的方法达到了68.91%的准确率,较上述方法优化了模型,说明本文改进的网络模型在面部表情分类上有更好的识别效率,表2。
表2 模型准确率对比
4 结论
本文在Xception 网络的基础上进行改进,ELU 激活函数解决神经元坏死现象,有较好的鲁棒性。采用轻量化设计,大大减少模型参数数量,最后在FER2013 数据集上取得了68.91%的准确率。模型训练需要大量数据作为支撑,模型准确率难以大幅度提升与数据集的标注,数据预处理与参数设置有较大关系,后续工作将考虑建立自己的数据库,并将光照、遮挡等因素考虑进去,进一步优化网络模型与参数选择,提高识别准确率。