原文已上传Deep Facial Expression Recognition: A Survey (IEEE) 

人脸表情识别分为动态序列识别和静态图片识别,本文只与动态序列有关

这里也有一篇推送解析的这篇文章,但是不全,很多提到的文章没有翻译,不过只作为概览的话倒是可以

深度学习 + 动态序列人脸表情识别综述

研究背景与意义

人脸表情识别已经成为一个人机交互领域的研究热点,涉及到心理学、统计学、生物学、计算机学等学科,是一个比较新颖并且有研究前景的方向。应用可以推广到疲劳驾驶监督、人机交互、医疗、安全等领域。

例如在智能商场领域,通过摄像头捕获顾客,分析其面部表情解读出顾客的情绪信息,用于分析顾客在商场的体验满意度;商品推荐系统可以参考人们在浏览各类商品时的表情进行 分析并进而判断其喜爱程度,将喜爱程度值加入推荐系统以便向消费者推荐更受 欢迎的商品。人机交互中机器人也可通过用户面部表情来判断用户的情绪和心理,做到人性化服务;在公共安全领域,视频巡检时发现情绪波动对象,会给予危险级别警示,提前排除隐患,识别幼儿情绪变化,辨别是否存在诱拐行为,及时保护无行为能力的人。在智能交通领域,面部表情识别系统能分析驾驶人是否疲劳驾驶,自动报警提示驾驶人休息;通过采集驾驶人声音的语速和面部表情判断是否酒后驾驶,自动在交警系统中报警。在医疗领域,表情分析可作为辅助手段帮助医生对病人的精神状态、心理状态做出分析,提高诊断的准确率。在刑事犯罪领域,通过对嫌疑人表情信息、肢体语言的分析,可以进行测谎判别、嫌疑人分析等。

心理学家Mehrabiadu指出在人们交流过程中,面部表情传达了55%的有用信息,占感情信息总量的一半以上。1971年Ekman提出7种最基本的表情,分别是高兴、悲伤、惊讶、生气、厌恶、恐惧和中性。近年来由于深度学习超强的特征学习能力,大量基于深度学习的人脸表情识别方法被提出。

人脸表情识别步骤

人脸表情识别主要步骤有三步:预处理、人脸表情特征学习和特征分类。

深度动态序列人脸表情识别——论文笔记-编程知识网

人脸表情识别一般步骤

预处理

人脸对齐

拿到训练数据后,第一步是检测人脸,然后去掉背景和无关区域。Viola-Jones 人脸检测器是一个经典的广泛使用的人脸检测方法,在许多工具箱中都有实现(例如 OpenCV 和 Matlab)。得到人脸边界框后,原图像可以裁剪至面部区域。人脸检测之后,可以利用人脸关键点标定进一步提高 FER 的效果。根据关键点坐标,人脸可以由放射变换显示到统一的预定义模版上,减少旋转和面部变形带来的变化。目前最常用的人脸标定方法是 IntraFace,在许多深度 FER 中得到了应用。该方法使用级联人脸关键点定位,即 SDM,可以准确预测 49 个关键点。部分研究用到了MoT(mixtures of trees)结构模型来找特征点位置。近来,深度学习方法如多任务级联卷积网络MTCNN在人脸对齐点表现优越。为了在复杂环境下实现更好的人脸对齐,Yu将三个探测子:JDA探测子、DCNN探测子和MoT探测子结合来相互补偿。

数据增强

深度神经网络需要足够的训练数据才能保证在给定识别任务上的泛化性能。然而用于 FER 的公开数据库一边都达不到这样的训练数据量,因此数据增强就成了深度表情识别系统非常重要的一个步骤。数据增强可以分为两类:线下数据增强和在线数据增强。

深度 FER 的线下数据增强主要是通过一些图像处理操作来扩充数据库。最常用的方法包括随机干扰和变形,例如旋转、水平翻转、缩放等。这些处理可以生成更多的训练样本,从而让网络对出现偏移和旋转的人脸更健壮。除了基本的图像操作,也可以利用 CNN 或 GAN 来生成更多的训练数据。

