标题 | 基于卷积神经网络及特征提取的面部表情识别算法 |
范文 | 王怡文 摘要:旨在对卷积神经网络及特征提取面部表情识别算法进行简单的对比,找到更加合适的识别方法。通过open CV进行人脸动态图像截取,对截取的静态图像进行简单的规格及灰度处理后进行分类,分类算法选取基于卷积神经网络与基于特征提取的面部表情识别。结果表明,基于卷积神经网络的面部表情识别精确度更高,更能满足要求。 关键词:卷积神经网络;特征提取;面部表情识别 中图分类号:TP391? ? ? ? 文献标识码:A 文章编号:1009-3044(2019)16-0203-03 开放科学(资源服务)标识码(OSID): Abstract: The purpose of this paper is to compare the convolutional neural network and feature extraction algorithm for facial expression recognition, and find a more suitable recognition method. OpenCV is used for face dynamic image interception, and the static image intercepted is classified by simple specification and gray level processing. The classification algorithm is based on convolution neural network and feature extraction for facial expression recognition. The results show that the accuracy of facial expression recognition based on convolution neural network is higher and can meet the requirements better. Key words:Convolutional neural network; Feature extraction; Facial expression recognition 近年来,随着计算机技术的进一步发展,人们对于计算机的探索不再局限于计算与数据处理方面,开始更多地考虑通过计算机进一步辅助人们的生活,人工智能的概念也逐渐被更多人所了解、支持。图像识别作为人工智能的重要组成部分,近年来也取得了很多成果。图像识别技术得到了很好的发展,人脸识别作为其中的一部分也在逐渐趋于成熟。在这个背景下,如果可以在人脸识别的基础上,通过一些算法,让计算机也可以做到察言观色,可以辨别人们的表情情感,那么计算机将可以更好地帮助人们,为人们的日常生活服务。目前,面部表情识别有很多人机交互方面的应用,比如疲劳驾驶检测和手机端实时表情识别。早在20世纪,Ekman等专家,通过跨文化调研提出了七类基本表情,包括恐惧、生气、厌恶、悲伤、开心、惊讶及中立,现在很多面部表情识别分类也是基于这七种表情进行分類研究,是目前人脸表情识别最直接、最有效的情感识别模式。同时计算机实现面部表情识别也是人机交互的一个基础,对于面部表情识别的研究既符合当下的科技发展发现,在未来也必定会成为一大热门领域。人脸表情识别的实现的难点主要在于特征的提取、学习与分类,这也会在很大程度上直接影响最后识别的准确率。论文主要选取了卷积神经网络和特征提取两种方法分别进行面部表情识别的实现。 1 面部表情识别的基本框架 人脸面部表情识别一般分为四部分,包括图像获取、人脸检测、图像预处理、表情识别分类。其中表情识别分类部分又根据算法的不同会有不同的实现方式,在本文中主要是构建神经网络,数据训练和提取表情特征、参数计算两种不同的实现方式。基本框架如图1所示。 2 基于卷积神经网络的面部表情识别 2.1 卷积神经网络 卷积神经网络(Convolutional Neural Networks, CNN)是深度学习的代表算法之一,是一种包含卷积计算且具有深度结构的前馈神经网络。因为可以进行平移不变分类(shift-invariant classification),所以卷积神经网络也被称为“平移不变人工神经网络(Shift-Invariant Artificial Neural Networks, SIANN)。卷积神经网络主要由卷积层、池化层、全连接层三部分组成,如图2所示。其中卷积层主要是实现在原始的输入上进行的特征提取操作,池化层的作用是对特征图进行特征压缩,以减少数据量,全连接层是对特征进行整合分类,得到最终的分类结果。 2.1.1 卷积层 卷积层主要实现的是特征提取功能,特征提取简而言之就是在原始输入上一个小区域内通过卷积计算进行特征提取。在卷积层中有一个很重要的概念——卷积核,是指在进行图像处理时,对于给定输入进行加权平均的权值的定义函数。而卷积层的最主要的运算卷积运算就是指将卷积核与输入矩阵根据一定规则进行相乘并求和的计算过程。设ωmn是卷积核中的值,xmn是输入矩阵的值,aij是卷积后得到的特征矩阵的值,可以得到如下的计算公式 每进行一次卷积计算,都会产生数个与之有关的权值,并且这些权值参数的个数与卷积层个数有关,即与卷积层所用的函数有直接的关系。通过卷积层,可以得到若干个特征值,根据判断特征值的大小可以确定该区域内是否含有所需要的特征。 2.1.2 池化层 当需要描述的图像过大,不便于描述处理的时候,就可以对图像根据一定的规则进行聚合运算,这种聚合统计的方法就称为池化。经过池化操作,可以大大减小参数矩阵的尺寸,从而方便后面全连接进行运算,简化训练。池化操作最大的优点是可以在避免过拟合的基础上有效地降低纬度,减少数据量。池化的这个优点在对大型数据进行神经网络训练时会起到很好的不可忽视的作用。目前常见的池化算法有四种:最大池化、平均池化、随机池化和谱池化。在这次的面部表情识别实现中使用的是最大池化,即取一定范围内元素的最大的一项作为该区域最终的输出结果。 2.1.3 全连接层 全连接层的功能是将之前训练得到的局部特征重新通过一定的权值矩阵组装成一个完整的全新的图。通过全连接层,可以将同一个特征的表示由特征矩阵,变为单个的值,在减小数据量的基础上,大大减少特征位置对分类带来的影响。全连接层具体的实现原理如图3所示。其中,W是全连接层的参数,是一个T*N的矩阵,T表示类别数,N表示特征数。X是指全连接层的输入,是一个N*1的向量。通过全连接层可以得到一个T*1的向量,其中向量中的每个值表示该样本属于每个类的可能性的大小,数值越大,则表示该样本是该类的可能性越大。由此,可以通过最后的输出向量,来判断该样本的分类。 2.2 面部表情识别实现[2] 2.2.1 数据集的选取 本次实验所用的数据集选取的是FER2013数据集,该数据集是2013年Kaggle比赛时的一个数据集,由28709张训练图,3589张公开测试图和3589张私有测试图组成,且每一张图片都是像素为48*48的灰度图。FER2013数据集采取七分类的分类方式进行人脸表情分类,将表情分为愤怒,厌恶,恐惧,开心,難过,惊讶和中性七种。由于该数据集是从网上别人提供的链接下载的,而且数据大多是通过网络爬虫下载,所以可能会存在一定的误差。 2.2.2 数据预处理 这一环节主要是对于数据集进行预处理。首先对FER2013数据集进行划分,将其分为训练集和测试集两部分,以方便后面的训练。然后对于所有数据进行统一的灰度处理,减少噪声干扰。为了防止网络过快地过拟合,一个最好的办法就是使用更多的训练数据。所以在数据集划分后,会对图像进行一些旋转切割等操作,以增大数据量。最终得到1050000张经过处理的图片,均为48*48的黑白照片。 2.2.3 神经网络搭建 对于多类分类网络结构而言,增加中间隐含层能够提升训练精度,但是所需的计算时间和空间会增大,因此需要测试选择一个合适的数目,本论文选取了一些层数分别进行训练测试。同时,每一层将舍弃率设为0.5,以尽可能地避免欠拟合或过拟合现象的出现。实验所搭建的八层神经网络示意图如图4所示,八层神经网络搭建所使用的代码如图5所示,十三层神经网络构建与八层类似。 3 基于特征提取的面部表情识别 3.1 基于几何的特征提取[6] 人脸几何特征包括人脸眼睛、鼻子、嘴等五官的局部形状特征,脸型特征以及五官在脸上分布的几何特征。基于几何的特征提取方法,是一种基于统计的特征提取方法,是通过计算脸部各个特征点之间的距离与标准进行比较,从而进行情绪判断的一种识别方式。一般对于人脸轮廓的确定多采用灰度差投影法,眼睛的定位采用积分投影法或水平差分累加的方式。 人脸部特征提取主要依靠Dlib库,采用ERT算法进行实现。ERT(Ensemble of Regression Trees)算法又称为级联回归算法,是一种基于梯度提高学习的回归树方法。该算法需要一个事先标定好的图片集作为训练集,进行训练,从而得到训练模型,以用于的后续特征分类。在该算法中,会使用基于特征选择的相关性方法,将输入数据随机投影到一个方向上,并选择一对特征(u,v),计算该特征与输入数据之间的样本相关性,并通过不断调整特征(u,v)的值,来寻找与输入数据具有最高样本相关性的特征。每当输入一个新的图像时,算法会首先估计一个大致的特征点位置,然后采用gradient boosting算法选取与输入平方差最小的特征点。该算法一般采用最小二乘法来减少误差,以得到每一级的级联回归因子。ERT算法的核心公式如下所示: 其中,t表示级联序号,rt表示当前级的回归器regressor。I为输入图像。 每个回归器可以由若干棵树组成,使用梯度提高学习的回归树训练每个回归器,同时不断使用最小二乘法来最小化误差。 3.2 算法实现 在实践中,首先调用Dlib库来进行动态的人脸识别,同时调用预测器来对识别出来的脸部进行68点标定。标定后获取并存储这68个点的具体坐标,以备后面进行相关参数计算。面部表情识别主要依靠嘴张开的比例,眼睛睁开程度与眉毛的倾斜程度三个指标来进行表情判定。实验用的主要规则如下:1.嘴巴张开的大小占面部识别框也就是整个脸的宽度的比例越大,说明此时被试的情绪越激动,可能出于非常开心的状态,也可能是极度愤怒的状态。2.当Dlib标注的17-21 或者 22-26 号特征点距离面部识别框顶部的距离与识别框的总高度的比值越小,说明眉毛上扬越厉害,此时该被试可能处于惊讶或开心的情绪状态下。研究表明,眉毛的倾斜角度在一定程度可以显示目前的情绪状态,人开心时眉毛一般会上扬,而愤怒时大多人会有皱眉的行为出现,眉毛下压的会比较厉害。3.人在开怀大笑的时候多数情况下会不自觉地眯起眼睛,而愤怒或者惊讶的时候更大概率的会瞪大眼睛。本实验的主要通过以上三条判定准则来判断样本的面部表情。具体的实现流程图如图6所示。 4 总结 面部表情识别是情感识别的一部分,也是图像识别的分支之一,该技术也一直深受人们关注,且具有巨大的应用市场。本文对现有的面部表情识别算法进行简要介绍,并对其中两种比较热门的方法-基于卷积神经网络的表情识别与基于特征提取的表情识别进行了实现。在实现过程中也对二者进行了一些比较。在算法的复杂性方面,基于特征提取的方法相对较高,该方法更依赖于算法设计本身,想要得到较高的准确率就必须要一些比较精密的算法作支撑,对于实现者的能力要求相对较高。且该方法的判别标准主要依赖于统计与研究结果,具有一定的主观性。总体来说,基于特征提取的面部表情识别方法在现实中可能更适用于设备环境相对较差,无法支撑大量数据训练的情况。相对而言,在本次实现中,基于卷积神经网络的面部表情识别精确度更高,更能满足要求。 由于作者能力有限,对于这两种方法均只完成了相对较为简单的实现,算法与最后的结果还有很大的提升空间,在日后的研究中,应加深研究,进一步改进与优化相应的算法。同时在这两种算法基本掌握的情况下,应进一步尝试别的算法,并对于这些算法进行对比,找到各个算法的优缺点,以便更好地服务于实际应用。 参考文献: [1] 胡超. 人脸表情识别研究[D].华东交通大学,2018. [2] 张璐璐. 基于卷积神经网络的人脸面部表情识别方法研究[D].河北科技大学,2019. [3] 施兴华. 自动人脸表情识别[D].西安电子科技大学,2009. [4] 杨凡,张磊.基于Gabor参数矩阵与改进Adaboost的人脸表情识别[J].计算机应用,2014,34(04):1134-1138. [5] 李雅倩,李颖杰,李海滨,等.融合全局与局部多样性特征的人脸表情识别[J].光学学报,2014,34(05):172-178. [6] 宁凡,厉星星.基于人脸几何结构的表情识别[J].计算机应用与软件,2009,26(06):238-240+285. [7] 王志良,陈锋军,薛为民.人脸表情识别方法综述[J].计算机应用与软件,2003(12):63-66. [8] 左登宇. 基于Adaboost算法的人脸检测研究[D].中国科学技术大学,2009. 【通联编辑:唐一东】 |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。