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)Neural(0)<Trace(A)<Slight(B)<Pronounced(C)<Extreme(D)<Maximum(E)Neural(0)。
所谓的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=1D={Xm,ym1,ymNm}m=1MD=\left \{ \textbf{X}_m,y_m^1,y_m^{N_m} \right \}_{m=1}^M,其中Xm={Xnm}Nmn=1Xm={Xmn}n=1Nm\textbf{X}_m=\left \{ X_m^n \right \}_{n=1}^{N_m},其中XnmXmnX_m^n表示训练集中第m个segment中的第n个帧。NmNmN_m表示第m个序列的长度。在每个segment中,只有第一帧和最后一帧拥有AU强度的标记,所以y1mym1y_m^1表示X1mXm1X_m^1的强度,yNmmymNmy_m^{N_m}表示XNmmXmNmX_m^{N_m}。又定义ΘΘ\Theta 表示CNN的参数,y~nm=f(Xnm;Θ)y~mn=f(Xmn;Θ) \tilde{y}_m^n=f(X_m^n;\Theta)表示对XnmXmnX_m^n的预测强度,fnmfmnf_m^n表示对XnmXmnX_m^n抽取的特征,换言之,CNN的最后一层全连接层。另外,定义d(a,b)d(a,b)d(a,b)表示两者之间距离d(a,b)=|a−b|2d(a,b)=|a−b|2d(a,b)=\left | a-b \right |^2。

我们的目标是学习参数ΘΘ\Theta,由于对每一个AU,peak和valley的frames的位置是不同的,因此训练CNN每次用于识别一个AU的强度。

Domain Knowledge

Relative appearance similarity:
因为面部容貌变化平滑,在一个segment中,两帧越近,看起来越像。所以对于相近的两幅图,我们使CNN提取的图片的特征也相近。

d(fim,fjm)≤d(fim,fkm),1≤i<j<k≤Nm(1)(1)d(fmi,fmj)≤d(fmi,fmk),1≤i<j<k≤Nm

d(f_m^i,f_m^j)\leq d(f_m^i,f_m^k),1\leq i
其中 d(fim,fjm)=∥∥fim−fjm∥∥2d(fmi,fmj)=‖fmi−fmj‖2d(f_m^i,f_m^j)=\left \| f_m^i-f_m^j \right \|^2。当i,j,k包含第一帧和最后一帧时,上式就将有标记的帧和无标记的帧联系了起来。

Teporal intensity ordering:
前面说过,在面部运动中,当肌肉变化平滑时,面部容貌(facial appearance)的变化也是平滑的。对于AU强度也是如此。相邻的帧有着相似的面部容貌和AU强度。对于整个序列,根据peak和valley可以划分为一系列的segment,对每一个segment,AU强度单调的变化(注意前面所说的反转操作)。为了利用AU强度的顺序来监督模型的训练过程,对预测的一个segment中的AU强度进行如下的限制:

y~1m≤y~2m≤⋯≤y~Nmm,m=1,2,…,M(2)(2)y~m1≤y~m2≤⋯≤y~mNm,m=1,2,…,M

\tilde{y}_m^1\leq \tilde{y}_m^2\leq \dots \leq\tilde{y}_m^{N_m},m=1,2,\dots,M \tag{2}

Facial symmetry:
人脸具有对称的特性,对于一张根据两眼中心归一化后的人脸,从中间进行反转后(horizontally flipped face)需要与原有的特征相近,即:

d(fnm,f^nm)=∥∥fnm−f^nm∥∥2(3)(3)d(fmn,f^mn)=‖fmn−f^mn‖2

d(f_m^n,\hat{f}_m^n)=\left \| f_m^n-\hat{f}_m^n \right \|^2 \tag{3}
应该具有很小的值。其中 f^nmf^mn\hat{f}_m^n表示翻转后的面部。

Contrastive appearance difference:
对每一个人(subject),一个具有表情的面部是不同于中性的面部的(neutral faces)。因此对于本文的CNN,使其能够区分有表情的面部和中性的面部。即定义两者之间的距离满足:

d(fnm,fNm)=∥∥fnm−fNm∥∥≥η(4)(4)d(fmn,fmN)=‖fmn−fmN‖≥η

