基于深度学习的多角度人脸表情识别方法
文献发布时间:2023-06-19 11:19:16
技术领域
本发明涉及图像处理领域,尤其涉及一种基于深度学习的多角度人脸表情识别方法。
背景技术
人脸表情活动是人们日常生活交流中重要的一个环节。随着时代的发展,人脸表情识别成为了当前计算机视觉领域的研究热点之一,目前在现代医学、驾驶员状态监测、视频图像分析等方面有着广泛的应用。尽管人脸表情识别得到众多研究者的关注,但距离实际应用还有许多技术难题。其中由于头部偏转造成的非正面人脸表情识别成为表情识别研究中的重点和难点。
传统面部表情识别方法有多种,包括光流法、主动外观模型(AAM)、线性判别分析法(LDA)、局部二值模式(LBP)、Gabor等方法。有研究者采用光流法和LDA相结合的方法进行表情识别,先计算中性表情图像与其他表情图像之间的光流特征,再用高斯LDA对光流特征进行映射,最后采用支持向量机(SVM)对人脸表情进行分类。有研究者针对LBP算法提取表情特征不够丰富细致等问题,提出一种使用结构张量和LBP相结合方法进行面部表情识别,首先提取表情图像的人脸显著性区域得到显著图,在显著图上进一步提取表情的特征,使用SVM对表情进行分类,实验在表情数据库JAFFE和CK+上的识别率分别为97.1%和94.3%。有研究者利用姿态位置相关的AAM来提取脸部关键点周围的局部特征,在BU-3DFE表情数据库上进行实验,准确率为74.1%。有研究者提取LBP特征和梯度方向直方图特征进行融合,使用主成分分析(PCA)降低融合后的特征维数,实验在CK+和JAFFE表情数据库上进行,识别准确率分别为98.3%和90%。有研究者提出时空方向的LBP特征与Gabor直方图特征相结合的人脸表情识别方法,实验取得了很好的识别效果。
传统的人脸表情识别技术需要在人脸图像上对关键特征点定位,这就造成了一定的主观性,如果所提取到的特征缺乏分类所需要的表征能力,会对模型准确性造成较大的影响。
近年来,深度学习方法不断发展,逐渐受到科研人员的的关注,在面部表情识别领域中取得了不错的成果。常用的深度学习网络模型有卷积神经网络(CNN),循环神经网络(RNN),生成对抗网络(GAN)、自编码网络(AE)等。有研究者针对当前人脸表情识别多数使用正面的人脸图像的现状,基于GAN模型通过利用不同的姿态和表情,同时进行人脸图像合成和位置不变的人脸表情识别。有研究者提出一个新方法叫De-expression Residuelearning(DeRL),给定任意的面部图像,由生成对抗网络(GAN)生成对应的中性表达,这样被去除掉的信息记录在网络中,再将学习到的信息和中性表情组合,就生成一个面部表情。该方法通过学习去除掉的表情信息部分来识别面部表情,在BU-3DFE和BP4D+两个数据集上进行实验,准确率分别为84.17%和81.39%。有研究者针对现有表情识别方法没考虑表情和身份之间的关系,导致算法的鲁棒性不高的问题,对GAN进行改进,提出一种WGAN(Wasserstein generative adversarial net)的人脸图像生成网络,该网络能够对遮挡图像进行补全,使用VGGNet网络对补全的图像能够提取出与用户身份无关的表情特征,实验在CK+、JAFFE、Multi-PIE表情数据库上进行,准确率能达到90%。但在大角度人脸偏移的情况下,算法的鲁棒性以及人脸表情识别的准确率还有待提高。
发明内容
发明目的:
本发明提供一种基于深度学习的多角度人脸表情识别方法,能够解决表征能力的问题,进而提高人脸识别准确率、以及算法的鲁棒性。
技术方案:
一种基于深度学习的多角度人脸表情识别方法,该方法的步骤为:
将采集到的原始图像进行预处理:对表情区域进行定位、裁剪;
人脸表情图像特征提取:将经过预处理的图像,输入到VGGNet深度神经网络模型对人脸表情图像进行特征提取,得到特征图,将特征图输入到4层全连接层的神经网络进行训练;
人脸表情分类:将训练后得到表情采用Softmax层对图像进行分类,确定最终表情。
图像的预处理过程包含三个步骤:
步骤一,对图像进行灰度化处理,得到灰度化处理后的图像;
步骤二,对灰度化处理后的图像进行检测,使用OpenCV库中的人脸检测器检测出图像中的人脸,再对图像裁剪出人脸区域得到人脸图像;
步骤三,对裁剪后的人脸图像进行归一化,使得图像的各个尺度在同一范围内。
VGGNet深度神经网络模型的卷积层使用3×3卷积核。
卷积层提取出特征图通过Relu激活函数再进入池化层,池化层使用最大值池化。
VGGNet深度神经网络模型为第一层有512个神经元,第二层有256个神经元,第一层和第二层之间添加一个Dropout层,第三层有128个神经元,第四层有64神经元,第三层和第四层之间添加Batch Normalization层,最后一层为Softmax层。
第一层、第二层、第三层和第四层的四层全连接层使用Relu激活函数。
Relu激活函数为
f(x)=max(0,x)。
Softmax层包含7个激活单元。
Softmax层将多个神经元的输出映射到(0,1)区间内,如果判断输入属于某一类的概率大于属于其它类的概率,那这个属于这个类的概率接近于1,其计算公式为,
其中V表示一个数组,V
优点及效果:
本发明使用VGGNet卷积神经网络对表情图像的深层特征进行提取,能够提取到更加有用的特征,将提取到的特征输入到拥有4个全连接层的神经网络中进行训练,本发明从损失值、准确率、查准率、查全率,通过实验结果说明本发明具有较高的识别率,进而提高人脸识别准确率、以及算法的鲁棒性。
附图说明:
图1为生气表情形状;
图2为厌恶表情形状;
图3为害怕表情形状;
图4为快乐表情形状;
图5为悲伤表情形状;
图6为惊讶表情形状;
图7为VGGNet网络结构;
图8为人脸表情识别结构;
图9为图像预处理;
图10为特征提取可视化;
图11为人脸表情分类结构;
图12为表情数据库图像;
图13为每轮迭代的准确率统计;
图14为每轮迭代的损失值统计;
图15为查准率数据统计;
图16为查全率数据统计。
具体实施方式:
下面结合附图对本发明的具体实施方法进行描述,以便本领域的技术人员更好理解本专利。
本发明从RaFD数据库中选取包含快乐、悲伤、害怕、惊讶、愤怒、厌恶6种表情图片,总计2400张图片。RaFD数据库包含了67个人的8种表情分别为:快乐、悲伤、害怕、轻蔑、惊讶、愤怒、厌恶、中性表情,本发明选取了其中的7种表情,去除掉了轻蔑表情,总计7035张图像。RaFD数据库中每一种表情有5种不同的角度分别是正面、左侧45度、右侧45度、左侧90度、右侧90度。将所有的数据集按照60%,20%,20%的比例划分训练集,验证集,测试集。将训练进行20个周期的迭代,记录每次迭代时的训练集和验证集的损失情况和正确率,并保存训练好的模型。
表情形状特征脸的整体形状比较固定,人脸表情信息最为丰富的几个地方在于眉毛、额头、眼这些区域会随着不同表情的变化而变化,各个表情本身的变化可能不会有很大变化,只是有细微的变化,比如,嘴部变大有可能是惊讶和快乐。所以本发明根据这几个位置的变化信息分析几种人脸常见表情的形状,如表1所示。
表1表情形状分析
卷积神经网络结构卷积神经网络(CNN)采用的是“端到端”的思想,从输入到输出中间是一个“黑箱”操作。CNN结构一般分为卷积层、池化层、激活函数、全连接层、softmax层。CNN中有两个重要特点,局部连接和参数共享。CNN只对图像中的局部位置进行处理,且每个图像平面上具有相同的参数。每个卷积核提取出的图像特征称之为特征图。一般情况下卷积层之后连接的是池化层,而池化层的主要作用就是对特征进行降维。池化层主要有两种方式,均值池化和最大值池化。均值池化就是在图像上对应卷积核大小的区域,对里面所有不为0的像素点进行均值操作,这种方式取到的特征会对背景信息更敏感一些。最大值池化就是在图像上对应卷积核大小的区域,对里面所有的像素点进行取最大值操作。这种方式取到的特征会对纹理特征信息更敏感一些。本发明采取的网络结构中使用了最大值池化。
VGGNet神经网络结构,该网络一共有13个卷积层,5个池化层,2个全连接层和1个输出层,卷积层后面使用Relu激活函数,池化层使用最大值池化。VGGNet网络卷积层全部采用连续的3×3的卷积核,代替了尺寸较大的卷积核,可以更有效地提取出图像中的高维特征,与此同时可以大量减少网络中的权重参数。图7所示为VGGNet16网络结构。
一种基于深度学习的人脸表情识别方法:首先,将采集的到的图像进行预处理,对表情区域进行定位,将人脸表情图像裁剪成大小为350*350的图像;其次,人脸表情图像特征提取,将经过预处理的图像,输入到VGGNet深度神经网络模型中,对人脸表情图像进行特征提取,得到特征图;最后,人脸表情分类,将提取到的特征图用一个4层全连接层的神经网络进行训练,采用softmax层对表情进行分类。图8为人脸表情识别结构。
将采集到的原始图像进行预处理:
图像识别的第一个环节,就是对图像本身进行处理。因为采集到的部分数据图像是不符合实验要求的,因此需要对图像进行一些处理,比如消除一些环境因素所引起的变化,使得图像更加清晰。对于包含有人脸表情的图像,经过预处理之后,与表情无关的区域去除掉。如图9所示为表情图像预处理结果。
对于图像预处理过程包含三个步骤:
1)对图像进行灰度化处理。
2)对人脸进行检测,使用OpenCV库中的人脸检测器检测出图像中的人脸,再对图像裁剪出人脸区域。
3)对裁剪后的人脸图像进行归一化,使得图像的各个尺度在同一范围内。
人脸表情图像特征提取及人脸表情分类:
VGGNet网络中连续小卷积核的使用对表情的分类识别起到了很大的作用。VGGNet使用3×3卷积核而不是使用5×5的大卷积核,这更加利于对图像的高维数据特征进行特征提取,而且两个3×3卷积核就相当于一个5×5卷积核,参数量减少。
图10显示从左到右显示每一个卷积块输出的可视化结果,从图10可以看出,浅层卷积更多的倾向于对图像边缘的检测,检测到的内容全面,信息丰富,而通过深层卷积层得到的特征图越来越抽象,同时也忽略了很多信息。输出中的突出位置主要集中在眼睛和鼻子中的区域,这与人的判断表情的方式一致,也是表情最为丰富的位置,所以使用VGGNet网络进行表情特征提取有良好的效果。
表情分类部分本发明设计了一个由4层全连接层的网络结构,如图11所示。由于原始的VGGNet的全连接层有1000个输出单元,而本发明的表情分类只有7种表情,本发明将VGGNet的两个全连接层进行改进,不需要输出1000个单元,只要输出7个单元即可。由于输入图像大小为350×350,经过VGGNet网络特征提取后的特征图维度很大,总共有10×10×512个神经元,所以GGNet深度神经网络模型设计第一层有512个神经元,第二层有256个神经元,这两层之间添加一个Dropout层,Dropout是指在深度学习网络训练过程中,对于神经网络单元而言,按照一定的概率将其从网络中丢弃,这样就会使整个神经网络变的稀疏,降低了网络中的参数量。第三层有128个神经元,第四层有64神经元,同时为了增加网络的非线性能力,上述的四层全连接层使用Relu激活函数。在第三和第四层之间添加BatchNormalization(BN)层,因为由于随之网络深度的增加,在训练过程中,其分布可能发生偏移,从而导致反向传播时低层神经网络的梯度小时,导致无法训练,所以为了避免这种现象,使得层与层之间的输入保持相同的分布,添加BN层,将下一层网络中的输入值变为标准正太分布。由于识别7种表情,所以在第四层之后设置有最后一层7个激活单元,使用softmax层对表情进行进一步的分类。
激活函数的主要作用就是用来加入非线性因素的,使线性模型的表达能力更加丰富。常用的激活函数有Sigmoid函数、Tanh函数、Relu函数等本发明采用的网络结构使用的是Relu函数,计算公式如式(1)。由于Relu函数忽略了负向信号的特性,这点与人类神经元细胞对信号的反映相似,在神经网络中使用取得了很好的拟合效果。
f(x)=max(0,x) (1)
Softmax用于多分类问题,它将多个神经元的输出映射到(0,1)区间内,如果判断输入属于某一类的概率大于属于其它类的概率,那这个属于这个类的概率接近于1,其计算公式为式(2)。本发明使用的网络结构使用softmax层对7种表情进行分类。
其中V表示一个数组,V
深度卷积神经网络在表征能力方面有着较大优势,能学习到深层特征,同时对数据进行分类。VGGNet深度神经网络中采用连续两个3×3的卷积核,这就相当于使用一个5×5的卷积核,且参数量远远小于使用单个大卷积核,同时增加了网络的非线性变换。这种独特的连续小卷积核的设计与单层大卷积核相比更能有效地提取出图像中的高维特征。所以,本发明使用深度卷积神经网络模型VGGNet网络对人脸表情图像进行特征提取,然后使用全连接的神经网络对提取到的特征进行训练,最后采用softmax单元对人脸表情进行分类。本实验在CK+、RaFD人脸表情数据库上进行。采用损失值、准确率、查全率和查准率对人脸表情识别模型进行评估。
实验结果分析
本发明采用CK+、RaFD数据库作为实验对象。CK+数据库中包含了美洲、亚洲在内的123个用户593个表情序列图像,本发明从这中选取包含快乐、悲伤、害怕、惊讶、愤怒、厌恶6种表情图片,总计2400张图片。RaFD数据库包含了67个人的8种表情分别为:快乐、悲伤、害怕、轻蔑、惊讶、愤怒、厌恶、中性表情,本发明选取了其中的7种表情,去除掉了轻蔑表情,总计7035张图像。RaFD数据库中每一种表情有5种不同的角度分别是正面、左侧45度、右侧45度、左侧90度、右侧90度。将所有的数据集按照60%,20%,20%的比例划分训练集,验证集,测试集。将训练进行20个周期的迭代,记录每次迭代时的训练集和验证集的损失情况和正确率,并保存训练好的模型。图12为表情数据库图像。
本发明将从损失值、准确率、查准率、查全率这几个方面对实验结果进行评价。
损失值它通过将实际输出值和真实值进行比较,用来估量模型的预测值与真实值的不一致程度。损失值越低表示模型的鲁棒性越好。本发明采用交叉熵损失函数,表示预测输入样本属于哪一类的概率。交叉熵损失函数表达式如式(3),其中y代表真实分类值,表a示预测值,c表示损失值。
为图像创建特征图之后,将特征图输入到全连接的神经网络中进行训练,将每次的损失值和准确率形成表格。
图13中的横坐标表示训练迭代的轮数,纵坐标表示每次迭代时的模型识别准确率。从图13中可以看出,在进行到第10轮迭代时,训练集准确率基本稳定,准确率接近100%,第15轮迭代时,验证集准确率达到90%以上,模型趋于平稳,模型的准确率停留在95%左右。图14横坐标表示模型迭代的轮数,纵坐标表示模型每轮迭代时的损失值情况。从图14可以发现,当模型不断训练的过程中,验证集在前5轮迭代损失值快速降低,在大约第11轮损失值有上升的趋势,说明有过拟合的现象发生。在第15轮迭代之后模型损失值降到很低的位置趋于平稳,不再有明显变化,此时的训练误差很小,说明此时模型性能较好。
在分类问题中,将数据样例根据其真实类别与模型预测类别的组合划分为真正例(True Positive,TP)、假正例(False Positive,FP)、真反例(True Negative,TN)、假反例(False Negative,FN)。可以将上述把分类结果放在在一个矩阵显示,这个矩阵称为混淆矩阵,如表2所示。根据表2,查准率(presicion)表示为如式(4),查全率(recall)表示为如式(5)。
表2混淆矩阵
CK+数据库实验结果分析。如图15所示,表示6种表情的查准率,在图15中横坐标表示模型对图像的预测类别,纵坐标表示图像的真实类别。查准率表示的是预测结果为正例的值中有哪些真实类别是正例,从图15可以看出生气表情的查准率为100%,也就是说预测为生气表情中,真实类别全都是生气表情,厌恶表情的查准率为95%,也就是说模型预测为厌恶表情图像里,有95%的真实表情是厌恶表情。害怕和快乐表情的查准率是100%,悲伤表情的查准率是88%,惊讶表情的查准率是98%。图16中横坐标表示模型预测的表情类别,纵坐标表示表情图像的真实类别,从图16可以看出生气表情的查全率为94%,也就是说所有真实类别为生气表情的,模型预测为生气表情的有94%。厌恶表情的查全率为100%,表示实际类别是厌恶表情,模型将所有厌恶表情预测为厌恶表情。悲伤和快乐表情的查全率为100%,而图15中悲伤表情的查准率为88%。一般来说,查准率大时,查全率往往较小,查准率小时,查全率往往较大。
图16中横坐标表示模型预测的表情类别,纵坐标表示表情图像的真实类别,从图16可以看出生气表情的查全率为94%,也就是说所有真实类别为生气表情的,模型预测为生气表情的有94%。厌恶表情的查全率为100%,表示实际类别是厌恶表情,模型将所有厌恶表情预测为厌恶表情。悲伤和快乐表情的查全率为100%,而图15中悲伤表情的查准率为88%。一般来说,查准率大时,查全率往往较小,查准率小时,查全率往往较大。
表3比较不同方法的识别准确率,为了更加客观的、准确的比较不同方法的效果,表3还从数据集、实验平台、语言、深度学习框架这几个方面比较了在CK+数据集下使用不同的方法的实验环境。
表3不同方法在不同数据库上的准确率和实验环境对比
表3中的实验结果由对比例1、对比例2、对比例3提供。对比例1使用深度残差网络进行表情识别,深度残差网络是为了解决网络深度增加而导致的网络梯度消失不能训练的问题所提出的一种框架,从输入信号到输出信号建立一个连接构成一个残差单元,从而转换为对残差映射的学习。虽然残差网络能缓解深层网络性能退化的问题,但对比例1中设计了大量的残差单元导致网络深度不断增加,提取到的表情特征没有足够的表征能力导致最后的识别准确率不高。对比例2和对比例3中先使用手工特征提取,再将提取到的特征与卷积神经网络提取的特征进行融合得到新的表情特征,虽然与只使用手工特征提取相比,准确率有所提高,但该方法没有考虑到手工提取特征有一定的主观性和不确定性等问题。从表3中可以看出本发明识别的准确率略高于其他方法。
RaFD数据库实验结果分析。在RaFD数据库中不同角度下的每种表情的查准率和查全率如表4和表5所示。
表4不同表情的查准率
表5不同表情的查全率
表4和表5中从左到右表示人脸偏转角度分别为左侧90度、左侧45度、正面,右侧45度、右侧90度。从表4和表5中可以看出,正面情况下每种表情的识别效果都很好,大部分表情的识别效果都达到了平均值,中性和悲伤表情的查全率达到了95%,其他表情全部预测正确。原因在于正面表情特征最为丰富,特征提取到的表情信息最多,所以识别效果最好。左右两侧45度角下各个表情的识别效果较好,几乎和正面表情识别效果一直,这表明当人脸转过45度角时,还能提取到大部分有效的表情特征。左侧90度角时,生气、厌恶、高兴、中性、惊讶、悲伤等表情的识别效果较好都达到90%以上,害怕表情识别效果较差,查准率仅为75%,远低于害怕表情识别效果的平均值。右侧90度角时,厌恶表情的查准率70%,远低于厌恶表情识别的平均值,原因可能是厌恶表情和悲伤表情都眉毛下拉的动作,造成了识别错误。惊讶表情的查准率为65%,害怕表情的查全率为45%,也就是说在所有的真实类别为害怕表情的,只有将其中的45%预测为害怕表情,这可能是因为害怕和惊讶表情有相似的地方,比如嘴部张开,眉毛上挑,眼睛睁大,还有一个原因是因为在90度角时,表情信息非常少,没有提取到有用的表情造没有提取到有用的表情信息造成识别效果较差。
表6表示在RaFD表情库上使用本发明方法与其他方法的比较结果。表6还从数据集、实验平台、语言、深度学习框架这几个方面比较了在RaFD数据集下使用不同的方法的实验环境。其中前两种方法(sLDA,Multi-SVM)使用传统的基于手工特征的人脸表情识别方法。后两种方法(DenseNet,ResNet)使用的是深度学习的方法。从中可以看出本发明所提出的方法明显优于传统表情识别方法。
表6不同方法在RaFD数据库上的准确率和实验环境
本发明针对传统表情识别方法中表情图像特征提取过程中复杂且提取到的浅层特征缺乏特征表达能力的等缺点,使用VGGNet卷积神经网络对表情图像的深层特征进行提取,能够提取到更加有用的特征,将提取到的特征输入到拥有4个全连接层的神经网络中进行训练,实验结果表明,本发明提出的方法在与其他表情识别方法相比取得了不错的效果。
- 基于深度学习的多角度人脸表情识别方法
- 一种基于深度学习的人脸表情识别方法、装置及设备