Localizing Parts of Faces Using a Consensus of Exemplars

原创 2016年08月29日 10:36:00

方法:基于1000个手动标记的实例图像,组合局部检测器的输出和一组非参数的全局模型。假定全局模型产生块的位置作为隐含变量,然后推导一个贝叶斯目标函数,然后使用一组模型关于隐含变量求解最优化。
人脸检测:COTS商业人脸检测器。
简介:
我们将块的定位表示贝叶斯推理,其将一个人脸形状的先验模型和局部检测器的输出组合。和先前的工作不一样,我们的先验是建立在人脸各部分的组态的非参数模型,利用大量搜集的各种各样带有标签的实例。
相关工作:
眼角和鼻尖相对于其他基准点更加稳定(如嘴或者眉毛会随着标表情的变化显著不同)。因此一些检查算法会首先定位稳定的点,然后约束嘴点的位置(例如:利用稳定点的条件概率)。然而当稳定点被遮挡时,该方法会失败。相反,我们使用类RANSAC采样,随机的选择不同类型的块(部分,部件),这样的话,能够容忍一些面部特征点的遮挡。

Face Part Location

Local Detection

对于每一个特征点(块,部分,部件,基准点),我们建立一个滑动窗口检测器,其能扫描整个图像区域。该检测器使用SVM回归,特征采用灰度SIFT描述子。SIFT描述子的窗口采用两个尺度:大于是瞳孔距离的1/4和1/2。然后将这两个SIFT描述子串联形成一个256维的特征矢量。
对于所有的训练样本,我们将图像进行缩放,满足图像中瞳孔的距离大于为55个像素。正样本在手动标记的块(特征点)位置获取,负样本在至少远离标记点位置1/4的瞳孔距离处获取。此外,使用在±200面内旋转的随机图像用作合成的额外训练样本。
这些局部检测器返回图像中每一个点的得分(或者从更早的人脸检测步骤推断出来的围绕人脸的某个更小的区域)。检测器得到d(x)表示目标基准点在图像中点x处的可能性。通过处于检测窗口中得分的总和,将得分进行标准化使得它在行为上看起来像一个概率。经过标准化之后,我们将这个得分写作:P(x|d),也就是给定检测窗口内所有得分的前提下,基准点在位置x处的概率。
然而,局部基准点检测器不完美,正确的位置不总是在最高检测得分处。例如由于头部姿态,视觉遮挡(头发,眼睛,手,手机等)引起的遮挡。下面,我们建立一个全局的检测器来更好的处理局部检测器失效的情况。

3.2 Global Detectors

尽管人脸有很多形状,在相机前以多种方式呈现,并且可能拥有夸张的面部表情,但是存在很强的解剖的和几何的约束,这些约束控制着人脸部分的在图像中布局和位置。我们不明确的建模这些约束,而是让我们的训练集隐式的指示这些约束。这里,我们需要考虑到所有部分(块)的位置,合并起来,为基准点集合开发一个全局的检测器。为了这样,我们使用一个全局模型来建模部分(块)位置的组态。
更加正式的,令X={x1,x2,...,xn},表示n个部分的位置,其中xi表示第i个部分的位置。令D={d1,d2,...,dn}表示测出的检测器的响应,其中di表示通过ith局部检测器得到的窗口得分。
So,我们的目标是:找到使得给定局部检测器的得分前提下,X的概率最大化的X的值,也就是:

X=argmaxXP(X|D)(1)

{\color{red}{从公式(1),我们可以看出,我们还没有引入形状的先验.}}
Xk(其中k=1,…,m)表示是m个实例中,第k个实例的n部分的位置,并且Xk,t表示通过某种相似转换t转换实例k后的部分的位置,我们称Xk,t是一个全局模型。
如果我们假定每一个X可以通过一个全局模型Xk,t产生。我们将P(X|D)展开如下:
P(X|D)=k=1mtTP(X|Xk,t,D)P(Xk,t|D)dt(2)

