1. 程式人生 > >【人臉檢測——基於機器學習3】AdaBoost算法

【人臉檢測——基於機器學習3】AdaBoost算法

源代碼 夠快 等等 多個 利用 原理 設計 聯結 大量

  1. 簡介

  1. 主要工作

AdaBoost算法的人臉檢測算法包含的主要工作:(1)通過積分圖快速求得Haar特征;(2)利用AdaBoost算法從大量的特征中選擇出判別能力較強的少數特征用於人臉檢測分類;(3)提出一個級聯結構模型,將若幹個弱分類器集成一個強分類器,其能夠快速排除非人臉區域,提高算法的檢測速度。

2. AdaBoost算法具體描述

AdaBoost算法的原理是通過逐級增強的方法將弱分類器組合成為分類效果較好的強分類器,具體來說:

(1) 給定一個弱學習算法和一個訓練集技術分享圖片,其中技術分享圖片是輸入的訓練樣本向量,技術分享圖片是分類的類標誌。

(2) 初始化時,對所有訓練樣本均賦以一個相同的權重技術分享圖片

(3)然後用該弱學習算法對訓練樣本進行T輪訓練。在每一輪訓練結束後,對負樣本賦予較大的權重

(4)終止條件:叠代訓練次數T或者誤差率。

3. 組成成分

技術分享圖片

一個Adaboost分類器有多個強分類器組成的級聯構成,而每個強分類器由多個弱分類器級聯構成,而弱分類器級聯由弱幹個特征Node構成。

  1. 成分作用

強分類器:做出判決(判決為人臉還是非人臉)。

對於三個個強分類器,假設分別 有特征技術分享圖片和對應的閾值技術分享圖片。對於輸入的窗口圖像技術分享圖片,若此時技術分享圖片,則輸出判決技術分享圖片為人臉。

弱分類器:計算出強分類器的特征技術分享圖片

Eg:強分類器的特征技術分享圖片,其中技術分享圖片為第i個弱分類器計算出來的特征

Node點:

每個haar特征對應於一個node節點

Eg: 對於node1,

若此時對應的haar1>nodeT1(node1的閾值),此時,當前節點node1的特征技術分享圖片

若此時對應的haar1<nodeT1(node1的閾值),此時,當前節點node1的特征技術分享圖片

整個Node節點技術分享圖片:

若此時Z大於弱分類器的閾值,技術分享圖片,反之,技術分享圖片

二、弱分類器

1.什麽是弱分類器

AdaBoost算法中弱分類器可以是任何分類器,包括決策樹,神經網絡等等。弱分類器的分類正確率一般不需要太高,只需要比隨機猜測稍好,超過50%即可。大部分文獻及開源代碼都選擇了決策樹作為弱分類器。

2.弱分類器的設計

a. 基於單一Haar特征的弱分類器表達式

弱分類器一般選擇盡可能簡單易得的特征,而Haar特征滿足這種原則,因此我們選擇基於單一Haar特征的弱分類器。

圖像中一個Haar特征對應一個弱分類器技術分享圖片

,弱分類器的函數表達式

技術分享圖片

其中:技術分享圖片為Haar特征的特征值,技術分享圖片為判定閾值,技術分享圖片為不等式方向,技術分享圖片指圖像中某一技術分享圖片大小的子窗口。在給定某一Haar特征後,與之對應的弱分類器技術分享圖片就已經確定了。剩下的問題就變為如何弱分類器判決閾值技術分享圖片。 因為每個弱分類器只允許基於一個特征,這樣在篩選弱分類器的同時實際上也就完成了對特征的選擇。

b.弱分類器的訓練過程

在當前樣本權重分布下,確定特征技術分享圖片的最優閾值,使得使用該特征訓練求得的分類器,對於整個訓練樣本所得的分類錯誤率最低,而最優弱分類器則是通過遍歷整個矩形特征,從中選擇某個對於整個訓練集的分類錯誤最低的那個Haar特征。對於某一Haar矩形特征,首先采用積分圖求出該特征在所有訓練樣本上的特征值,然後對這些特征值進行排序,最後通過遍歷排序好的特征值即可完成對弱分類器的學習。

【人臉檢測——基於機器學習3】AdaBoost算法