您的位置:首页 > 其它

Affine-Transformation Parameters Regression for Face Alignment

2016-01-03 21:00 239 查看

Affine-Transformation Parameters Regression for Face Alignment

最近写了一篇关于人脸对齐的文章,已被Signal Processing Letters录用,估计在明年一月份刊出,在这里提前和大家分享。

目前在人脸对齐方面做得比较好的算法是Supervised Descent Method(SDM)以及基于该算法派生出来的一系列算法,SDM定义了由多个关键点构成的人脸模型,利用cascaded linear regression(CLR)估计关键点的新位置,从而实现关键点的预测。与主动纹理模型AAM 等方法不同,SDM不需要求解雅可比和海森矩阵,而是直接利用线性回归器学习图像特征到关键点坐标偏移量的映射关系。这一策略使SDM可以使用鲁棒但不可微的描述算子(如SIFT,HOG)作为输入特征,而且由于线性回归的计算可通过矩阵乘完成,使得SDM的实时性很好。为方便起见,我们将SDM使用的回归策略称为关键点回归(KPR)。

SDM存在的主要问题是算法的训练时间过长,以及鲁棒性不够好。

一个线性回归器每次只能预测一个值,而通常人脸形状由多个关键点构成,常见的点数是49个点或者是68个点,KPR策略需要49×2或68×2个回归器来预测所有的坐标偏移(每个点都具有X轴和Y轴两个偏移)。当训练样本数量很大的时候,训练如此多的回归器会非常耗时,大家用过就知道。

另一个更为严重的问题是鲁棒性不够好。由于上述回归器的预测过程都是相互独立的,因此预测得到的偏移量彼此之间完全没有关系,而在现实中,关键点之间的位置关系是有规律可循的。特别是当面部有遮挡或姿态存在变化时,被挡住的点可以通过其它点来估计出位置。SDM没有考虑到上述特性,因此在头部姿态变化多,面部遮挡多的情况下,SDM容易失效。

本文想到了一种简单的解决策略:首先利用Procrustes analysis估计出每张训练样本从初始形状到真实位置之间的仿射变换矩阵,再利用线性回归学习由图像特征到仿射变换矩阵参数的映射关系。由于仿射变换矩阵可用6个参数表示,因此只需训练6个线性回归器就可估计出初始形状到仿射变换后的形状。实验表明该方法可以有效消除初始模板与真实位置之间的仿射误差,如下图所示:



图1. Procrustes analysis的估计结果与真实结果的对比

图中的蓝色表示初始形状,红色是真实位置,绿色表示根据Procrustes analysis估计出的参数进行仿射变换后的形状。可以看出最初的误差已经被极大地消除。这种策略我们称之为Affine-Transformation Parameters Regression(APR)。

与KPR策略相比,APR策略在许多方面都有优势。首先,KPR需要训练的回归器是关键点个数的2倍,而APR无论关键点个数是多少,都只需要训练6个回归器;另外 APR考虑的是全局匹配,不容易受到遮挡、头部姿态的影响,因此在鲁棒性上也有优势。

APR的不足在于只通过仿射变换消除初始形状和真实位置之间的误差,而形状间的固有误差无法消除,例如上图中的第一个样本,其嘴部的误差APR无法消除。

我们的解决思路十分简单:把APR与KPR组合在一起,每完成一次或多次APR后,进行一次KPR,这样就可以很好地消除形状间的任意误差,同时模型在训练时间、鲁棒性、预测速度和模型体积上得到了保证。

APR的训练原理如下。

仿射变换可通过下列公式描述:

xn=sx⋅cosθ⋅xo−sx⋅sinθ⋅yo+(xr+txr−sx⋅cosθ⋅xr+sx⋅sinθ⋅yr)yn=sy⋅sinθ⋅xo+sy⋅cosθ⋅yo+(yr+tyr−sy⋅sinθ⋅xr−sy⋅cosθ⋅yr)
{x_n} = {s_x}\cdot\cos \theta \cdot{x_o} - {s_x}\cdot\sin \theta \cdot{y_o}+ ( {x_r}+{t_{{x_r}}} - {s_x}\cdot\cos \theta \cdot{x_r} + {s_x}\cdot\sin \theta \cdot{y_r})\\
\\
{y_n} = {s_y}\cdot\sin \theta \cdot{x_o} + {s_y}\cdot\cos \theta \cdot{y_o}+ ( {y_r}+{t_{{y_r}}} - {s_y}\cdot\sin \theta \cdot{x_r} - {s_y}\cdot\cos \theta \cdot{y_r})