公式(2),利用全概率很容易得到。这里我们引入了Xk,t,其中Xk,k=1,...,m是预先得到的m个实例,即先验.
其中m个实例Xk,以及相似变换t引入到了P(X|D)的计算中,然后进行了边缘化。
通过调节全局模型Xk,t,我们现在可以将部分的位置xi看作是彼此相互条件独立,则可以将等式2的第一项写作:
P(X|Xk,t,D)=Πni=1P(xi|xik,t,di)(3)

=Πni=1P(xik,t|xi,di)P(xi|di)P(xik,t|di)(4)

从公式(3)到公式(4)采用贝叶斯公式得到。公式(3)将部分检测器进行了分离。

因为,真实的基准点的位置的信息,胜过检测器获取的基准点的位置信息,因此P(xik,t|xi,di)=P(xik,t|xi)。同样的,因为转换后的模型的基准点和真实的基准点之间是平移不变的,其应该仅依赖于xik,t=xik,txi
带有这些观察,我们可以将公式4写作:

P(X|Xk,t,D)=Πni=1P(xik,t)P(xi|di)P(xi|di)(5)

移动到等式(2)中的第二项,我们可以使用贝叶斯跟踪得到:

P(Xk,t|D)=P(D|Xk,t)P(Xk,t)P(D)(6)

P(Xk,t)P(D)Πni=1P(di|xik,t)(7)

(因为全局模型是先验,因此我们可以在其上面进行假设)通过调节全局模型Xk,t,我们可以将检测器的响应di看作是彼此相互条件独立的。
最终应用贝叶斯规则重写等式7,为:
P(Xk,t|D)=P(Xk,t)P(D)Πni=1P(di)Πni=1P(xik,t)Πni=1P(xik,t|di)(8)

=CΠni=1P(xik,t|di)(9)

注意:P(Xk,t)Πni=1P(xik,t),P(D)Πni=1P(di),因为各个特征点之间是相关关联,即存在约束,而不是独立的。这也是我们引入全局检测器,来矫正局部检测器失败的原因。

注意到,在给定图像的前提下,方括号中的仅依赖于D的项是一个常量。同样的,方括号中的仅依赖于Xk,t的项也是一个常量(因为我们假定全局模型服从均匀分布)。
理解:P(xi|di)asP(xi|di,I)P(X|D)asP(X|D,I),so,given IP(D)是一个常量。
组合等式1,2,5,9得到:

X=argmaxXk=1mtTΠni=1P(xik,t)P(xi|di)dt(10)

其中X表示估计的部分(块,基准点)的位置。
因此需要求解公式(10)中的:P(xik,t),P(xi|di)

第一个项P(xik,t)看作是中心在模型位置xik,t处的一个2D高斯分布。每一个部分i拥有自己的高斯分布。这些分布建模全局模型基准点位置拟合真实位置的程度。如果在我们标记的数据集中有的大量的实例,从这些实例中来构造这些全局模型。也就是说,如果m很大,我们期望一个接近的拟合并且分布的方差小。为了估计部分(块,基准点)位置的方差矩阵,我们随后这样做:对于标记数据集中的每一个实例Xj,我们从剩余的实例中找到一个样本Xk和给定到Xj最好的L2范数的拟合的一个转化t。我们计算差:XjXk,t,并且除以瞳孔的距离来进行标准化。这些标准化的差来计算每一个块位置的协方差矩阵。
第二项P(xi|di)计算如下。我们取针对部分i估计的位置并且查找第ith个检测器在图像中那一点的响应。也就是di(xi).然后除以检测窗口中所有x的di(x)和进行标准化,使其行为上类似于一个概率。

最优化

计算等式(10)中的和,积分具有挑战性,因为其是在所有的全局模型k和所有相似变换t上进行的。然而,从等式(2)我们注意到,对于一个给定的k和t,如果P(Xx,t|D)很小,那么其对总的和,以及积分的贡献也将很小。因此,我们的策略是仅考虑那些P(Xx,t|D)很大的转换为t的全局模型k。
在某种意义上,我们希望执行等式(10)的一个Monte Carlo integration,其中我们选择的全局模型Xk,t是可能对和以及积分有贡献的。在接下来的部分,我们描述怎么选择一列用于计算积分的k,t。

