APP下载

基于多任务深度卷积神经网络的人脸/面瘫表情识别方法

2019-04-15彭先霖张海曦胡琦瑶

关键词:多任务面瘫人脸

彭先霖,张海曦,胡琦瑶

(1.西北工业大学 电子信息学院,陕西 西安 710129;2.西北大学 信息科学与技术学院,陕西 西安 710127)

在心理学和人工智能领域,人脸表情识别(facial expression recognition)是一个持续不断的研究课题,在过去30年中吸引了众多研究者的关注,至今仍然是一个富有挑战性的课题。

人脸表情通常被划分为愤怒、蔑视、厌恶、恐惧、幸福、悲伤和惊讶这7类,表情识别方法主要有基于传统人工特征提取和分类器相结合的方法[1-5]和基于深度学习的方法。传统表情识别方法中人工选择的特征难以较完整地描述人脸表情特点,因此表情识别效果不佳。深度学习由于在特征提取方面的卓越表现已成为目前表情识别领域的主流方法。Yu[6]构建一个 9 层 CNNs 结构,在最后一层连接层采用softmax分类器将表情分为 7 类,该模型在 SFEW2. 0 数据集上识别率达到 61.29%。Lopes[7]在CNN网络前加入预处理过程,探索预处理对精度的影响,最终识别率在CK+数据集上达到 97.81%,且训练时间更短。Wang[8]采用triple损失函数训练CNN模型,并且运用数据增强手段,将识别率提高2%。该模型对难以区分的类间表情(如生气和厌恶)表现优良。Zhao[9]融合 MLP 和 DBN,将 DBN 无监督特征学习的优势和MLP的分类优势联系起来以提高性能。He[10]结合深度学习与传统机器学习,首先运用LBP/VAR提取初次特征,以初次特征作为 DBN的输入实现分类。Li[11]为了解决DBN忽略图像局部特征的问题,将CS-LBP与DBN进行融合,提高了识别率。

面瘫是一种常见病,临床表现为面部表情肌群运动功能障碍,如口眼歪斜,严重患者甚至无法完成闭眼、皱眉、微笑等动作,因此,可以通过被观察者在闭眼、微笑、抬眉、皱眉、耸鼻、示齿和鼓腮等动作下的面部表观特点,判断其是否存在面瘫症状以及存在哪种症状,从而初步判定其是否有面瘫疾病。从面瘫患者的面部变化特点可以看出,面瘫表情可以看作一类特殊的表情划分类别。与常规表情类似,面瘫表情也体现在嘴巴、鼻子、眉毛等人脸部位的变化,但面瘫表情在这些部位的变化特点与常规表情不同。由此可以推出,人脸常规表情识别的方法可以推广应用于面瘫表情识别。

目前计算机技术已初步用于对面瘫表情进行自动分析。Neely等人提出了一种基于灰度对比法的面瘫识别算法[12]。Moran等人对该方法做了推广,使其具有了更广泛的应用[13]。Murty等采用测量和比较患者静态和固定动作状态下的特征点间距离的方法来对面神经功能进行量化,得到Nottingham分级法[14]。王绍宇等人提出了基于特征光流(Eigen flow)特征的面瘫客观评估算法[15],利用主动形状模型提取出感兴趣的人脸区域和面部特征,然后结合医学图像分析方法,使用光流对面瘫时具有的特殊面部表情进行评价。闫亚美等提出了一种基于对称轴的面瘫分级算法[16],在图像边缘提取的基础上,根据面瘫患者面部不对称的特点进行面瘫识别。Guo等人提出了一种基于卷积神经网络的面瘫客观评估算法[17],并在给定的面瘫数据库UPFP数据集上得到更高的预测精度。

现有深度神经网络方法大多专注于表情识别单个任务,然而,现实世界中人脸表情与不同个体的面部形态、头部姿势、外部光照等多种因素交织在一起。为了减弱面部形态对表情识别的影响,本文构建深度多任务学习框架,将知识从人脸识别相关任务中迁移过来,克服面部形态对表情识别的影响。考虑到卷积神经网络(convolution neural network,CNN)已广泛用于图像处理与分析领域[18-19],特别是VGG face[20],Googlenet[21],Resnet 34[22]的优秀表现,本文选择这些深度模型来验证本文所提方法的有效性,并将其推广到面瘫表情识别。

1 基于分层多任务学习的人脸表情识别

