最近再看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。blog
接下來開始訓練,每一個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保存起來用於檢測。it
由上能夠看出CPR中主要的操做是向量相加,不只有效並且計算複雜度較低,因此近年來在face alignment中普遍應用。io
參考文獻function
[1]Dollár, P., Welinder, P., Perona, P.: ‘Cascaded pose regression’. Proc.
IEEE Conf. Computer Vision and Pattern Recognition, 2010sed