4.1 选择全局模型Xk,t

我们希望关于未知量k和t,最优化P(Xk,t|D)。这个最优化是非线性的,并且不服从于梯度下降类型的算法。首先,k是一个离散的变量,取值范围可能很大。(在我们的实验中,我们有大约1000可能的实例)。第二,我们意象到甚至对于固定的k,不同的t值将产生大量的局部最优值,因为我们的基准点检测器通常产生一个多模式的输出。将一个模型与这些模式的任何子集对齐的转换可能使得我们的最优化函数产生局部最优。
为了解决这个问题,我们采用一个类RANSAC产生和测试方法。我们产生大量可信的k和t。使用等式9,计算每一个的P(Xk,t|D)。我们跟踪m个最好的全局模型,也就是m对k和t。做法如下:
1. 选择一个随机k.
2. 选择两个随机的块。随机的匹配每一个模型块到该块检测器输出的g个最高的模式中的一个。
3. 设置t是模型基准点与检测器模式进行对齐的相似转换。
4. 对于此k,t计算等式9
5. 重复步骤1to4 r次。
6. 将在步骤4中计算的公式9最大的m对k和t记录集合M中。
在我们的实验中,我们使用r=10,000,g=2和m*=100.

4.2 估计X

在上面的子章节,我们使用一个类RANSAX过程来找到m*个全局模型X_{k,t}。因此等式(10)可以近似的表示为:

X=argmaxXk,tMΠni=1P(xik,t)P(xi|di)(11)

其中求和是关于k,tM

为了找到最好的X*,我们首先找到每一个部分i个一个初始的估计xi0

xi0=argmaxxik,tMP(xik,t)P(xi|di)(12)

这等价于通过设置等式10中的P(xik,t)P(xj|dj)为一个常数,然后求解xi0。为了计算xi0,我们仅需要将检测器的输出乘以一个中心在xik,t处的高斯函数,高斯函数的协方差的计算如3.2部分描述的那样。然后我们找到乘积之和最大化(如公式12)的图像中位置xi0。初始的估计,xi0,i1...n可以用于初始化求解等式(11)的最优,为了找到最终估计的xi(其构成X)(在实际应用中,我们发现这些初始估计足够了,没有必要进行进一步的优化)。

5 实验

数据集:LFPW
排除的数据:COTS人脸检测器检测不到的,人脸上含有文本的,(近似侧脸COTS检测不到,所以被排除在外)。
数据集含有35个基准点,实验中使用29个(除去耳朵).
数据集:BioID,23个个体,1521张图像,使用17个基准点。
注意:两幅图像基准点标记的不一样,例如在LFPW中,左鼻点和右鼻点在鼻子的外部,而在BioID中在鼻子的下部)。

5.2 结果

我们使用LFPW进行实验,将其随机的分为1100个训练图像和300个测试图像。训练图像用于训练基于SVM的基准点检测器并且充当计算全局模型Xk的实例。
这里写图片描述
图6给出了检测的一些error。
第1行第2列和5列,由于局部检测器对于下巴不具有可区分性导致的检测失误。
第2行第4列,下嘴唇不能正确的定位,是因为嘴是张开的,漏出了一行牙齿。我们认为其是由于局部检测器造成的。在未来的工作中,我们使用彩色图像,其很容易区分牙齿和嘴唇。
第4行第1列,左眼眉毛的左角太低,大概是由于头发的遮挡引起的。

参考文献:

1.Localizing Parts of Faces Using a Consensus of Exemplars

理解:
我们的目标是求解P(X|D)关于X的最大化。
其中D是训练好的局部基准点检测器(联合的基准点检测器),X表示检测的基准点的位置。为了分离D(将其分离为独立的d1,...,dn),以及引入全局形状的先验,我们引入一个新的变量Xk,最简单的方式就是针对该变量进行全概率的展开:

P(X|D)=k=1mP(X|Xk,D)P(Xk|D)

同样的思想,我们得到公式(2):
P(X|D)=k=1mtTP(X|Xk,t,D)P(Xk,t|D)dt(2)

