论文阅读Deep Facial Expression Recognition: A Survey

总述:这篇论文对表情识别的相关信息进行了全面的总结,其中包括对FER相关的数据集介绍、对基于深度神经网络的静态图片和动态图片序列(视频)FER相关算法的优缺点总计,以及对FER面临的机遇和挑战给出了说明。

在这篇文章中,作者抛出的两个主要问题是:

(1)数据集的缺乏(神经网络的训练需要大量的数据来避免过拟合)

(2)无关因素对FER的影响(光照、头部姿态、身份偏差)

我需要特别关注的问题:头部姿态和面部遮挡问题的解决。

针对这几个问题,去阅读论文并且寻找作者给出的答案。

一、数据集

(1)数据集基本情况

文中介绍了16种常用数据集,并且分别对它们的图片数量、受试者数量采集环境以及表情分布进行了对比说明。

其中CK+、MMI、AFEW 7.0、Oulu-CASIA共5个数据集是视频或者图片序列,其他剩余11个为静态图片数据集。

EmotioNet和RAF-DB中包含复合表情,Multi-PIE中的表情是:Smile、surprised、squint、disgust、scream 和neutra。其他数据集均是6种基本表情(anger、disgust、fear、happiness、sadness andsurprise)加上另一种表情(neutral or contempt)

在采集方式上面,FER-2013、EmotionNet、RAF-DB、AffectNet、ExpW是在网络上收集到的图片,AFEW 7.0和SFEW 2.0是在电影中寻找的数据,其他均是在实验室环境下获得的数据。

数据数量方面,ExpW有9多张图片,AffectNet有45张图片,EmotioNet有100张图片,Multi-PIE有75张图片,其他数据集的图片数量均在3以下。(由此可以看到,大部分的数据集数据量偏少,因此数据增强会很有必要)。

值得注意的是,AFEW数据集中是在电影中收集的片段,包括了头部姿态、遮挡和光照变化的数据;BU-3DFE数据集是多视角的数据,常用于三维面部面部表情分析。

(2)数据增强

通过上面数据集的情况可以看到,很多数据集的数据量是不能满足深度学习对数据的需求量,从而因为数据的缺乏会很容易导致模型过拟合,因此数据增强是非常重要的一步操作。数据增强的方法可以分为动态数据扩充和离线动态扩充。

动态(线上)数据扩充:在深度学习的工具包中嵌入,在训练的过程中增加数据,避免过拟合,这种方法更适用于较大的数据集。

离线数据增强:通过对原图片平移、旋转、添加噪音、对比度变换等方式来增强数据,可以使用3DCNN来生成具有不同表情强度的图片,同时GAN可以生成不同姿态和表情的图片,从而来增强数据。这种方法适用于较小的数据集。

提出者

时间

方法

D. A. Pitaloka等

2017年

旋转、比例变化、添加椒盐噪声、高斯噪声等

Z. Yu等

2017年

通过改变每一个像素的对比度和饱和度来增强数据

W. Li等

2015年

用5个滤波器(圆盘滤波器、平均滤波器、高斯滤波器、非锐化滤波器和运动滤波器)和6个仿射变换矩阵,它们通过在单位矩阵上添加少量几何变换来形式化

Z. Yu等

2015年

提出了一种更全面的仿射变换矩阵来随机生成旋转、倾斜和尺度变化的图像

I.Abbasnejad等

2017年

采用一个基于3D CNN的数据生成系统来生成具有不同表情强度的图片

Lai et al

2018年

提出了一种基于GAN的人脸正面化框架,即generator对输入的人脸图像进行正面化处理,同时保持人脸的身份和表情特征,discriminator来区分真实图像与生成的正面人脸图像

Zhang et al.

2018年

提出了一个基于GAN的模型,可以生成任意姿态和视角下的表情图片(这对解决姿态问题或许会有帮助)

二、Deep FER

 

(1)、预处理

预处理的目的是尽可能的去除干扰因素,从而便于实现更好的特征提取。预处理主要包括人脸对齐、数据增强、和归一化三个步骤。

人脸对齐可以减少面部尺度和平面类旋转导致的变化,现有的方法多是基于面部landmark来做。

数据增强增大数据量,从而避免模型过拟合;归一化主要是针对光照和头部姿态。光照归一化可以考虑与直方图均衡化相结合,并且经过证实能取得更好的效果。