为了简便,我们将上述公式表示为:

xn=β1xo+β2yo+β3yn=β4xo+β5yo+β6
{x_{n}} = {\beta _1}{x_o} + {\beta _2}{y_o} + {\beta _3}\\{y_{n}} = {\beta _4}{x_o} + {\beta _5}{y_o} + {\beta _6}

其中

β1=sxcosθ,β2=−sxsinθ,β3=xr+txr−β1xr−β2yrβ4=sysinθ,β5=sycosθ,β6=yr+tyr−β4xr−β5yr
{\beta _1} = {s_x}\cos \theta, \;{\beta _2} = - {s_x}\sin \theta, \;{\beta _3} = {x_r} + {t_{{x_r}}} - {\beta _1}{x_r} - {\beta _2}{y_r}\\
{\beta _4} = {s_y}\sin \theta, \;{\beta _5} = {s_y}\cos \theta, \;{\beta _6} = {y_r} + {t_{{y_r}}} - {\beta _4}{x_r} - {\beta _5}{y_r}

我们的目的是通过线性回归学习图像的HOG或SIFT特征到参数β1∼β6{\beta _1\sim\beta_6}之间的映射关系。

从上述公式可以看出,参数β1,β2,β4,β5{\beta _1,\beta_2,\beta _4,\beta_5}仅与尺度参数sx,sy{s_x,s_y}以及旋转角度θ{\theta}有关,而β3,β6{\beta _3,\beta_6}与旋转中心(xr,yr)(x_r,y_r)以及偏移量txr{t_{x_r}}和tyr{t_{y_r}}有关。直觉似乎可以感觉到建立HOG特征到β3,β6{\beta _3,\beta_6}之间的映射并非易事。

下图可以更为清晰地说明存在的问题:



图2. 说明为何不能直接建立HOG特征到β3,β6{\beta _3,\beta_6}的映射

(a)和(b)分别表示两张相似的人脸照片,它们表示同一个人,唯一不同的就是人脸所在的位置。我们假设人脸检测器足够精准,此时两张图片所得到的HOG特征是完全相同的。

我们令旋转中心(xr,yr)(x_r,y_r)位于坐标系原点,即

xr=0,yr=0x_r=0,y_r=0

则可知:

β3=txr,β6=tyr{\beta _3 = t_{x_r}},{\beta _6 = t_{y_r}}

也就是说需要建立HOG特征与txr,tyr{t_{x_r}},{t_{y_r}}之间的映射关系,然而从图M1中可以明显看到:(a)和(b)的txr,tyr{t_{x_r}},{t_{y_r}}是存在巨大差异的,也就是说相同的HOG特征会映射到不同的β3,β6{\beta _3,\beta_6}上,这种映射关系显然是不稳定的。

为了克服该问题,我们不使用坐标系原点作为旋转中心,而使用人脸检测框的中心作为旋转中心。从图M2中可以看出:此时(a)和(b)上的偏移量txr,tyr{t_{x_r}},{t_{y_r}}是一致的,我们可以学习HOG特征和txr,tyr{t_{x_r}},{t_{y_r}}之间的稳定映射,在根据前面的公式间接计算出β3,β6{\beta _3,\beta_6}。

我们在HeleniBUG上测试了不同的APR+KPR的组合,实验表明:APR-APR-KPR-APR-APR-KPR策略在两个数据集上取得了最好的效果,如下图所示:



图3. 不同APR+KPR策略的对比

我们将APR-APR-KPR-APR-APR-KPR策略与当前顶级的人脸对齐算法,包括CFSSGN-DPMPO-CRChehraAFWHeleniBUG以及LFPW数据集上进行了对比,实验环境为Matlab。结果表明,我们的方法在精度、速度、训练时间和模型体积上都有不错的性能,唯一的缺陷是在iBUG数据集上与PO-CR算法相比,精度仍有一定的差距,这是因为仿射变换无法很好地消除大幅度的平面外旋转误差。

相关结果如下所示:



图4.与当前顶级算法在不同数据库上的精度比较



图5.与当前顶级算法在模型体积和定位速度上的比较



图6.本文方法的实际工作效果

代码及论文下载:http://download.csdn.net/detail/kklots/9388152
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: