AdaBoost算法原理

每個Haar特徵對應看一個弱分類器,但並不是任伺一個Haar特徵都能較好的描述人臉灰度分佈的某一特點,如何從大量的Haar特徵中挑選出最優的Haar特徵並製作成分類器用於人臉檢測,這是AdaBoost算法訓練過程所要解決的關鍵問題。

   Paul Viola和Michael Jones於2001年將Adaboost算法應用於人臉檢測中,其基本思想是針對不同的訓練集訓練同一個分類器(弱分類器),然後把這些不同訓練集上的得到的分類器聯合起來,構成一個最終的強分類器。Adaboost 算法中不同的訓練集是通過調整每個樣本對應的權重來實現的。開始時,每個樣本對應的權重是相同的,對於h1分類錯誤的樣本,加大其對應的權重; 而對於分類正確的樣本, 降低其權重, 這樣分錯的樣本就被突出出來,從而得到一個新的樣本分佈 U2。在新的樣本分佈下,再次對弱分類器進行訓練,得到弱分類器 h2 。依次類推,經過 T 次循環,得到 T 個弱分類器,把這 T個弱分類器按一定的權重疊加(boost)起來,得到最終想要的強分類器。

     訓練系統總體框架,由“訓練部分”和 “ 補充部分”構成。依據系統框架,本文的訓練系統可分爲以下幾個模塊:
    (1)以樣本集爲輸入,在給定的矩形特徵原型下,計算並獲得矩形特徵集;
    (2)以特徵集爲輸入,根據給定的弱學習算法,確定閩值,將特徵與弱分類器一一對應,獲得弱分類器集;
    (3)以弱分類器集爲輸入, 在訓練檢出率和誤判率限制下, 使用A d a B o o s t 算法
挑選最優的弱分類器構成強分類器;
    (4)以強分類器集爲輸入,將其組合爲級聯分類器;
    (5)以非人臉圖片集爲輸入,組合強分類器爲臨時的級聯分類器,篩選並補充
非人臉樣本。

    

   訓練樣本的選擇:
   訓練樣本要求是面部特寫圖像,圖1是一簇訓練樣本,大小被歸一化爲24×24像素,其中正訓練樣本要求是面部特寫圖像,但是人臉形態千差萬別,所以訓練樣本選取過程中要考慮到樣本的多樣性。負訓練樣本,大小被歸一化爲24×24像素,其中各樣本不完全相同,分別具有一定的代表性。
     

              圖1部分訓練正樣本集和訓練負樣本集

   訓練過程分爲3個步驟:首先需要提取Haar特徵;然後將Haar特徵轉化成對應的弱分類器;最後從大量的弱分類器中迭代選擇出最優弱分類器。
   (1)提取Haar特徵


                   圖2 常用的四種Haar特徵

   常用的Haar特徵有4種,如圖2所示。當然也可以在這4種特徵的基礎上設計出更多、更復雜的特徵。以大小爲24X24像素的訓練樣本爲例,上述4種特徵的總個數超過了160000個。這樣龐大的數字給後續的迭代訓練工作帶來了龐大的計算量,直接導致AdaBoost算法訓練過程極爲費時,這恰恰是算法需要改進的關鍵問題之一o

   (2)生成弱分類器
   每一個Haar特徵都對應着一個弱分類器,每一個弱分類器都是根據它所對應的Haar特徵的參數來定義的。利用上述Haar特徵的位置信息,對訓練樣本進行統計就可以得到對應的特徵參數。AdaBoost算法中所訓練的弱分類器是任何分類器,包括決策樹,神經網絡,隱馬爾科夫模型,如果弱分類器是線性神經網絡,那麼AdaBoost算法每次將構造多層感知器的一個節點。

   (3)採用AdaBoost算法選取優化的弱分類器
   AdaBoost算法訓練過程就是挑選最優弱分類器,並賦予權重過程,圖3是AdaBoost算法訓練示意圖。

   

                           圖3  AdaBoost算法訓練示意圖


發佈了6 篇原創文章 · 獲贊 4 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章