因为m是实例的个数是离散的,t表示转换是一个连续的变量,因此一个是叠加符号,一个用积分符号。
下面我们的任务就是计算两个条件概率:
P(X|Xk,t,D)P(Xk,t|D)


P(X|Xk,t,D)展开为公式(3)和(4):

P(X|Xk,t,D)=Πni=1P(xi|xik,t,di)(3)

=Πni=1P(xik,t|xi,di)P(xi|di)P(xik,t|di)(4)

公式(3)表明,第i个基准点的检测仅与第i个检测器以及第i个xik,t有关。
将公式(3)展开为公式(4),我们就可以利用现用的P(xi|di).然后进一步的分析公式(4)中的其他两项。
由于知道了基准点真实位置的信息胜过检测器提供的信息P(xik,t|xi,di)=P(xik,t|xi),我们知道xik,t,表示第k个实例的基准点i经过变换之后的点的位置。如果有系列的实例的基准点i经过变换以后,出现在测试图像真实的第i个基准点的附近,且服从高斯分布,即我们希望经过变换后的点以更高的概率落入到真实的基准点位置。则:
P(xik,t|xi)=P(xik,txi)=P(xik,t)
这样:利用局部检测器在人脸图像上获得了两个最大的响应,且两个响应的位置相距很远,因此我们有了全局先验形状高斯约束,从而不会选择远处的可能高的响应。
从而利用等式1,2,5,9就可以推导出最终的公式10.
难点在于,积分是在连续的空间进行的,因此为了求解,我们需要分析公式,变成求解离散的(主要贡献)。
假定变量xik,t服从高斯分布,现在我们要用现有的x数据来估计高斯分布的方差和均值,我们采用最大似然法:
因为高斯分布的最大似然估计为:
μ=1ni=1nxi

σ=1ni=1n(xix¯)2

推导可参考:
http://blog.sina.com.cn/s/blog_4b1046f80101m06i.html

疑问:

疑问1:
算法中k和t的选择.
1.选择一个随机的k。即随机选择一个样本。
2.选择两个随机的部分。(即训练的选择两个基准点)。随机的匹配每一个基准点到该基准点的检测器输出的g个最高的模型。
(这里随机的选择两个部分,很难理解!)
3…

疑问2:
文章用公式(12)进行初始化的估计位置之后,算法就进行终止,不对公式(11)进行进一步的最优化。如果我们想进一步的最优的话,如何进行?穷举吗?

本文XeLaTex格式下载地址
http://download.csdn.net/detail/xuluhui123/9618234

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Learning Notes - Understanding the Weird Parts of JavaScript

The learning notes of the MOOC "JavaScript: Understanding the Weird Parts" on Udemy,including most i...

【DirectX11-Tutorial】win32基础1-游戏运行的各个阶段The Parts of a game

DirectX11-Tutorial 本系列主要参考此博客的文章l,同时会加上一点个人实践过程。 ========================================== 分割线 ...
  • hcud024
  • hcud024
  • 2016年04月24日 16:46
  • 869

Error configuring application listener of class com.sun.faces.config.ConfigureListener

Error configuring application listener of class com.sun.faces.config.ConfigureListener java.lang.Cla...
  • valord
  • valord
  • 2017年04月27日 19:08
  • 785

【JavaEE】Introduce of "JSF's faces-config.xml"

由于在上一篇文章中,已经介绍了JSF的基本构成,实现了最简单的登录demo,最基本的配置,即"web.xml+faces-config.xml+ManagedBean+jsp",下面详细对其中的配置+...

Calculating The Sum of Its Parts

  • 2011年12月03日 10:50
  • 2KB
  • 下载

论文阅读:End-to-End Learning of Deformable Mixture of Parts and Deep Convolutional Neural Networks for H

human pose estimation DPM End-to-End Learning of Deformable Mixture of Parts and Deep Convolutional ...

The major challenges of IC scaling faces

  • 2014年10月07日 21:08
  • 37KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Localizing Parts of Faces Using a Consensus of Exemplars
举报原因:
原因补充:

(最多只允许输入30个字)