姿态归一化:Hassner等人提出的方法是在定位了面部landmark之后,生成了一个适用于所有面部的3D纹理模型,从而有效地估计可见的面部成分。然后,将每个输入的人脸图像反向投影到参考坐标系中,合成初始化的人脸(即通过方法来生成非正面的部分)。还可以使用一种统计模型来同时定位地标和转换面部姿态,需要注意的是只使用正面面部图片。

(2)用于特征提取的深度网络

Convolutional neural network (CNN)常用的模型有AlexNet、VGGNet、GoogleNet、ResNet。此外还有一些比较出名的派生模型,比如Faster R-CNN和3D CNN,前者适用于单张静态图片的表情识别,而后者则适用于动态图片序列的表情识别。

Deep belief network (DBN) DBN是由Hinton等人提出的一种学习提取训练数据深层层次表示的图形化模型。传统的DBN是由一组 restricted Boltzmann machines构建的,RBMs是由可见单元层和隐藏单元层两层生成的随机模型。其训练包括pre-training和 fine-tuning两个步骤。

Recurrent neural network (RNN)RNN能够捕获时序信息,适用于任意长度的图片序列的表情识别。与传统的RNN相比,LSTM能够解决RNN会有的梯度消息和爆炸问题,并且也是适用于视频数据的处理。

(3)表情分类

end to end方式:在网络的末端增加一个loss层(常用softmax loss)来调节反向传播误差,然后由网络直接输出每个样本的预测概率。

CNN+额外分类器(常用SVM):CNN用于特征提取,之后作为输入到分类器用于最后的分类。

三、SOTA

1、静态单张图片的深度FER

(1)Pre-training 和 fine-tuning

目的:避免模型过拟合。

方法:

1)可以用人脸识别的数据库来预训练模型,然后再用表情数据集来对模型进行微调,这种方法可以很好的提高表情识别的性能。

2)分两步fine—tuning:先用FER2013数据集(非目标数据集)对预训练模型进行微调,再用EmotiW数据集(目标数据集)对模型进行微调,从而来细化模型使其更好的适应目标数据集。如下图所示。

 

3)FaceNet2ExpNet:分两步训练算法。在第一阶段,对更深层次的人脸网络进行冻结,并利用所提出的分布函数提供特征级正则化,使用于表情识别的网络的卷积特征更接近人脸网。然后,在第二阶段,为了进一步提高学习特征的识别率,使用表情标签信息,随机初始化全连接层,并与整个表情网络联合训练。

(2)多样化网络输入

目的:解决原始数据存在的缺乏均匀或规则纹理等问题。

方法:

1)用表情图片的LBP格式作为输入,可以提高识别对光照的鲁棒性。

2)利用尺度不变特征来提高对姿态的鲁棒性。

3)将纹理、角度、颜色等信息组合作为输入可以提高性能。

4)使用人脸于表情相关的关键部位作为识别的依据。比如眉毛、眼睛、嘴巴。

5)利用中心差异向量方法获取表情图片内在信息作为输入。

(3)增加额外的块或层

目的:增强网络特征学习的能力。

1)HoloNet:使用级联线性整流单元(CreLU),并且将其与残差结构相结合来增加网络深度;一个独特的inception-residual被用来学习多尺度特征以捕获表情变化。

2)Supervised Scoring Ensemble(SSE): 在主流CNN的早期隐含层中分别嵌入了三种监管块,分别用于浅层、中层和深层监管,监管块是根据原始网络的分层特征描述能力来设计的。然后,在评分链接层中聚合每一个块的分类评估结果,以此激活二层监督。如下图所示。

 

3)feature selection network (FSN):在Alexnet中嵌入特征选择机制,通过学习feature map来自动过滤掉不相关的特征,并且强调相关的特征。

4)Inconsistent Pseudo Annotations to Latent Truth((IPA2LT):不同的数据集存在标注不一致的问题,直接将不同标注的数据集合并会降低性能。IPA2LT中有一个端到端可训练的LTNet,该网络通过最大化标注的不一致来寻找潜在的truth。

5)基于中心损失(center loss),提出了两种变体来辅助softmax loss获得更多表情特征。

Island loss:被正则化用来增加不同类之间的中心距离。

Locality-preserving loss(LP loss):使每个类的局部集群紧凑。

6)基于triplet loss,提出了两种变体来代替或者协助softmax loass。

Exponential triplet-based loss:当网络更新时给difficult样本(什么是difficult样本)更高的权重。

(N+M)-tuples cluster loss:用来解决anchor选择和阈值验证困难的问题。