d(f_m^n,f_m^N)=\left \| f_m^n-f_m^N \right \|\geq \eta \tag{4}
其中, ηη\eta是阈值, fNmfmNf_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}T=\left \{ S,A,B,E,N \right \}。其中S<A<B<ES<A<B<ES以及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=1DT={Tmk}m=1,k=1m=M,k=KmD_T=\left \{ T_m^k \right \}_{m=1,k=1}^{m=M,k=K_m},其中MmMmM_m是第m个segment的元组的数量。

Encoding labels:
对每一个segment,只有第一帧和最后一帧是有标记的,它们不仅仅起到有监督的训练模型的作用,也间接地对它们之间的无边际的帧起到了上下界的约束作用。给定元组T,损失函数定义为:

\ell_{lb}(T)=d(\tilde{y}^S,y^S)+d(\tilde{y}^E,y^E)\tag{5}

Encoding relative appearance similarity:
同理,对于公式1,作者基于元组设计了一个损失以充分利用有标记的初始帧和最终帧。这个损失有以下特性:

  • 能够捕捉一个segment中面部的变化,换言之,从初始帧到最终帧,特征越来越与初始帧不同,越来越接近于最终帧;
  • 充分利用有标记的帧;
  • 能够考虑多种帧之间的高阶的关系;

给定元组T,损失定义为:

ℓrel(T)=max(d(fS,fA)−d(fS,fB)+α,0)+max(d(fE,fB)−d(fE,fA)+α,0)+max(d(fB,fA)−d(fB,fS),0)+max(d(fA,fB)−d(fA,fE),0)(6)(6)ℓrel(T)=max(d(fS,fA)−d(fS,fB)+α,0)+max(d(fE,fB)−d(fE,fA)+α,0)+max(d(fB,fA)−d(fB,fS),0)+max(d(fA,fB)−d(fA,fE),0)

\ell_{rel}(T)=max(d(f^S,f^A)-d(f^S,f^B)+\alpha,0)\\ +max(d(f^E,f^B)-d(f^E,f^A)+\alpha,0)\\ +max(d(f^B,f^A)-d(f^B,f^S),0)\\ +max(d(f^A,f^B)-d(f^A,f^E),0) \tag{6}
其中, α≥0α≥0\alpha\geq 0是边界。每一项是一个triplet loss。

如图4所示,为了确保只有(b)这种情况出现,引入另外的项来确保,这个很简单,比如对图中的情况,只需要添加一个约束,认为A到B的距离要小于S到B的距离即可。上图只给出了对于起始帧的情况,对于终止帧也是一样的。这就有了公式(6)中的后两项。对于图3中两类不同的元组,使用不同的边界,即:α=0α=0\alpha=0 如果 yS=yEyS=yEy^S=y^E,否则,α>0α>0\alpha>0。

Encoding temporal intensity ordering:
这里考虑对公式(2)进行转化,给定一个元组T,预测的AU强度应满足y~S≤y~A≤y~B≤y~Ey~S≤y~A≤y~B≤y~E\tilde{y}^S\leq \tilde{y}^A \leq \tilde{y}^B \leq \tilde{y}^E,
可以编码为:

ℓ=max(y~S−y~A,0)+max(y~A−y~B,0)+max(y~B−y~E,0)(7)(7)ℓ=max(y~S−y~A,0)+max(y~A−y~B,0)+max(y~B−y~E,0)

\ell=max(\tilde{y}^S-\tilde{y}^A,0)+max(\tilde{y}^A-\tilde{y}^B,0)\\ +max(\tilde{y}^B-\tilde{y}^E,0) \tag{7}
但是这样有个问题,它只考虑了两对之间的关系,忽略了与其它帧的关系。比如,当预测值为 y~S≤y~B≤y~A≤y~Ey~S≤y~B≤y~A≤y~E\tilde{y}^S\leq \tilde{y}^B \leq \tilde{y}^A \leq \tilde{y}^E时,只有第二项的梯度,S和E没用用到。为了充分利用高阶的信息。
同前面一样,我们还需要另外两项约束,以及考虑两种元组,此时损失为:

