機器學習---人臉對齊的基於形狀模型的訓練


 

基於形狀模型的方法 主導了早期的人臉對齊思路, 這類方法 從局部特征中搜索關鍵點,對噪聲比較敏感,CLM類(包括ASM、AAM)方法是這一類的典型代表。

       在這一節,講一下人臉對齊的一個重要算法 ESR,之所以重要,是因為 ESR開啟的回歸方法 -回歸方法是對形狀模型改進的一個重要方向

       ESR 之后,有兩個著名算法,1ms 和 3000FPS(業內的簡明叫法),已得到廣泛應用。

 

• ESR

       ESR算法來自 MSRA的曹旭東等,全稱是 顯式形狀回歸(Explicit Shape Regression),ESR並沒有用PCA去約束形狀模型,其核心在於回歸。

       ESR關鍵點之一:兩級回歸模型

1)Boost回歸

     這是一種提升型回歸,將若干 弱回歸器 (R0,R1,R2……)通過疊加的方式進行組合,對於給定的人臉樣本 I,得到:

           S(t) = S(t-1) + Rt ( I, S(t-1) )

     回歸器 Rt 由上一個形狀 S(t-1) 訓練得到,並對上一個形狀 S(t-1) 進行修正,得到新的形狀參數 S(t),示意描述為:

     

     通過訓練樣本 I 對回歸器(R0,R1…Rt)進行循環訓練,直到訓練誤差不再增加,每個回歸器R通過最小化誤差函數計算,描述為:

      

     其中 表示第 i 個樣本  的真實形狀(Ground truth),回歸器 Rt 是一個 形狀增量(即訓練樣本誤差)。

2)cascade回歸

     ESR基於cascade regression框架(CVPR2010),算法對整個形狀回歸,對於較大的圖像差異以及粗糙的初始化,單層弱回歸器訓練時收斂慢,測試結果差。

    為了在訓練時收斂更快更穩定,采用了兩層級聯的結構,如圖所示:

      

     每個回歸器 R 由若干 弱回歸器 r 組成,也就是說 回歸器(r0,r1…rk)對應於同樣的輸入( 上圖S(1) ),同樣的輸出( 上圖S(2) )。

     作者在訓練中得到一個效果比較好的經驗值 (t=10,k=500),上層采用10個回歸器R 級聯,下層每個回歸器R對應500個弱分類器組合。

       ESR關鍵點之二:回歸依據

1)形狀索引特征

     ESR算法 通過 形狀索引特征 來進行描述:

     a)計算P個特征點 兩兩之間的像素差,像素采用 局部坐標系(需要 歸一化到平均臉來計算像素差分)描述,相比全局坐標系穩定性更好。

          通過協方差矩陣來計算:

        

            得到 P(P-1)/2 個特征。其中pm、pn分別為對應像素點m、n的灰度值,這里有兩個關鍵點:

            為什么選擇像素差:特征描述更加簡單,計算回歸時能夠更快收斂;

     b)將回歸目標投影到一個隨機方向,得到一個標量 D,並從上面特征中選擇一個與該標量D相關度最高的一個特征;

           隨機投影可以有效保留 近似投影方向的特征,同時有別於其他的形狀偏差,且多個方向的投影可以降低相關性,使特征更容易選取。

     c)對步驟 b)重復計算F次,得到 F 個特征;

          注:單個差值本身不反應區域特征,通過多個差值的組合來進行判別。

     d)將 F個特征與F個閾值組成一個 Fern。

2)隨機蕨

     對於下層弱回歸器r,采用隨機蕨(Random Fern)來實現,關於隨機蕨 這里就不再細講了,請參考論文:Fast key point recognition using random ferns。

• 1ms

       基於2014年的一篇CVPR,One millisecond face alignment with an ensemble of regression trees,簡稱 ERT。

       ERT 采用回歸樹方法直接從一個稀疏子集估計人臉特征點坐標,實現了高精度的人臉對齊效果。

       該方法在dlib中有實現,這里僅列出。

 

• LBF(3000FPS)

       2014年的一篇CVPR, Face Alignment at3000 FPS via Regressing Local Binary Features

       基於局部特征的回歸方法,任少卿(MSRA 孫劍 組)力作,Github上熱心網友也提供了源碼(需要同時下載dataSet):

       https://github.com/yulequan/face-alignment-in-3000fps

       文章的主要貢獻是使用限制使用了 LBF局部特征 和 回歸樹

1)LBF特征提取

      通過在特征點附近隨機選擇點做殘差來學習 LBF特征,每一個特征點都會學到由好多隨機樹組成的隨機森林,因此,一個特征點就得用一個隨機森林生成的0,1特征向量來表示,將所有的特征點的隨機森林都連接到一起,生成一個全局特征,后續過程就可以使用該全局特征做全局線性回歸了。

    

2)基於Cascade的全局線性回歸

      回歸是一個不斷迭代的過程,∆S(t) 為 t 時刻的形狀變化量,其輸入 為 訓練樣本 I、t-1 時候的形狀S(t-1) 變換得到:

                 ∆S(t) = W(t)Φ(t) ( I, S(t-1) )   

      其中 W(t) 為線性回歸矩陣,Φ(t) 為特征匹配函數。

      回歸過程 即是訓練 變換矩陣W 和 特征匹配函數Φ的過程。

        

       編譯源碼文件(設置 OpenCV2410 or 其他版本),設置數據集及圖片路徑,來看下對齊效果:

       對齊效果貌似一般,但快是 一定、確定以及肯定的,Command Arguments:Demo Tom.png (阿湯哥)

                                                                                     測試對齊時間:               9.2ms :)

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM