您好, 访客   登录/注册

卷积神经网络的分布式训练在表情识别中的应用

来源:用户上传      作者:

  摘  要: 为了解决目前流行的人脸识别系统存在问题(如:面部遮挡,姿态改变,光线扭曲等),根据人的表情做出准确情感判断,提出了如下的卷积神经网络的分布式训练识别系统:由两部分构成:第一部分借鉴YOLO(You Only Look Once)算法实现目标检测,准确定位复杂背景图像中人脸的位置;第二部分使用基于VGGnet的改良结构,对已定位到的面部表情进行分类。相比于端到端的模型,可以引入更多的可控的人类学习经验与有效训练数据,从而得到更优秀的分类结果。实验结果表明该系统的可行性,在FER 2013数据集上产生了较优异的结果,总正确率达69.83%。相对于现有算法,具有容易训练、准确度高、实时性强、鲁棒性好与易增添后续功能等优点,未来有很大提升空间。
  关键词: 表情识别;卷积神经网络;分布式训练;YOLO算法;VGGNet结构
  中图分类号: TP391.41    文献标识码: A    DOI:10.3969/j.issn.1003-6970.2020.01.035
  本文著录格式:董飞艳. 卷积神经网络的分布式训练在表情识别中的应用[J]. 软件,2020,41(01):160164
  【Abstract】: To solve the problems of the current popular face recognition system, such as: facial occlusion, posture change, light distortion, etc. According to the expression of person to make accurate emotional judgment, the following Distributed Training recognition system of convolutional neural network is proposed. It consists of two parts: the first part uses YOLO (You Only Look Once) Algorithm to achieve target detection and precisely locates the position of face in complex background images; the second part refers to the structure of improved VGGnet structure to classify the positioned facial expressions. Compared to the end-to-end model, this model can introduce more controllable human learning experience and obtain more effective training data to obtain better classification consequences. The feasibility of the system can be verified in experimental consequences that has shown the total correct rate at 69.83%, testing on the FER 2013 dataset. Compared with the existing algorithms, it has the merits including easily trained, high accuracy, strong real-time performance, good robustness, easy to add subsequent functions and so on. Thus, there is much room for improvement in the future.
  【Key words】: Expression recognition; Convolutional neural network; Distributed training; YOLO algorithm; VGGNet Structure
  0  引言
  随着计算机技术及其相关学科的快速发展,人们对人机交互的需求日益增加,而面部表情作为计算机理解人类情感的前提,对人机互动技术发展具有重大意义。国内外很多研究机构及学者致力于这方面的研究,并己取得了一些成果:20世纪70年代美国心理学家Ekman和Friesen[1]对现代人脸表情
  识别做出了开创性的工作。Ekman定义了人类的6种基本表情:高兴、生气、吃惊、恐惧、厌恶和悲伤,确定了识别对象的类别;其次是建立了面部动作编码系统(Facial Action Coding System,FACS),使研究者按照系统划分的一系列人脸动作单元(Action Unit,AU)來描述人脸面部动作;1978年,Suwa[2]等人对一段人脸视频动画进行了人脸表情识别的最初尝试,一系列的研究在人脸表情视频序列上展开;20世纪90年代,Mase和Pentland [3] 使用光流来判断肌肉运动的主要方向,然后提取局部空间中的光流值,组成表情特征向量,最后利用表情特征向量构建人脸表情识别系统,该系统可以识别高兴、生气、厌恶和惊奇4种表情,识别率接近80%。
  近年来,FER(Facial Expression Recognition,面部表情识别)技术正逐渐从实验室数据集测试走向挑战真实场景下的识别。尽管深度学习具有强大的特征学习能力,它在FER中应用还有一些问题。首先,深度神经网络需要大量训练数据来避免过拟合。然而,现存的面部表情数据库不足以训练出性能完美的深度网络。除此之外,由于不同人物属性,例如年龄、性别、宗教背景和表达能力,主体间具有高变化性,姿态、光照和遮挡在不受限的表情场景也十分常见。这些因素和表情之间是非线性关系,因此需要增强深度网络对类内变化的健壮性,以及学习有效的表情特征表示。   因此本文提出了在深度学习基础上,结合分布式神经网络的特点来设计克服以上的缺点的系统并进行相关学习与测试。
  本文主要创新点有。
  (1)使用分布式训练结构(如图1所示):将表情识别系统分为人脸监测与表情识别2个步骤,从而各自步骤可以引入更多人类先验知识,降低训练难度,获取更高鲁棒性。
  (2)复现并改进了YOLO和VVGNet算法,并将其运用于人脸识别任务。
  (3)确定完整的模型体系结构和数据处理方法,利用FER2013数据集中28709个样本进行了实验测试,总准确率达到69.83%。
  本文安排内容如下:第一部分引言,第二部分介绍人脸识别模块的构成原理,第三部分介绍表情分类模块的构成原理,第三部分介绍实验结果并进行对比分析,第四部分对本文方法进行总结。
  1  目标定位:基于YOLO的改进算法
  受到YOLO[4]模型的启发,利用多层卷积层加上两个全连接层来做人脸位置检测,前面网络的卷积层用于从图像中提取特质,后面的全连接层用于输出概率以及坐标点。在特征提取部分更多受到了ResNet[5]的启发,用到了3*3和1*1卷积组合的方式,3*3卷积层用于提取各部分特征,而1*1卷积层用于跨通道的信息整合。最终网络输出7*7*30的向量作为预测。具体网络如图2所示。
  S.Ren[6]等人的工作中证明对网络进行预训练可以提高最终的预测表现。将这个复杂的模型在ImageNet 1000-classcompetition dataset上进行预训练。在预训练时,网络的最后两层用一个Average- pooling layer(平均池化层)和一个Fully connected layer(完全连接层)作为替代。从处理分类问题转化成探测问题,产生不同的处理输出,同时大量的数据被用于训练卷积层的特征提取能力。
  最终的算法输出既包含了概率,也包含了边界框定的宽与高,并且用图像的原始尺寸来对其进行归一化,使得边界高与宽均在0~1以内。
  2  表情识别:基于VGGNet网络的残差支路
  在VGGNet[7]结构上,采用残差单元(Residual unit)训练超深层次的神经网络(如图3所示):用3*3、1*1组合的网络结构,用以高效得提取特征,实验证明这种网络结构可以高效的提取图片信息中的特征很有利于后续的表情分类。
  采用Bottleneck Block支路,比传统的卷积结构多了一个short-cut支路,用于传递低层的信息,使得网络能够深度训练。残差支路上先通过一个1×1的卷积使得中间卷积的通道数减少为1/4;中间的普通卷积做完卷积后输出通道数等于输入通道数;第三个卷积用于增加(恢复)通道数,使得Bottleneck的输出通道数等于Bottleneck的输入通道数。这两个1×1卷积有效地较少了卷积的参数个数和计算量。
  人脸图像是高度密集的数据信息,内部包含了很多细微的表情如:眼睛睁大,眼皮拉紧,嘴角上扬,出现褶皱等众多信息,就是人心情的具象表征,需要先通过卷积神经网络把这些特征分类提取出来,然后通过训练线性分类器得到最终的分类结果。具体的网络设计如图4所示。
  3  结果与分析
  本章在第2与第3章的原理基础上对本文设计的检测算法进行实现测试,并进行评估。从数据的收集,模型参数的选取以及结构优化等方面对算法进行了分析,同时也与同类型的算法进行比较,分析本文算法的优势和不足。
  进行训练时,没有直接采用表情数据集,而是先采用通用性更强的图像分割数据集分别进行预训练并将两部分模型分块调试再组合使用,最终在模型的训练阶段,通过多次的误差分析进行参数调整,最终得到了较好的效果。
  实验配置如下:硬件平台:中央处理器(Center Processing Unit,CPU):Intel(R)Xeon(R)E5- 2687V3,主频为:2.5 GHz,内存为128 GB;图像处理器(Graphic Processing Unit,GPU)CUDA加速实现:四路NVIDIA GeForce GTC1080 Ti。软件平台:采用PyTorch1.1.0版深度学习框架进行算法 实现。
  3.1  训练、测试数据集
  (1)表情识别
  首先在ImageNet 1000-classcompetition dataset上进行预训练。最终在测试中,采用WIDER FACE的medium数据集进行测试,learning rate策略如下。
  在完成预训练之后,把模型转换为目标检测输出,采用了难度最大,各种难点比较全面的WIDER FACE数据集再次进行训练120轮次,将batch设为64,momentum(动量)设为0.9,衰减设为0.005。为了防止过拟合,在最后两层,利用N Srivastava[8]等人提出的随机失活(dropout)正则化来提高系统提高泛化能力,将dropout設为0.1,其余层设为0.4。前5轮采用warmup策略,使其在0.0001~0.001之间波动,此后采用0.05的学习率继续训练,并用随机梯度下降法(Stochastic Gradient Descent,SGD)[9-10]优化方式进一步自由优化。
  预训练具有以下特点:图像分辨率普遍偏高;每张图像的人脸数据偏多;分训练集train/验证集val/测试集test,分别占40%/10%/50%;测试集非常大,结果可靠性极高,而且测试集的标注结果(ground truth)没有公开,需要提交结果给官方比较,更加公平公正,适合训练。
  (2)表情分类
  采用Kaggle Facial Expression Recognition Challenge Database对表情识别网络进行训练。任务是根据面部表情中显示的情绪将每个面部分类为七个类别之一(0=愤怒,1=厌恶,2=恐惧,3=快乐,4=悲伤,5=惊喜,6=中立)。训练集包含两列,“情感”和“像素”,共包含28 709个示例。对于图像中存在的情绪。   本文系统的最终输出也以七类表情判别为基准,通过阈值法进行面部表情的最终判定。
  (3)结合训练
  关于两部分模型配合使用方面,在选择检测并标定人脸后,将输出图像存储在本地后,再作为第二个表情识别网络的输入而不是对两个网络直接级联。这样操作的优点:1. 是防止级联模型过大难以训练;2. 两部分模型需要提取的特征倾向性不同,非级联组合可以更好的发挥各部分不同的、经过改进的Loss函数的特点;3. 方便调试,方便接入其它功能以及后续开发。
  3.2  训练结果及分析
  (1)人脸识别部分
  网络训练结果。
  首先对于训练集训练部分,图中行坐标为迭代次数,纵坐标为训练集Loss函数值,图7中可以看出Loss函数值一直在稳定下降,说明本文采取的新的Loss函数在数据集上有较好的表征特性,且采用的残差策略可以很好的让模型快速训练拟合数据集特征。
  数据集训练结束之后,计算了模型的Precision Rate(精确率)和Recal(召回率),被广泛用于信息检索和统计学分类领域的指标,来对人脸目标检测结果质量进行评价。
  可以看到本文方法较好的预测了人脸的位置并做出精准的框定,同L. Bourdev[11](图中Poselets)与N.Dalal[12](图中D&T)等人的工作进行横向对比,均有较好的检测效果。检测完成后,本文算法将利用输出结果变形映射为相同大小的图片,为下一部分神经网络做人脸表情识别做准备。
  (2)模型级联训练结果
  择在FER2013(Kaggle Facial Expression Recognition Challenge Dataset)中的testset内进行测试。完成200轮训练之后,在共28709张测试数据中,正确预测了其中20047张表情,总准确率达到了69.83%,其中对于高兴、惊讶表情的识别准确率较高,而对于恐惧表情识别准确率较低。具体各表情识别结果准确率如下,列标表示实际表情,行标表示本文算法预测表情结果。
  由表格可以看出该模型对happy,surprise两类表情识别准确率相对较高,而对angry,fear,sad类表情识别准确率较低。主要原因为。
  ①在训练集中,各类表情数据量占比不统一,导致模型对数据量大的表情类型更有倾向性。
  ②angry,fear,sad等表情相似点较多,如皱眉,嘴角紧张,眼睛微瞪等等,不利于相互之间做明显区分。
  针对以上两点,做出以下对策:(1)考虑对数据集进行删减,让各个表情的训练数据保持一致;(2)例如在表情分类模块采用非标准Loss函数,对相似度大的表情进行针对性优化区分,引入Jiankang Deng[13]等人提出的利用更多角度空间信息的Arcface Loss函数完成进一步的优化。
  除了标准数据集外,也利用网上搜索到的表情包进行识别,测试该算法在更贴近生活情况下的识别效果。
  结果图中横轴7个坐标为本算法可以识别的7种表情:Angry、Disgust、Fear、Happy、Sad、Surprise、Neutral,纵轴值则为判定为该表情的可能性,最终挑选最高可能性的结果进行输出。由案例可以看出,对于人脸在图像中占据不同比例、脸部不同朝向、对脸部的遮挡、较浓的妆容、不同光照等情况,均有较好的表情识别效果。
  4  结论
  本文将识别系统网络分为两部分,第一部分准确定位复杂背景图像中的人脸的位置,将实时性高,鲁棒性强的YOLO模型做出针对性改进应用于人脸监测;第二部分进行表情分类,利用简化后的VGGnet结构对定位后的人脸照片的情感表达进行高效率地分类,同时引入新型的附加角度边缘损失函数,改进网络的特征提取效率。与直接输入图片到输出分类的简单端对端模型相比,引入更多先验知识,获得更有效的数据,产生了可应用于复杂环境的更优秀的分类系统。
  总之,本文中描述的新型人臉表情识别算法,能较好地完成计算机人脸表情识别任务,克服传统算法的部分缺陷,引入较多的人类知识可控因素,从而达到网络容易训练,识别准确度高,系统事实性强,鲁棒性好等特优点。可以应用于较多人际交互场景,对计算机系统的人机交互做出高层次的指导。同时,该系统算法也有继续研究、改进的意义,有较大的提升空间。
  参考文献
  [1] Ekman P, Friesen W V. Contacts across cultures in the face and emotion[J]. Journal of personality and social psychology, 1971, 17(2): 124-129.
  [2] Suwa M, Sugie N, Fujimora K. A Preliminary Note on Pattern Recognition of Human Emotional Expression[M]. [S.n]. Proceeding of the Fourth International Joint Conference on Pattern Recognition.1978, 408-410.
  [3] Mase K, Pentland A. Automatic lipreading by optical-flow analysis[J]. Systems and Computers in Japan, 1991, 22(6): 67-76.
  [4] Redmon J, Divvala S, Girshick R, et al. You Only Look Once: Unified, Real-Time Object Detection[C]//2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). IEEE, 2016. IEEE, Las Vegas, 2016: 779-788.   [5] HE K, ZHANG X, REN S, et al. Deep residual learning for image recognition[C]//Computer Vision and Pattern Recognition. CVPR, Las Vegas: 2016: 770-778.
  [6] Ren S, He K, Girshick R, et al. Object Detection Networks on Convolutional Feature Maps[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2015, 39(7): 1476-1481.
  [7] Simonyan K, Zisserman A. Very deep convolutional networks for large-scale image recognition[C]//International Conference on Learning Representations. San Diego, USA: ICLR, 2015: 1-5.
  [8] Srivastava N, Hinton G E, Krizhevsky A, et al. Dropout: a simple way to prevent neural networks from overfitting[J]. Journal of machine learning research, 2014, 15(1): 1929-1958.
  [9] Rie Johnson Tong Z. Accelerating Stochastic Gradient Descent using Predictive Variance Reduction[C]//International Conference on Neural Information Processing Systems. Currant Associates Inc. 2013: 315-323.
  [10] Shalev-Shwartz S, Singer Y, Srebro N. Pegasos: Primal estimated sub-GrAdient sOlver for SVM. [C]//Machine Learning, Proceedings of the Twenty-Fourth International Conference (ICML 2007), Corvallis, Oregon, USA, June 20-24, 2007. ACM, 2007.
  [11] Bourdev L D, Malik J. Poselets: Body Part Detectors Trained Using 3D Human Pose Annotations[C]//IEEE 12th International Conference on Computer Vision, ICCV 2009, Kyoto, Japan, September 27-October 4, 2009. IEEE, 2009.
  [12] Dalal N, Triggs B. Histograms of Oriented Gradients for Human Detection[C]//2005 IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR'05). IEEE, 2005.
  [13] Deng J, Guo J, Zafeiriou S. Arcface:Additive angular margin Loss for deep face recognition[J]. arXiv preprintarXiv: 1801. 07698, 2018.
转载注明来源:https://www.xzbu.com/8/view-15121767.htm