王 柳,牛 犇(通信作者),巫天骥,张小凤
(金陵科技学院电子信息工程学院 江苏 南京 211169)
在日常生活中,人与人之间的交互方式具有多样性,其中情绪的交流与表情信息的传递极为重要,表情和情绪能够更准确地反映一个人的心理状态和情感变化,因此对于人脸表情识别的研究一直是计算机视觉和人工智能领域的研究热点[1]。随着深度学习(deep learning,DL)技术的不断发展,国内外已有不少学者在人脸表情识别领域取得了一定的成果[2-3]。
由于大多数人脸表情数据集存在数据量小、数据类别不均衡等问题,较少的样本数量在训练过程中往往会出现过拟合现象,泛化效果不够理想。针对这一问题,本文提出一种针对人脸表情数据集的混合数据增强方法,提高卷积神经网络训练模型的准确率,增强人脸表情识别的鲁棒性。
在DL网络模型训练过程中,数据集样本数量过小会导致网络中的参数过渡拟合有限样本,难以实现正确分类。因此,DL在训练过程中需要大量的数据样本,数据增强方法应运而生。
数据增强方法可分为有监督和无监督2种。有监督的数据增强方法包括几何变换、颜色变换、SMOTE算法、Sample Pairing算法、Mixup等。无监督的数据增强方法包括生成式对抗网络(generative adversarial networks,GAN)、Conditional GANs、Autoaugmentation等方法。常东良等[4]提出一种基于注意力引导的Dropout,利用自监督机制更高效地缓解特征描述算子之间的协同自适应问题。路士杰等[5]提出一种适用于局放模式识别的带梯度惩罚的Wasserstein生成对抗网络数据增强方法。曹瑞阳等[6]针对现有的数据增强方法存在生成样本越界和随机性差的问题,提出一种基于最大最小距离的多中心数据增强方法。许华杰等[7]基于一致性的半监督学习方法MixMatch,提出了基于混合样本自动数据增强技术的半监督学习方法AutoMixMatch。郭伟等[8]在不过多增加计算量的前提下改进现有的激活函数,增强生成特征的丰富性与多样性。
本文提出的混合数据增强方法是通过几何变换、图像模糊化、调整亮度和对比度等方法,以20%的概率进行随机搭配组合实现数据增强。通过对原始图像进行翻转、旋转、裁剪、变形、缩放等几何变换,并结合图像模糊化、调整亮度及对比度等进行数据集的扩充。增强后的数据集规模变为原来的数倍,从而减少过拟合的风险。混合数据增强消除了样本数据的尺度、位置和视角差异等因素,满足模型的平移不变性和尺度不变性,增强了训练模型的鲁棒性,提高了训练模型的识别准确率。
2.1.1 垂直镜像翻转
图像垂直镜像翻转可表示为
式中:x为图像的横轴坐标;y为图像的纵轴坐标;x′为图像垂直镜像翻转后的横轴坐标;y′为图像垂直镜像翻转后的纵轴坐标。
2.1.2 图像裁剪
将原始图像按照0~5%的比例进行随机裁剪。
2.1.3 缩放图像高度或宽度
若图像的原始像素为M×N,将给定图像的尺寸在x、y这2个方向分别均按照kx、ky倍的相同比例进行缩放,本文选取随机进行90%~110%的比例进行缩放。缩放后图像的分辨率应为k×M和k×N。缩放图像的计算矩阵形,可表示为
式中,x′和y′为缩放后图像的所选点的横纵坐标。
2.1.4 平移
将图像的所有点均按照给定的x轴平移量Δx,y轴平移量Δy进行移动。本文选取随机对x轴和y轴进行±10%的平移量进行平移。平移变换公式可表示为
2.1.5 旋转
原图像中点(x,y)的坐标表达式为x=rcosα和y=rsinα,将其按逆时针旋转θ角后的对应点为(x′,y′)。旋转计算公式可表示为
其中,本文选取逆时针±20°的旋转角。
2.1.6 错切
将原始图像在投影平面上的非垂直投影、水平和垂直方向同时错切,其公式可表示为
其中,本文选取在水平和垂直方向同时进行±8°的错切。
2.1.7 双线性插值
在对图像进行几何变换时,由于可能会产生一些在原图中没有的新像素点,通过插值运算对这些像素点进行赋值,即利用已知邻近像素点的灰度值来产生位置像素点的灰度值。当求出的分数地址和像素值不一致时,可通过周围4个像素点的距离比,由4个领域的像素灰度值进行双线性插值。对于一个插值点(x+a,y+b),其中x、y均为非负整数,a∈ [0 ,1],b∈ [0 ,1],则该点的值f(x+a,y+b)可由原图像中坐标为(x,y)、(x+1,y)、(x,y+1)、(x+1,y+1)所对应的4个像素值决定。其公式可表示为
2.2.1 高斯模糊
高斯模糊是以某一像素为中心,在它的周围选择一个局部邻域,把邻域内像素的灰度按照高斯正态分布曲线进行统计,分配相应的权值系数,将邻域内所有点的加权平均值来代替原来的像素值,通过降低噪声点与周围像素点的差值以去除噪声点。
设一个二维零均值高斯滤波器的响应为H(r,s),对一幅M×N的输入图像f(x,y)进行高斯滤波,获得输出图像g(x,y)的过程可以用离散卷积表示为
其中,x=0,1,… ,M-1,y=0,1,…,N-1,k,l是根据所选邻域大小而确定的。
2.2.2 均值模糊
均值模糊是以某一像素为中心,在它的周围选择一个邻域,将邻域内所有点的均值(灰度值相加求平均)来代替原来像素值,通过降低噪声点与周围像素点的差值以去除噪声点。原始图像f(x,y),经均值模糊处理后,得到输出图像g(x,y),如公式(8)所示 。其中,S是(x,y)点邻域中点的坐标的集合,包括(x,y)点。M是S内坐标点的总数。
2.2.3 中值模糊
中值模糊是一种非线性平滑滤波方法,其公式可表示为
式中,1x,2x,nx为n个随机输入变量,按值大小升序排列为xi1>xi2>xin。
2.2.4 锐化
图像锐化的实质是原图像和梯度图像相加以增强图中的变化区域。首先,要计算梯度,对于图像函数f(x,y)离散的数字矩阵中,可用差分来代替微分,从而得到梯度图像g(x,y),公式可表示为
2.2.5 高斯噪声
高斯随机变量x的概率密度函数可表式为
式中:μ为x的平均值或期望值,σ为x的标准差。标准差的平方σ2,称为x的方差。当x服从式(11)的分布时,其值有70%落在[(μ-σ),(μ+σ)]范围内,且有95%落在[(μ-2σ),(μ+2σ)]范围内。
2.2.6 随机删除像素
Coarse Dropout矩形丢弃增强器,即在原有数据样本上基础上,在大小面积可选定、位置随机的矩形区域上将所有像素转换为黑色像素来丢弃2%产生黑色矩形块,通或对图片上随机选取一块矩形区域并擦除图像信息,从而产生一些彩色噪声。
将原始图像改变亮度、对比度、灰度图叠加、局部移动像素,改变局部区域扭曲程度等方法来进行数据增强。
本文通过使用所提出的混合数据增强方法,记录对人脸表情图像识别准确性的波动。选用VGG16模型作为基准模型,对数据集进行训练和测试。使用Extended Cohn-Kanada(CK+)数据集进行实验,CK+是CK数据集的扩充,包含了高兴、愤怒、蔑视、厌恶、悲伤、恐惧、惊讶7种表情类别。数据集中序列的强度均是从面无表情开始逐渐到达峰值表情,每一个序列的最后一帧的表情强度最高。CK+数据库包括123个实验对象,593个图片序列,每个图片序列的最后一张图片均有动作单元的标签,其中327个序列有情感标签。CK+数据集表情示例如图1所示。
图1 CK+数据集表情示例
将7个不同表情分类的图像作为数据集,其中高兴(69幅图像)、愤怒(45幅图像)、蔑视(18幅图像)、厌恶(59幅图像)、悲伤(28幅图像)、恐惧(25幅图像)、惊讶(82幅图像),所组成的CK+原始数据集共计326幅图像。将原始数据集图像中的人脸部分进行裁剪,裁剪后的人脸图像归一化为224×224像素。利用本文所提出的混合数据增强方法将原有图像数据集进行扩充。混合数据增强的过程中,随机以20%的概率对本文所描述的方法进行随机搭配组合,实现数据增强。CK+原始数据集和数据增强数据集对比,如图2所示。
图2 CK+原始数据集和数据增强数据集对比图
使用的硬件配置为Inter(R) Gold 5220R CPU处理器,主频为2.20 GHz,内存为320 GB。开发环境为Windows 10操作系统,python3.7。使用VGG16标准模型分别对原始CK+数据集和经数据增强后的CK+数据集进行表情识别。
VGG16网络在VGGnet中分类性能较为突出,由13个卷积层和3个全连接层组成,其网络结构如图3所示。每5段卷积层又分为低、中、高3个层次,每层均包括2个或3个卷积层。在卷积层后使用ReLU激活函数来防止梯度消失及减少过拟合,提高网络的训练速度。同时,为了使得网络结构更加简洁明了,在每个卷积层中均使用3×3的卷积核。在卷积层后连接了2×2的池化核组成的最大池化层,从而减小卷积层的参数误差,及时捕捉梯度和图像的变化以保存相关细节信息。全连接层将节点和节点之间进行连接,作为特征综合的分类器。
图3 VGG16网络结构
随着网络层次的加深,卷积层的卷积核将从64变为128、256、512,以此扩充网络的宽度,使得VGG16网络模型各层可学习到更为丰富的颜色和纹理等细节特征。
为了对比数据增强后的实际效果,调整训练集和验证集的比例进行多次实验,评估各种情况的准确率和损失函数。经过整理后的CK+原始数据集一共有326幅图像,实验样本数量非常少,且数据类别不均衡,考虑到单次实验数据具有偶然性,且误差较大。因此,对原始数据集进行混合数据增强。对原始数据集分别进行不同比例(9∶1和3∶2)划分训练集和验证集后进行多次实验,对数据增强扩充后的数据集按照7∶3的比例进行训练集和验证集划分后进行多次实验。数据集划分见表1。
表1 数据集划分
每次实验设置迭代周期为70进行训练,对每次实验的准确率和训练过程损失函数取平均值作为实验结果,损失函数如图4所示,验证集准确率如图5所示,不同训练数据所得模型测试集性能评估结果见表2。
图5 验证集准确率
表2 不同训练数据所得模型测试集性能评估结果
图4 损失函数
由图4可见,在VGG16模型进行人脸表情识别训练时,损失函数有一定的波动。总体来说,3条曲线约在前10个epoch时均基本趋于平稳,但在第10个epoch开始逐渐呈下降趋势。其中,原始数据集中按照3∶2的比例划分的下降趋势最小,而经数据增强扩充后的数据集损失函数在下降时更为平滑。因此经混合数据增强后的CK+数据集损失函数下降更为平稳,模型更加稳定。
由图5可见,3条曲线约在前10个epoch均基本趋于平稳,但在第10个epoch开始逐渐呈上升趋势。在CK+原始数据集中,按照9∶1比例划分的数据集比按照3∶2比例划分的数据集,在模型训练过程中所取得的验证集准确率高。但相对来说,经混合数据增强扩充后的CK+数据集在模型训练过程中所取得的验证集准确率最高,且准确率曲线上升过程中也最为平滑。
由图5结合实验过程中的数据可见,CK+原始数据集经VGG16模型训练后在前10个epoch进行人脸表情识别时的验证集准确率分别为25.5%(9∶1)和25.4%(3∶2)。而经数据增强后的数据集在前6个epoch进行人脸表情识别时的验证集准确率约为26%,在第7个epoch时就已出现上升趋势。最终,按照9∶1比例和3∶2比例划分的CK+原始数据集在训练过程中所得到的验证集准确率分别为91.5%和86.4%。而经混合数据增强扩充后的CK+数据集所得到的验证集准确率为98.4%。分别较2个原始数据集得到了6.9%和12%的提升。
因此,经混合数据增强扩充后的CK+数据集在实验中取得了更高的准确率和更低的损失函数。由此减少了过拟合的出现,增强了鲁棒性,提高了识别精度。
综上所述,针对人脸表情数据集图像数量不足和数据类别不均衡等问题,本文提出了一种混合数据增强方法,通过几何方法、图像模糊化、调整亮度及对比度等以20%的概率进行随机组合后对CK+原始数据集进行混合数据增强,在VGG16网络中进行训练和验证实验。实验表明,本文所提出的混合数据增强方法可以有效提高最终训练模型的准确率以及鲁棒性,训练过程中的损失函数与原始数据集相比变得更加平滑,获得了较低的损失函数,模型的识别率达到了98.4%。