1. 程式人生 > >cvpr讀書筆記[1]:VJ人臉檢測框架。Viola-Jones Objects detection framwork

cvpr讀書筆記[1]:VJ人臉檢測框架。Viola-Jones Objects detection framwork

http://blog.csdn.net/njzhujinhua/article/details/38343683
人臉檢測是人臉識別的第一道工序,其技術比較成熟,但因為其檢測效能因素,直到Viola和Jones於CVPR2001上文章【1】發表之後才使得其能進行實際應用。 VJ描述的物體檢測框架包括三部分: 【1】feature: VJ使用的特徵僅與一個矩形區域內畫素取值的和有關,類似於Haar函式,一種最簡單的小波,如下圖所示:

其特徵取值為白色區域對應影象的畫素值之和減去灰色區域對應影象的畫素值之和。一副影象中這樣的特徵數量太多,其計算複雜性是個問題,為此作者引入積分圖技術,這使得Haar特徵的計算可以在常數時間內完成,使得其計算效率大大提高。VJ用到的特徵只有水平與數值的特徵,顯得十分粗糙不精細,但其計算的簡便性使其大大優於其他演算法。    積分圖是一張與原圖大小一致的圖,其每個畫素/點的取值為其原圖左上角所有畫素取值的和。


假設積分圖中某點x的取值記為ii(x) 當要計算矩形D的畫素和時只需要使用ii(p4)-ii(p2)-ii(p3)+ii(p1)即可 【2】Learning 給定特徵集以及正負樣本的訓練集,有很多的機器學習演算法都可以得出其分類函式,如NN,SVM等,但考慮到前面得到的Haar特徵數量巨大,即使其計算再快要想實時計算也是很難的。 VJ採用的目標檢測框架第二個貢獻是基於Adaboost的分類器學習方法, 其用此選擇特徵並訓練分類器。 Adaboost的最初目的是提升一個簡單分類器的效能,其通過組合多個弱分類器得到一個強分類器。所謂的弱分類器指其僅比隨機猜略好。 為了對弱分類器提升,可理解為一系列弱分類器的相繼學習過程,在一次學習結束後對於那些錯誤分類的樣本通過增加其權重並重新進行學習以得到比上一次更好的分類器。因而Adaboost也是一種重取樣技術。 Adaboost的過程可以達到特徵選擇的目的, 作者為此目的限制每個弱分類器僅依賴於一個特徵。 作者定義一個弱分類器hi(x)(直接截圖了)


這裡x是一個24×24的影象子視窗區域

在迴圈中的第二步,錯誤率實際依賴於h_j(x_i)如果其與y_i一致即分類正確時,h_j(x_i)-y_i為0,如果分類錯誤則為1,錯誤率即增加了。第三步選擇錯誤最少的分類器。第4步則更新每個每個樣本的權重,錯誤率都是小於0.5的故beta_t也是小於1的,因而如果該樣本分類正確,則其權重下降,否則權重不變。(Adaboost中是分類正確則權重下降,分類錯誤則權重提升,且提升公式也略有不同,還涉及到比重的歸一化) 【3】 文中第三個貢獻是通過將AdaBoost構建的強分類器進行級聯來進行人臉/物體檢測,其可以在提高檢測效能的同時大幅加快檢測速度。 級聯分類器其實現方法是先將多個強分類器按複雜度排序, 簡單的在前面。這些強分類器雖然對檢測率有很高要求,為了效率誤識屢屢可以放低。尤其是第一級的時候。 其首先構建簡單的(小而高效)boosted分類器,這種分類器在檢測出幾乎所有正樣本時可以拒絕大部分負樣本。在一個複雜的低誤識率的分類器執行之前通過這個較簡單的分類器排除掉大部分子視窗。即只要前一級分類器拒絕的視窗不再進入下一級分類器,直接將其拒絕, 本質是一顆退化的決策樹。 VJ在本文中給出的是一種新增特徵的方法以構造逐漸複雜的強分類器。 在人臉檢測中,級聯的第一個分類器叫做attentional operator,他僅使用2個特徵就能做到0漏檢和40%的FPR,從而可以快速確定可能有人臉的區域。在後一級的分類器構建時逐漸增加特徵以滿足本級分類器的要求。 總結: 在VJ之前識別率就很高了,本文亮點不再識別率,而在識別效率。其1是採用Haar特徵, 計算簡單,又引入積分圖技術進行加速。二是使用AdaBoost將很容易構造出的弱分類器組合成強分類器。第三使用級聯cascade策略將構造這些強分類器的退化決策樹,使不滿足的區域直接被排除,大大提高計算效率。

參考文獻

[1] Robust Real-time Object Detection. Paul Viola, Michael Jones. IJCV 2004.

[2]模式分類 Richard Duda