CVPR:Facial Expression Intensity Estimation Using Ordinal Information

Facial Expression Intensity Estimation Using Ordinal Information

Abstract

先前工作不足之处:大都关注于基本的表情的识别,只有少部分工作关注连续的表情强度的检测。原因是缺乏有标记的表情强度的数据。
本文工作:将表情的强度检测看成一个回归问题,通过利用面部表情的onset-apex-offset演化模型,本文的方法可以处理不同数量的标注信息,进行基于帧的表情强度识别。提出两种方式:(1)有监督:所有的帧都是有标记的;(2)弱监督:只有挑选的关键帧是有标记的。使用基于Alternating Direction Method of Multipliers(ADMM)的优化算法进行参数的学习。

Introduction

如何衡量表情的强度是比较困难的。有两种方式:

  • 利用AU强度。缺点是:需要专业的人手动进行AU的标记,另外AU强度检测本身也是一个问题;
  • 利用对某一表情在不同阶段的人脸的相对差异。比如,将表情强度定义为距离中性或兴奋表情的相对程度。尽管这些定义简单,但是并不精确,对不同强度的定义需要大量的手工劳作和专业知识。

本文方法:挖掘不同帧,选出的帧的强度标签之间的序列关系(ordinal information)。思路来源于:观察到面部表情的时序变化遵从一个特定的顺序。首先,从中性帧开始,此时没有表情,表情强度处于最低的水平(onset);接下来,观察到表情强度会达到一个峰值(apex);最后,表情强度会开始下降,直到回归中性(offset)。如下图-所示:

这里写图片描述

本文贡献:

  • 提出了一种表情强度检测的回归方法,挖掘了同一表情序列中不同帧的序列关系以及同时也充分利用了有强度标签的信息(如果是有标签的情况下);
  • 引入一个统一的最大边界学习框架可以同时挖掘两个来源的信息(two source of information);
  • 根据有标记的表情强度标签的可得性,本文的方法可以扩展到不同的情况。

Problem Statement

目标是使用有标记的或者无标记的表情序列作为训练集,学习一个基于帧的表情强度检测器。定义表情序列: X = { x i R d | i = 1 , , | X | } ,其中 x i 是第i个单独的帧,d是一帧的特征维度, | X | 是序列的长度。定义 X 的强度标记是 X = { x i R d | i = 1 , , | X | } ,其中 V { 1 , , | X | } 。对于有监督的情况, V 包含所有的帧的ID。对于弱监督的情况, V 仅包含挑选出的有标记的帧的ID。对于无监督的情况, V 是空集。

假定对于一个表情序列,表情强度要么单调增长,直到峰值(apex frame),要么在达到峰值后单调下降。令 p 表示apex frame的ID,则有不等式:

(1) y i > y j , ( i , j ) E

其中 E = { ( i , j ) | 1 j < i p o r p i < j | X | }

在训练时,我们有多种序列,以及关于强度标记的额外的信息 D = { X n , Y n , V n , E n } , n = 1 , , N ,其中N是序列的数量。如前面所说, V n 是会变化的:

  • 对于有监督的情况, V n = { 1 , , | X n | } ,即所有帧;
  • 对于弱监督的情况, V n = { 1 , p , | X n | } ,换言之,即onset,apex和offset,假定第一帧和最后一帧分别是onset和offset帧。
  • 对于无监督的情况, V n = ϕ

目标是学习一个回归函数: f : R d R 。给定一个表情的图片,我们使用下面的函数进行表情强度的检测:

(2) y = f ( x ; θ )

Background

这里简单介绍下支持向量机回归(Support Vector Regression SVR)和序列回归(Ordinal Regression OR)。

SVR:
SVR是基于SVM的改进,给定有标记的数据 { y i , X i } ,可以学习一个回归的模型。其中常用的是 ε SVR 模型,通过解决下面的优化问题来学习模型的参数 θ = { w , b }

(3) min θ , η + , η 1 2 w 2 + γ i ( η i + + η i ) s . t . w T ϕ ( x i ) + b y i ϵ + η i + y i w T ϕ ( x i ) b ϵ + η i η i + , η i 0 , i

其中 η 是一个常量,定义了最大的误差以使预测值被认为使正确的,即确定了一个认为预测结果是正确的范围。 ϕ : X F 是一个从输入空间 X 到某个特征空间 F 的映射。 γ 是一个常量,用于平衡正则项和回归损失。公式-3的求解相当于它的对偶问题,通过使用核函数可以避免复杂的高维特征空间中的计算。这点和我们学习的SVM是类似的。

SVR从SVM中继承了一个很好的优点:SVR的解是稀疏的,这就使我们只使用数据点的子集就可以决定模型的参数。因为SVR只能使用有标记的帧来进行训练。在实验中,本文使用SVR来作为baseline。

