当前位置:首页 期刊杂志

基于卷积神经网络的微表情识别模型*

时间:2024-09-03

韦锦涛, 倪建成, 侯 杰, 吴俊清, 魏媛媛

(曲阜师范大学软件学院,273100,山东省曲阜市)

0 引 言

美国心理学家Ekman[1]等人在20世纪70年代开始研究人脸表情,并将其划分为Happiness,Sadness,Anger,Fear,Surprise和Disgust等6类表情.此后,众多学者致力于研究变化多样、表情丰富的人脸宏表情识别[2],识别精度不断提升,并在计算机视觉、人机交互[3]、教育[4]、模式识别、心理学等众多领域进行了广泛应用.但迄今为止,人们对变化细微、停留时间极其短暂的微表情识别研究仍然相对较少.

微表情是人脸表情的一种习惯性表达方式,因其仅有大约1/25 s到1/2 s[5]的短暂出现时间,而且表情变化幅度非常微弱,故难以准确识别.Zhao[6]等人在引入形态学知识的基础上,基于动作单元(Action Units,AU),结合LBP-TOP的方法提取脸部表情特征,利用支持向量机(SVM)实现了微表情分类.Li[7]等人在3D卷积神经网络(3D-CNN)的基础上,引入批量归一化,结合3D光流特征提取时空域的学习特征实现了微表情的分类.Zhao[8]等人使用3D快速傅里叶变换提取微表情视频的顶帧,计算从起始帧到顶帧的光流特征映射,利用浅层卷积神经网络提取复合微表情的高级光流特征并完成微表情分类.Diana Borza[9]等人在从微表情短视频分别提取表情动作的开始帧与顶点帧、顶点帧与结束帧的差分图像基础上,利用滑动时间窗口迭代视频序列提取特征向量,使用CNN将微表情分为中性、正性、负性和惊讶等4类.此外,业界已开发了FACS系统[10]和METT[11]等研究微表情识别的专业训练工具.在预处理微表情短视频时,上述研究方法通常需要提取到脸部的变化特征,然后合成微表情视频序列的特征向量.但是,微表情数据量小和数据不平衡等因素容易导致CNN等深度网络模型产生过拟合,从而降低了微表情识别算法的泛化能力.

基于微表情数据集CASME Ⅱ,本文首先利用Dlib库中的人脸关键点检测技术[12]准确定位了人脸位置并获取了一组脸部图像序列,继而使用帧间差分法提取出关键帧图像.然后,在数据增强基础上,构建了CNNMER模型,阐释了模型数据处理流程,给出了具体的算法实现步骤.实验结果显示,CNNMER模型达到了98.44%的微表情识别精度,从而为微表情的应用研究提供了一种可行的解决方案.

论文的结构如下:第1节阐述了帧间差分法、数据增强和卷积神经网络;第2节提出并构建了CNNMER模型;第3节进行了详细的实验对比分析;第4节总结全文并指出了进一步研究的方向.

1 相关技术

1.1 帧间差分法

帧间差分法[13]是一种将视频序列中相邻或间隔多帧的两张图像像素值作差分的提取轮廓方法.此方法可以由公式1和公式2来描述,对差分运算后的值取绝对值得到d,同时设置阈值T对相减后的图像提取运动区域.

dk(x,y)=|fi(x,y)-fi+k(x,y)|,

(1)

(2)

其中fi(x,y),fi+k(x,y)分别表示第i帧和第i+k帧图像在坐标为(x,y)的像素值,dk(x,y)表示像素值差的绝对值,Dk(x,y)为0和1分别表示背景区域和运动区域.图1表示采用帧间差分法得到的运动区域的轮廓图像,例如,眉毛、眼睛、嘴唇等.

图1 CASME Ⅱ视频序列样例的运动区域帧间差分图

1.2 数据增强

在小样本情况下,数据集的训练样本不足或者分布不均匀时,最直观的做法是增加训练样本的数量.对于微表情识别场景而言,数据增强的对象自然是图像.在有限的训练样本下,本文借助图像的数据增强(Data Augmentation)[14],扩充了CASME Ⅱ数据集的样本数量.数据增强的方法主要有几何变换和颜色变换,其中几何变换包括图像的平移、旋转、放缩、镜像变换、转置等;颜色变换包括噪声、模糊、填充等.在微表情图片的处理中,为了保留更多的脸部表情的细节及尽可能地还原真实场景,本文使用了旋转、镜像变换和填充.

旋转变换是以图像的中心为原点,旋转一定的角度θ.经过旋转变换后的像素点(x0,y0)的坐标变成(x1,y1),如公式3所示,并且旋转后填充空白部分,如图2(a)所示.

(3)

