车 娜,赵 剑*,史丽娟,王 柳,范秦寅
(1.长春大学 计算机科学技术学院,吉林 长春 130022;2.长春大学 电子信息工程学院,吉林 长春 130022;3.大阪大学 机械科学部,日本 大阪 556670)
人的面部表情识别是人工智能的基本问题,同时也是一个复杂的计算问题,解决人类面部表情识别问题对于人机交互等高级应用有着重要意义[1]。近些年来在表情识别方面有很多的优秀成果,在相关研究方面积累了很多经验教训。
心理学研究表明人类的表情与味觉一样,是几种基本表情的混合,识别这些基本表情就成了早期表情识别的重要方向[2]。早期的研究主要是通过数据特征判断表情和用时序分析判断表情[3]等方法,这些方法的技术难度较高,但是最终得到程序的鲁棒性较差。
近几年来人工智能的再度兴起使得很多人将研究重点转移到使用深度学习方法进行表情识别的方向上来[4]。在利用深度学习和卷积神经网方面也有很多不错的工作[5]。
本文提出了一种基于卷积神经网的机器学习方法来进行人类表情识别,并且详细分析了影响表情识别的卷积神经网各方面的参数。本文主要基于FER2013数据集和卷积神经网模型进行探索,最终给出一个基于实验的最优的解决方案。
FER2013数据集合是表情数据库,它是由35 887张面部表情图片构成,在这些图片中分别有训练集合、验证集合和测试集合。表情图片都处理成了灰度图片,并且是统一规格的,都是48×48像素的,如图1所示。按照相关学科的理论,人的表情是7种基本表情的混合,也就是面无表情、生气、厌恶、恐惧、开心、惊讶、伤心这几种表情,FER2013中也将面部表情数据分成了这7类。在FER2013中给出的文件是csv格式,本文为了训练方便将其转换成了灰度图片,如图1所示。
本文采用了基本的CNN结构来探讨卷积神经网在面部表情识别中的性能问题,其结构如图2所示。
其中神经网的INPUT为输入层,FER2013数据集合中28 709张训练图片随机乱序之后通过输入层输入到神经网结构中。在输入层之后的C1是最开始的卷积层,它有6组卷积核,设定每组局部感受野的尺寸为5×5,我们将滑动窗口步长设为1,在神经网中对输入图像作局部卷积,可以得到6个(28-5+1)×(28-5+1)=24×24尺寸的特征图。接下来的层S2为池化层,我们通过池化层对前面卷积层得到的特征图进行下采样处理,这是卷积神经网络在保留训练数据同时降低维度的技术,为了不重叠数据,我们将池化层设为2×2,并且步长设为2。通过卷积层和池化层之后的数据就是池化特征图,这个特征图的数据是每个输入图的1/4。后面的层C3同样为卷积层,在这个层里有12个卷积核,这里的卷积窗口为5×5,滑动步长为1,在接下来的卷积层S2中需要尺寸为8×8的12个特征图。在S2到C3的特征图可以选择全连接方式,就是C3中每个特征图都由C2中的所有特征图组合叠加而成。接下来的第S4层也是池化层,这里将采集窗口设为2×2,步长设为2,用最大值下采样,通过S3池化层可以得到对应的前面的12个特征图,其中每个图为4×4的尺寸。后面的F5 是全连接层,S4则将每个图转换成16×1的向量,之后将其转换为192×1的特征向量,再通过全连接的方式传递给F5层,F5层有120个节点,这些节点与接下来的F6层全连接,F6设了84个节点,F5与F6这样的两极全连接结构能够增强整个网络的泛化效果。输出层与F6相连,这里是为了区分7种基本表情,所以这里给出了7个节点,分别表示为0~6,对应表情“面无表情、生气、厌恶、恐惧、开心、惊讶、伤心”。
图1 FER—2013集合的例子
图2 经典CNN模型结构示意
通过经典的卷积神经网对FER2013的训练,我们将总共35 887张图片中的28 709设为训练集,3 589设为验证集,3 589设为测试集。学习率设为1,当神经网迭代300次之后错误率为2.45%,迭代1 000次之后错误率为1.86%。
本文用经典的卷积神经网构建了面部表情识别的系统,接下来对卷积神经网的主要参数进行对比试验,主要研究滑动窗口大小以及池化方式这两个方面对于在该具体问题中的卷积神经网影响,为进一步的理论和实验研究做出指导。
在滑动窗口方面,经典的做法是固定滑动窗口,这样可以稳定地扫描过全部的感受区域,利用神经元与周围像素的关系进行神经网训练。本文在第一个卷积层C1中设计了一系列的滑动窗口尺寸试验,使用不同的模型进行测试,以发现相对较优的滑动窗口尺度。在下面的表1中,是我们对于1~9的窗口尺寸进行测试的结果。
通过实验数据,我们大概可以找到一个局部最优解,显然过大或者过小的滑动窗口尺寸都会影响系统性能。通过表1得到的数据走向,以及系统中临时特征图的对比,我们最终将C1卷积层中的窗口尺寸设为5×5大小的。滑动窗口尺寸是根据实验结果和输入数据尺寸决定的,相对较大的输入数据,如果采用小窗口会拉低实验性能,反之亦然。这是设计卷积神经网的重要因素之一。
表1 C1层中不同窗口尺寸以及对应的错误率对照
卷积神经网除了卷积层之外的重要设计内容就是池化层了。池化层不同的设计对于整个卷积神经网的性能有很大的影响,而且它也是神经网鲁棒性的来源之一,同样的图像如果有轻度噪音在池化层的处理下也能得到同样的训练/识别效果。常用的池化策略是最大值池化、平均值池化和随机值池化。
为了选择最为适合的池化方式,本文将以上3种策略在表情识别系统中都实现了。这3个模型采用同样的设计,只有池化方式不同,同样对于面部表情识库FER2013进行训练,得到的时间消耗如表2所示。为了排除单次实验的误差,下表中的数据是10次实验取得的平均值。
在这个特定问题中,我们能够发现池化策略有不同的最优表现。错误率最低的策略是随机方式,而效率最高的是最大化策略。按照统计结果表明,最大化策略在时间表现方面的显著性水平要高于随机化策略在提高错误率方面的显著性水平。所以我们认为在这个具体问题中采用最大化策略能够更好地提高系统功效。
表2 3种池化方式的实验对比数据
本文通过实验修改经典的卷积神经网结构,以得到在实验中表现良好的参数配置,为面部表情识别工作做出了探索。在我们的实验中,针对面部表情识别问题,得到了较好的卷积层窗口尺寸设置,以及表现优秀的池化方案。得出的结论为,为了进行更好的深度学习,卷积核窗口的尺寸不宜过大也不宜过小;池化方案相对来说采用最大化策略能够改进效率。