(4)网络整合

整合多个网络比单个网络的性能更好,需要考虑的是:网络的多样性和互补性以及有效的整合方法。

网络的多样性:可以通过使用不同的训练数据,不同的训练方式(有监督或无监督),不同的网络结构,不同的深度,神经元个数,不同的随机数初始化权重等方法来实现网络的多样性。

聚合方法:两个不同的融合阶段:特征水平(feature-level)的融合和决策(decision-level)水平的融合。

特征水平的融合:最常用的方法是将从不同网络得到的特征拼接为一个特征向量作为输入图片的描述,如下图所示。

 

决策水平的融合:三种常用准则:多数表决(Majority Voting)、简单平均(Simple average)、加权平均(Weighted Average)(不同网络的权值确定又有很多不同的方法)

多数表决(Majority Voting):使用每个网络输出的预测label来确定得票最多的,然后确定最终的分类。

简单平均(Simple average):使用从每个具有相同权重的网络中得到的后验类别概率,确定平均得分最高的类别。

加权平均(Weighted Average):使用从每个具有不同权重的网络中得到的后验类别概率,确定平均得分最高的类别。权重的确定方法?随机搜索方法、自适应方法、基于验证精度的指数加权平均值来给定权重、使用CNN来学习权重。

(5)多任务网络

目的:FER总是跟其他很多因素交织在一起,比如头部姿态、光照和个体身份信息。为了解决这一问题,引入了多任务学习,将这些信息从其他相关任务中转移出来,并解决了干扰因素(利用一些task的信息去提升另一些task的表现)。

方法:

1)学习表情相关因子的流形坐标,提出解聚训练策略,使表情相关隐藏单元不受人脸形态的影响

2)将FER同其他任务(面部地标定位、面部动作单元检测)等任同时执行可以提高FER的性能。

3)identity-aware CNN(IACNNN): 使用两个相同的子网络:一个网络使用表情敏感的对比损失来学习用于表情辨别的特征。另一个网络使用身份信息敏感的对比损失函数来学习身份相关的特征,用于与身份无关的FER。

4)属性传播方法:该方法能在不同数据集分布的情况下,利用面部表情与其他异构属性之间的内在相似性。

 

(6)级联网络

目的:将很多不同的网络级联构造一个更深层次的网络,并且前一个网络的输出将被下一个网络利用,此过程可以逐步过滤掉与表情无关的因素将会被过滤掉。

方法:

1)DBNs用于检测人脸和表情相关区域,然后用用一个自动编码器用于分类。

2)multiscale contractive convolutional network(CCNET):用于获取局部平移不变量(LTI)表示,然后一个特殊的自动编码器用来将表情相关因素与其他因素分开。

3)提出了一个改进的DBN (BDBN),在统一的循环状态下迭代地执行特征表示、特征选择和分类器构建。与无反馈的拼接方法相比,该方法通过反向传播分类错误来交替启动特征选择过程,直到收敛。因此,在此迭代过程中,FER的识别能力可以得到很大的提高。

网络整合VS级联网络:ensemble更像是“博采众长”,就是针对一个task,训练多个模型,最后把各个学习结果加权输出。cascaded则是当需要处理多个task时,前一个task的输出可以作为下一个task的输入。

(7)讨论

已有的FER系统主要关注的两个问题是:缺乏足够的多样性的训练数据和如何去除与表情无关因素(光照、头部姿态、身份信息)对FER的影响。上面讲到的方法或者网络结构在一定程度上对这两问题有解决,预训练和微调已经称为FER中解决训练数据不足和过拟合问题的主流方式,并且经证明一种很有效的方法是采用从大规模的非表情数据集到小规模的表情数据集的顺序来预训练和微调网络。但是随着大规模的野外FER数据集的建立,比如AffectNet等,end-to-end的训练方式也能取得很好到的性能。除了直接使用原始图像数据来训练深度网络外,还可以使用多种预先设计的特征来增强网络对常见干扰(如光照、头部姿势和遮挡)的鲁棒性,并迫使网络更多地关注具有表达信息的面部区域。此外,还可以通过异构输入(multiple heterogeneous)的方式来扩大数据量。通过网络整合可以解决训练数据不充分导致的过拟合问题,并且可以逐步的去除与表情无关的因素。多任务网络联合训练多个网络,考虑FER与其他次任务(如面部标志定位、面部动作单元识别和面部验证等task)之间的联系,从而可以与表情无关的因素可以被解决。级联网络采用分层训练的方式,依次的训练多个网络,因此网络学习特征的能力能够被加强。GAN的使用可以通过对人脸图像进行正面处理来解决头部姿态问题,同时保留表情特征或合成任意姿态来帮助训练姿态不变网络。同时,GAN可用于生成具有不同强度的表情图片,也可以用来做数据增强。

 

 

 

