APP下载

基于神经网络的人脸表情识别

2018-11-08梁瑞奇

电子制作 2018年20期
关键词:特征提取人脸灰度

梁瑞奇

(重庆市第八中学校,重庆,400000)

0 引言

近几年,随着人工智能技术的再次迅猛崛起,以及计算技术的大幅度提升,人们对人机交互任务提出了越来越高的要求。同时,在人与人的沟通中,不只是语言符号,人脸表情以及其他身体语言也是传达信息的组成成分[1]。心理学专家A. Mehrabian[2]的研究表明人脸表情对听者有很大的影响,由于在人与人的沟通交流中,人脸表情所传达的信息占高达35%,可见,在人与人之间信息交流的过程中,人脸表情起到了不可缺少的作用。人脸表情识别这项技术是指从静态图像或动态视频中提取出出人的表情状态,从而可以进一步识别出对象的心理情绪。这项技术能使计算机更好地理解人类的情绪,并能根据人类面对不同环境时的面部反应做出回应。表情识别已经在心理学,情感交流机器人等领域具有重大的研究和使用价值。

一般的表情识别系统的分为三个部分,首先在捕捉到的图像中进行人脸识别,之后对图像进行预处理、表情特征提取,最后通过BP神经网络建模,完成表情分类。然而,由于人的表情有不同程度,如对于笑这类表情可分为大笑、微笑,而哭这类表情可以分为抽噎,嚎啕大哭等。在本文中根据表情的不同程度,将某些表情进行二次分类,从而达到更为细粒度的人脸表情识别效果。

针对上述问题,本研究提出一种基于神经网络的人脸表情识别系统的设计方法,在识别出人脸表情的同时可以对不同程度的表情深层分类,相比先前的类似研究具有更好的人机交互效果和更深的智能化程度。

1 人脸识别图像预处理与特征提取

因为表情识别系统分为三个部分:①图像预处理;②特征提取;③表情识别分类器。因此,首先需要对训练样本集中的所有人脸表情图像进行预处理,然后基于预处理后的图像进行特征提取,最后将提取到的表情特征引入分类器中进行学习训练,完成训练过程后,将测试样本放入已经训练好的分类器中进行测试评估。

■1.1 图像预处理

