参考来源:http://www.cnblogs.com/lanye/p/5312620.htmlhtml
人脸姿态估计:pitch,yaw,roll三种角度,分别表明上下翻转,左右翻转,平面内旋转的角度。
人脸姿态估计的方法有基于模型的方法,基于表观的方法,基于分类的方法等等。其中,基于模型的方法获得的效果最好,由于其获得的人脸姿态是连续的,而另外两种,是离散的,而且很耗时间。
人脸姿态估计算法通常当作不少人脸对齐相关论文的副产品被提出,近期,比较“出名”的人脸对齐论文主要来自于CVPR,ICCV等,以下:
《Supervised Descent Method and its Applications to Face Alignment》,这篇论文提供了demo,而且附加了人脸姿态估计功能,估计精度还不错。
《Face Alignment at 3000 FPS via Regressing Local Binary Features》,这篇文章是最新的人脸对齐算法,基于随机森林的算法,速度比较快,精度基本和上一篇持平。
《Face Alignment by Explicit Shape Regression》这篇文章很出名,做者也和上一篇是同一人。
还有经典的人脸对齐鼻祖算法ASM,AAM,想必你们也都知道,这里再也不多说,由于咱这篇博客的主题是人脸姿态估计嘛!~
基于模型的估计方法的前提是,手头必须具有两样东西,一个是人脸特征点(眼镜,嘴巴,鼻子等处的像素位置),另一个,是须要本身制做一个3维的,正面的“标准模型”。
<ignore_js_op>
这个模型的好坏很重要,人脸的特征点精度能够不高,由于后面的姿态估计算法能够采用鲁棒方法予以弥补,可是标准模型一旦有问题,势必会致使姿态估计的精度偏低。
算法最重要的仍是思想,其他诸如流程什么的,都是实现思想的手段而已。人脸姿态估计的思想:旋转三维标准模型必定角度,直到模型上“三维特征点”的“2维投影”,与待测试图像上的特征点(图像上的特征点显然是2维)尽可能重合。这时候咱们脑海中就应该浮现出一种诡异的场景:在幽暗的灯光中,一个发着淡蓝色光芒的人皮面具一点点的“自我调整”,忽然一会儿“天衣无缝”的“扣在了你的脸上”。这就是人脸姿态估计的思想。
想到了什么没?这貌似听起来像是某种数学中经常介绍的一种方法。是的,大部分论文中也常常利用这种方式来创建模型。这个方法就叫作“非线性最小二乘”。
咱们也能够利用非线性最小二乘方法来创建咱们的模型,模型公式以下:
<ignore_js_op>
其中,(α,β,γ)表明人脸姿态三个旋转角度, N表明着一张人脸上标定特征点的个数,qi表明着待测试人脸特征点,pi表明对应着的三维通用标准模型特征点,R表明旋转矩阵, t为空间偏移向量,s为伸缩因子。R的具体形式是以下三个矩阵相乘:
<ignore_js_op>
给出了人脸姿态估计的模型,咱们能够发现,这个公式的形式,恰好对应于刚刚提出的人脸姿态估计算法思想。数学是奇妙的!
更奇妙的在下面.....
这个公式看起来很直观,很好的解释了人脸姿态估计的内涵,可是,这个公式怎么求解?
对了,别忘记,这是“烂大街的”非线性最小二乘算法,从牛顿爷爷开始,就有着大把的优化方法,梯度降低,牛顿高斯,信赖域,马夸尔特等等等等等用于解决它,等到下一篇博客,我会尽可能用通俗的语言,为你们介绍姿态估计的下一个重要阶段:迭代求精。
附图(姿态估计效果图):
<ignore_js_op> <ignore_js_op>
<ignore_js_op>
原图 3D标准模型正面照 姿态估计算法拟合图算法