Performance summary of representative methods for static-based deep facial expression recognition on the most widely evaluated datasets.

Network size = depth & number of parameters;

Pre-processing = Face Detection & Data Augmentation & Face Normalization;

IN = Illumination Normalization;

NE = Network Ensemble; CN = Cascaded Network; MN = Multitask Network;

LOSO = leave-one-subject-out.

 

 

 

从上图可以看出:静态单张图片的识别效果

CK+ [Z. Zhang, P. Luo, C. L. Chen, and X. Tang, “From facial expression recognition to interpersonal relation prediction,”] 98.9

MMI [A. Mollahosseini, D. Chan, and M. H. Mahoor, “Going deeper in facial expression recognition using deep neural networks,”] 77.9

FER2013 [C. Pramerdorfer and M. Kampel, “Facial expression recognition using convolutional neural networks: State of the art,”] 75.2

 

2、动态图片序列的深度FER

表情变化是一个动态的过程,与静态单张图片相比,图片序列(视频)的FER能更好的利用时序信息。对广泛评估的基准(如CK+和MMI)的比较结果表明,基于序列数据的训练网络,分析帧之间的时间依赖性可以进一步提高FER性能。在2015年EmotiW挑战中,只有一个系统针对FER使用了深度空间网络,到了2017年EmotiW的挑战中,七分之五的的系统依赖于2015年的这个深度空间网络。如何利用时序信息?不同帧之间的关联?处理?

(1)帧聚合

直接测量图片序列的每一帧不能达到满意的效果,因为各帧之前在表情强度上存在差异。因此需要按一定的方法来聚合每一帧的输出。

两种方法:决策水平帧聚合(decision-level frame aggregation)+特征水平帧聚合(feature-level frame aggregation.)。

决策水平帧聚合(decision-level frame aggregation:一个长度为n的向量,每一个元素就是这个帧属于某个类型的概率,以形成固定长度(n*10)的特征向量,用于后续分类,这里面10意味着一次聚合10张帧图片。考虑到帧序列的的长度不一定刚好是10,因此需要做帧的归一化(平均或增加帧数)。或者可以用平均值、最大值、平方的平均值、最大抑制向量的平均值等来总结每个序列中每帧的概率。

特征水平帧聚合(feature-level frame aggregation:计算并连接所有帧上的特征维度的均值,方差,最小值和最大值。或者采用图像传输编码(ITE)方法,该方法将视频视为一包帧,并使用词袋模型(bag-of-words)方案对每个视频进行编码,其中聚类中心是从辅助图像数据集计算的。词袋模型是在自然语言处理和信息检索中的一种简单假设。

(2)表情强度网络

现有的很多方法都是将注意力放在表情强度最大的图片上面,而忽略了表情强度较弱的图片。

方法:

1)peak-piloted deep network(PPDN):用同一受试者、同一表情的一对峰值和非峰值图片作为输入,使用L2-norm损失函数来最小化两者之间的距离。

2)peak gradient suppression(PGS)算法:使从非峰值表情学习到的特征向从峰值表情学习到的特征靠拢,同时避免反峰表达。这样就可以提高网络区分低强度表情的能力。

3)deeper cascaded peak-piloted network (DCPN):使用更深入和更大的架构来增强学习特征的识别能力,并使用一种称为级联微调的集成训练方法来避免过拟合。

4)使用更多的强度信息:表情起点、起点到峰值、峰值、峰值到终点、终点。并且使用5个损失函数来分别最小化表情分类错误、类内表情变化、强度分类错误、类间变化以及编码强度问题。具体而言,另设计了两个损失函数以集中于增加表情类别可分离性,即最小化表情分类错误和最小化类内表情变化。因此,每个表情类包含不同强度的不同簇。为了进一步保持强度连续性,设计了第五个损失函数来编码中间强度。

获取不同表情强度帧的方法:两个阶段:聚类阶段:通过K均值算法将表情帧自动分为peak类和neural类。分类阶段:利用半监督SVM来检测peak帧和neural帧。

(3)深度时空FER网络