本文采用的图像预处理的方法是将RGB空间中的彩色图像转化成为灰度图。由于彩色图像中的每个像素的颜色有R、G、B三个分量决定,而每个分量有256种取值情况,因此这样一个像素点可以有1600多万(256×256×256的颜色的变化范围,数据量太大对存储和计算造成一定的负担,而灰度图的一个像素点的变化范围只有256种情况,所以通过将原始人脸图像转变成灰度图像,以此大幅度减少后续的图像处理的计算量。同时,灰度图像仍然能够反映出与彩色图像一致的整幅图像的整体和局部的色度和亮度等级的分布和特征。

对于人脸表情识别系统,为了便于提取特征,因此需要将RGB空间的图像通过做平均化处理转化为灰度图像,公式为

其中,RGB分别为每个彩色图像像素点的颜色分量,g为转化后的灰度值。

■1.2 特征提取

为了能够识别人脸表情的类别及变化情况,利用人脸表情的几何特征是一个显著而有效的策略,人脸几何特征是指人脸上各器官,例如眼睛,眉毛,鼻子,嘴等的形状变化,此外还包括一些显著点例如眼角,眉梢,嘴角等的位置变化。

(1)纹理分析技术

表情的外观特征最主要的一个表现就是脸部的纹理变化,其包括脸上不同器官的纹理形状变化。纹理分析通过研究一幅图像中的像素灰度级变化趋势,得到纹理变化情况。

本研究中采用空间灰度共生矩阵的方法做纹理分析,通过计算两个灰度级别在图像中以一定方向相邻的次数而得到一个矩阵 ,这里的方向一般包括水平、45度、90度和135度。以采用水平方向计算的灰度共生矩阵为例,灰度共生矩阵中的每一个元素(i,j)代表灰度i与灰度j在图像中水平相邻的次数。如图1所示,以(1,1)点为例,灰度共生矩阵(1,1)处的值为1说明只有一对灰度为1的像素水平相邻。灰度共生矩阵(1,2)处的值为2,是因为有两对灰度为1和2的像素水平相邻。

图1 灰度共生矩阵计算示意图

(2)表情时空提取

对于人脸表情视频的数据集,可以对获取的视频中每一帧的人脸图像进行上述特征提取得到特征向量,用于表情识别的几何特征,指脸上几个主要器官的变化,比较典型的基于视频人脸表情几何脸部外观特征提取方法是基于差分图像的时空特征[3]。由于人脸表情视频的背景一般不变,在这一条件下,可以将视频序列中的每一帧图像与中性表情帧直接做差分运算,或者也可以将视频图像中前后两帧图像进行差分运算,利用上述通过灰度共生矩阵方法提取出的人脸表情纹理特征,差分运算是指将两帧图像的灰度共生矩阵做矩阵减法,接着将新的灰度共生矩阵按列展开为一个向量表示,得到人脸表情的特征向量。

■1.3 BP神经网络分类器

BP神经网络是一种基于人工神经网络结构的学习模型,可以通过设置多层隐含层,并以反向逆传播的方式不断修改网络权值,从而达到学习训练的目的,其已经成为应用最为广泛的模型之一。

BP神经网络工作过程共分为两个阶段:

(1)正向传播:首先将数据中的特征向量输入输入层,经过隐含层,对其进行加权计算,最后由输出层输出,在每一层的处理中前一层可等效于后一层的输入层。

(2)反向传播:当传播到输出层时,将预测的结果与给定的标签进行比较,判断其是否达到收敛条件,若达到,则结束训练过程,反之,则逐层反向传播,对权值进行依次调整,直到满足收敛条件。

BP神经网络是将提取出的人脸表情特征向量作为输入,通过在网络中进行线性组合,并在每个神经元处经过非线性的激活函数输出,针对每个神经元可以得到一个计算结果,将其与阈值进行比较并得到输出结果。本文中选用sigmoid函数作为激活函数,其公式如下

为了进行反向传播过程调整权值,在学习训练之前要确定一个误差函数,本文选用实际输出x与期望输出y之差的平方和来表示,其公式如下;

BP神经网络经过大量学习训练后,根据不断调整网络权值,减小误差,从而达到预期效果,为了保证准确性,本文采用标准的3层神经网络结构,其中设置输入层包括10个节点对应一组人脸表情特征输入向量,隐含层具有10个节点,输出层共9个节点表示9种表情的输出结果。

■1.4 训练过程

本文选用5000幅人脸图片作为训练样本集,再选用5000幅人脸图片作为测试样本集,为了保证训练效果,每次训练结束以后将与上一次训练结果进行比较,若误差增大,则向负方向调整权值,若减小,则向正方向调整权值,从而不断提升识别准确性。当达到预定的训练次数或达到预先设定的收敛条件时完成训练过程。最后利用测试样本集观察学习训练效果。

2 结合CNN的算法改进

以上方法是使用一组人工设计的特征,虽然可以对人脸表情进行特征提取,但这种手工设计提取的特征在一定程度上损失了人脸表情原有的特征信息,或者假设属性之间互相独立,往往与实际应用环境不相符合[4]。于是,近年来在机器学习领域出现了以卷积神经网络(CNN) 为突破点的纯数据驱动的特征学习算法[5]。卷积神经网络组合了特征提取、特征选择和分类三个过程,形成了一种端到端的全自动识别的过程。本文采用卷积神经网络对人脸表情识别系统进行改进,首先在卷积层中添加多个卷积核实现一次学习多个特征,再将每个卷积层得到的结果引入池化层中做最大池化处理。再通过全连接层并选择适当的全连接层的神经元数量,最后利用Softmax层作为分类器得到整个CNN的训练结果,完成人脸表情的特征提取及分类学习。当输入给定样本后,每一个神经元输出的数值都在0 到1 之间,该数值代表了输入人脸表情图片样本属于该类别的概率,且所有输出数值相加等于1,满足归一化规则,符合输出结果的概率意义。因此,可以选取输出值最大的神经元所对应的类别作为人脸表情的分类结果。

图2 人脸表情识别的CNN网络结构

参考LENET(一种典型的深度神经网络结构)网络结构,具体的用于人脸表情识别的CNN网络结构设计如图2所示。除了输入层,该网络由7 层组成,其中包括3 层卷积层、2层池化层、1 层全连接层和1 层Softmax 层。输入层是96× 96 的人脸像素矩阵。卷积层和池化层有若干个特征图,每个特征图都与其前一层特征图以局部连接的方式相连接。卷积层分别使用32、64、128 个卷积核进行卷积操作,每个卷积层使用的卷积核的大小都为5 × 5。池化层使用的采样窗口的大小为2 × 2。全连接层含有200个神经元,与最后一层卷积层进行全连接。Softmax 层含有9 个神经元,对全连接层输出的特征进行分类,将人脸表情分成大笑、微笑、抽噎、嚎啕大哭、惊讶、愤怒、厌恶、恐惧、中性共9类。

特别的,在每层池化层之后添加激活层,本文采用修正线性单元(ReLU)作为激活函数[6],其更能逼近人脑对于视觉处理的神经元激活函数,其表达式为

3 实验数据集的选取

为了保证人脸表情的识别的有效性,需要足够的已经正确分类的人类表情图片样本作为训练集。自然的人脸表情样本难以收集,因为在一段视频中有关表情的信息较为稀少并且只能持续非常短暂的时间,而且人工标注这些人脸表情耗时耗力且准确率难以保证。因此,目前对于人脸表情识别的研究都是基于人工生成的样本。目前许多研究致力于构建用于训练和测试情感识别方法的数据库。常用的含有人脸表情视频的数据库有很多,其中大部分数据库的样本都是被试者表演出来的。

针对本文采用的细粒度的表情识别策略,可以选取Belfast 自然情感数据库作为训练集和测试集。Belfast 自然情感数据库[7]包含了125个成人的 565 段视频片段。记录的表情包括几种基本和其他表情,最主要的是,该数据库还记录了每种表情的强度,这刚好符合本研究对于人脸表情进行细粒度分类的任务要求。因此,相较于其它一些用于表情识别的公开数据集,选用Belfast 自然情感数据库更有利于对本文中关于不同程度精细分类的表情的识别算法提供充足的训练集,并能够进一步对算法进行有效验证。

4 结论

本文针对人脸表情识别的问题,并为了更精确地区分出同种表情的不同程度,采用以下3个步骤实现人脸表情识别系统的设计。图像预处理采用将RGB空间转化为灰度图像的方法,特征提取采用灰度共生矩阵的纹理分析技术,并基于差分图像的表情时空提取。采用BP神经网络的方法作为分类器,其中本文采用的BP神经网络共三层,将特征向量作为输入,将被精细分类后的表情作为编码输出,通过不断地学习训练,建立学习模型,可用于不同表情精细化识别系统。同时,结合深度学习技术构建卷积神经网络,进一步提高了表情识别的精确度,具有较高的科研价值和实用前景。

猜你喜欢

特征提取人脸灰度
采用改进导重法的拓扑结构灰度单元过滤技术
有特点的人脸
一起学画人脸
玻璃窗上的人脸
天津港智慧工作平台灰度发布系统和流程设计
Bp-MRI灰度直方图在鉴别移行带前列腺癌与良性前列腺增生中的应用价值
Arduino小车巡线程序的灰度阈值优化方案
空间目标的ISAR成像及轮廓特征提取
基于Gazebo仿真环境的ORB特征提取与比对的研究
基于特征提取的绘本阅读机器人设计方案