马金峰
(南京邮电大学通信与信息工程学院,江苏 南京 210003)
人脸表情识别是计算机视觉领域的研究热点之一。不同于语言交际,人脸表情是人类情绪表达的一种直接方式。相较于语言,人脸表情当中往往蕴含着更多的信息,心理学家Albert Mehrabian[1]提出了著名的55-38-7法则,她表示人与人之间交流的信息55%是由人脸表情传递的,38%是由说话时的语调传递的,而仅有7%是由所说内容传递的。之后著名心理学家Ekman 发现,有7 类基本表情是全球通用的,各种族间可以相互识别,甚至连与世隔绝的部落和哺乳动物都有着相似的表情。据此,Ekman 和Friesen[2]通过对各种文化的大量研究定义了7类基础表情:生气、厌恶、害怕、自然、开心、悲伤和惊讶。人脸表情识别目前主要的应用领域包括人机交互、安保、医疗、通信、安全驾驶等等。
随着人脸表情识别应用的领域不断增加,人脸表情识别算法也在不断发展,传统的人脸表情识别的算法有:基于几何特征的主动形状模型(ASM),活动外观模型(AAM)与尺度不变换特征转换;基于整体统计特征的主成分分析法(PCA),独立成分分析法(ICA);基于频率特征的Gabor小波变换法;基于运动特征的光流法等[3]。由于传统的特征提取方法容易受到图像的背景、光照强度等噪声的影响,所以其对于特征的提取方法复杂且需要单独的分类方法进行分类,并且往往最终的识别准确率较低。相较于传统的方法,深度学习方法往往对图像有着较好的特征提取能力,避免了传统的人脸表情识别算法中繁琐的人工提取特征的步骤。深度学习当中由于卷积神经网络(CNN)的模型简单高效,成为深度学习的模型的代表,被广泛应用于深度学习相关的领域并成功成为图像分类领域的核心算法模型。
最经典的CNN 模型是由Yann LeCun 提出的LeNet-5[4]网络,拥有标准的卷积层与池化层相互堆叠的结构,基于这种基本的网络结构,研究人员又在后续的研究中提出了VGGNet[5]、ResNet[6]、MobileNet[7]、DenseNet[8]等性能更加高效的网络模型结构,这些模型有的是通过增加模型的深度和宽度来获得更高的性能,有的则通过提高模型参数的利用率来获得更为高效的性能。
随着卷积神经网络模型的不断发展,为了提取更为复杂的特征,获得更高的预测准确率,网络模型的深度不断加深,参数数量大大增加,从而使网络结构庞大复杂,同时对模型的移植应用也形成了巨大的挑战。由于网络的深度对于学习表达能力更强的特征至关重要,因此如何在保持一定的网络深度和测试精度的同时,有效降低网络的参数数量就成为一个值得研究的方向。受到密集连接卷积网络的启发,本文给出了一种基于输入尺寸为48×48的单通道灰度图片的密集连接卷积结构的模型(M-DenseNet)。该模型在保持一定的网络深度和较高的模型预测准确率的情况下,提高了网络对于模型参数的利用率,大大降低了其运行时所需的参数数量。
卷积神经网络(CNN)如图1所示由卷积层、池化层和全连接层组成,是深度学习领域图像分类的核心模型。
图1 卷积神经网络结构图
卷积层对输入执行卷积,在训练过程中,选择内核和偏置参数以优化网络输出的误差函数。池化层对输入图像应用非线性变换,以减少操作后的神经元数量。在两个连续的卷积层之间放置一个池化层是很常见的,该操作还可以减小单元尺寸、减少计算负荷以及防止过度拟合等问题。全连接层与经典的神经网络层完全相同,其中层中的所有神经元都连接到后续层中的所有神经元,神经元由它们的输入总和乘以激活函数传递的权重而触发。
为了改善模型的性能使模型能够适应不同的需求,最直接的方法就是加大网络模型的深度,以下介绍几种经典的深度卷积神经网络。
2.2.1 VGGNet
由牛津大学视觉组于2014年所提出的VGGNet,这是一种专注于构建卷积层的简单网络,它提出了由两个3×3的小滤波器彼此堆叠模仿获得一个5×5的大滤波器的感受野,而不再是像以往的CNN模型一样使用单个更大的滤波器。经过这样的处理,模型参数大大降低了,并且模型的非线性表达能力获得了提高。
2.2.2 ResNet
ResNet 网络是一个模块化的网络,借鉴了“HighWay”,添加了一条“捷径”连接路径。该网络提出了一个残差学习块来减少网络的训练,明确将层重新定义为参照层重新输入的学习残差函数,而不是学习未引用的函数,因此可以大大加深深度,提高准确度。
2.2.3 DenseNet
DenseNet网络模仿了ResNet网络,同样构建了模块化的网络来进行学习。DenseNet 将这种模块称为密集块(Dense Block),其核心思想是创建了一个跨层连接来连通网络中的前后层。为了最大化网络中所有层之间的信息流,DenseNet将网络中的所有层两两进行了连接,使得网络中每一层都接受它前面所有层的特征作为输入,图2 展示了这种模式。DenseNet结构主要拥有以下两个特性:1)一定程度上减轻在训练过程中梯度消散的问题。从图2我们可以看出,在反向传播时每一层都会接受其后所有层的梯度信号,所以不会随着网络深度的增加,出现靠近输入层的梯度会变得越来越小的现象。2)由于大量的特征被复用,使得使用少量的滤波器就可以生成大量的特征,所需模型的规模也随之减小。
图2 一个四层密集块(Dense Bolck)结构
本文给出的网络模型受到DenseNet网络结构的启发,在DenseNet的网络的基础上,结合人脸表情识别的特点以及所使用的数据集,对网络进行了优化,使其更加适合于人脸表情识别的应用。DenseNet网络由于其密集块的设计理念,使得它能在每一个卷积层中都使用较少的滤波器,这样网络宽度收窄,需要的参数更少。由于网络的每层都直接相互连接在一起,有效保证了特征信息和梯度在网络中的传播,极大地化解了网络过深时出现的梯度消失问题。基于这种设计,模型能够在提取表达能力更强的特征而加深网络深度的同时,减少了参数的数量,从而加快运算速度。同时我们选择Adam 优化算法来代替原本的随机梯度下降(SGD)算法。Adam 算法结合了Adagrad 算法中擅长于处理稀疏梯度和RMSprop 算法擅长于处理非平稳目标的优点,此外Adam 算法对于大数据集以及较深的网络也往往有着更优异的表现且它对于内存的需求也较小,符合降低模型应用成本的需求目标。该模型的网络结构如图3所示,各层参数见表1所示。
图3 改进的M-DenseNet网络模型结构
改进的M-DenseNet网络模型中,总层数为52层,输入图像首先通过一个标准的卷积层(Conv),再通过3 个密集块(Dense Block),相邻两个Dense Block 之间增加一个过渡层(Transition Layer),最后使用全局平均池化(Global Average Pooling)[9]来代替传统卷积神经网络的全连接层并使用softmax 激活函数对人脸面部表情图像进行分类。Conv 就是传统的卷积层,用来提取图像的特征。表中的每一个Conv 都符合BN-ReLU-Conv的结构要求。批量归一化(BN)[10]调整了数据的分布,使得每一层的输出归一化为均值为0方差为1的分布,这样就保证了梯度的有效性,减轻了对参数初始化的依赖,使得训练更为快速有效。线性整流函数(ReLU)[11]作为非线性激活函数可以减少计算量,缓解梯度消失,减少参数的相互依赖,缓解过拟合等问题。同时为了进一步防止过拟合,在每一个密集层(Dense Layer)后面都加上了丢弃单元(Dropout)[12]。我们给出的M-DenseNet网络模型其增长率超参数K设置为12。Dense Block是由一系列Dense Layer连接而成,每一个Dense Layer 由一个1×1 的Conv 和一个3×3 的Conv 组成。过渡层由一个1×1 的Conv 和一个2×2 步长为2的平均池化(average pool)组成。
实验采用的是Fer2013灰度表情数据集[13],Fer2013数据集由35887 张人脸表情图片组成,每张图片均是大小为48×48像素的灰度图像。一共有七种表情类型,分别对应数字标签0~6,如表2所示。
表2 表情对应的数字标签
我们使用所设计的M-DenseNet 网络模型和LeNet-5、VGG-16、ResNet-50、MobileNet 以及DenseNet-121 诸多网络模型分别对Fer2013数据集进行了比对测试。
从表3中可以看到,M-DenseNet网络模型相对于其他网络模型在有效降低了参数的同时,模型识别的准确率也有所提高。
表3 各模型准确率与参数数量表
M-DenseNet 模型是在DenseNet 模型的基础上,降低了模型的深度和宽度,并在每一密集层(Dense Layer)后面添加一个临时丢弃单元(Dropout)来防止过拟合,是专为人脸表情识别所设计的一种网络结构。
试验中使用了Adam 优化算法进行优化,选择批量大小(batch_size)为8进行训练,用softmax分类器进行分类。初始化学习率选择为0.001,当学习轮数达到50轮时,将学习率为0.0001,丢弃率设置为0.2。
采用M-DenseNet 网络模型的验证集混淆矩阵如图4 所示。
图4 验证集混淆矩阵
M-DenseNet 网络模型的识别准确率为70.45%,略高于人工情况下对该数据集65%±5%的平均准确率,于其他模型相比,模型参数数量仅约为VGG-16 的1/50,ResNet 的1/80,MobileNet的1/11,识别准确率有着明显的提高。
M-DenseNet 网络参数的大幅度减少得益于密集连接卷积的优秀设计理念,它不强调卷积的维度,更重视将每一次得到的特征图进行复用,将每一层前一级的输出作为当前的输入以此来缩短前后层之间的连接,实现最大化的信息流动,避免特征信息的丢失,成功解决了网络深度加深时出现的梯度消失问题。Dense Block的设计使得网络能够使用较少的滤波器就能获得足够多的特征参数而不是像传统的卷积网络一样动辄使用成百上千的滤波器,从而达到有效降低网络参数数量的目的。
为了实现特征复用,密集连接卷积在跨层连接时选择将特征维度串联起来,而不是像传统卷积那样将特征元素相加。由于不需要进行特征元素的相加,所以不需要在每个单元模块的最后加一个1×1 的卷积来将特征层数升维到和输入的特征维度一致。密集连接卷积一方面通过对模型深度的加深,获得表达能力更强的特征,另一方面通过对特征的不断复用,使得少量的滤波器就可以生成大量的特征,这样模型就可以做到在整体参数数量较少的情况下,获得更高的准确率,使得运算时间也大大缩短。
对于人脸表情识别,不应片面追求预测的准确率,还应当综合考虑在实际应用中的可行性。一般而言,神经网络的规模越大、深度越深往往会带来更高的模型预测准确率,但是随着网络层数的加深,网络规模的扩大,网络中的参数往往会急剧增加,因此如何在加深网络层次,保持较好的模型预测准确率的同时还能够保持较低的参数数量就成为一个亟待解决的文题。本文给出的M-DenseNet模型在保持相对较深的网络深度(52 层)及较高预测准确率的同时有效减少了模型的参数数量,大大提高了模型的参数利用率。