虽然帧聚合可以在视频序列中集成帧,但关键的时间依赖性并没有被显式地利用。相比之下,时空FER网络在不事先知道表达强度的情况下,将时间窗口中的一系列帧作为单个输入,并利用纹理和时间信息对更细微的表达进行编码。

RNN和C3D

RNN能够利用连续数据特征向量之间在语义上存在的相关性和不独立性来鲁棒的提取特征。

LSTM能够处理边长序列,并且计算成本低。

Bidirectional RNNs(BRNNs): 同时学习原始方向和反向方向的时序信息

Nested LSTM:一种嵌套的LSTM,它包含两个子LSTM。即T-LSTM对学习特征的时间动态进行建模,C-LSTM将所有T-LSTM的输出集成在一起,对网络中间层编码的多层次特征进行编码。

C3D:时间轴上共享权值的三维卷积核替代传统的二维卷积核来获取时序信息。既可以用来做特征提取,也可以用来做分类。

3DCNN-DAP:将3D CNN与DPM-inspired的可变形面部动作部分约束相结合来同时编码动态运动和基于识别部分的表征。具体来说,输入的n帧序列与3D滤波器卷积,13*c*k,对应于13个手动定义的人脸部分,被用于卷积产生k个feature map,以用于c个表情类型的面部动作部分检测。

Deep temporal appearance network (DTAN):3D卷积核不再共享权值,因此每一个卷积核的重要性将随着时间的变化而改变。

加权C3D:从每个视频序列中提取连续帧的若干窗口并基于它们的预测分数进行加权。

C3D用来提取时空特征,连接DBN用于分类;此外C3D可以仅仅用于特征提取,后面借一个NetVLAD层,通过学聚类中心来聚合运动特征的时序信息。

Facial landmark trajectory: 为了获得更精确的面部动作,提出了面部标志轨迹模型来捕捉连续帧中面部成分的动态变化。方法如下:

1)、将一段时间内帧间的面部地标坐标进行归一化处理,得到每个帧序列的一维轨迹

2)、生成image-like map作为CNN的输入

3)、考虑连续帧中每一个地标相对位置的改变

4)、将面部地标按照地理结构进行分类然后分层数输入到网络中

Cascaded networks级联多个网络(如CNN、LSTM),先后输出输入来学习特征。

如ResNet-LSTM:允许较低层CNN中的节点直接连接LSTM来获取时序信息;一个hypercolumn-based系统,提取最后一个卷积层的特征作为LSTM的输入,在不丢失全局相干性的情况下获取更长的范围依赖关系。

Network ensemble:整合不同网络的预测结果用于FER。

1)用于视频中的动作识别的双流CNN,其在用于时序信息的多帧稠密光流上训练CNN的一个流,并且在静止图像上训练CNN的另一个流用于外形特征,然后融合两个流的输出。

2)一种多通道网络,从带表情的人脸到中性人脸之间的变化中提取表情情绪的人脸和时间信息(光流)的空间信息,并研究了三种特征融合策略:得分平均融合,基于SVM的融合和基于神经网络的融合。

3)融合时间网络PHRNN和空间网络MSCNN以提取局部-整体,几何外观和静态-动态信息用于FER。用于特征点轨迹的时序网络PHRNN和用于身份不变特征的空间网络MSCNN被分开训练。接着将来自两个网络的预测概率融合在一起用于时空FER。

(4)讨论

帧聚合主要是将每一帧学习到的特征或者预测的可能性聚合。聚合的方法有简单的直接连接方法(要求帧序列长度一致),还可以通过基于统计的方法汇总得到视频水平的集合(帧序列长度可变)。该方法不能利用到时序上的信息

表情强度网络考虑了表情峰值图片和非峰值图片之间的联系,因此需要带有表情强度标签的数据集。

而深度时空FER网络,无论是RNN还是CNN都存在各自的优缺点。RNN无法捕获强大的卷积特征。C3D中的3D文件被应用在非常短的视频剪辑上,忽略了远程动态。此外,训练这样一个巨大的网络在计算上是一个问题,特别是在动态FER的视频数据不足的情况下。

级联网络:该模型引入额外的参数来捕获序列信息,而现有的工作中feature learning network(如CNN)和temporal information encoding network(如LSTM)并没有联合训练,这可能导致参数设置不够理想。以端到端的方式进行训练仍然任重而道远。

 

S = Spatial network; T = Temporal network; LOSO = leave-one-subject-out.