ℓord(T)=max(d(y~S,y~A)−d(y~S,y~B)+β,0)+max(d(y~E,y~B)−d(y~E,y~A)+β,0)+max(d(y~B,y~A)−d(y~B,y~S)+β,0)+max(d(y~A,y~B)−d(y~A,y~E)+β,0)(8)(8)ℓord(T)=max(d(y~S,y~A)−d(y~S,y~B)+β,0)+max(d(y~E,y~B)−d(y~E,y~A)+β,0)+max(d(y~B,y~A)−d(y~B,y~S)+β,0)+max(d(y~A,y~B)−d(y~A,y~E)+β,0)

\ell_{ord}(T)=max(d(\tilde{y}^S,\tilde{y}^A)-d(\tilde{y}^S,\tilde{y}^B)+\beta,0)\\ +max(d(\tilde{y}^E,\tilde{y}^B)-d(\tilde{y}^E,\tilde{y}^A)+\beta,0)\\ +max(d(\tilde{y}^B,\tilde{y}^A)-d(\tilde{y}^B,\tilde{y}^S)+\beta,0)\\ +max(d(\tilde{y}^A,\tilde{y}^B)-d(\tilde{y}^A,\tilde{y}^E)+\beta,0)\\ \tag{8}

Encoding facial symmetry:
这个比较简单,直接定义为:

ℓsym(T)=d(fA,f^A)+d(fB,f^B)(9)(9)ℓsym(T)=d(fA,f^A)+d(fB,f^B)

\ell_{sym}(T)=d(f^A,\hat{f}^A)+d(f^B,\hat{f}^B) \tag{9}
这里只考虑到了A和B,因为S和E对于同一segment中的元组是相同的。此外,在某些元组中,A和B可以很接近S和E,因为它们也可以覆盖S和E中的相似的信息。又因为S可以是中性帧,因此N也没有被考虑。

Encoding contrastive appearance difference:
给定元组T,loss是:

ℓcon(T)=max(η−d(fA,fN),0)+max(η−d(fB,fN),0)(10)(10)ℓcon(T)=max(η−d(fA,fN),0)+max(η−d(fB,fN),0)

\ell_{con}(T)=max(\eta -d(f^A,f^N),0)\\ +max(\eta-d(f^B,f^N),0) \tag{10}
其中 η≥0η≥0\eta\geq 0是阈值。如果 yS=yE=0yS=yE=0y^S=y^E=0,则 η=0η=0\eta=0,否则 η>0η>0\eta>0。

Learning

对于一个训练元组的整个损失是:

ℓ(T)=ℓlb(T)+λ1ℓrel(T)+λ2ℓord(T)+λ3ℓsym(T)+λ4ℓcon(T)(11)(11)ℓ(T)=ℓlb(T)+λ1ℓrel(T)+λ2ℓord(T)+λ3ℓsym(T)+λ4ℓcon(T)

\ell(T)=\ell_{lb}(T)+\lambda_1\ell_{rel}(T)+\lambda_2\ell_{ord}(T)\\ +\lambda_3\ell_{sym}(T)+\lambda_4\ell_{con}(T)\tag{11}

对所有的训练元组上的损失是:

L(DT)=1G∑m=1M∑k=1Kmℓ(Tkm)(12)(12)L(DT)=1G∑m=1M∑k=1Kmℓ(Tmk)

L(D_T)=\frac{1}{G}\sum_{m=1}^{M}\sum_{k=1}^{K_m}\ell(T_m^k) \tag{12}
其中 G=∑Mm=1KmG=∑m=1MKmG=\sum_{m=1}^{M}K_m。

