CVPR:Weakly-supervised Deep Convolutional Neural Network Learning for Facial Action Intensity Estima
Weakly-supervised Deep Convolutional Neural Network Learning for Facial Action Intensity Estimation
Abstract
AU强度检测在情感计算和人机交互中有着重要的作用,实际上以及有很多工作利用CNN来进行AU强度的检测,但是都需要大量的标注数据。因此本文提出一个“基于知识的半监督的深度卷积神经网络”来进行AU强度的检测,只需要少量的标注数据(在训练序列中只需要有AU强度标注的peak和valley frames)。
Introduction
我们知道表情可以通过面部肌肉的运动来衡量,Ekman和Friesen创造了Facial Action Coding System(FACS)来描述面部肌肉的运动,定义了AU来表示肌肉的运动。FACS将AU强度划分为6个离散的等级(0~6):
。
所谓的AU强度检测就是:给定一副未见过的图片,来预测AU的强度。
本文的“基于知识的半监督的深度卷积神经网络”模型使用先验知识来促进模型的学习,减少数据间的依赖性。该模型只需要少量的标注数据:有AU强度标注的peak和valley frames。为了利用未标记的帧(unlabeled frames),作者还尝试挖掘AU强度中的领域知识(domain knowledge),包括:appearance similarity,temporal intensity ordering,facial symmetry以及contrastive appearance difference,为模型的训练提供了额外的约束。
上面所谓的domain knowledge来源于对AU强度在表情序列(emotional sequence)中的观察。
1. 上图-(b)展示了AU12的强度随时间的变化。一开始,由于肌肉的变化比较平滑(smooth),所以AU变化的比较平滑,接下来AU强度逐渐上升,从valley frame变为临近的peak frame(这个过程称为rising duration),然后逐渐从peak frame下降到临近的valley frame(这个过程称为decaying duration)本文的网络在进行AU强度预测时会保留这种关系。
2. 在rising以及decaying duration中,两个帧越相近,则他们的外表看起来会越相似(appearance similarity),在学习中促使提取的特征保持这种特性
3. 人脸是对称的。因此AU的出现和强度对于人脸的左右两侧是几乎一致的。因此面部左右的特征表示应该相近。尽管图片中存在不同的头部角度,但是学习的特征应该对于不同的角度应具有不变性(invariant to head pose)。
4. 一个具有表情的面部肯定是和中性的面部(neural face)在表现上是不同的,因此两者的特征也应该是容易被区分的。
这些领域知识为弱监督(weak supervision)提供了可行的手段,且有利于挖掘无标记帧所蕴含的信息。
本文的贡献:
- 提出“基于知识的半监督的深度卷积神经网络”模型,只需要少量的标注数据:有AU强度标注的peak和valley frames。降低了对大量标注数据的依赖。
- 挖掘了四种领域知识:appearance similarity,temporal intensity ordering,facial symmetry以及contrastive appearance difference,为有标记数据和无标记数据建立了联系。
- 提出在模型训练中使用五元组(5-elements tuples),而不是单个的帧(individual frame)或者帧对(frame pairs),可以有效的利用多帧(multiple frames)之间的高阶关系。
Proposed Method
如图-1(b)所示,给定了有标注的peak和valley frames,这个帧序列就可以划分为不同的segment。根据AU强度的趋势,segments可以分为三组:
- 由valley frame到peak frame
- 由peak frame到valley frame
- AU强度保持不变
为了使趋势一致,作者反转了从peak frame到valley frame的顺序,由此每个训练segment或是由valley frame到peak frame,或是AU强度保持不变。
符号标记:
对某个AU,训练集定义为,其中,其中表示训练集中第m个segment中的第n个帧。表示第m个序列的长度。在每个segment中,只有第一帧和最后一帧拥有AU强度的标记,所以表示的强度,表示。又定义表示CNN的参数,表示对的预测强度,表示对抽取的特征,换言之,CNN的最后一层全连接层。另外,定义表示两者之间距离。
我们的目标是学习参数,由于对每一个AU,peak和valley的frames的位置是不同的,因此训练CNN每次用于识别一个AU的强度。
Domain Knowledge
Relative appearance similarity:
因为面部容貌变化平滑,在一个segment中,两帧越近,看起来越像。所以对于相近的两幅图,我们使CNN提取的图片的特征也相近。
其中。当i,j,k包含第一帧和最后一帧时,上式就将有标记的帧和无标记的帧联系了起来。
Teporal intensity ordering:
前面说过,在面部运动中,当肌肉变化平滑时,面部容貌(facial appearance)的变化也是平滑的。对于AU强度也是如此。相邻的帧有着相似的面部容貌和AU强度。对于整个序列,根据peak和valley可以划分为一系列的segment,对每一个segment,AU强度单调的变化(注意前面所说的反转操作)。为了利用AU强度的顺序来监督模型的训练过程,对预测的一个segment中的AU强度进行如下的限制:
Facial symmetry:
人脸具有对称的特性,对于一张根据两眼中心归一化后的人脸,从中间进行反转后(horizontally flipped face)需要与原有的特征相近,即:
应该具有很小的值。其中表示翻转后的面部。
Contrastive appearance difference:
对每一个人(subject),一个具有表情的面部是不同于中性的面部的(neutral faces)。因此对于本文的CNN,使其能够区分有表情的面部和中性的面部。即定义两者之间的距离满足:
其中,是阈值,是有标记的中性面部的特征,且属于第m个segment的某个人(subject)。
Encoding knowledge
Trainging tuples:
本文没有直接利用公式2-4来构造目标函数,而是基于训练的元组,对知识进行编码。如图3所示。对一个segment的元组定义为:。其中以及N表示帧的index。整个元组包含这个segment中的初始帧(S)和最终帧(E),S与E之间的两帧(A和B),以及中性帧(N)。S,E和N是有标签的,而A和B是无标签的。给定一个训练segment,我们可以生成大量的这样的元组。对来自同一个segment中的元组,有着共同的S和E,有标记的中性帧N可以来自同一个人(subject)的其它的segment。
使用元组的好处:给定训练集D,我们可以得到大量的训练元组,,其中是第m个segment的元组的数量。
Encoding labels:
对每一个segment,只有第一帧和最后一帧是有标记的,它们不仅仅起到有监督的训练模型的作用,也间接地对它们之间的无边际的帧起到了上下界的约束作用。给定元组T,损失函数定义为:
Encoding relative appearance similarity:
同理,对于公式1,作者基于元组设计了一个损失以充分利用有标记的初始帧和最终帧。这个损失有以下特性:
- 能够捕捉一个segment中面部的变化,换言之,从初始帧到最终帧,特征越来越与初始帧不同,越来越接近于最终帧;
- 充分利用有标记的帧;
- 能够考虑多种帧之间的高阶的关系;
给定元组T,损失定义为:
其中,是边界。每一项是一个triplet loss。
如图4所示,为了确保只有(b)这种情况出现,引入另外的项来确保,这个很简单,比如对图中的情况,只需要添加一个约束,认为A到B的距离要小于S到B的距离即可。上图只给出了对于起始帧的情况,对于终止帧也是一样的。这就有了公式(6)中的后两项。对于图3中两类不同的元组,使用不同的边界,即: 如果 ,否则,。
Encoding temporal intensity ordering:
这里考虑对公式(2)进行转化,给定一个元组T,预测的AU强度应满足,
可以编码为:
但是这样有个问题,它只考虑了两对之间的关系,忽略了与其它帧的关系。比如,当预测值为时,只有第二项的梯度,S和E没用用到。为了充分利用高阶的信息。
同前面一样,我们还需要另外两项约束,以及考虑两种元组,此时损失为:
Encoding facial symmetry:
这个比较简单,直接定义为:
这里只考虑到了A和B,因为S和E对于同一segment中的元组是相同的。此外,在某些元组中,A和B可以很接近S和E,因为它们也可以覆盖S和E中的相似的信息。又因为S可以是中性帧,因此N也没有被考虑。
Encoding contrastive appearance difference:
给定元组T,loss是:
其中是阈值。如果,则,否则。
Learning
对于一个训练元组的整个损失是:
对所有的训练元组上的损失是:
其中。
Inference:
尽管CNN是使用元组来训练的,但是可以对某张图片进行AU强度的预测。给定一张测试图片,预测的结果为,换言之,将预测值转换为离散结果:。