1 训练每个序列的数据选择;测试每个序列的数据选择。

2 括号中的值是根据作者给出的混淆矩阵计算的平均准确度。

3 每次选择一对图像(峰值和非峰值表情)进行训练。

4 网络可以直接输出输入序列的预测标签。

这张表格已经包含了单个时空网络的结果,以及融合了视频和音频模式后的最佳结果。

7 Classes in CK+: Anger, Contempt, Disgust, Fear, Happiness, Sadness, and Surprise.

7 Classes in AFEW: Anger, Neutral, Disgust, Fear, Happiness, Sadness, and Surprise.

 

从上面表格可以看到,图片序列FER情况:

CK+ [X. Zhao, X. Liang, L. Liu, T. Li, Y. Han, N. Vasconcelos, and S. Yan, “Peak-piloted deep network for facial expression recognition,”]  99.3 

CK+  [Z. Yu, Q. Liu, and G. Liu, “Deeper cascaded peak-piloted network for weak expression recognition,”]  99.6 

CK+  [K. Zhang, Y. Huang, Y. Du, and L.Wang, “Facial expression recognition based on deep evolutional spatial-temporal networks,”]  98.50

MMI  [N. Sun, Q. Li, R. Huan, J. Liu, and G. Han, “Deep spatial-temporal feature fusion for facial expression recognition in static images,”]  91.46

Oulu-CASIA  [C.-M. Kuo, S.-H. Lai, and M. Sarkis, “A compact deep learning model for robust facial expression recognition,”]   91.67

AEFW * 6.0  [Y. Fan, X. Lu, D. Li, and Y. Liu, “Video-based emotion recognition using cnn-rnn and c3d hybrid networks,”]  59.02

AEFW * 6.0  [V. Vielzeuf, S. Pateux, and F. Jurie, “Temporal multimodal fusion for video emotion classification in the wild,”]   58.81

从数据库来看,CK+、MMI、Oulu-CASIA都能实现很高的准确率,在80%左右或者以上。但是在AFEW系列数据集是野外环境下采集到的数据集,因此在其上序列识别效果就很差,只能保持在30-50%,还有很大的提升空间。

四、其他问题、机遇和挑战

1、数据集

红外图像:记录情绪产生的皮肤时间分布的红外图像光照变化不敏感,这可能是研究面部表情的一个很有前途的替代方法。

3D数据:包含深度信息,可以捕捉到细微的面部变形。对光照和姿态具有更强的鲁棒性。Chang等人提出利用CNN从图像强度中估计三维表情系数,而不需要人脸地标检测。因此,该模型对极端的外观变化具有很强的鲁棒性,包括面外头旋转、尺度变化和遮挡。2D+3D数据的结合能够实现更好的性能。

不同数据库之间的差异和表情类别数据的不平衡分布是在深度FER领域要解决的另外两个问题。

深度域适应知识提取是解决不同数据集之间偏差的替代方法。

深度域适应:深度域适应即 Deep Domain Adaptation是迁移学习中很重要的一部分内容,目的是把分布不同的源域和目标域的数据,映射到一个特征空间中,使其在该空间中的距离尽可能近。于是在特征空间中对source domain训练的目标函数,就可以迁移到target domain上,提高target domain上的准确率。

知识提取:知识提取是一种模型压缩常见方法,模型压缩方法可以大致分为4类: 参数共享(Parameter sharing), 网络裁剪(Network pruning), 矩阵分解(Matrix decomposition), 以及知识提取(Knowledge Distillation)。用于模型压缩指的是在teacher-student框架中,将复杂、学习能力强的网络学到的特征表示“知识”蒸馏出来,传递给参数量小、学习能力弱的网络。蒸馏可以提供student在one-shot label上学不到的soft label信息,这些里面包含了类别间信息,以及student小网络学不到而teacher网络可以学到的特征表示‘知识’,所以一般可以提高student网络的精度。

训练数据缺乏和标注问题,遮挡和头部姿态问题不能引起广泛关注的主要原因之一是:缺乏具有遮挡类型和头部姿态注释的大型面部表情数据集。要精确标注大量的数据也是一个难题,人为的标注数据也不可避免的存在很多主观因素。一个合理的解决方案是一个合理的方法是在专家注释者的指导下使用众包模型。另外,由专家改进的全自动标注工具可以提供近似但有效的标注。

