1. 程式人生 > >人臉識別之人臉對齊(八)--LBF演算法

人臉識別之人臉對齊(八)--LBF演算法

整體來看,其實 ,ESR是基礎版本的形狀迴歸,ERT將回歸樹修改為GBDT,由原始的直接回歸形狀,改進為迴歸形狀殘差,而LBF,是加速特徵提取,由原來的畫素差分特徵池,改為隨機選擇點。

 

轉自:http://blog.csdn.net/qq_14845119/article/details/53575091

基於LBF方法的人臉對齊,出自Face Alignment at3000 FPS via Regressing Local Binary Features,由於該方法提取的是區域性二值特徵(LBF),所以特徵提取這個過程速度非常快,導致整個的演算法都速快相當快,論文作者的LBF fast達到了3000fps的速度,網上熱心網友分享的程式也達到了近300fps的速度,絕對是人臉對齊方面速度最快的一種演算法。因此,好多網友也將該方法稱為,3000fps。

 

該方法主要體現在2個方面,

(1)LBF特徵的提取

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

 

(2)基於cascade的級聯的隨機森林做全域性線性迴歸

         所謂的線性迴歸,其實就是一個不斷迭代的過程,對於每一個stage中,用上一個stage的狀態作為輸入來跟新,產生下一個stage的輸入,以此類推,直到達到最底層stage。

如上公式所示,I為輸入影象,St-1為第t-1stage的形狀,fait為t stage的特徵匹配函式,Wt為線性迴歸矩陣。

 

訓練過程,就是學習fait和wt的一個過程,測試過程就是用訓練好的fait和wt對提取的LBF特徵做迴歸的過程。

         對於每個stage,越往下,所選擇的隨機點的範圍就越小,特徵點定位精度就越好。

 

本人下載的是c++版本的程式,最終的執行效果如下,

         實際執行效果,速度絕對是人臉對齊中速度最快的一個演算法了,精度的話,比起sdm來,還是遜色一點,儘管作者論文中分析的資料來看比sdm好,但是不得不承認,還是比sdm的精度差點。

 

github上熱心網友的程式,

matab版本:https://github.com/jwyang/face-alignment

c++版本:https://github.com/yulequan/face-alignment-in-3000fps