Self-supervised Representation Learning from Videos for Facial Action Unit Detection(CVPR 2019)

Self-supervised Representation Learning from Videos for Facial Action Unit Detection(CVPR 2019)
Paper PDF

Introduction

Facial Action -> Functional -> usual methods -> problem -> proposed method

人脸作为人类之间交流所面对的人体器官,可以显示出无数种信息。为了全面的研究面部的运动模式,Ekman和Friesen开发了面部动作编码系统(FACS),它定义了一套独特的约40个原子级别的面部肌肉动作,称为动作单元(Action Units, AUs)。通过对人脸面部运动单元的检测,我们可以从中获取大量与人内心活动有关的信息,并具有广泛的应用场景。比如,表情识别、健康评估、人机交互等等。通常对AUs的检测算法按照类型可以分为以下三种:

  1. Descriptor:
  2. Supervised:
  3. Self-supervised:

由于给视频中人脸打面部运动单元标签的任务困难,导致在AUs检测方面的数据集极为缺乏,小样本的监督学习也容易造成过拟合。对此,本篇论文提出基于检测运动信号的自监督学习方式。考虑到不同帧中人物头部的差异由面部的AUs变化和头部姿势的改变两者共同造成,本文提出一种Twin-Cycle Autoencoder(ACAE)来同时学习头部姿势相关和面部运动单元相关的运动信息,并以此来解耦两者,达到提取discriminative的AUs表征。具体来讲,TCAE通过预测AUs相关和头部姿势相关的运动,将源帧的AUs和头姿态转换为目标帧的AUs和头部姿态。

Self-supervised Representation Learning from Videos for Facial Action Unit Detection(CVPR 2019)


Innovation

  1. 用像素移动来表示AU以及头部姿态的运动,并以这种运用信号,来进行自监督的学习。具体见##Cycle with AU/pose changed
  2. 对AU和头部的运动进行解耦,获得更加‘纯粹’的AU表征。

Method

Self-supervised Representation Learning from Videos for Facial Action Unit Detection(CVPR 2019)
整个网络架构如上图所示,可以大致分为以下三个模块:

Feature disentangling

TCAE首先对源人脸图像和目标人脸图像使用编码器分别获得各自的AU特征(ϕs,ϕt\phi_s,\phi_t)和头部姿势特征(ψs,ψt\psi_s,\psi_t)。TCAE将ϕs,ϕt\phi_s,\phi_t级联在一起输入AU-related解码器DAD_ADAD_A用来解码AUs是如何从源脸变换为目标脸。同理,将ψs,ψt\psi_s,\psi_t级联在一起输入pose-related解码器DPD_PDPD_P用来解码头部姿势是如何从源脸变换为目标脸。

论文中将这种变换定义为像素的移动。比如AUs造成的变换可以定义为一个矩阵τARW×H×2\tau^A \in \mathbb{R}^{W \times H \times2},其中W,HW,H分别代表图像的宽和高。τxyA=(δx,δy)\tau^A_{xy}=( \delta_x ,\delta_y),其中δx,δy\delta_x ,\delta_y分别表示在位置(x,y)(x,y)上的像素在x方向和y方向的位移量。因此,τA\tau^A作为一种变换,将原始人脸改变为AU-changed的人脸,即IsIAI_s \mapsto I_A

与之相似,我们从pose-related解码器DPD_P从获得与头部姿态相关的像素的移动τP\tau^PτP\tau^P作为一种变换,将原始人脸改变为pose-changed的人脸,即IsIPI_s \mapsto I_P

为了区分AU和位姿变化引起的位移,我们在τA\tau^A上加入L1正则化,以保持AU-related运动的稀疏性和精微性,如式所示:
L1A=x,yτxyA1(1) \mathfrak{L}_1^A=\sum_{x,y} \| \tau_{xy}^{A}\|_1 \tag{1}

Target reconstruction

TCAE通过线性组合的方式来整合由τA\tau^AτP\tau^P造成的帧间差异。
τxy=αxyAτxyA+αxyPτxyAs.t.αxyA+αxyP=1 \begin{aligned} & \tau_{xy} = \alpha_{xy}^A \tau_{xy}^A+\alpha_{xy}^P \tau_{xy}^A \\ s.t. \\ & \alpha_{xy}^A + \alpha_{xy}^P =1 \end{aligned}

τ\tau作为变换,将源人脸映射为预测的目标人脸。因此,我们需要限制变换后的人脸与目标人脸的相似度,如式2所示:
Lrec=τ(Is)It1(2) \mathfrak{L}_{rec} = \| \tau(I_s)-I_t \|_1 \tag{2}
其中,Is,ItI_s,I_t分别为源人脸图片和目标人脸图片。

Cycle with AU/pose changed

