马中启 朱好生 杨海仕 王 琪 胡燕海*
1(宁波大学机械工程与力学学院 浙江 宁波 315211)2(宁波戴维医疗器械股份有限公司 浙江 宁波 315712)
随着计算机技术的不断发展,人机交互相关产品正逐渐走入大众视野。在计算机视觉领域中,人脸识别技术日益成熟,人脸表情识别成为了热点研究课题。相比较人脸识别,人脸表情识别不仅需要考虑光照、遮挡和姿态等问题,同时还要考虑人脸身份特征以及人脸表情变化非刚性的特点。在传统机器学习中,人脸表情研究主要由图像预处理、特征提取和分类三个步骤完成。传统特征提取过程中表情特征点为手工标注,使得人脸表情特征提取很大程度上依赖于人为干预,算法的鲁棒性较差。近年来,随着深度学习技术的不断发展,卷积神经网络在图像分类与识别方面取得巨大优势,特征提取这一过程不再需要人为干预,神经网络依据所提供样本特征自动学习表情特征,然后通过分类器进行分类,这种方法很大程度上减少了人为干预的影响,提高了算法的鲁棒性以及准确率。
卷积神经网络在面部表情识别应用领域属于起步阶段,Mollahosseini等[1]使用了GoogleNet的网络结构,结合多个数据集,并对数据进行归一化处理,训练结果接近人类能够识别的水准。实验结果表明深度神经网络能够有效提取表情特征,但是该方法并未充分利用不同特征图之间的关系,未使得表情特征信息最大流动。Xie等[2]使用了FRR-CNN的结构对CK+数据集进行分类,通过多个输入进行训练,然后进行特征融合,使用TI-pooling方法进行特征池化,最后进行分类,多输入的集成算法能够提升算法的鲁棒性。但文中仅使用了两层的卷积网络,不能很好提取表情的特征。Pramerdorfer等[3]通过对比目前各种数据集的start of art 结果,提出了集成深度神经网络解决现在表情识别的瓶颈问题,说明了使用深度神经网络集成能够很好地进行特征提取与分类。Lu等[4]使用了一种利用众包标签的正则化CNN损失函数的人脸表情分类,通过优化数据标签,提高了算法的准确性。李勇等[5]使用了一种基于跨连接的LeNet-5模型结构对人脸面部表情进行识别,该方法有效地将低层次特征与高层次特征结合,实验结果的准确率比仅使用高层次特征有明显提升。文中只是提取了不同层次的特征,没有对层与层之间的特征进行更深层次的连接,从而使得特征提取不够充分。何志超等[6]提出了一种多分辨率特征融合的卷积神经网络,将图片经过两个相互独立且深度不同的通道进行特征提取,然后融合不同分辨率特征进行分类。
本文提出一种多特征密集残差卷积神经网络,该网络实现对每层卷积特征的重复利用与融合。首先在残差网络的基础上,为了增加层与层之间的连接,将每层网络提取出的特征分别传递给后面若干层网络。在特征传递的过程中,设计一个密集模块,在每个密集块中共有3个3×3卷积层和一个1×1卷积的Bottle layer层,后一卷积的输入均为前面所有层卷积输出特征图之和。随着密集块个数的增加,卷积层输出特征图数也随之以2的倍数增加。这样可以最大程度地利用每层特征图之间的关系以及特征信息的最大流动。其次将不同层的特征提取出来,使其在全连接时与网络的输出层进行融合,最后将融合后的特征添加Island loss以增大类间距离,缩小类内距离,随后送入softmax分类器进行分类。实验表明,该模型不仅能有效提高准确率,而且可以充分提取表情特征,防止梯度消失。同时,由于密集块的使用,使得每层网络中的卷积核数量均有所降低,进而减少了该模型的参数量,在一定程度上能够降低过拟合。
卷积神经网络一般包括卷积层、降采样层、激活函数、全连接层和分类输出五部分。
通常外部输入的图片直接与卷积层相连,根据图片尺寸不同,卷积层的卷积核大小也不尽相同。卷积层一般可以表示为:
(1)
f(x)=max(0,x)
(2)
降采样层(池化层)一般可以表示为:
(3)
全连接层是将卷积神经网络提取到的特征图进行全连接,每个神经元的输出可以表示为:
F(xl)=f(wTxl+b)
(4)
式中:F(·)表示全连接的输出,w为全连接权重,b为偏置,f(·)为激活函数。
对于分类输出,本文选用softmax分类器,对于属于的特征,softmax分类可表示为:
(5)
计算输入类别j时的概率,其中w表示的权重值,x表示输入的特征,k代表的是类别总数。
本文除上述的卷积层等之外还使用了批归一化[12](Batch Normalization, BN)、dropout等方法抑制过拟合。
神经网络中较浅层的特征图尺寸比较大,对于较小的特征信息比较敏感,但是缺少了对物体整体特征的表达,较深层的特征图则与其相反,能够很好地表达物体轮廓和外观等方面的信息,但缺乏对小特征信息的敏感性。普通的卷积网络不能很好地利用这些特点,张婷等[10]提出的跨连接卷积神经网络能够有效地将较浅层次特征与深层次特征有效的结合,构造出了良好的分类器,实验结果表明跨连接分类器是有效的。随着网络模型的加深,图像特征在传播过程中梯度相关性会逐渐减小,He等[8]提出的ResNet深度残差网络跨连接方式以及Relu函数的使用,使得图像特征在传播过程中保持了很大的梯度相关性,从而得到更深层次结构的神经网络模型。Huang等[9]提出的DenseNet密集型卷积神经网络使得整个神经网络中所有层之间都相互连接,每一层网络的输入都来自之前所有网络的输出,这样能确保神经网络中特征信息的最大流动。Ioffe等[7]提出了BN网络,通过对每个卷积层输出参数的归一化,进而解决了神经网络在训练过程中梯度消失与梯度爆炸的问题。
综合以上问题,本文提出一种多特征密集残差卷积神经网络。
(1) 该模型结构不仅充分利用了卷积网络中层与层之间的紧密连接,同时也提取了不同层次的特征,多特征融合能够更好地提取人脸表情细微特征与整体轮廓特征,密集网络可以更有效地提取有用的表情特征。
(2) DenseNet模型把所有特征进行连接,造成了大量的冗余,本文缩短每个block长度,加大每个block特征图的数量,对于每个卷积层使其输入的特征图尽量保持在2的幂次方,这样能够加快运算速度。结合ResNet网络能够在减少冗余的情况下最大化信息流。具体结构模型见图1、图2。
图1 CNN模型图
图2 DenseBlock(i)(i=1,2,3)
(3) 添加了Island_loss层,增大了不同表情类间距离LC,缩减了表情类内距离LIL。
(6)
(7)
式中:xi表示全连接层输出的第x个样本。c表示所有同一类别yi的所有样本的中心值。
(4) 密集块和残差网络的使用可以提高深度网络的梯度相关性,同时密集块的使用也在一定程度上降低了网络参数量,使得模型具有一定的抗过拟合效果。在最终的softmax分类之前进行融合。
图1中虚线代表残差连接,实线代表多尺度特征融合。本文使用了三个密集块连接,在DenseBlock模块中,起始卷积特征图个数为32,随着模块增加,每层卷积输出的特征图增加方式如图2所示,根据密集块的顺序逐次按照2(i-1)次幂增加卷积层的个数,这样既可以使输入卷积核的个数大部分为2的幂次方以增加计算机运算速度,又可以增加特征图个数从而提取更多信息。
本文所做的实验是基于Python的Tensorflow进行的,硬件平台Intel Core i7-7700,GPU为NVIDIA GeForce GTX1070,显存为8 GB。
本实验所采用的数据集为CK+和FER2013数据集,数据集包含了7种基本的表情:高兴、悲伤、愤怒、恐惧、惊讶、厌恶与中性,如图3所示。
CK+数据集[11]:包含来自123个人的593个表情视频序列。这些视频包含了从中性表情到其他6种表情的变化,本次实验仅选取每个序列表情张量最大的3幅图片,检测出人脸部分并裁剪至256×256,然后随机使用其中一幅图像再随机裁剪成两幅227×227像素的图片。最后将所有的图片归一化大小为64×64的图像。
FER2013数据集:FER2013是2013年Kaggle比赛用的数据集,图片均为网上爬取,符合自然条件下的表情分布。数据集包含28 709幅Training data,3 589幅Publictest data和3 589幅Privatetest data。每幅图都是像素为48×48的灰度图。该数据集中共有7种表情:高兴、悲伤、愤怒、恐惧、惊讶、厌恶与中性。
Angry Disgust Fear Happy Neutral Sad Surprised图4 FER2013表情库7种表情实例
CK+数据采用了交叉验证的方法,将数据的图片分为5份,每次取其中4份作为训练集,另外一份作为测试集,对5次测试的准确率求平均值作为整个数据集的准确结果。并且数据集中训练部分进行数据增强,随机左右翻转、沿对角线翻转、调整图像亮度,以及随机增加噪声点以减小外界环境对识别的干扰,增强鲁棒性。
FER2013数据集直接对测试数据集进行10crop:分别对图片左上角、左下角、右上角、右下角以及图片中间裁剪至44×44尺寸,并进行翻转操作。训练数据直接随机裁剪至44×44的尺寸。表1表示的是本文所提出的方法在CK+数据集上的交叉验证结果。可以看出,对于厌恶、高兴以及惊讶三种表情得到了较高的准确率,生气和悲伤的准确率稍微下降一些,其主要原因可能是生气和悲伤等与其他的表情之间存在模糊定义,检测时引起识别率下降。图5给出的是其FER2013测试集的混淆矩阵。图6是对比改进前的DenseNet的网络模型和ResNet网络模型在训练过程中收敛的速度。可以看出改进后的网络的收敛速度与ResNet的相当,远高于DenseNet。
表1 CK+不同种类表情的分类正确率 %
图5 卷积神经网络预测Fer2013混淆矩阵
图6 训练过程中的损失函数
为了验证本文方法的有效性,将文献[1-3,5-6]的方法与本文进行对比,由表2可以看出,本文的方法具有明显优势。这是因为本文使用了密集残差网络的结构,能够有效地对特征进行提取,利用跨连接融合的方式得到局部细节和全局轮廓,因此能够很好地提升表情识别的准确率。文献[1]使用了Inception layer作为基本的模型结构,这种模型使用了多个不同的卷积核进行卷积,但是特征图与特征图之间没有有效密集连接,无法更有效地进行特征梯度的传递。文献[6]使用了多分辨率特征融合的方法,利用两个不相关的卷积层进行叠加融合,但网络结构比较简单,没有更好地利用不同层特征图之间信息传递,这样在每个卷积层里面不能完全提取出表情的有效特征。
表2 不同算法的识别率对比
本文提出了一种多特征密集残差型卷积神经网络,该网络通过对不同的卷积层进行融合叠加,充分利用了每个卷积层输出的特征。密集残差网络的使用能够有效减少在训练过程中梯度消失问题。多特征提取的方式使得网络能够在最终分类层时使用不同分辨率特征,通过卷积网络训练结果的对比,表明了本文的提取方法准确率更高和鲁棒性更好以及更快的收敛速度。
基于深度学习的卷积神经网络,能够自动提取输入数据的特征,不需要人工干预,在图像分类、检测与识别等计算机视觉方向得到了很好的应用,其检测结果远远高于一般机器学习的方法。但是深度学习需要大量的有标签数据,这对于缺少标签数据的表情识别领域提出了很大的挑战,同时也是下一步要研究的重点。