解决同一数据集不同表情类分布分布不均匀的问题:一种解决方案是使用数据增强和合成在预处理阶段期间平衡类分布。另一种选择是在训练期间为深度网络开发代价敏感的loss层(cost-sensitive loss layer)。

2、头部姿态和遮挡问题

面部遮挡问题的解决:

方法一:用深度生成模型对像素级表示进行建模,然后训练DBNs以适应其输入的适当分布。这样就可以填充图像中被遮挡的像素

参考文献:K. Simonyan and A. Zisserman, “Two-stream convolutional networks for action recognition in videos,”

方法二:采用方法压缩被遮挡部分的特征

参考文献:Y. Cheng, B. Jiang, and K. Jia, “A deep structure for facial expression recognition under partial occlusion,”

方法三:用两个相同结构的网络,使用不同的数据(原始数据集和添加了遮挡数据的数据集)来训练并且将输出结果连接起来。

参考文献:M. Xu, W. Cheng, Q. Zhao, L. Ma, and F. Xu, “Facial expression recognition based on transfer learning from deep convolutional networks,”

头部姿态问题的解决方法:

方法一:使头部姿态成为无关因素。在CNN中引入了一种投影层,该投影层通过在2D SIFT特征矩阵中对不同的面部地标点进行加权来学习识别性面部特征,而不需要进行面部姿态估计。

参考文献:T. Zhang,W. Zheng, Z. Cui, Y. Zong, J. Yan, and K. Yan, “A deep neural network-driven feature learning method for multi-view facial expression recognition,”

方法二:一种多通道位置感知CNN (MPCNN),它包含三个级联部分(多通道特征提取、联合多尺度特征融合和位置感知识别),通过最小化姿态和表情识别的条件联合损失来预测表情标签。

参考文献:Y. Liu, J. Zeng, S. Shan, and Z. Zheng, “Multi-channel pose-aware convolution neural networks for multi-view facial expression recognition,”

方法三:通过GAN生成任意姿态下不同表情的图片

参考文献:Y.-H. Lai and S.-H. Lai, “Emotion-preserving representation learning via generative adversarial network for multi-view facial expression recognition,”

3、多模态情感识别

在现实应用中,人类的表达行为涉及到不同角度的编码,而面部表情只是其中一种形式。虽然基于可见人脸图像的纯表情识别可以取得很好的效果,但是与其他模型结合到一个高层框架中可以提供互补信息,进一步增强鲁棒性。例如EmotiW challengesAudio Video Emotion challenges (AVEC)的参与者有将音频模型作为第二重要的元素,采用多种融合技术进行多模态情感识别。此外,由于面部表情具有很大的互补性,将红外图像、三维人脸模型深度信息和生理数据融合成为一个很有前景的研究方向。

表情+语音模态融合参考文献:

M. Valstar, J. Gratch, B. Schuller, F. Ringeval, D. Lalanne, M. Torres Torres, S. Scherer, G. Stratou, R. Cowie, and M. Pantic, “Avec 2016: Depression, mood, and emotion recognition workshop and challenge,”

F. Ringeval, B. Schuller, M. Valstar, J. Gratch, R. Cowie, S. Scherer, S. Mozgai, N. Cummins, M. Schmitt, and M. Pantic, “Avec 2017: Real-life depression, and affect recognition workshop and challenge,”

 

五、总结

这篇论文中系统的介绍了很多适用于FER的网络结构,无论是静态单张图片的还是动态图片序列的FER。同时对数据集和各种网络都进行了详细的对比和评估。使我们对FER今年来的发展能够有一个很清楚的认识。在看这篇论文的过程中,我觉得文中有很多值得学习的地方,总结如下:

1、针对图片序列(视频)数据,受试者的表情变化是一个渐变的过程,即从neural到peak状态再回归到neural状态(之前有有一些微表情的数据集,如CASMI、SMIC等有采用这种从onset\peak\offset的方式来标注数据集)。大多数的研究都是直接使用peak状态的图片来进行FER,但是低强度的表情跟peak状态存在内在联系,因此可以利用这些低强度的表情来提升网络效果。

2、多样化输入,除了常用的灰度图片以外,还可以考虑红外图片或者其他如LBP、SIFT等形式的输入。

3、数据增强方面,面临的问题是数据不充足、分布不均匀和多样性不够三个问题,这将会影响到网络的训练,因此需要使用选择、平移、添加噪声和GAN等方法来做数据增强。