在 AU-changed 的循环中:
给定输入(ϕsϕt)(\phi_s\phi_t)DAD_A解码到由IsI_sIAI_A的变换τA\tau^A。这个变换具体为一个(W×H×3W \times H \times 3)矩阵,包含每个像素点的mask和偏移量。基于变换τA\tau^A,我们可以得到AU-changed人脸IA=τA(Is)I_A=\tau^A(I_s)。并定义IAI_A经过编码器得到AU相关特征ϕsA\phi_s^A,头部姿态相关特征ψsA\psi_s^A

那么,给定输入(ϕsϕsA)(\phi_s\phi_s^A)DAD_A可以解码为到由IAI_AIsI_s的变换τA\tau^{-A}。如果我们在AU-changed人脸IAI_A上使用变换τA\tau^{-A},得到的人脸图像τA(IA)=τA(τA(Is))\tau^{-A}(I_A)=\tau^{-A}(\tau^A(I_s))一定和源人脸IsI_s相似。因此,得到另一约束条件,如公式3所示:
LcycA=τA(τA(Is))Is1(3) \mathfrak{L}_{cyc}^A=\|\tau^{-A}(\tau^A(I_s)) - I_s\|_1 \tag{3}
除此之外,我们还要考虑特征级别的一致性。考虑到图像IsI_s经历AU相关的变换得到图像IAI_A,因此IsI_sIAI_A在头部姿态特征上应该具有相似性,ItI_tIAI_A在AU特征上应该具有相似性,因此我们得到公式5:
LembA=ψsAψs2+ϕsAϕt2(5) \mathfrak{L}_{emb}^A =\|\psi_s^A - \psi_s\|^2+\|\phi_s^A - \phi_t\|^2 \tag{5}

pose-changed的循环中:
给定输入(ψsψt)(\psi_s\psi_t)DPD_P解码到由IsI_sIPI_P的变换τP\tau^P。基于变换τP\tau^P,我们可以得到pose-changed人脸IP=τP(Is)I_P=\tau^P(I_s)。并定义IPI_P经过编码器得到AU相关特征ϕsP\phi_s^P,头部姿态相关特征ψsP\psi_s^P

那么,给定输入(ψsψsA)(\psi_s\psi_s^A)DPD_P可以解码为到由IPI_PIsI_s的变换τP\tau^{-P}。如果我们在pose-changed人脸IPI_P上使用变换τP\tau^{-P},得到的人脸图像τP(IP)=τP(τP(Is))\tau^{-P}(I_P)=\tau^{-P}(\tau^P(I_s))一定和源人脸IsI_s相似。因此,得到另一约束条件,如公式4所示:
LcycP=τP(τP(Is))Is1(4) \mathfrak{L}_{cyc}^P=\|\tau^{-P}(\tau^P(I_s)) - I_s\|_1 \tag{4}
除此之外,我们还要考虑特征级别的一致性。考虑到图像IsI_s经历头部姿态相关的变换得到图像IPI_P,因此IsI_sIPI_P在AU特征上应该具有相似性,ItI_tIPI_P在头部姿态特征上应该具有相似性,因此我们得到公式6:
LembP=ϕsPϕs2+ψsPψt2(6) \mathfrak{L}_{emb}^P =\|\phi_s^P - \phi_s\|^2+\|\psi_s^P - \psi_t\|^2 \tag{6}


Experiment

Implementation details Detailed

编解码器的设计如下图所示:
Self-supervised Representation Learning from Videos for Facial Action Unit Detection(CVPR 2019)
Loss 函数如公式7所示
L=1W×H×3Lrec+λ1W×H×2L1A+λ2W×H×3(LcycA+LcycP)+λ3256(LembA+LembP)(7) \mathfrak{L} = \frac{1}{W \times H \times 3} \mathfrak{L}_{rec} + \frac{\lambda_1}{W \times H \times 2}\mathfrak{L}_1^A+\frac{\lambda_2}{W \times H \times 3}(\mathfrak{L}_{cyc}^A+\mathfrak{L}_{cyc}^P) +\frac{\lambda_3}{256}(\mathfrak{L}_{emb}^A+\mathfrak{L}_{emb}^P) \tag{7}

训练的过程中采用了Curriculum Learning的方式,即难度递增的策略进行训练。

Comparisons with other methods

表中数值均为F1-score:
Self-supervised Representation Learning from Videos for Facial Action Unit Detection(CVPR 2019)

Self-supervised Representation Learning from Videos for Facial Action Unit Detection(CVPR 2019)
Self-supervised Representation Learning from Videos for Facial Action Unit Detection(CVPR 2019)

Self-supervised Representation Learning from Videos for Facial Action Unit Detection(CVPR 2019)

Analysis

Self-supervised Representation Learning from Videos for Facial Action Unit Detection(CVPR 2019)