Inference:
尽管CNN是使用元组来训练的,但是可以对某张图片进行AU强度的预测。给定一张测试图片,预测的结果为y=f(X;Θ)y=f(X;Θ)y=f(X;\Theta),换言之,将预测值转换为离散结果: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)0(y。

CVPR:Weakly-supervised Deep Convolutional Neural Network Learning for Facial Action Intensity Estima相关推荐

  1. PRN(20200816):A Hierarchical Deep Convolutional Neural Network for Incremental Learning [Tree-CNN]

    Roy D , Panda P , Roy K . Tree-CNN: A Hierarchical Deep Convolutional Neural Network for Incremental ...

  2. A Deep Convolutional Neural Network for segmenting and classifying epithelial and stromal regions

      文章全名:<A Deep Convolutional Neural Network for segmenting and classifying epithelial and stromal ...

  3. 【医学+深度论文:F16】2015 EMBC Glaucoma detection based on deep convolutional neural network

    16 2015 EMBC Glaucoma detection based on deep convolutional neural network Method : 分类 Dataset :ORIG ...

  4. 二值网络--Optimize Deep Convolutional Neural Network with Ternarized Weights and High Accuracy

    Optimize Deep Convolutional Neural Network with Ternarized Weights and High Accuracy IEEE Winter Con ...

  5. 目标检测--A Unified Multi-scale Deep Convolutional Neural Network for Fast Object Detection

    A Unified Multi-scale Deep Convolutional Neural Network for Fast Object Detection ECCV2016 https://g ...

  6. Paper翻译:《A Novel Convolutional Neural Network Based Model for Recognition and Classification of App》

    论文名称:<A Novel Convolutional Neural Network Based Model for Recognition and Classification of Appl ...

  7. [Paper]Application of deep convolutional neural network for automated detection of myocardial...

    *侵删 *限于博主英语水平,若翻译不当之处恳请批评指正~3Q Application of deep convolutional neural network for automated detect ...

  8. 【转】ASPLOS'17论文导读——SC-DCNN: Highly-Scalable Deep Convolutional Neural Network using Stochastic Comput

    今年去参加了ASPLOS 2017大会,这个会议总体来说我感觉偏系统和偏软一点,涉及硬件的相对少一些,对我这个喜欢算法以及硬件架构的菜鸟来说并不算非常契合.中间记录了几篇相对比较有趣的paper,今天 ...

  9. HD-CNN: HIERARCHICAL DEEP CONVOLUTIONAL NEURAL NETWORK FOR IMAGE CLASSIFICATION(泛读)

    一.文献名字和作者    HD-CNN: HIERARCHICAL DEEP CONVOLUTIONAL NEURAL NETWORK FOR IMAGE CLASSIFICATION, 2014 二 ...

最新文章

  1. sourcetree和git同步分支
  2. Java API —— BigInteger类
  3. [POJ 3270]Cow Sorting
  4. esp32 蓝牙启动流程_TWS真无线蓝牙耳机多功能测试设备
  5. 远程控制软件 TeamViewer | Windoes和Linux下teamviewer软件互连
  6. Py:递归求解汉诺塔,简单的几行编程可以搞定很高层的三柱汉诺塔游戏
  7. zz 标 题: 求weka JVM outofMemory问题的解决方案【已解决】
  8. 使用eclipse以及Juint进行测试
  9. 编码规范 | Java函数优雅之道(下)
  10. html编辑器后怎么使用,html在线编辑器怎么用
  11. 「小程序JAVA实战」微信小程序工程结构了解(五)
  12. html+css做圆角表格
  13. 期刊的中科院分区和JCR分区以及影响因子查询方法
  14. Ubuntu桌面卡死、You are in emergency mode
  15. 如何在twitter上看片_我在Twitter上一年学到的东西
  16. 转载 | 上汽集团云计算中心的开源之路
  17. 工业设计公司常对设计有什么要求?
  18. 五面阿里拿下飞猪事业部offer,统统给你解决!
  19. itext操作word,设置页眉页脚,html转word
  20. 恋人日记服务器维护中,知乐日记:恋人不会在最终相遇 因为他们本来就一直在一起...

热门文章

  1. java List 线程安全
  2. Android 图形系统概述
  3. python+neo4j构建基于知识图谱的电影知识智能问答系统
  4. android zxing生成条形码,用zxing生成没有白边的条形码
  5. 电 桥 运 放 计 算
  6. 手把手教学RRT三维算法MATLAB仿真(代码可直接运行,视频手把手教学)
  7. js混淆加密,通过混淆Js代码让别人(很难)还原,js代码加密
  8. 2022-2028全球机器人底盘行业调研及趋势分析报告
  9. LTspice仿真杂谈
  10. 在Python中使用pandas进行文件读取和写入方法详解