儘量用簡單的語言總結一下,利用haar特徵,結合級聯分類器進行XX檢測,這裏以XX代表人臉。
整體思路分爲5大步:
1、準備人臉、非人臉樣本集;
2、計算特徵值和積分圖;
3、挑選最優分類器;
4、利用AdaBoost把這些分類器訓練成一個強分類器;
5、級聯,也就是強分類器的強強聯手。
在開始前,一定要記住,以24*24窗口爲例,就有16萬+的特徵數量,所以首先要從中篩選有用的特徵(即最優弱分類器),然後利用AdaBoost將這些最優弱分類器訓練成一個強分類器,最後將強分類器進行級聯。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1、準備人臉、非人臉樣本集
這一步沒什麼好說的,
2、計算特徵值和積分圖
Haar特徵,也就是那三種特徵,邊緣特徵、線性特徵、特徵方向特徵,
haar特徵及特徵值計算,推薦博文,點擊鏈接
積分圖計算也很簡單,一搜一大把,給個例子
如下圖
那麼如何利用積分圖進行計算呢?舉例如下圖
假設計算特徵 1 1 2 2,直接 sum(藍色區域) - sum(粉色區域) = (2+2) - (1+1) = 2
利用積分圖像計算 區域A = (9+2) - (3+6) =2, 區域B = (17+6) - (10+9) = 4, 區域B - 區域A = 4 - 2 = 2。
使用積分圖,可以對haar特徵值計算進行加速。
3、挑選最優分類器
這一步是很多教程講解不清楚的地方。
之前一直以爲計算到haar特徵值後,然後直接用AdaBoost進行訓練強分類器,大錯特錯!
以24*24爲例,16萬+個特徵值,如果直接利AdaBoost訓練,那麼工作量是極其極其巨大的。
所以必須有個篩選的過程,篩選出T個優秀的特徵值(即最優弱分類器),然後把這個T個最優弱分類器傳給AdaBoost進行訓練。
如何挑選?
鏈接,只需瞭解 3.1即可
4、利用AdaBoost訓練一個強分類器
此時,我們手中有T個最優弱分類器(在第3步中得到),現在就要利用AdaBoost算法了
換句話說,a weighted combination of all these found weak classifiers to evalute and decide any given window has a face or not.
這裏有個非常好的講解,結合實例來說,更明朗
PPT中的Y值 是1 or -1,可以理解爲正樣本和負樣本,或者理解爲人臉和非人臉,
X爲haar特徵值,所以從這個角度來講,每個haar特徵值就是一個弱分類器。
5、級聯,也就是強分類器的強強聯手
推薦這篇文章 的2.3節,雖然我也沒有看明白, 感覺就是決策樹的問題了。
就這麼多了,有問題一起探討。