Ordinal Regression:
给定有标签的数据 { y i , x i } ,其中 y i 是有序的离散的值,则OR的目标是解决如下的优化问题:

(4) min θ , η + , η 1 2 w 2 + γ ( i , j ) E ξ i j s . t . w T ( ϕ ( x i ) ϕ ( x j ) ) 1 ξ i j ξ i j 0 , ( i , j ) E

其中 E = { ( i , j ) | y i > y j } 不同于SVR,OR不需要任何有标记的表情强度帧,只需要帧的顺序信息,而且该信息本身就包含在序列中。所以我们把OR作为一个无监督的baseline。

Proposed Method

本文的方法来自于前面两个baseline。SVR使用了有标记的表情强度信息,但是忽略了序列的信息;OR刚好相反。本文提出基于回归模型的最大边界方法,可以更好的利用前两者的优点。同时本文也发展了更有效的优化算法来解决训练的问题。

使用线性模型 f ( x ; θ ) = w T x + b ,其参数为 θ = { w , b } 。给定 D = { X n , Y n , V n , E n } , n = 1 , , N ,我们想要解决下面的优化问题:

(5) min θ , η , ξ 1 2 w 2 + γ 1 n = 1 N k V n ( l 1 ( η k ( n ) + ) + l 1 ( η k ( n ) ) ) + γ 2 n = 1 N ( i , j ) E n ( l 2 ( ξ i j ( n ) ) ) s . t . w T x k ( n ) + b y k ( n ) ϵ + η k ( n ) + y k ( n ) w T x k ( n ) b ϵ + η k ( n ) w T ( x i ( n ) x j ( n ) ) 1 α i j ξ i j ( n ) η k ( n ) + , η k ( n ) , ξ i j ( n ) 0 k V n , ( i , j ) E n , n = 1 , , N

其中 γ 1 , γ 2 , ϵ > 0 是常量, l 1 l 2 是应用于松弛变量 η ξ 的某种函数。参数 α = { α i j } = { 1 | i j | } , i j 用于对temporal进行平滑。注意到当 α i j = 1 时,就与前面所说的OR的限制条件相同了。

实际上公式5中的最后一项即用到了先验知识的序关系。对于函数 l 1 l 2 的选择,考虑了两种情况:

  • l i ( x ) = x :hinge loss
  • l i ( x ) = x 2 : squared loss

由于公式5中第三项约束每次需要取i,j两个样本,所以算法的复杂度达到了 O ( n 2 ) 。为了降低算法复杂度,借助于ADMM算法求解。ADMM算法利用增广拉格朗日乘数进一步提高了效率,加快了收敛速度。为了使用ADMM,重新规则化公式5:

min u , t 1 2 u T Λ u + μ T l ( z 0 ) s . t A u + c = z

其中l是可选的损失函数(同上), Λ R ( d + 1 ) × ( d + 1 ) 是一个对角矩阵。 u R M 1 + M 2 是一个向量,它的第一项 M 1 γ 1 ,最后一项 M 2 γ 2 α A R ( M 1 + M 2 ) × ( d + 1 ) 是一个矩阵, c R M 1 + M 2 是一个向量。具体而言:
A = [ X V 1 X V -1 X E 0 ] , c = [ ϵ 1 y ϵ 1 + y 1 ]

其中 X V 是一个矩阵,它的每一行代表一个已知标签的样本。 X E 是一个矩阵,它的每一行代表两个样本的特征差值。1和0是全1或全0元素的向量,其维度匹配对应的矩阵维度。 z 0 代表接近0的数,其中的元素是三个松弛变量 η + , η , ξ

对于函数l使用hingge loss,则算法为:

算法: 使用ADMM学习过程
输入: X :表情序列, Y :强度标签, V :有强度标签的集合, E :序列集合
输出: 学习到的模型
1: 使用 X,Y,V,E 构造 Λ , u , A , c
2: u 0 , z 0 , v 0
3: repeat
4: u k + 1 := [ 1 ρ Λ + A T A ] 1 A T ( z k 1 ρ v k c )
5: z i k + 1 := S u i 2 ρ ( a i )
6: v k + 1 := v k + ρ ( A u k + 1 z k + 1 + c )
7: until 收敛或者到达最大迭代次数
8: return u

其中, a = 1 ρ v k + A u k + 1 + c 1 2 ρ u { a i } 以及:

S k ( a i ) = { a i k , i f a i > k 0 , i f | a i | k a i + k , i f a i < k

最后即可以使用建立起来的模型 y = w T x + b 来对新的预测样本 x 进行预测

猜你喜欢

转载自blog.csdn.net/cassiePython/article/details/80884945