基于CNN和面部关键点的表情分析研究
2022-02-07王剑雄李宗阳李晨昊
孙 歌 王剑雄 欧 琪 李宗阳 李晨昊
(河北建筑工程学院,河北 张家口 075300)
0 引 言
图像表情是最能体现出人类情绪的方式,根据上世纪心理学家Merhrabian的表述,人们沟通之中55%的信息是通过表情进行相互传递,而仅仅只有7%通过语言进行传递.因此面部表情分析逐渐成为各界学者研究的重点领域.面部表情研究技术的应用主要涉及智能管理、人机交互、安全、通讯、医学等应用领域.比如在服务型行业中对消费者心态进行研究,就是利用摄像机捕捉卖场中消费者的画面,研究其脸部表情,进而解读出消费者的心态信息,进而对消费者在卖场的体验评价做出研究;在人机交互领域中,通过人脸表情识别技术可以来触发各种功能的人机交互动作,或者按照表情的强弱选取更恰当的人机交互策略与交互动作;而在安全领域中,对于需要注意力高度集中的行业岗位,人脸表情分析可用于协助分析岗位人员的精神状态以便进行提醒(例如对精神疲惫人员进行适当的提醒与报告),以便降低或避免由于注意力不集中引起的产品缺陷或人员财产损失.上述背景都可成为人脸表情识别分析应用的强力增长点,同时也展示了人脸表情识别在未来各行各业中的重要地位以及广阔的发展前景.
由于深度学习技术的不断发展,将表情分析技术逐步分为传统分析方法和机器学习分析方法.传统分析法一方面采用线性鉴别分析法LDA(Linear Discriminant Analysis)和独立分量分析法ICA(Independent Component Analysis).LDA是模式识别领域中最典型的特征提取与数据降维工具,其主要思想是最小化类内散布矩阵Sw,同时最大化类间散布矩阵Sb,即让类内样本靠的尽量近,同时使类间样本离的尽量远,从而更易于分类.ICA是利用线性坐标体系来描述多变量数据集的方式,属于无监督、自适应成分分析法,ICA算法的主要部分是优化判据,用于判断结果好坏的依据.ICA和LDA的结合是将收集到的n维信息映射到k维上(n>k),已达到降维目的后,二次描述图像信息,再提取表情关键信息.另外一方面采用了Gabor小波变换法的局部二值模式LBP(Local Binary Pattern),使用幅值f和图像帧作积,后将乘积使用LBP并输入到支持向量机后,将提取到表情信息.而基于深度学习的分析方法最关键的是:卷积神经网络、循环神经网络RNN(Recurrent Neural Network)、限制玻尔兹曼机RBM(Restricted Bottzmann Machine),通过组建的网络间的层层特征提取和逐层抽象,实现最终信息的提纯,以得到输入图像帧中表情信息的目的.
1 面部关键点处理
面部关键点检测是面部分析的重要组成部分,是人脸识别、表情判定和3D面部重塑等应用的基础技术.关键点在于能够体现各个部位的人脸特征,而随着科技的发展和精度水平的提升,人脸关键点的数量也由原来的五个点到了如今的二百余个点.而由于计算机视觉中各方面科技的日益发达,人脸关键点检测可以根据是否参数化分成了参数化方法和非参数化方法.参数化模型的方式可以按照对其外部建模的不同,分成基于局部的方法和基于全局的方法,利用部分或全局外观特征进行建模,并通过图模型预测关键点位置;而将非参数化大致分成基于图模型方法、基于级联的回归方法和基于机器学习方法,其中深度学习的方法是通过建立多层级神经网络,并通过之间的非线性映射和递进抽象获取到关键点信息.目前,效果最好、应用最广泛的方法是基于深度学习的方法.因此,本文主要研究深度学习在人脸关键点检测和处理中的应用,本实验中采用的关键点处理基于深度学习.
对关键点的处理不同的是以往级联神经网络输入的是图像的某一部分,与以往不同,各阶段网络的输入均为整张图片,如图1所示.当网络均采用整张图片作为输入时,可以有效的克服头部姿态以及初始化带来的问题,从而得到更好的检测效果.之所以能将整张图片作为输入,是因为其加入了关键点,关键点的使用是本文的主要创新点.
图1 面部关键点流程模型
本实验借助深度学习中CNN,利用其多层级抽象的特性,获得更精确的关键点信息,其流程图如图1所示.首先将数字图像输入到模型中,通过两个耦合CNN得到输出的T1(尺寸为39×39),同时得到5个关键点坐标.后将T1分别输入到三层CNN和一层CNN的不同网络中,分别得到F1(尺寸为39×31)和3个关键点.后将T1输入一层CNN中得到F1(尺寸为39×31)和3个关键点.将T1输入到三层CNN后得到T2(尺寸为15×15)和3个关键点.后将各个关键点综合输出即得到总体面部关键点,如图2所示.
图2 实时面部关键点检测
其中关键点检测任务中典型样本处理损失函数为公式(1):
(1)
M表示脸部样本数量,N为面部特征点数,γ为权重,d为关键点之间的欧式距离.
2 卷积神经网络处理
CNN是人脸识别中最常用的深度学习算法之一.深度学习的主要好处在于通过用大量的数据进行练习,以便于学习训练数据中存在的变化情况以及稳健的人脸特征.卷积神经网络还可以降维并训练它们作为分类器.在这些深度学习应用中,都使用了大量训练集来避免过度拟合.通常,用于细分任务训练中的CNN的精确度都会随着每一个类的训练样本量的增多而提升.因为当类中有更多的差异时,通过CNN模型就可以学习更稳健的特性.而针对人脸识别,我们更感兴趣的是提炼出可以泛化在训练集上还没有发现过的其他主体上的新特性.
图3 实时三维人脸关键点检测
本节主要是将上节关键点识别后的中段信息输入到卷积神经网络中处理,并最终得到表情信息的过程,如图4所示.初始图像在经历过关键点识别后,可得到面部关键点相对位置信息和点之间的欧式距离.将相对关键点作为输入信息,先经过一次5×5卷积层和2×2池化,将关键点信息进行浅层特征提取,后依次通过3次卷积和池化操作将信息进行深层次抽象.将抽象数据最终经全连接层处理后即可得到共享特征,最终对共享特征进行线性回归即可得到表情信息.
图4 CNN处理模型
在具体训练过程中,由于针对关键点的重要程度不同,同时任务难度也不尽相同,则采用公式(2)带权值的目标函数:
(2)
M表示脸部样本数量,N为面部特征点数,W为权重.而针对更加精细的面部表情具体任务,则需要判定的关键点信息更加精细.采用公式(3)平方和误差、交叉熵误差和正则项之和作为目标函数:
(3)
综合以上训练过程中的目标函数和综合架构提出公式(4)本次CNN处理的损失函数表达式:
(4)
这里W为权重,c表示不同的面部姿势,如:侧脸、仰头、低头、遮蔽等情况.其中θ值代表面部与正轴之间的偏角,其角度越大cos值越小,同时面部权重则会越大.将已经训练好的模型存入本地,使用摄像头实时捕捉人脸,并识别出相应的表情.从捕获的图像中,先使用人脸检测器,检测出人脸区域,然后将该区域实施灰度化,并将图片大小缩放至48×48,最后送入已有模型,进行预测,根据以上理论基础,具体将上节得到的面部关键点进行输入后,得到具体面部信息相应的表情并实时输出,如图5所示.
图5 实时表情信息输出
本文采用Cohn-Kanade数据库训练这个网络.其数据量较大、且数据质量较高.这个数据库一共有593张面部图像,本文用总量的75%作为训练集进行训练,即高兴、生气、惊喜、恐惧、厌恶和悲伤六种情感各50张,合计300张图像.用其余135张图像作为测试集进行测试.测试的结果见表1.表l给出了每种情感的正确识别率,其中对角线的数据就是6种情感分别对应的正确识别率.实验结果可知,生气、惊喜和悲伤三种情感的识别结果较为理想,其正确识别率都超过了92%,而高兴、恐惧和厌恶三种情感的正确识别率略低,分别为86.10%、87.50%和88.76%.主要原因是高兴与惊喜、恐惧与厌恶相互之间容易产生混淆.
表1 深度学习网络测试结果
3 结论及总结
人脸表情识别技术主要包括以下三个环节:人脸检测与采集、表情的特征提取和人脸表情分析.第一步,人脸的检测与采集作为一个独立的研究方向已经日趋成熟.第二步,在已测量到的人脸图片中提取特征,这些特征可以描述不同表情之间的差异.第三步,针对所提取的表情特征选择正确的人脸表情识别分类器,用于表情鉴别.从上述结果可以得知,特征提取方法是人脸表情辨识研究的核心问题,同时也是实现人脸面部表情识别系统的关键.因此,如何提取有效的表情特征,提高面部表情分类的精度是相关科研人员研究的主要目标.
本文主要使用深度学习中的卷积神经网络对面部关键点进行定位,同时将面部关键点信息和中段卷积神经网络相结合,已达到获取表情信息目的.本实验虽然成功获取关键点并同时估计出面部表情,但在具体不可控场景,如:超30%图像遮挡、图像前后帧发生巨大变动或背景干扰因素过多,会发生一定程度的误判.同时由于采用CNN层次较多,同时涉及到两次信息的输入输出,所以本实验实时性表现一般,但估计的精确性较高,如何综合性平衡系统实时性和精确性是下一个研究的重中之重.