镜像变换包括水平镜像和垂直镜像,其中本文采用水平镜像.设图像的高度为h,宽度为w,原图中像素点(x0,y0)经过水平镜像变换后坐标为(x1,y1),如公式4所示,变换后的图像如图 2(b)所示.

图2 进行数据增强处理后的图片

(4)

通过上述方法就可以将原数据集扩充到需要的大小,从而增加数据集样本的数量,可以使训练后的模型具有更好的鲁棒性,进而提高训练后模型的泛化能力.

1.3 卷积神经网络

深度学习是机器学习技术的一种,这种技术通过迭代的方式从数据中提取重要的信息并将其转化为最终的输出特征.深度学习在语音识别[15]、人脸识别[16]、场景识别[17]等诸多应用领域产生了巨大的影响.其中,卷积神经网络是被广泛应用于视觉分析领域的深度学习算法之一.卷积神经网络(Convolutional Neural Network,CNN)[18-21]是一类包含卷积计算且具有深度结构的前馈神经网络.卷积神经网络结构主要由输入层、隐藏层和输出层组成,其中,隐藏层由卷积层(Convolutional Layer)、池化层(Pooling Layer)和全连接层(Fully Connected Layer)中的一种或多种组成,形成复杂的卷积神经网络结构.

2 CNNMER模型

2.1 CNNMER模型架构

CNNMER模型的微表情识别的基本机理:首先将CASME Ⅱ微表情数据集通过帧间差分法提取关键帧,然后对获得的关键帧做数据增强扩充微表情数据集的图片数量.最后将增强后的数据集输入到卷积神经网络识别每个表情属于哪一类,由此实现微表情识别.CNNMER模型的微表情识别流程图如图3所示.由图3可知,CNNMER模型的算法流程包含两部分,一部分为微表情数据集的数据预处理,另一部分为微表情识别.

图3 CNNMER微表情识别的流程

2.1.1数据预处理

本文采用的数据来源于中国科学院心理研究所傅小兰团队的数据集CASME Ⅱ[22].该数据库样本在拍摄采集时使用视频无灯光频闪,光线相对均匀,微表情的短视频样本的帧率为200 fps,分辨率为280×340像素.由26名受试者的255个微表情短视频组成,并被划分为7个情感类别(Disgust,Fear,Happiness,Repression,Sadness,Surprise,Others),具体分类数量如表1所示.

表1 CASME Ⅱ表情数据库的样本短视频分布

由表1观察可知,CASME Ⅱ数据集中Fear、Sadness分别只有2个、7个样本,考虑到数据不平衡的问题,本文未考虑数量过少的2种微表情Fear、Sadness.首先利用Dlib库中的68个人脸关键点检测算法,识别出人脸区域,并剪切得到了一组脸部图像序列.然后使用帧间差分法提取该图像序列的关键帧.由于各个微表情的关键帧数量较少,且分布不均匀,因此对其使用数据增强.本文对图像做水平镜像、旋转变换,旋转角度为{-6°,-4°,-2°,2°,4°,6°},并将输出图像的大小标准化为300×300像素,最后与原图像关键帧(只将图像大小标准化为300×300像素)相结合.数据增强前后的图像数据如表2所示.通过计算分析可知,5种微表情的关键帧数量的百分比值在数据增强前后的波动情况如表3所示.使用数据增强后,本实验的训练样本数量扩充了6倍,并且各类表情的数量分布具有很好的均匀性、稳定性.

表2 数据增强前后的微表情关键帧的数量

表3 关键帧数量百分比值的分析统计表

2.1.2微表情识别

本文采用的卷积神经网络主要包含3个卷积层,3个池化层,1个Flatten层,1个Dropout层,1个全连接层,1个Softmax层.

第1层卷积层使用32个大小为3×3、步长为1的卷积核对图像进行卷积运算.为了避免出现“坍缩”现象,卷积运算时采用“0填充”模式,即在四周边缘扩充1个像素,确保卷积后的图像大小仍为300×300.同时,使用ReLU激活函数,可以减少计算量,增加网络的稀疏性,缓解过拟合问题的发生.然后在第2层最大池化层使用大小为2×2、步长为1的滑动窗口进行处理,有助于降低尺寸保留主要特征,减少计算量和特征数量,增大卷积核的感受野,缓解过拟合的问题.卷积层和最大池化层如此交替,形成交叉地卷积层和最大池化层,其中第1层、第3层、第5层分别使用32个、64个、128个卷积核.第7层使用Flatten层把多维数据一维化,使卷积层的数据方便连接全连接层.但是,为了降低模型复杂度,增强模型的泛化能力,在第8层添加了Dropout层,随机丢弃部分权值,减少运算量.第9层使用带有ReLU激活函数的全连接层,把前面提取到的特征综合起来输入到下一层全连接层,这层网络使用5个神经元,Softmax分类器输出每一个类别对应的输出概率,输出概率最大的那个类别就是分类器分类后的结果.

