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):
Neural(0)<Trace(A)<Slight(B)<Pronounced(C)<Extreme(D)<Maximum(E)
N
e
u
r
a
l
(
0
)
<
T
r
a
c
e
(
A
)
<
S
l
i
g
h
t
(
B
)
<
P
r
o
n
o
u
n
c
e
d
(
C
)
<
E
x
t
r
e
m
e
(
D
)
<
M
a
x
i
m
u
m
(
E
)
。
所谓的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,训练集定义为
D={Xm,y1m,yNmm}Mm=1
D
=
{
X
m
,
y
m
1
,
y
m
N
m
}
m
=
1
M
,其中
Xm={Xnm}Nmn=1
X
m
=
{
X
m
n
}
n
=
1
N
m
,其中
Xnm
X
m
n
表示训练集中第m个segment中的第n个帧。
Nm
N
m
表示第m个序列的长度。在每个segment中,只有第一帧和最后一帧拥有AU强度的标记,所以
y1m
y
m
1
表示
X1m
X
m
1
的强度,
yNmm
y
m
N
m
表示
XNmm
X
m
N
m
。又定义
Θ
Θ
表示CNN的参数,
y~nm=f(Xnm;Θ)
y
~
m
n
=
f
(
X
m
n
;
Θ
)
表示对
Xnm
X
m
n
的预测强度,
fnm
f
m
n
表示对
Xnm
X
m
n
抽取的特征,换言之,CNN的最后一层全连接层。另外,定义
d(a,b)
d
(
a
,
b
)
表示两者之间距离
d(a,b)=|a−b|2
d
(
a
,
b
)
=
|
a
−
b
|
2
。
我们的目标是学习参数 Θ Θ ,由于对每一个AU,peak和valley的frames的位置是不同的,因此训练CNN每次用于识别一个AU的强度。
Domain Knowledge
Relative appearance similarity:
因为面部容貌变化平滑,在一个segment中,两帧越近,看起来越像。所以对于相近的两幅图,我们使CNN提取的图片的特征也相近。
其中 d(fim,fjm)=∥∥fim−fjm∥∥2 d ( f m i , f m j ) = ‖ f m i − f m j ‖ 2 。当i,j,k包含第一帧和最后一帧时,上式就将有标记的帧和无标记的帧联系了起来。
Teporal intensity ordering:
前面说过,在面部运动中,当肌肉变化平滑时,面部容貌(facial appearance)的变化也是平滑的。对于AU强度也是如此。相邻的帧有着相似的面部容貌和AU强度。对于整个序列,根据peak和valley可以划分为一系列的segment,对每一个segment,AU强度单调的变化(注意前面所说的反转操作)。为了利用AU强度的顺序来监督模型的训练过程,对预测的一个segment中的AU强度进行如下的限制:
Facial symmetry:
人脸具有对称的特性,对于一张根据两眼中心归一化后的人脸,从中间进行反转后(horizontally flipped face)需要与原有的特征相近,即:
应该具有很小的值。其中 f^nm f ^ m n 表示翻转后的面部。
Contrastive appearance difference:
对每一个人(subject),一个具有表情的面部是不同于中性的面部的(neutral faces)。因此对于本文的CNN,使其能够区分有表情的面部和中性的面部。即定义两者之间的距离满足:
其中, η η 是阈值, fNm f m N 是有标记的中性面部的特征,且属于第m个segment的某个人(subject)。
Encoding knowledge
Trainging tuples:
本文没有直接利用公式2-4来构造目标函数,而是基于训练的元组,对知识进行编码。如图3所示。对一个segment的元组定义为:
T={S,A,B,E,N}
T
=
{
S
,
A
,
B
,
E
,
N
}
。其中
S<A<B<E
S
<
A
<
B
<
E
以及N表示帧的index。整个元组包含这个segment中的初始帧(S)和最终帧(E),S与E之间的两帧(A和B),以及中性帧(N)。S,E和N是有标签的,而A和B是无标签的。给定一个训练segment,我们可以生成大量的这样的元组。对来自同一个segment中的元组,有着共同的S和E,有标记的中性帧N可以来自同一个人(subject)的其它的segment。
使用元组的好处:给定训练集D,我们可以得到大量的训练元组, DT={Tkm}m=M,k=Kmm=1,k=1 D T = { T m k } m = 1 , k = 1 m = M , k = K m ,其中 Mm M m 是第m个segment的元组的数量。
Encoding labels:
对每一个segment,只有第一帧和最后一帧是有标记的,它们不仅仅起到有监督的训练模型的作用,也间接地对它们之间的无边际的帧起到了上下界的约束作用。给定元组T,损失函数定义为:
Encoding relative appearance similarity:
同理,对于公式1,作者基于元组设计了一个损失以充分利用有标记的初始帧和最终帧。这个损失有以下特性:
- 能够捕捉一个segment中面部的变化,换言之,从初始帧到最终帧,特征越来越与初始帧不同,越来越接近于最终帧;
- 充分利用有标记的帧;
- 能够考虑多种帧之间的高阶的关系;
给定元组T,损失定义为:
其中, α≥0 α ≥ 0 是边界。每一项是一个triplet loss。
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/35c440d64b47b35dfaf0790895cd358b.jpeg)
如图4所示,为了确保只有(b)这种情况出现,引入另外的项来确保,这个很简单,比如对图中的情况,只需要添加一个约束,认为A到B的距离要小于S到B的距离即可。上图只给出了对于起始帧的情况,对于终止帧也是一样的。这就有了公式(6)中的后两项。对于图3中两类不同的元组,使用不同的边界,即: α=0 α = 0 如果 yS=yE y S = y E ,否则, α>0 α > 0 。
Encoding temporal intensity ordering:
这里考虑对公式(2)进行转化,给定一个元组T,预测的AU强度应满足
y~S≤y~A≤y~B≤y~E
y
~
S
≤
y
~
A
≤
y
~
B
≤
y
~
E
,
可以编码为:
但是这样有个问题,它只考虑了两对之间的关系,忽略了与其它帧的关系。比如,当预测值为 y~S≤y~B≤y~A≤y~E y ~ S ≤ y ~ B ≤ y ~ A ≤ y ~ E 时,只有第二项的梯度,S和E没用用到。为了充分利用高阶的信息。
同前面一样,我们还需要另外两项约束,以及考虑两种元组,此时损失为:
Encoding facial symmetry:
这个比较简单,直接定义为:
这里只考虑到了A和B,因为S和E对于同一segment中的元组是相同的。此外,在某些元组中,A和B可以很接近S和E,因为它们也可以覆盖S和E中的相似的信息。又因为S可以是中性帧,因此N也没有被考虑。
Encoding contrastive appearance difference:
给定元组T,loss是:
其中 η≥0 η ≥ 0 是阈值。如果 yS=yE=0 y S = y E = 0 ,则 η=0 η = 0 ,否则 η>0 η > 0 。
Learning
对于一个训练元组的整个损失是:
对所有的训练元组上的损失是:
其中 G=∑Mm=1Km G = ∑ m = 1 M K m 。
Inference:
尽管CNN是使用元组来训练的,但是可以对某张图片进行AU强度的预测。给定一张测试图片,预测的结果为
y=f(X;Θ)
y
=
f
(
X
;
Θ
)
,换言之,将预测值转换为离散结果:
0(y<0.5),1(0.5≤y≤1.5),2(1.5≤y≤2.5),3(2.5≤y≤3.5),4(3.5≤y≤4.5),5(4.5≤y)
0
(
y
<
0.5
)
,
1
(
0.5
≤
y
≤
1.5
)
,
2
(
1.5
≤
y
≤
2.5
)
,
3
(
2.5
≤
y
≤
3.5
)
,
4
(
3.5
≤
y
≤
4.5
)
,
5
(
4.5
≤
y
)
。