基於haar特征的Adaboost人臉檢測技術
本文主要是對使用haar+Adabbost進行人臉檢測的一些原理進行說明,主要是快找工作了,督促自己復習下~~
一、AdaBoost算法原理
AdaBoost算法是一種迭代的算法,對於一組訓練集,通過改變其中每個樣本的分布概率,而得到不同的訓練集Si,對於每一個Si進行訓練從而得到一個弱分類器Hi,再將這些若分類器根據不同的權值組合起來,就得到了強分類器。
第一次的時候,每個樣本都是均勻分布,通過訓練得到分類器H0,在該訓練集中,分類正確的,就降低其分布概率;分類錯誤的,就提高其分布概率,這樣得到的新的訓練集S1就主要是針對不太好分類的樣本了。再使用S1進行訓練,得到分類器H1,依次迭代下去……,設迭代此外為T,則得到T個分類器。
對於每個分類器的權值,其分類准確性越高,權值越高。
二、Haar特征
2.1 特征樣子
就是一些矩形特征的模板,在viola&Jones的論文中,有下面這五種

在opencv中的方法中,有下面這14種,

2.2 特種的個數
對於一個給定的24X24的窗口,根據不同的位置,以及不同的縮放,可以產生超過160,000個特征。

2.3 特征計算方法——積分圖
有點類似於動態規划的思想,一次計算,多次使用

對應於兩矩形特征2,矩陣A的值可以用i(5)+ii(1)-ii(4)-ii(2)表示,矩陣B的值用ii(6)+ii(2)-ii(3)-ii(5)表示
根據定義,haar特征的值為白色矩形減去黑色矩形的值。
三、選取弱分類器
一個弱分類器,實際上就是在這160,000+的特征中選取一個特征,用這個特征能夠區分出人臉or非人臉,且錯誤率最低。
現在有人臉樣本2000張,非人臉樣本4000張,這些樣本都經過了歸一化,大小都是24X24的圖像。那么,對於160,000+中的任一特征fi,我們計算該特征在這2000人臉樣本、4000非人臉樣本上的值,這樣就得到6000個特征值。將這些特征值排序,然后選取一個最佳的特征值,在該特征值下,對於特征fi來說,樣本的加權錯誤率最低。選擇160,000+個特征中,錯誤率最低的特征,用來判斷人臉,這就是一個弱分類器,同時用此分類器對樣本進行分類,並更新樣本的權重。
具體過程如下:
1. 歸一化權重:

2、對於每一個特征f,訓練一個弱分類器h;計算所以特征的加權錯誤率εf,

3、選取具有最小錯誤率εf的弱分類器hi
4、調整權重

四、級聯成強分類器

五、檢測
檢測過程中,通過不斷的調整檢測窗口的位置、比例,來找到人臉。
