AI 前线导读: 面部表情识别技术 (FER) 正逐渐从实验室数据集测试走向挑战真实场景下的识别. 随着深度学习技术在各领域中的成功, 深度神经网络被越来越多地用于学习判别性特征表示. 目前的深度面部表情识别系统通常面临两个关键问题: 由于缺乏足够的训练数据所造成的过度拟合, 和与表情无关的变化, 如照明, 头部姿势和身份偏置信息.
这篇文章是对深度面部表情识别的全面综述, 也是 AI 前线第 30 篇论文导读. 首先, 我们结合相关背景知识, 介绍深度 FER 系统的标准流程. 然后, 我们介绍了目前在文献中广泛使用的数据集, 并提供这些数据集公认的数据选择和评价准则. 对于目前最先进的深度 FER 技术, 我们回顾了现有的基于静态图像和动态图像序列的 FER 深度神经网络设计和相关的训练策略, 并且讨论了它们的优点和局限性. 接着, 我们将综述扩展到其他相关的问题和应用场景. 最后, 我们分析了该领域未来的挑战和相应的机会, 以及设计健壮的深度 FER 系统的未来方向.
面部表情是人类表达自己的情绪状态和意图最强大, 最自然和最普遍的信号之一. 面部表情自动分析在社交机器人, 医疗, 驾驶员疲劳监测等许多其他的人机交互系统中有大量应用.
FER 系统根据特征表示可以分为两类: 静态图像 FER 和动态序列 FER. 在基于静态图像的方法中, 特征表示仅由单张图片的空间信息进行编码, 而基于动态的方法需要考虑输入面部表情连续帧之间的时间关系.
大部分传统方法使用了手动提取的特征, 或者浅层学习. 但是 2013 年后, 各类表情识别比赛, 例如 FER2013 和真实场景情绪识别 (EmotiW) 从充满挑战性的真实世界场景中收集了十分充足的训练数据, 推动了 FER 技术从实验室走向真实场景. 由于数据量的增加, 传统特征已经不足以表示与面部表情无关的因素的多样性. 伴随着芯片处理能力的大幅提升 (GPU 单元) 和各种优秀神经网络结构的设计涌现, 许多领域开始转向深度学习方法, 大幅提升了识别准确率. 同样地, 深度学习技术被越来越多地用于应对真实环境下的表情识别所带来的挑战.
图 1 人脸表情识别数据集和方法
尽管深度学习具有强大的特征学习能力, 它在 FER 中的应用还有一些问题. 首先, 深度神经网络需要大量训练数据来避免过拟合. 然而, 现存的面部表情数据库不足以训练那些在目标识别任务中有着显著效果的深度网络. 除此之外, 由于不同人物属性, 例如年龄, 性别, 宗教背景和表达能力, 主体间具有高变化性. 姿态, 光照和遮挡在不受限的表情场景下十分常见. 这些因素和表情之间是非线性关系, 因此需要增强深度网络对类内变化的健壮性, 以及学习有效的表情特征表示.
深度面部表情识别
图 2 深度面部表情识别系统
1. 预处理
自然场景下会出现许多与面部表情无关的变化特征, 例如不同的背景, 光照, 头部姿势等等. 因此, 在训练深度神经网络之前, 需要利用预处理对人脸的视觉语义信息进行标定和对齐.
1.1 人脸对齐
人脸对齐是许多与人脸相关的识别任务中必需的预处理步骤. 下面我们将介绍一些常用的方法以及在深度表情识别系统中可用的公开实现.(人脸对齐综述可参考论文: Automatic analysis of facial actions: A survey,https://ieeexplore.ieee.org/abstract/document/7990582/ )
拿到训练数据后, 第一步是检测人脸, 然后去掉背景和无关区域. Viola-Jones 人脸检测器是一个经典的广泛使用的人脸检测方法, 在许多工具箱中都有实现(例如 OpenCV 和 Matlab). 得到人脸边界框后, 原图像可以裁剪至面部区域. 人脸检测之后, 可以利用人脸关键点标定进一步提高 FER 的效果. 根据关键点坐标, 人脸可以利用放射变换显示到统一的预定义模版上. 这一步可以减少旋转和面部变形带来的变化. 目前最常用的人脸标定方法是 IntraFace, 在许多深度 FER 中得到了应用. 该方法使用级联人脸关键点定位, 即 SDM, 可以准确预测 49 个关键点.
1.2 数据增强
深度神经网络需要足够的训练数据才能保证在给定识别任务上的泛化性能. 然而用于 FER 的公开数据库一边都达不到这样的训练数据量, 因此数据增强就成了深度表情识别系统非常重要的一个步骤. 数据增强技巧可以分为两类: 线下数据增强和在线数据增强.
深度 FER 的线下数据增强主要是通过一些图像处理操作来扩充数据库. 最常用的方法包括随机干扰和变形, 例如旋转, 水平翻转, 缩放等. 这些处理可以生成更多的训练样本, 从而让网络对出现偏移和旋转的人脸更健壮. 除了基本的图像操作, 也可以利用 CNN 或 GAN 来生成更多的训练数据.
在线数据增强方法一般都集成在深度学习工具箱中, 来降低过拟合的影响. 在训练过程中, 输入样本会被随机中心裁剪, 并且水平翻转, 得到比原训练数据库大 10 倍的数据库.
1.3 人脸归一化
光照和头部姿态变化会有损 FER 的表现, 因此我们介绍两类人脸归一化方法来减轻这一影响: 光照归一化和姿态归一化.
光照归一化: INFace 工具箱是目前最常用的光照归一化工具. 研究表明直方图均衡化结合光照归一化技巧可以得到更好的人脸识别准确率. 光照归一化方法主要有三种: 基于各向同性扩散归一化 (isotropic diffusion-based normalization), 基于离散余弦变换归一化(DCT-based normalization) 和高斯差分(DoG).
姿态归一化: 一些 FER 研究利用姿态归一化产生正面人脸视角, 其中最常用的方法是 Hassner 等人提出的: 在标定人脸关键点之后, 生成一个 3D 纹理参考模型, 然后估测人脸部件, 随后, 通过将输入人脸反投影到参考坐标系上, 生成初始正面人脸. 最近, 也有一系列基于 GAN 的深度模型用于生成正面人脸(FF-GAN,TP-GAN,DR-GAN).
特征学习深度网络
深度学习通过多层网络结构, 进行多种非线性变换和表示, 提取图片的高级抽象特征. 下面我们简要介绍一些用于 FER 的深度学习方法.
2.1 卷积神经网络(Convolutional neural network, CNN)
CNN 对人脸位置变化和尺度变化有更强的健壮性, 而且对于未见人脸姿态变化比多层感知器有更好的表现.
表 1 用于 FER 的 CNN 模型设置和特性.
其他 CNN 驱动模型在 FER 的应用:
基于区域的 CNN(R-CNN)在 FER 中用于学习特征:
Facial expression recognition in the wild based on multimodal texture features
Combining multimodal features within a fusion network for emotion recognition in the wild
Faster R-CNN 通过生成高质量候选区域, 鉴别面部表情:
Facial expression recognition with faster r-cnn
2.2 深度置信网络(Deep belief network, DBN)
DBN 由 Hinton 等人提出, 可学习提取训练数据的深度层级表示. DBN 训练有两个步骤: 预训练和微调. 首先用逐层贪婪训练方法初始化深度网络, 可以在不需要大量标注数据的情况下防止局部最优解. 然后, 用有监督的梯度下降对网络的参数和输出进行微调.
2.3 深度自编码器(Deep autoencoder, DAE)
与之前介绍的网络不同, 深度自编码器通过最小化重构误差来对输入进行重构. DAE 有许多变体: 降噪自编码器, 可从部分损坏的数据中恢复原始未损坏数据; 稀疏自编码网络, 增强学习得到的特征表示的稀疏性; 压缩式自编码器, 增加活动相关正则项以提取局部不变特征; 卷积自编码器, 使用卷积层代替 DAE 中的隐藏层.
2.4 递归神经网络(Recurrent neural network, RNN)
RNN 是联结主义模型, 能够捕捉时域信息, 更适合于序列数据预测. 训练 RNN 用到的是时间反向传播算法(back propagation through time, BPTT). 由 Hochreiter 和 Schmidhuber 提出的 LSTM 是一种特殊形式的 RNN, 用于解决传统 RNN 训练时出现的梯度消失和爆炸问题.
面部表情分类
在学习深度特征之后, FER 的最后一步是识别测试人脸的表情属于基本表情的哪一类. 深度神经网络可以端到端地进行人脸表情识别. 一种方法是在网络的末端加上损失层, 来修正反向传播误差, 每个样本的预测概率可以直接从网络中输出. 另一种方法是利用深度神经网络作为提取特征的工具, 然后再用传统的分类器, 例如 SVM 和随机森林, 对提取的特征进行分类.
人脸表情数据库
表 2 人脸表情公开数据库概览
- Elicit(表情产生方式):P = posed(摆拍),S = spontaneous(自然)
- Condit(收集条件):Lab(实验室收集),web(网页抓取),Movie(电影截图)
先进算法
我们将目前的主要工作按数据类型分为两类: 静态图像深度 FER 网络和动态序列图像深度 FER 网络.
1. 静态图像深度 FER 网络
表 3 静态图像深度 FER 网络算法评测
1.1 预训练和微调
直接在相对较小的人脸表情数据集上训练深度网络容易导致过拟合. 为了解决这个问题, 许多研究使用额外的任务导向的数据从零开始预训练自定义的网络, 或者在已经预训练好的网络模型 (AlexNet , VGG, VGG-face 和 GoogleNet) 上进行微调.
辅助数据可以选择大型人脸识别数据库(CASIA WebFace, Celebrity Face in the Wild (CFW) , FaceScrub dataset), 或者相对较大的 FER 数据库(FER2013 和 Toronto Face Database).Knyazev 等人发现在更大的 FR 数据库上训练的效果不好的 FR 模型, 经过 FER2013 数据库的微调, 反而能在表情识别任务中达到更好的效果. 在大型 FR 数据库上预训练对于表情识别准确率有正面影响, 并且进一步用人脸表情数据库微调可以有效提升识别准确率.
Ng 等人提出了了多阶段微调方法: 第一阶段在预训练模型上使用 FER2013 进行微调, 第二阶段利用目标数据库的训练数据进行微调, 使模型更切合目标数据库.
图 3 不同微调方式的结合. 其中 "FER28" 和 "FER32" 是 FER2013 数据库的不同部分."EmotiW" 是目标数据库. 这一两阶段微调方法达到了最好的效果.
Ding 等人发现由于 FR 和 FER 数据库之间的差距, 人脸主导的信息仍然遗留在微调的 FR 网络中, 削弱了网络表示不同表情的能力. 于是他们提出了一个新的训练算法, 叫做 "FaceNet2ExpNet", 进一步整合 FR 网络学习到的人脸区域知识来修正目标 FER 网络的训练. 训练分为两个阶段:
图 4 (a)阶段, 固定深度人脸网络, 它提供特征级别的正则项, 利用分布函数使表情网络的特征与人脸网络的特征逐渐逼近.(b)阶段, 进一步提升学习到的特征的判别性, 增加随机初始化的全卷积层, 然后利用表情类标信息与整体表情网络联合训练.
由于微调人脸网络已经在表情数据集上达到了有竞争性的表现, 因此可以作为表情网络的良好初始化. 此外, 由于全连接层通常捕获更多领域特定的语义特征, 所以仅使用人脸网络来指导卷积层的学习, 而全连接层则利用表情信息从零开始训练.
1.2 多样化网络输入
传统方法通常使用整张人脸的 RGB 图像作为网络输入来学习特征, 然而这些原始像素缺少有效信息, 例如纹理和旋转平移缩放的不变性. 一些方法采取手动提取的特征和它们的延伸信息作为网络输入来解决这个问题.
图 5 图像像素 (左) 和 LBP 特征 (中).Levi 等人提出将这两种信息映射到一个 3D 度量空间(右) 作为 CNN 的输入.
除了 LBP 特征, SIFT 特征, AGE(角度 + 梯度 + 边缘)特征, NCDV(邻域 - 中心差分矢量)特征均被用于多样化网络输入.
1.3 辅助网络块, 网络层
在 CNN 结构的基础上, 一些研究提出了增加辅助网络块和网络层结构来增强与表情相关的特征表示能力.
图 6 专为深度人脸表情识别设计的代表性网络层, 网络块结构
(a) Hu 等人将 3 类有监督网络块嵌入 CNN 结构的实现浅层, 中层和深层的监督. 这些块根据原网络的层级特征表示能力设计. 随后, 每个块的类间评分在连接层进行累积, 进行第二级的监督.
(b) Cai 等人提出岛损失层. 特征提取层计算的岛损失层和决策层计算的 softmax 损失结合起来监督 CNN 训练.
(c) Liu 等人提出 (N+M) 组聚类损失层. 在训练过程中, 身份感知的难分样本挖掘和积极样本挖掘技巧用于降低同一表情类别下身份内部的变化所带来的影响.
1.4 网络集成
研究表明, 多个网络的集成比单个网络的表现要好. 网络集成有两个需要考虑的因素:
(1)网络要具有足够的多样性, 以保证互补.
(2)合适的集成方法可以有效地累积组成网络.
对于第一个因素, 需要考虑不同的训练数据库和不同的网络结构及参数来增加多样性.
对于第二个因素, 网络可以在两个不同层面上进行组合: 特征层和决策层. 对于特征层, 最常采取的方法是将不同网络学习得到的特征连接起来, 组成一个新的特征矢量, 来表示图像. 在决策层, 常用的三种方法是: 多数投票, 简单平均和加权平均.
图 7 在特征层面和决策层面的网络集成系统
(a)特征层集成: Bargal 等人提出将三种不同特征 (VGG13 fc5 层输出, VGG16 fc7 层输出和 Resnet 池化层输出) 在归一化后连接在一起, 生成一个单特征矢量(FV), 然后用其描述输入帧.
(b)决策层集成: Kim 等人提出 3 级组合结构, 在决策层融合, 获取充分的决策多样性.
1.5 多任务网络
许多现有的 FER 网络专注于单个任务, 并且学习对表情敏感的特征, 而不考虑其他潜在因素之间的相互作用. 然而, 在现实世界中, FER 与各种因素交织在一起, 如头部姿势, 光照和主体身份(面部形态). 为了解决这一问题, 引入了多任务学习, 将知识从其他相关任务中迁移出来, 消除有害因素.
图 8 FER 多任务网络示例. 在 Zhang 等人提出的 MSCNN 中, 在训练时一对图像输入 MSCNN 网络. 表情识别任务使用交叉熵损失, 学习表情变化特征, 面部识别人任务使用对比损失, 减少同类表情特征之间的变化.
1.6 级联网络
在级联网络中, 处理不同任务的各种模块按顺序组合, 形成更深的网络, 其中前一模块的输出作为后一模块的输入. 相关研究提出用不同结构的新组合来学习层级特征, 通过这些特征可以逐层滤除与表情无关的变化因素.
图 9 FER 级联网络示例. Liu 等人提出 AU- 感知深度网络(AUDN), 有 3 个序列模块组成: 在第一个模块, 一个 2 层的 CNN 训练生成一个过完备的表示, 编码所有位置的所有表情的表面变化. 在第二个模块, AU- 感知的接受野层用于搜索过完备表示的子集. 在最后一个模块, 用多层 RBM 结构学习层级特征.
2. 动态序列图像深度 FER 网络
2.1 帧聚合
由于给定视频片段中的帧具有不同的表情强度, 因此直接测量目标数据集中的每帧误差不能产生令人满意的效果. 很多方法用于聚合每个序列的网络输出帧, 以实质上改善 FER 性能. 我们将这些方法分为两类: 决策层帧聚合和特征层帧聚合.
决策层帧聚合:
图 10 Kahou 等人提出决策层帧聚合.(a)对于超过 10 帧的序列, 将总帧数按时间分为 10 个独立帧组, 将其概率矢量平均.(b)对于少于 10 帧的序列, 通过均匀重复帧, 将序列扩张至 10 个帧.
特征层帧聚合: Liu 等人提取了给定序列的图像特征, 然后应用了三个模型: 特征矢量(线性子空间), 协方差矩阵, 和多维高斯分布.
2.2 表情强度网络
大多数方法主要关注识别峰值强度表情, 而忽略了微妙的低强度表情. 在本节中, 我们介绍了几个深度网络, 以一定强度的训练样本为输入, 从而利用不同强度的序列中同一主体表情的内在联系.
图 11 Zhao 等人提出了峰值引导的深度网络 (PPDN), 用于强度不变的表情识别. PPDN 将来自同一个人的一对峰值和非峰值的同类表情图像作为输入, 然后利用 L2 范数损失来最小化两张图片之间的距离. 作者用峰值梯度抑制(PGS) 作为反向传播机制, 用非峰值表情的特征逼近峰值表情的特征. 同时在 L2 范数最小化中忽略峰值表情的梯度信息来避免反转.
2.3 深度空间 - 时间 FER 网络
虽然上述帧聚合可以集成所学习的帧特征以产生表示整个视频序列的单个特征矢量, 但关键的时间依赖性却没有被利用上. 相比之下, 时空 FER 网络将一个时间窗口中的一系列帧作为表情强度未知的输入, 并利用图像序列中的纹理信息和时间依赖性进行更细微的表情识别.
RNN 和 C3D:
图 12 Liu 等人提出的 3DCNN-DAP 模型. 输入 n 帧序列与 3D 滤波器做卷积, 13*c*k 部分滤波器对应 13 个人为定义的面部区域, 用于卷积 k 个特征图, 生成 c 个表情类别对应的面部活动区域检测图.
面部关键点轨迹:
图 13 Zhang 等人提出空间 - 事件网络. 时域网络 PHRNN 用于关键点追踪, 空域网络 MSCNN 用于身份不变特征, 两个网络分别训练. 然后, 从两个网络中预测概率的概率进行融合, 进行时空 FER.
网络集成:
Simonyan 等人提出将双流 CNN 用于视频动作识别, 其中一个 CNN 网络用于提取视频帧光流信息, 另一个 CNN 用于提取静止图像的表面信息, 然后将两个网络的输出融合. 该网络结构对 FER 领域也有所启发.
图 14 Jung 等人提出联合微调方法, 联合训练 DTAN(属于 "RNN-C3D")和 DTGA("属于面部关键点轨迹").
表 4 动态深度表情识别的代表方法在常用数据集上的评测结果.
S = Spatial network(空域网络),T = Temporal network(时域网络),LOSO = leave-one-subject-out(留一法交叉验证)
领域相关问题
遮挡和非正面姿态是 FER 的两个主要挑战, 它们可能会改变原始表情的视觉表观, 尤其在真实场景中.
尽管 RGB 数据是目前深度 FER 的标准数据, 这些数据很容易受到光照条件的影响, 并且不同的人脸部件缺乏一定的深度信息.
真实场景下的人脸表情合成, 可以通过互动界面合成不同的面部表情.
除了利用 CNN 进行 FER 之外, 一些研究利用可视化技术, 定性地分析 CNN 对 FER 基于表面的学习过程有何贡献, 并定性地确定人脸的哪些部分能产生最具有判别性的信息.
在原始表情分类问题的基础上, 提出了一些新的问题: 主要和补充情感识别挑战, 以及真假情感挑战.
机遇与挑战
由于 FER 研究将其主要关注点转移到具有挑战性的真实场景条件下, 许多研究人员利用深度学习技术来解决这些困难, 如光照变化, 遮挡, 非正面头部姿势, 身份偏差和低强度表情识别. 考虑到 FER 是一个数据驱动的任务, 并且训练一个足够深的网络需要大量的训练数据, 深度 FER 系统面临的主要挑战是在质量和数量方面都缺乏训练数据.
由于不同年龄, 文化和性别的人以不同的方式做出面部表情, 因此理想的面部表情数据集应该包括丰富的具有精确面部属性标签的样本图像, 不仅仅是表情, 还有其他属性, 例如年龄, 性别, 种族, 这将有助于跨年龄, 跨性别和跨文化的深度 FER 相关研究. 另一方面, 对大量复杂的自然场景图像进行精准标注是构建表情数据库一个明显的障碍. 合理的方法是在专家指导下进行可靠的众包, 或者可以用专家修正过的全自动标注工具提供大致准确的标注.
需要考虑的另一个主要问题是, 尽管目前表情识别技术已经被广泛研究, 但是我们所定义的表情只涵盖了特定种类的一小部分, 而不能代表现实互动中人类可以做出的所有表情. 目前有两个新的模型可以用来描述更多的情绪: FACS 模型, 通过结合不同的面部肌肉活动单元来描述面部表情的可视变化; 维度模型提出了两个连续值的变量, 即评价值和唤起程度(Valence-arousal), 连续编码情绪强度的微小变化.
除此之外, 不同的数据库之间的偏差和表情类别的不平衡分布是深度 FER 领域中要解决的另外两个问题. 对于数据库之间的偏差问题, 可以用深度域适应和知识蒸馏来解决. 对于表情类别不平衡问题, 一种解决方案是利用数据增强和合成来平衡预处理阶段中的类分布. 另一种选择是在训练期间给深度网络增加代价敏感的损失层.
最后, 在现实应用中的人类的表情涉及到不同视角的编码, 而面部表情只是其中一种形态. 虽然基于可见人脸图像的表情识别可以达到令人满意的结果, 但是未来应该将表情识别与其他模型结合到高级框架中, 提供补充信息并进一步增强鲁棒性. 例如, EmotiW 挑战和音频视频情感挑战 (AVEC) 中的参与者认为音频模型是第二重要的元素, 并采用多种融合技术来进行多模态的人脸表情识别.
来源: http://www.mzh.ren/fer-face-reconigze-research.html