在线数据增强方法一般都集成在深度学习工具箱中,来降低过拟合的影响。在训练过程中,输入样本会被随机中心裁剪,并且水平翻转,得到比原训练数据库大 10 倍的数据库。

人脸归一化

光照和头部姿态变化会有损 FER 的表现,因此我们介绍两类人脸归一化方法来减轻这一影响:光照归一化和姿态归一化。

光照归一化:INFace 工具箱是目前最常用的光照归一化工具。研究表明直方图均衡化结合光照归一化技巧可以得到更好的人脸识别准确率。光照归一化方法主要有三种:基于各向同性扩散归一化(isotropic diffusion-basednormalization)、基于离散余弦变换归一化(DCT-based normalization)和高斯差分(DoG)。

姿态归一化:一些 FER 研究利用姿态归一化产生正面人脸视角,其中最常用的方法是 Hassner 等人提出的:在标定人脸关键点之后,生成一个 3D 纹理参考模型,然后估测人脸部件,随后,通过将输入人脸反投影到参考坐标系上,生成初始正面人脸。最近,也有一系列基于生成式对抗网络GAN 的深度模型用于生成正面人脸(FF-GAN,TP-GAN,DR-GAN)。

 

人脸表情特征学习

卷积神经网络CNN

CNN 对人脸位置变化和尺度变化有更强的健壮性,而且对于未见人脸姿态变化比多层感知器有更好的表现。

深度置信网络DBN

DBN 由 Hinton 等人提出,可学习提取训练数据的深度层级表示。DBN 训练有两个步骤:预训练和微调。首先用逐层贪婪训练方法初始化深度网络,可以在不需要大量标注数据的情况下防止局部最优解。然后,用有监督的梯度下降对网络的参数和输出进行微调。

深度自编码器DAE

深度自编码器通过最小化重构误差来对输入进行重构。DAE 有许多变体:降噪自编码器,可从部分损坏的数据中恢复原始未损坏数据;稀疏自编码网络,增强学习得到的特征表示的稀疏性;压缩式自编码器,增加活动相关正则项以提取局部不变特征;卷积自编码器,使用卷积层代替 DAE 中的隐藏层。

递归神经网络RNN

RNN 是联结主义模型,能够捕捉时域信息,更适合于序列数据预测。训练 RNN 用到的是时间反向传播算法BPTT。由 Hochreiter 和 Schmidhuber 提出的 LSTM 是一种特殊形式的 RNN,用于解决传统 RNN 训练时出现的梯度消失和爆炸问题。

人脸表情分类

在学习深度特征之后,FER 的最后一步是识别测试人脸的表情属于基本表情的哪一类。深度神经网络可以端到端地进行人脸表情识别。一种方法是在网络的末端加上损失层,来修正反向传播误差,每个样本的预测概率可以直接从网络中输出。另一种方法是利用深度神经网络作为提取特征的工具,然后再用传统的分类器,例如 SVM 和随机森林,对提取的特征进行分类。

人脸表情数据集(视频序列)

Database

Samples

Subjects

来源

Elicit

Expression distribution

CK+

593

123

实验室

摆拍 自然

7种+耻辱

MMI

2900videos

25

实验室

摆拍

7种

AFEW 7.0

1809

 

电影

摆拍、自然

7种

Oulu-CASIA

2880

80

实验室

摆拍

6种(无中性)

 

研究现状

 

帧聚合

相比于静态图片中的表情识别,连续动态视频序列中能包含更多的关于表情变化的微小信息。但由于给定的视频帧中各具有不同的表情强度,直接测量目标数据集中的每帧误差不能产生令人满意的效果,很多方法用于聚合每个序列的网络输出帧,以实质上改善 FER 性能。我们将这些方法分为两类:决策层帧聚合和特征层帧聚合。

决策层帧聚合

Kahou等人提出一种决策层帧聚合,将所有帧的n-class概率向量联结成一个序列,构造一个n*10的特征向量用于后续分类。因为序列有不同帧数,按照图示方法提出两种聚合方法。

深度动态序列人脸表情识别——论文笔记-编程知识网