4、网络结构方面,可以考虑文中提到的网络聚合和级联网络,使用多种网络如DBN、DAE、LSTM等相互融合、级联。这样可以过滤掉一定的与表情无关的因素,极大的提升网络性能。

5、图片序列FER的时序信息应该怎样利用,LSTM和C3D可以提取时序信息,可以考虑将表情特征和时序特征用不同的网络分别提取,然后再将网络输出结构进行融合。

6、可以考虑使用多个模型进行训练,然后进行多特征的融合,一般是进行多个特征向量的拼接。也可以将多个子网并入一个全链接层,产生一个输出以此实现特征融合。目前现存的三种特征层面的融合:majority voting、simple average、weighted average。

7、头部姿态和面部遮挡问题,文中大概的给出了几种解决方案,在上面已经列举出来了,接下需要再去看看参考文献中与之相关的论文和其他解决遮挡和大姿态的论文,详细总结一下现有的解决方法。

六、其他

在看论文的过程中遇到的一些知识点,以前可能知道但不是很清楚的知识进行了整理记录。

1、交叉验证:交叉验证法的作用就是尝试利用不同的训练集/验证集划分来对模型做多组不同的训练/验证,来应对单独测试结果过于片面以及训练数据不足的问题。交叉验证的做法就是将数据集粗略地分为比较均等不相交的k份。算法的目的是选择具有最小泛化误差的模型作为最终模型,并且最后再在整个训练集上面训练该模型,从而得到最终的模型。一定要注意K折交叉验证主要是为了选择模型,而不是为了选择具体模型的具体参数。比如在BP神经网络中,其目的主要为了选择模型的层数、神经元的激活函数、每层模型的神经元个数(即所谓的超参数)。每一层网络神经元连接的最终权重是在模型选择(即K折交叉验证)之后,由全部的训练数据重新训练。

2、leave-one-subject-out(留一法):与K折交叉验证同原理。使K等于数据集中的样本个数,每次只使用一个作为测试集,剩下的全部作为训练集,这种方法使用于小样本的数据集。

3、center loss:中心损失它仅仅用来减少类内(比如说同一表情)的差异,而不能有效增大类间(比如说不同表情)的差异性,如下图所示。

 

上图中,图(a)表示softmax loss学习到的特征描述 。图(b)表示softmax loss + center loss 学习到的特征描述,他能把同一表情的样本之间的距离拉近一些,使其相似性变大,尽量的往样本中心靠拢,但可以看出他没有把不同表情之间的样本距离拉大,它的定义是这样的:

 

类中心是如何得到的:每一个样本的特征需要通过一个好的网络到达特征层获得,这样计算完后所有样本的特征的平均值为类中心c,而好的网络需要是在有类中心加入的情况下才能得到。

如何优化:没法直接获得c,所以将其放到网络里自己生成,在每一个batch里更新center.即随机初始化center,而后每一个batch里计算当前数据与center的距离,而后将这个梯度形式的距离加到center上.类似于参数修正.同样的类似于梯度下降法,这里再增加一个scale度量a,使得center不会抖动。

4、triplet loss:softmax最终的类别数是确定的,而Triplet loss学到的是一个好的embedding,相似的图像在embedding空间里是相近的,可以判断是否是同一个人脸。

(什么是embedding?Embedding 是一个将离散变量转为连续向量表示的一个方式。在神经网络中,embedding 是非常有用的,因为它不光可以减少离散变量的空间维数,同时还可以有意义的表示该变量。其有以下三个目的:

1)、在 embedding 空间中查找最近邻,这可以很好的用于根据用户的兴趣来进行推荐。

2)、作为监督性学习任务的输入。

3)、用于可视化不同离散变量之间的关系。)

Triplet losss输入是一个三元组 <a, p, n>,如下图所示:

  • · a: anchor
  • · p: positive, 与 a 是同一类别的样本
  • · n: negative, 与 a 是不同类别的样本

 

公式是:L=max(d(a,p)−d(a,n)+margin,0)

所以最终的优化目标是拉近 a, p 的距离, 拉远 a, n 的距离

easy triplets: L=0即 d(a,p)+margin<d(a,n),,这种情况不需要优化,天然a, p的距离很近, a, n的距离远

hard triplets: d(a,n)<d(a,p), 即a, p的距离远

semi-hard triplets:d(a,p)<d(a,n)<d(a,p)+margin, a,n的距离靠的很近,但是有一个margin。

posted on 2020-03-03 13:35  Dawning_YWX  阅读(5938)  评论(0编辑  收藏  举报