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=0

x_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}。

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


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

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

相关结果如下所示:


图4.与当前顶级算法在不同数据库上的精度比较
图5.与当前顶级算法在模型体积和定位速度上的比较
图6.本文方法的实际工作效果

代码及论文下载:http://download.csdn.net/detail/kklots/9388152

Affine-Transformation Parameters Regression for Face Alignment相关推荐

  1. 仿射变换 Affine transformation

    这个太重要了,我得再研究研究.并争取搞个code出来.这篇先来理论. 本文属转载. 变换模型是指根据待匹配图像与背景图像之间几何畸变的情况,所选择的能最佳拟合两幅图像之间变化的几何变换模型.可采用的变 ...

  2. 仿射变换(affine transformation)

    仿射变换(affine transformation) 多面体编译(polyhedral compilation)会使用到仿射变换(affine transformation)的知识,这里介绍下仿射变 ...

  3. 仿射变换(Affine transformation)与python实践

    仿射变换,又称仿射映射,是指在几何中,一个向量空间(vector space)进行一次线性变换(linear transformation)并拼上一个平移(Translation ).所以,本质上仿射 ...

  4. opencv中很有趣的仿射变换(Affine Transformation)

    在仿射变换中,原图中所有平行的行在变换后的图像中仍然平行.为了构建仿射矩阵,我们需要原图中的三个点和它们在变换后的图像中的对应位置.函数 cv.getAffineTransform 创建一个2*3的矩 ...

  5. Q76:仿射变换(Affine Transformation)

    三维图形的仿射变换包括平移(Translation).缩放(Scaling).旋转(Rotation).错切(Shearing).翻转(Reflection). 仿射变换具有"平直性&quo ...

  6. U-GAT-IT 论文阅读

    摘要 提出了两点:We propose a novel method for unsupervised image-to-image translation, which incorporates a ...

  7. 树木分形迭代图 matlab,基于迭代函数系统的分形植物模拟

    1. 引言 自然景物模拟是计算机图形学中一个重要研究课题,其中植物形态仿真模拟引起了广泛的关注.许多学者对其进行了大量的研究,目前常见的方法有L-系统 [1] [2] .迭代函数系统 [3] [4] ...

  8. 由三维面部先验指导的面部超级分辨率 (读书笔记)

    Face Super-Resolution Guided by  3D Facial Prior 3D:由三维面部先验指导的面部超级分辨率 1 摘要 Abstract 主要贡献: 背景:最先进的(St ...

  9. 医学配准软件ants和相关python库antspy的介绍和安装

    医学配准软件和相关python库的介绍和安装 文章目录 医学配准软件和相关python库的介绍和安装 1. ants源码安装和使用介绍 1.1 ants介绍 1.2 ants安装 1.3 ants使用 ...

最新文章

  1. SAP HUM 嵌套HU初探
  2. echarts 表格与 div 之间 空白的设置
  3. Netty系列(三):说说NioEventLoop
  4. 12 python语言语句块的标记是_7. 简单语句
  5. MS speech SDK5.1朗读控件
  6. 12306一直提示网络有问题_春运攻略:西安网友买票遇到的这些问题,这里有答案...
  7. python pip安装报错_python pip安装requests时报错,怎么解决
  8. Minecraft 1.12.2模组开发(三十七) 3D盔甲
  9. 计算机辅助汽车人机工程未来挑战,汽车人机工程学
  10. 离散中多重组合是指_大学离散数学复习试题
  11. HTML+CSS+JavaScript实现植物大战僵尸(附演示地址)
  12. 苹果平板重设id显示服务器出错,苹果一代平板电脑重设ID怎么?
  13. 365天英语口语大全
  14. 激光位移传感器与其他位移传感器比较
  15. Linux下Valgrind的使用概述 来源:Linux社区 作者:dndxhej
  16. Windows下VMware准备IOS开发环境
  17. Xcode7 网络请求报错:The resource could not be loaded because the App Transport Security policy requir...
  18. ISCC2021—ISCC客服一号冲冲冲(二)
  19. post_thumbnail_html,WordPress 常用函数 / get_the_post_thumbnail
  20. 二分查找算法递归实现

热门文章

  1. 用电位器通过STC12C2052AD单片机片内AD和PWM控制电机无极变速
  2. 注册微信公总号的方法与种类
  3. Billboard(海报粘贴简单的线段树)
  4. 东方日升再夺印度第一光伏供应商桂冠
  5. 开源项目之开源的2D游戏引擎 HGE
  6. 利用redis代替session保存用户 减少tomcat压力
  7. 睡个“好”觉,还真是有益身心胖瘦的
  8. 开博2012在情人节!
  9. Facebook账号注册步骤
  10. 利用人脸微笑数据集训练识别模型,完成对人脸图片微笑识别