如图,(a)对于超过 10 帧的序列,将总帧数按时间分为 10 个独立帧组,将其概率矢量平均。(b)对于少于 10 帧的序列,通过均匀重复帧,将序列扩张至 10 个帧。

 

特征层帧聚合:

Liu等人提取了给定序列的图像特征,然后应用了三个模型:特征矢量(线性子空间),协方差矩阵,和多维高斯分布。Bargal提出了统计(STAT)编码模型来计算并联结所有帧的特征维度的平均值、方差、最小值、最大值。

深度动态序列人脸表情识别——论文笔记-编程知识网

Bargal论文中网络特征层帧聚合

为了改善STAT编码,Knyazev等首次移除最大值特征,然后计算并平均每帧的特征变化,最后计算平均每个神经元的一维傅里叶特征变换来加入光谱特征。

表情强度网络

Zhao等人提出了峰值引导的深度网络(PPDN),用于强度不变的表情识别。PPDN 将来自同一个人的一对峰值和非峰值的同类表情图像作为输入,然后利用 L2 范数损失来最小化两张图片之间的距离。作者用峰值梯度抑制(PGS)作为反向传播机制,用非峰值表情的特征逼近峰值表情的特征。同时在 L2 范数最小化中忽略峰值表情的梯度信息来避免反转。

深度动态序列人脸表情识别——论文笔记-编程知识网

    Zhao提出的PPDN网络。训练时,PPDN联合优化两幅表情图片的L2 范数损失和交叉熵损失来训练。测试时,PPDN使用一副静态图片作为输入来预测。