本文提出的多任务深度学习方法的结构如图1所示。与传统的深度CNN方法相比,进行了以下改进:①采用双层树分类器代替深层网络中的平面softmax分类器,在提出的网络中共同使用人脸表情标签和人脸标签;②利用多任务深度学习方法学习不同任务的特定深度特征。

1.1 分层结构的构建

文中构建了一个两层结构来体现人脸识别和人脸表情识别任务之间的关系。对于人脸表情识别,其目的是忽略人脸成分并识别表情成分,而对于人脸识别,人脸表情成分应该被忽略,重点识别人脸。本文的多层次结构将不同人脸与不同人脸表情视为一个新的类别,通过利用人脸标签和人脸表情标签,学习更具辨别力的深层特征。

图1 分层多任务学习框图Fig.1 The hierarchical multitasking learning block diagram

多任务深度学习模型采用的层次结构如图2所示,其中,使用一个人脸表情识别分类器和多个人脸识别分类器。高层学习任务侧重于人脸表情的识别,而每个低层学习任务侧重于人脸识别(具有相同表情的人脸)。此外,分层结构可用于确定每个学习任务中的粗节点(人脸表情)的数量和低层节点(人脸)的分布,其中具有相同人脸表情的人脸应被分配到相同的学习任务中。

图2 两层结构框图Fig.2 The two-layer structure block diagram

1.2 基于分层结构的多任务深度学习

如上所述,使用两层树分类器来代替传统深层网络中的平面softmax分类器,在提出的网络中,可利用人脸表情标签和人脸标签来帮助深度网络学习更具辨别力的深度特征。更重要的是,由于人脸表情的变化会影响人脸识别的准确率,因此,应该针对不同的分类任务使用特定的深度特征。

对于输入图像I,属于第l个人脸表情的对象图像I的预测概率可以用式(1)计算,

(1)

其中,We表示人脸表情识别分类器权重参数;xe表示人脸表情识别学习的特定深部特征;M是粗粒度属(人脸表情)的总数。人脸表情识别的预测概率可用于选择特定的人脸识别分类器。对于对应于第l个表情的第l个低层分类器,输入图像I属于第j个类别的预测概率可以表示为

(2)

其中,Wf表示特定的人脸识别分类器权重参数;xf表示用于人脸识别的特定深度特征;Hl是对象图像被分类的特定学习任务。

由于最终预测概率可计算为P(I∈el)P(I∈fj),因此深层网络的损失函数可以表示为

£(W,x)=

(3)

本文提出目标函数旨在最大化人脸表情识别和人脸识别的正确预测概率,因此,在每次迭代期间可以联合优化多级分类器中的权重参数。

损失函数用于在训练过程中优化分层树分类器中的所有权重参数,可通过误差反向传播的方法进行学习。具体而言,可分别在式(4)和式(5)中计算多级分类器X和Y中的权重参数的对应梯度

(4)

(5)

可以看到,与传统的反向传播不同,在每次迭代过程中只优先考虑相关的学习任务。这是因为,损失函数仅考虑分层树分类器中的相关权重参数,以及其他学习任务的预测概率,防止在训练过程中远离全局最优。

2 实 验

本文提出的分层多任务学习方法在流行的人脸表情数据集(CK+)[23]上进行了对比实验,并进一步在面瘫表情数据库上进行了本文方法的有效性验证。

2.1 CK+数据集实验结果及分析

CK+数据集:扩展CohnKanade*(CK+)数据集是用于评估人脸表情识别方法的最常用数据集之一。 CK+包含来自123名受试者的593个视频序列,其中只有327个被标记。CK+数据集未为每幅图像提供精确的标签,只有图像序列有标签,序列中包含了从平静到表情表现峰值的图像。因此通过对应表情序列取表情峰值附近的3帧。之后,9个子集用于训练,另一个子集用于验证。文中118个具有精确标签的受试者被分配到7个粗类别(人脸表情)中。值得注意的是,由于每个类别的CK+数据集中没有足够的图像,因此,本文以VGG-face人脸模型参数为基础进行训练。

所有方法在CK+数据集上的识别准确率如表1所示,可以很容易地发现,本文所提出的方法在准确率方面取得了很好的表现。与基于低级特征的方法(如HOG3D[24]或3D Sift[25])相比,基于深度学习的方法在学习可靠性和特征提取上均具有更好的表现。此外,与基于深度学习的已有方法(3DCNN[26],DTGAN[27],PHRNN-MSCNN[28],Inception V3[21],Resnet 34[22],VGG-face[20])相比,本文提出的方法仍然可以在依赖于人的实验中获得最佳性能,更重要的是,可以在不依赖于人的实验上得到更多的改善。

表1 CK+数据集上不同表情识别方法的准确率

Tab.1 Accuracy of different expression recognition methods on CK+data sets

方法 准确率/%HOG3D 60.89 3D Sift 64.39 3DCNN 85.9 3DCNN-DAP 92.4 DTGAN(weighted sum) 96.94 DTGAN(joint) 97.25 PHRNN-MSCNN 97.78 VGG face fintune(person-dependent) 96.42 Our method(person-dependent) 97.53 VGG face fintune(person-independent) 92.70 Our method(person-independent)95.64Inception V3(person-dependent)100.0Our method(person-dependent)100.0Inception V3(person-independent)93.35Our method(person-independent)96.02Resnet 34(person-dependent)100.0Our method(person-dependent)100.0Resnet 34(person-independent)94.21Our method(person-independent) 96.62

同样容易理解的是,依赖于人脸的准确率高于不依赖于人脸的准确率,因为人脸信息可以在深层网络中学习,并且可能影响表情识别。与传统深度CNN方法相比,本文提出的方法可以实现更高的准确率。

提出方法的混淆矩阵如表2所示,从表2可以看到,本文提出的方法可以在某些人脸表情(如愤怒,蔑视,厌恶,恐惧和幸福)上获得令人满意的表现,而对于其他一些人脸表情(如悲伤和惊喜),由于表情彼此相似,难以区分,识别准确率仍相对较低。

表2 本文方法在CK +数据库上的混淆矩阵(依赖于人的结果)

Tab.2 The confusion matrix of this method on CK+database (depending on human results)

愤怒蔑视厌恶恐惧幸福悲伤惊讶愤怒100000000蔑视010000000厌恶001000000恐惧000100000幸福000010000悲伤7.3206.410086.270惊讶01.45000098.55

2.2 面瘫表情数据集实验结果及分析

考虑到面瘫表情和基本人脸表情间的相关性,本文提出的分层多任务深度学习方法进一步在面瘫表情识别问题上进行了验证。

目前,国内外没有统一的面瘫评估标准和公用数据库,在本实验中,利用一个尚未公开的面瘫表情数据库进行实验。如图3所示,该数据库记录了49名面瘫患者的7种面瘫表情动作(闭眼、微笑、抬眉、皱眉、耸鼻、示齿和鼓腮)。

图3 同一个人的7种面瘫表情Fig.3 Seven facial expressions of the same person

由于所得的面瘫数据有限,每一个人对应每一个表情动作只有一张图片,因此在本实验中只能进行face-independent的实验。在实验中,本文选择了268个面瘫表情样本作为训练样本,40个样本作为测试样本。

实验结果如表3和图 4所示。可以发现,本文提出的模型在面瘫表情动作的识别上依旧可以得到一定的提升。相比传统的手工特征方法, 基于深度学习的算法能够得到更加稳定的特征。而且本文提出的算法通过利用人脸信息和表情信息,可以使深度网络学习得到可分性更强的特征。但是由于数据量极少,因此有限的数据可能难以将网络参数进行有效的优化。同时可以发现,微笑和皱眉很难被正确区分,这是因为这两种表情很容易与其他表情混淆。

表3 面瘫表情数据库上不同方法的准确率

Tab.3 Accuracy of different methods on the facial expression database

方法准确率 VGG-fintune62.50 VGG+multi-task learning67.50Inception V370.00Inception V3+multi-task learning72.50Resnet 3475.00 Resnet 34+multi-task learning 80.00

图4 面瘫数据集3种方法正确率比较Fig.4 Comparison of the correctness rates of three methods for facial data sets

3 结 语

本文提出了一种基于分层多任务学习的人脸表情识别方法。该方法采用双层树分类器代替传统深层CNN中的平面softmax分类器,构成在表情识别同时考虑人脸识别的多任务学习框架,与用于人脸表情识别的传统单层分类器相比,有效提高了表情识别率。本文进一步将提出的方法推广应用于面瘫表情识别中,也取得较好的识别效果。

猜你喜欢

多任务面瘫人脸
东红分期辨治周围性面瘫经验
结合自监督学习的多任务文本语义匹配方法
有特点的人脸
一起学画人脸
针药并用治疗周围性面瘫验案举隅
穴位按摩与康复训练治疗周围性面瘫的疗效观察
基于中心化自动加权多任务学习的早期轻度认知障碍诊断
三国漫——人脸解锁
基于判别性局部联合稀疏模型的多任务跟踪
长得象人脸的十种动物