2.2 CNNMER算法

CNNMER算法的具体步骤如表4所示.

表4 CNNMER算法描述

其中Wi表示第i层网络的权重矩阵,“*”表示Wi与Fi-1的卷积,bi表示第i层的偏置项,Fi-1表示第i-1层网络的特征图,down(*)表示下采样函数.f(x)表示ReLU激活函数(Activation Function),如公式(5)所示.yi为真实值,Y为预测值.

f(x)=max (0,x).

(5)

常用的激活函数有Sigmoid函数、softmax函数以及ReLU函数.ReLU激活函数(Activation Function),以计算速度快、收敛速度快、分类效果好等优点成为CNN模型的首选激活函数.本实验训练结果显示ReLU函数(公式(5))识别效果最好.另外,在实际应用中,通常将卷积操作和激活函数ReLU结合使用,形成卷积层.卷积层是CNN模型的核心层,它利用图片中相邻区域的信息,使用稀疏连接和权值共享的方式提取特征.同时,为了减少过拟合现象的出现,对权重W添加L1,L2正则化;超参数λ为权重衰减,用来调整整个CNN模型的过拟合强度;超参数η为学习速率,用于控制梯度下降的速度.对于训练样本,本文的优化器采用RMSProp,通过调节CNN模型中卷积核的权值Wi和偏移向量b.

3 实验与分析

3.1 实验环境及参数的设置

本系统环境为Ubuntu16.04.5 LTS,GPU型号为Tesla,驱动版本为384.81,实验软件为Anaconda3.6.5,实验框架为keras.

通过交叉熵损失函数训练后,CNNMER最优模型如下:为了完成本实验的微表情识别,本文实验使用Keras架构以TensorFlow作后端搭建卷积神经网络结构,使用Sequential类,用于层的线性堆叠,具体的模型结构及参数如表5所示.实验中,CNNMER模型的重要的网络超参数设置如表6所示.

表5 CNNMER模型结构及参数

表6 网络超参数配置

3.2 实验结果及分析

实验训练网络时使用数据增强后的数据集,训练了200轮epoch后,记录了训练集和验证集的精度值和损失值,结果如下页图4所示.图4(a)展示了实验时训练精度曲线和验证精度曲线,图4(b)展示了实验时训练损失值曲线和验证损失值曲线.

图4 训练过程中的精度值和损失值

根据下页图5(a)可以看出,当训练轮次达到50次左右时,训练精度曲线和验证精度曲线的上升幅度已经比较缓慢;根据图5(b)可以看出,当训练轮次达到100次左右时,训练精度曲线和验证精度曲线的上升幅度变得更加缓慢,趋向于收敛的状态.使用测试集进行测试时,最后得到的准确率为98.44%,测试集的不同的表情的分类结果的混淆矩阵如图6所示.

图5 训练过程中后150个epoch和后100个epoch的精度值

图6 分类精确度的混淆矩阵

由图6可知,对于已确定的微表情种类,如Disgust、Happiness、Repression和Surprise,微表情识别CNNMER模型均可以准确地识别,Disgust和Repression的分类准确率分别为96.9%、99.6%,其中Happiness和Surprise的分类识别率更是达到100%.Others这一类由表情种类无法确定的表情组成,其识别准确率比其它的四种确定种类的微表情识别准确率都要低,但是Others类的识别准确率仍然达到了93.8%.

同时,将本文提出方法的精确度和其它优秀的微表情识别算法的精确度作了对比,对比结果如表7所示.表7显示了本文的方法在CASME Ⅱ数据集上的识别精度表现更优.

表7 在CASME Ⅱ上微表情识别精度的对比

4 结束语

目前,微表情识别面临数据集单一、图像资源少、容易产生过拟合问题.本文使用帧间差分法提取微表情视频片段的关键帧,通过数据增强扩充了微表情图像数量,在一定程度上缓解了过拟合问题,同时L1_L2正则化和dropout方法的引入进一步降低了过拟合,从而提升微表情识别精度和泛化能力.从实验结果上看,与Transfer Learning+CNN等优秀的微表情识别方法相比,CNNMER模型在识别精度上得到了进一步提高.但是,CNNMER模型数据预处理时手工操作过多,未实现自动化建立微表情数据集;并且微表情识别时采用的是图片数据集,未考虑表情的动态性.因此,下一步工作将进一步优化CNNMER模型,实现自动化采集微表情图像,探索一种能够基于人脸微表情动态特征的识别方法.

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!