Kim利用一个序列中五种不同强度级别((onset,onset to apex transition, apex, apex to offset transition andoffset)使用五个损失函数来调整空间特征学习,其中两个损失函数被用来较少表情分类错误和类间表情变化。为了表达连续时间内的表情变化,两个损失函数用来减少强度分类错误和类间强度变化,这样每类表情包含不同强度的聚类。为了保持强度的连贯,一个损失函数用来编码中间强度。Kim同时提出了一个卷积编码-解码网络来产生参考脸,结合contrastive metric loss 和 reconstruction loss来为不同目标滤除无关信息。

深度空间 – 时间 FER 网络

时空 FER 网络将一个时间窗口中的一系列帧作为表情强度未知的输入,并利用图像序列中的纹理信息和时间依赖性进行更细微的表情识别。

RNN + C3D:

Graves首次将双向LSTM用于提取3D人脸模型中的人脸表情。C3D是用权重能由时间轴分享的3D卷积核而不是传统的2D核,广泛用于动态人脸表情识别来抓取时空特征。Liu 等人提出的 3DCNN-DAP 模型。输入 n 帧序列与 3D 滤波器做卷积,13*c*k 部分滤波器对应 13 个人为定义的面部区域,用于卷积 k 个特征图,生成 c 个表情类别对应的面部活动区域检测图。

深度动态序列人脸表情识别——论文笔记-编程知识网

Liu提出的3DCNN-DAP模型

面部关键点轨迹:

心理学研究表明主要面部(眼睛、鼻子、嘴巴)的动态变化包含最多表情的描述信息,因此提出面部关键点轨迹来捕捉连续序列中面部的动态变化。

Jung将卷积神经网络与深度神经网络结合起来形成新的DTAGN网络,卷积神经网络基于图像序列训练,深度神经网络基于时间的面部标志点训练,联合训练 DTAN(属于“RNN-C3D”)和 DTGA(“属于面部关键点轨迹”),最后将两个网络提取的面部特征点结合成一个一维轨迹向量,输入到分类器中进行表情识别。Yan受这个方法的启发,通过将序列中所有帧的归一化轨迹特征作为CNN的输入一起来提取特征,使用双向RNN学习时序相关性。Hasani用人脸特征点和残差单元的输入向量的乘积结合轨迹特征来代替原始的3D Inception-ResNet网络的残差单元,最后与LSTM单元级联。

深度动态序列人脸表情识别——论文笔记-编程知识网

Jung提出的联合微调方法DTAGN网络

Zhang提出了时域网络 PHRNN 用于关键点追踪,来分析表情序列,提取了表情从开始到结束的三帧序列(onset、apex、offset), 将人脸图像不做分割直接放入网络中,提取眉毛、眼睛、鼻子、嘴巴的特征点分别放入四个子网中提取低层特征,在上层网络中融合成高层特征训练,并结合空域网络 MSCNN (多信号卷积网络)用于身份不变特征,对面部表情的识别信号和验证信号来增加不同表情间的差异而减少身份信息的差异,使训练出来的特征与表情相关,与人的性别、年龄无关。两个网络分别训练后进行概率融合来识别表情。

深度动态序列人脸表情识别——论文笔记-编程知识网

Zhang提出的PHRNN + MSCNN

级联网络:先提取特征,然后将特征输入到时序网络(如LSTM)中。

Baccouche提出了一种卷积稀疏自动编码来非监督的提取稀疏并平移不变的特征,然后训练LSTM分类器用于学习特征的时间演变。Ouyang提出一种更灵活的网络ResNet-LSTM,允许低层CNN网络中的节点直接与LSTM相连来捕捉时空信息。除将LSTM与CNN全连接层相连,Kankanamge提出将CNN最后一层卷积层的特征直接输入到LSTM中获取长范围的相关,不损失全局相关性。

网络集成:训练多个时空特征网络,最后将各个网络的输出融合。

Simonyan等人提出将双流 CNN 用于视频动作识别,其中一个 CNN 网络用于提取视频帧光流信息,另一个 CNN 用于提取静止图像的表面信息,然后将两个网络的输出融合。该网络结构对 FER 领域也有所启发。Sun提出一个多通道网络从表情脸提取空间信息,从中性到表情的变化间提取时间信息即光流,并研究了三种特征融合策略:score average fusion, SVM-basedfusion 和 neural-network-based fusion.

 

困难与挑战

由于 FER 研究将其主要关注点转移到具有挑战性的真实场景条件下,许多研究人员利用深度学习技术来解决这些困难,如光照变化、遮挡、非正面头部姿势、身份偏差和低强度表情识别。Ranzato提出了一个深度生成模型,使用mPoT作为深度置信网络DBN的第一层来模拟像素级表示,然后训练DBN给输入分配合适的像素分布,遮挡的像素可以被使用条件分布序列重建的第一层像素表示来填满。He采用热红外线图像来消除光照影响进行人脸表情识别。

考虑到 FER 是一个数据驱动的任务,并且训练一个足够深的网络需要大量的训练数据,深度 FER 系统面临的主要挑战是在质量和数量方面都缺乏训练数据。

由于不同年龄、文化和性别的人以不同的方式做出面部表情,因此理想的面部表情数据集应该包括丰富的具有精确面部属性标签的样本图像,不仅仅是表情,还有其他属性,例如年龄、性别、种族,这将有助于跨年龄、跨性别和跨文化的深度 FER 相关研究。另一方面,对大量复杂的自然场景图像进行精准标注是构建表情数据库一个明显的障碍。合理的方法是在专家指导下进行可靠的众包,或者可以用专家修正过的全自动标注工具提供大致准确的标注。

需要考虑的另一个主要问题是,尽管目前表情识别技术已经被广泛研究,但是我们所定义的表情只涵盖了特定种类的一小部分,而不能代表现实互动中人类可以做出的所有表情。目前有两个新的模型可以用来描述更多的情绪:FACS 模型,通过结合不同的面部肌肉活动单元来描述面部表情的可视变化;维度模型提出了两个连续值的变量,即评价值和唤起程度(Valence-arousal),连续编码情绪强度的微小变化。

除此之外,不同的数据库之间的偏差和表情类别的不平衡分布是深度 FER 领域中要解决的另外两个问题。对于数据库之间的偏差问题,可以用深度域适应和知识蒸馏来解决。对于表情类别不平衡问题,一种解决方案是利用数据增强和合成来平衡预处理阶段中的类分布。另一种选择是在训练期间给深度网络增加代价敏感的损失层。