1. 程式人生 > >AdaBoost人臉檢測訓練演算法 (中)

AdaBoost人臉檢測訓練演算法 (中)


3)採用演算法選取優化的弱分類

通過Adaboost演算法挑選數千個有效的haar特徵來組成人臉檢測器,Adaboost演算法中不同的訓練集是通過調整每個樣本對應的權重來實現的。

開始時,每個樣本對應的權重是相同的,對於h1分類錯誤的樣本,加大其對應的權重;而對於分類正確的樣本,降低其權重,這樣分錯的樣本就被突出出來,從而得到一個新的樣本分佈U2

在新的樣本分佈下,再次對弱分類器進行訓練,得到弱分類器h2。依次類推,經過T次迴圈,得到T個弱分類器,把這T個弱分類器按一定的權重疊加(boost)起來,得到最終想要的強分類器。

這裡,我給出訓練弱分類器和選取優化的弱分類器的演算法(演算法圖若看不清,請點選放大):

 

分類器訓練完以後,就可以應用於輸入影象中的感興趣區域(與訓練樣本相同的尺寸)的檢測。檢測到目標區域(汽車或人臉)分類器輸出為1,否則輸出為0。

為了檢測整副影象,可以在影象中移動搜尋視窗,檢測每一個位置來確定可能的目標。為了搜尋不同大小的目標物體,分類器被設計為可以進行尺寸改變,這樣比改變待檢影象的尺寸大小更為有效。

所以,為了在影象中檢測未知大小的目標物體,掃描程式通常需要用不同比例大小的搜尋視窗對圖片進行幾次掃描。

4)構成級聯結構的層疊分類器

每個特定分類器所使用的特徵用形狀、感興趣區域中的位置以及比例係數(這裡的比例係數跟檢測時候採用的比例係數是不一樣的,儘管最後會取兩個係數的乘積值)來

定義

分類器中的“級聯”是指最終的分類器是由幾個簡單分類器級聯組成。在影象檢測中,被檢視窗依次通過每一級分類器,這樣在前面幾層的檢測中大部分的候選區域就被排除了,全部通過每一級分類器檢測的區域即為目標區域。

 

同樣,我們給定訓練級聯結構的分類器的演算法(演算法圖若看不清,請點選放大):

補充:訓練樣本的選擇和訓練系統總體框架

訓練樣本要求是面部特寫影象,下圖是一簇訓練樣本,大小被歸一化為24×24畫素。

其中,正訓練樣本要求是面部特寫影象,但是人臉形態千差萬別,所以訓練樣本選取過程中要考慮到樣本的多樣性。

負訓練樣本,大小被歸一化為24×24畫素,其中各樣本不完全相同,分別具有一定的代表性。

訓練系統總體框架,由“訓練部分”和“補充部分”構成。依據系統框架,本文的訓練系統可分為以下幾個模組:

(1)以樣本集為輸入,在給定的矩形特徵原型下,計算並獲得矩形特徵集;

       (2)以特徵集為輸入,根據給定的弱學習演算法,確定閩值,將特徵與弱分類器一一對應,獲得弱分類器集;

        (3)以弱分類器集為輸入,在訓練檢出率和誤判率限制下,使用A d a B o o s t演算法

挑選最優的弱分類器構成強分類器;

       (4)以強分類器集為輸入,將其組合為級聯分類器;

        (5)以非人臉圖片集為輸入,組合強分類器為臨時的級聯分類器,篩選並補充非人臉樣本。