Cascaded pose regression

最近再看face alignment的相关文章,目前比较流行的算法都是基于(Cascaded pose regression,CPR)[1]的框架上做的,该算法之所以流行的原因是简单高效。CPR分为训练和检测两个部分,首先介绍检测流程:

face alignment的目的是估计向量face shape,该向量由组成,其中K表示landmark的个数,由于每个landmark有横纵两个坐标,将所有的坐标连接起来构成长度为2K的向量即face shape。CPR检测流程如上所示,一共有T个stage,在每个stage中首先进行特征提取ft,这里使用的是shape-indexed features,也可以使用诸如HOG、SIFT等人工设计的特征,或者其他learning based features,可以通过查阅最新的cvpr文章进行了解,然后通过训练得倒的regressor R估计得到upadate vector 即增量ΔS,把ΔS加到前一个stage的shape上得到新的shape,这样通过不断的迭代即可以得到最终的shape。我感觉直白一些就是说通过不断的递归,使初始的shape朝着ground truth shape不断的靠近。

接下来是训练流程

首先是输入,N表示样本的个数,I表示图像,Si表示ground truth shape,剩下的那个参数表示initial shape,这个shape如何选取呢?从training data中随机的选取20个其他人脸的ground truth shape作为样本的initial shape 则训练样本的数量=原有的样本个数×20,即data augmentation 目的是为了enlarge training data和improve gengeralization ability。

接下来开始训练,每个stage中对于每个样本先通过ground truth shape与当前的shape相减计算得出ΔS,在第一个stage时,当前的shape为initial shape,然后进行特征提取得倒ft,之后通过loss function选择误差最小的regressor,如何建立regressor和ΔS,就需要看paper了,比如SDM,LBF,ERT等等,我会在之后的博客中分享。

最后利用特征ft 和regressor得倒ΔS加到上一个stage的shape上得到当前stage的shape,然后用于下一个stage的求解。

通过T个stage的训练将所有的regressor保存起来用于检测。

由上可以看出CPR中主要的操作是向量相加,不仅有效而且计算复杂度较低,所以近年来在face alignment中广泛应用。

参考文献

[1]Dollár, P., Welinder, P., Perona, P.: ‘Cascaded pose regression’. Proc.
IEEE Conf. Computer Vision and Pattern Recognition, 2010

posted on 2015-09-22 15:09  pby5  阅读(4230)  评论(0编辑  收藏  举报