时间:2024-05-04
何 宏,陈叔达
1(上海理工大学 医疗器械与食品学院,上海 200093) 2(上海师范大学 信息与机电工程学院,上海 200234)
面部表情能够很好的表达人类的心理活动[1],已经成为计算机领域重要的研究课题之一,其中面部特征提取常见的有局部二值模式(Local binary pattern,LBP)[2,3]、方向梯度直方图(Histogram of Oriented Gradient,HOG)[4]、尺度不变特征变换(Scale-invariant feature transform,SIFT)[5]方法,来获取图片形状和纹理上的特征,传统的分类方法包括支持向量机(Support Vector Machine,SVM)[6]、K最近邻(K-NearestNeighbor,KNN)[7]、随机森林(Random Forest,RForest)[8]等.传统机器学习方法,特征提取在一定程度的破坏原始图像的完整性,缺乏整体图像多样性,此外提取特征比较复杂,有遮挡和阴影的情况下识别效果不如基于卷积神经网络方法[9].
从2013年来深度学习方法开始应用于面部表情识别,Matsugu等人[10]采用卷积神经网络(Convolutional Neural Networks,CNN)解决面部表情中的图片的平移和旋转不变性问题以及主观独立性问题.对抗神经网络(Generative Adversarial Networks,GAN)于2014年由Goodfellow等人[11]首次引入,,采用不同的姿态和表情进行面部图像合成扩充训练集,提高了模型的准确度.深度学习方法大多是一种端到端的模型,主要是基于卷积神经网络对图像进行分类以及对抗神经网络用于增强样本多样性.采用卷积神经网络能取得较好的识别效果,构造更深更宽的网络结构能有效提高模型的识别率,其中也存在超参数多,学习过程慢,数据容易丢失以及需要大样本训练等缺点[12].
为了克服深度神经网络和传统机器学习方法的缺点,近几年提出一种基于决策树集成方法多粒度级联森林(multi-Grained Cascade Forest,gcForest)[8].深度神经网络需要超调参多,依赖于大样本,相比之下gcForest参数少,而且适用于小样本学习[8],如手势识别[13]、图像分析[14]、基因序列分析[15,16].不仅如此作为一种基于树的方法,gcForest在理论分析方面强于深度神经网络,可解释性强[8].但是gcForest也有自身的不足,多粒度扫描部分会产生大量子样本非常占用内存,并且容易产生特征冗余.因此本文提出了一种深度卷积级联森林的分类识别方法(Deep Convolution Cascade Forest,DCCF),该方法借鉴了深层神经网络的表示学习,同时采用以随机森林为基础的结构识别特征,主要依赖于对原始特征的逐层处理来提高面部表情识别准确率.
本文通过综述人脸表情识别的方法,首先阐述了深度卷积级联森林方法的原理,然后针对3个面部表情公开数据集进行了分析,比较了5种特征提取方法、7种分类方法和本文提出的算法.最后总结了实验结果和该领域未来的挑战和机遇.
大多数基于卷积神经网络的面部表情识别方法都使用softmax层目标来学习较低级别的参数[17,18].在本文中,使用级联森林结构替代深层神经网络中softmax层进行分类.采用随机梯度下降和多分类交叉熵损失函数来训练网络,提取到的特征经过全连接层得到的特征向量输入到级联森林得到最终的结果.所以该方法分成两部分,首先CNN提取面部表情特征,其次经过级联森林的分类,整体框图如图1所示.
图1 深度卷积级联模型结构图Fig.1 DCCF model structure
本文中的CNN结构结合Compact CNN[19]和Inception网络[20]的思想,整体结构是5个卷积层、2个最大池化层何两个全连接层.首先第一个卷积层为1*1的卷积核32个滤波器,采用1*1的卷积核主要是用于降维,加入非线性的操作和增加网络深度.其次在全连接层1024个输出神经元,dropout设为0.5,有助于解决过拟合的问题.该模型由两个卷积块和两个池化层组成,然后是两个全连接层.使用PReLU作为激活函数,由于PReLU只增加了极少量的参数,降低了计算量和过拟合的危险性,CNN具体结构如表1所示.
表1 CNN网络结构表Table 1 CNN network structure
该模型中输入图片首先经过卷积层公式如下:
(1)
(2)
其次经过池化层由下面公式给出:
(3)
2.2.1 CART决策树
CART(Classification and Regression Tree)决策树算法[21]使用基尼系数来代替信息增益比,基尼系数代表了模型的不纯度,基尼系数越小,不纯度越低,特征越好.这和信息增益(比)相反.假定当前样本集合D中第K类样本所占的比例为Pk(k=1,2,…,|y|),则数据集D的纯度可用基尼值来度量:
(4)
从数据集D中随机选择不同的两个测试样本,其中样本标签不同的概率称为Gini(D),所以Gini(D)越小表示数据集纯度越高.
设离散属性a为{a1,a2,…,aV},v表示用离散属性a对数据集进行划分产生的分支节点,DV表示第v个分支节点中离散属性值为aV的样本.则属性a的基尼指数定义为:
(5)
选择划分后Gini_index(D,a)最小的作为最优划分属性,其中A表示候选属性集合,如公式(6)所示.
(6)
2.2.2 级联森林
级联森林结构(Cascade forest)如图1所示,设级联森林为i层,每一层由两种森林组成,分别为2个完全随机森林(Forest A)和2个普通随机森林(Forest B).由CNN提取的初始特征为fx,经过第i层级联森林得到特征向量,如公式(7)所示.
(7)
由于级联森林是由随机森林组成,然而随机森林又是以决策树为最小单元构建而成.对于K类面部情绪识别,每个样本都会根据一定的路径在每棵树中找到自己对应的叶节点,然后计算产生的类向量的平均值和最大值得到最终的预测类别标签Final(P).
(8)
(9)
(10)
为了验证实验,本文选用3个面部表情公开数据集.日本女性面部表情数据集(The Japanese Female Facial Expression,JAFFE),这个表情库有213幅表情图像,表情库中包含7种表情一共取自10名日本女性,分别是愤怒、厌恶、恐惧、高兴、悲伤、惊讶和自然[22].
Cohn Kanade(CK+)[23]数据库是用于评价FER系统的最广泛的实验室控制数据库.CK+包含来自123名受试者的593个视频序列.序列变化持续时间从10帧-60帧,并显示从中性面部表情到峰值表情的转变.基于面部行动分为愤怒、蔑视、厌恶、恐惧、高兴、悲伤和惊讶.
Kaggle面部表情识别挑战赛的数据库Fer2013[24]共有35887张人脸图像,28709张图像用作训练,3589张图像作验证集,3589张图像作测试集,每张人脸的像素大小为48×48的图像.包括愤怒、厌恶、恐惧、高兴、悲伤、惊讶以及自然7种面部表情,数据集详细说明如表2所示.
面部表情分类的验证指标采用精确率、灵敏度、特指度、负性预测值和准确率5个指标来衡量分类结果,首先True Positives(TP,正类判定为正类),False Positives(FP,负类判定为正类),False Negatives(FN,正类判定为负类),True Negatives(TN,负类判定为负类).
1)准确率(Accuracy):所有预测正确的占总的比重.
(11)
2)精确率(Precision/TPR):所有被预测为正的样本中实际为正的样本的概率.
(12)
3)召回率(Recall):正确预测为正的样本数的占全部实际为正的样本数的比值.
(13)
4)F1值(F1-score):为算数平均数除以几何平均数,且越大越好,当F1值较小的时候,True Positive相对增加,而False相对减少,Recall相对增加.
(14)
为了全面比较的方法采用分类方法比较和提取表情特征比较,分类方法有决策树(DTree)[25]、K最近邻(KNN)、贝叶斯(Bayes)[26]、随机森林(RForest)、支持向量机(SVM)[27]、级联森林(CForest)和Softmax.特征提取方法采用了传统的特征提取有LBP、HOG、SIFT和深度提取特征方法多粒度扫描(Mg_scanning)和CNN提取特征(CNN_feature),比较特征提取特征和分类中最适合进行面部表情识别的方法,最后比较gcForest和CNN方法.
实验设备主要采用的是I7处理器,RXT2060,运行内存6G,采用python3.5软件平台.首先从3个数据集进行分析,JAFFE,CK+和Fer2013 3个数据集规模依次递增,JAFFE有213张图片,CK+有981张图片,Fer2013有35886张图片.分别从传统机器学习方法和深度神经网络方法,传统特征提取和深度特征提取两方面去分析面部表情问题.
JAFFE数据集中一共213个样本,测试样本取70个样本,其中7种表情各10张测试集.如图2所示,一共4个评价指标(a,b,c,d),一共7种分类方法和5种特征.首先明确的看出CNN_Feature提取特征均优于其它方法,其中准确率最高的是CNN_Feature和CForest分类达到91.43%,其次召回率、精确率和F1-score最高分别为80.94% 、80.04%和80.2%.
图2 JAFFE数据集实验结果Fig.2 JAFFE dataset experimental results
CK+由于没有提供指定的训练、验证和测试集,在这个数据库上评估的算法是不一致的.对于基于静态的方法,最常见的数据选择方法是提取最后1-3帧的峰值形成和第1帧.选取45% (442张图片)作为测试集.实验结果如图3所示,CK+数据集的4个评价指标最高的为CNN_Feature和CForest分类达到了准确率98.77%、精确率87.28%、召回率87.15和F1-score为87.22%.
图3 CK+数据集实验结果Fig.3 CK+ dataset experimental results
图4 Fer2013数据集实验结果Fig.4 Fer2013 dataset experimental results
Fer2013数据集已经给出了测试集和训练集,FER2013包含28709张训练集,3589张测试集,实验结果如图4所示,在整体识别率下降的情况下,CNN_Feature提取特征和CForest分类仍有不错的结果,4个指标分别准确率为71.45%、精确率为68.43%、召回率为66.25%和F1-score为67.86%.
图5 特征提取方法实验结果Fig.5 Feature extraction method experimental results
为了进一步分析特征提取和分类方法,综合3个公开数据集的面部表情特征提取方法如图5所示,7种分类方法一定的情况下,采用5种特征提取方法求得的平均值.比较明显的看出CNN_Feature具有非常大的优势,其中在CK+数据集中,平均准确率达到了最高的97.32%,其余3个指标均为最高.分类方法的比较如图6 所示,5种特征提取方法一定的前提下,7种分类方法的平均指标.其中级联森林(CForest)的平均准确率在3个数据集上均取得了最高的平均准确率为84.46%,96.66%,42.35%,其它3个指标均达到最高.
图6 分类方法实验结果Fig.6 Classification methods experimental results
gcForest、CNN和DCCF方法在分类指标和运行时间上进行对比,实验数据如表3所示.DCCF在3个公开数据集上准确率是最高的,分别为 91.4%,98.7%,71.6%,比gcForest和CNN平均高10%和8.5%.运行时间上DCCF深度明显比gcForest运行时间快,平均为gcForest运行时间的36%.但是类比CNN比较慢,主要级联森林结构相较于CNN的Softmax层存在一定的冗余.
本文提出了一种新的深度卷积级联森林方法用于人脸面部表情识别,在3个公开面部表情数据集上实验识别结果达到了 91.4%,98.7%,71.6%的准确率,结果显示DCCF不仅比传统方法分类效果好,而且比gcForest和CNN准确率要高.为进一步分析DCCF的面部表情识别性能,对提取的5种特征和7种分类方法进行了比较,相较于传统的特征提取和多粒度扫描提取特征,CNN在图片特征提取(CNN_Feature)的平均值为83%,远高于其它特征提取方法.在分类方法中级联森林(CForest)的平均值为82%,也高于其它分类方法.此外,DCCF运行速度相比较于gcForest算法有大幅度的提升,未来可以采用优化方法继续精简级联层数,减少冗余,提高识别效率.
表3 gcForest、CNN和 DCCF方法方法比较Table 3 Comparison of gcForest, CNN and DCCF methods
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!