人脸对齐之SDM(Supervised Descent Method)

SDM(Supervised Descent Method)是一种监督下降方法,属于解决非线性最小化NLS(Non-linear Least Squares)问题的一种方法。

 

解决非线性最优化问题通常有2个难点,

(1)方程不可微,或者计算量太大

(2)Hessian矩阵太大,或者不是正定矩阵

基于这样的难点,作者提出了自己的SDM方法,可以用于解决上述的问题,并成功的用次方法解决了人脸对齐中关键点的回归问题,取得了state-of-the-art的效果。

 

一个传统和奏效的解决最小化二乘问题的方法就是牛顿下山法,正如,上面左图所示,通过牛顿迭代,最终可以找到一个全局最小值。这样的迭代也肯定是效果最好的,但是在实际工程应用中,是不会有足够的计算资源来将所有样本一下都计算进去的,于是就有了上面右图的方法,更新每一个daerta(x),每次都会找到一个最小值,然后不断迭代,减少最小值之间的误差距离,最终就会找到全局最小值,类似深度学习里的Mini batch SGD,就像吴恩达视频中讲的,虽然没有理论的证明,局部最小值就是全局最小值,但是很多实际的经验告诉我们,最后,只能收敛到一个最小值,也就是说,很多现实实际问题是只有一个最小值的。

ps:还是很喜欢这个图中的牛顿,高斯和拉格朗日。

 

SDM推导:

 

SDM的过程就是最小化上面函数的过程,其中,

d为m*1维,表示有m个像素,

d(x)为p*1维,表示p个Landmarks,

h为非线性的特征提取函数,提取的sift特征h(d(x))为128p维

将上式子进行泰勒展开变为了下面的式子,

 

第一次初始化det(x1)按下式计算,

 

初始化时,第一次对于det(fai)的计算,可以看成det(fai)到R0的投影,因此,也可以近似的将R0看成是梯度方向。

 

由于将R0近似为梯度方向,所以det由上面的非线性问题转化为下面式子的线性问题,

 

整个的训练过程就是求一个最佳的R0和b0的过程,来保证det最小。最终也就将递推公式由下面的第一个式子转化为下面的第二个式子,也就不需要hession矩阵和Jacobian矩阵的计算了。实现了由2次问题到1次问题的转化,但是2次问题肯定会收敛,1次的则很难保证,因此,作者引入了fai(k)这个一系列的特征向量,而不是上式一样,只有一个fai(0),从而来保证收敛,实验过程中,迭代4-5次后就会收敛。

 

训练过程中,采用L2-loss,如下式子,

 

假设x服从正态分布,采用蒙特卡洛(Monte Carlo)方法采样,转化为求下式的最小值,

 

采用多个特征向量后就转化为下式,

 

实验效果:

在人脸对齐中,一个很重要的性能指标就是姿态估计,包括,yaw(左右旋转),roll(平面内旋转),pitch(上下旋转)

 

按作者论文中在Youtube上面的测试,姿态估计可以实现,yaw(-45到+45),roll(-90到+90),pitch(-30到+30),在i5-2400上达到了30fps的速度。

 

github上热心网友的程序:

https://github.com/patrikhuber/superviseddescent/

https://github.com/RoboPai/sdm

 

reference:

[1]Szabó Z. Supervised Descent Method and its Applications toFace Alignment[J]. 2015.

[2]www.humansensing.cs.cmu.edu/intraface

 

 

 

 

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值