機器學習_基於adaboost和haar like特征的人臉識別
基於adaboost做人臉識別的一篇論文
PAUL VIOLA 的 Robust Real-Time Face Detection Rapid object detection using a boosted cascade of simple features
其中談到使用haar like特征,參考這篇論文
Rainer Lienhart and Jochen Maydt 的 An Extended Set of Haar-like Features for Rapid Object Detection
在整個讀論文的過程中,通過如下資源,理清了論文中的很多知識點:
1.haar like原型特征與特征矩陣
在使用haar like特征做人臉識別時,介紹了3類的haar 原型特征:
在論文中提到,將feature放到圖像上,黑色矩形像素值的和減去白色矩形像素值的和得到一個特征值,該特征值就是haar特征,使用該特征值計算弱分類器的
的閾值。但是需要注意的是此處的feature,並非簡單的指上邊的幾個原型特征,而是通過在檢測子窗口(一般為24x24像素)左右、上下平移,伸縮變換這些原型
特征得到的子窗口。一個特征原型在子窗口中伸縮大小不同,或者位置不同,就得到一個不同的feature,如下圖:
論文作者在一個檢測子窗口中畫了兩個變換後的原型矩陣,他這樣做是為了節省論文版麵同時展示0°、45°兩種原型特征在子窗口中的擺放,實際上每個子窗
口隻放一個原型特征形成一個feature。
一個0°型原型特征可以得到的feature個數:
一個45°型原型特征可以得到的feature個數:
其中:
關於公式怎麼來的,可能要細心推導一下,不過中心思想就是,
1、對於某特定大小的特征,在窗口內滑動計算。
也就是1(a)特征大小為2*1,對於24*24的圖像。水平可滑動23步,垂直滑動24步,所以共有23*24個特征。
2、對於一個特征,特征本身沿水平、豎直方向分別縮放。
還看特征1(a),特征大小為2*1,則延水平方向可放大為:4*1,6*1,8*1,…,24*1;豎直方向可放大為:2*1,2*2,2*3,…,2*24。
即每個特征有XY種放大方式。(!放大的矩形特征並限製保持2:1的比例!)
這部分我是參考 【OpenCV】計算Haar特征個數 這篇博客弄懂的,其中它寫了個程序來計算feature個數。
最終的得到的feature總數(在24x24窗口中)為:
2.圖像積分圖:
圖像積分圖的意義在於可以快速得到圖像中任意矩形中的像素和,從而可以計算feature的特征值。
計算過程參考Rapid object detection using a boosted cascade of simple features、An Extended Set of Haar-like Features for Rapid Object Detection 論文,
或者 【Paper】利用積分圖像法快速計算Haar特征 這篇博客。
3.adaboost訓練識別器過程:
在Rapid object detection using a boosted cascade of simple features這篇論文中,給出訓練過程如下
其中boosting步驟的第三步,對於每個feature訓練一個弱分類器,選擇誤分率最小的弱分類器。每個弱分類為如下公式所示:
其中x為圖像的24x24的子窗口。
但是這篇論文並沒有給出弱分類器閾值的計算方法,在 Robust Real-Time Face Detection這篇論文中,作者給出boost步驟後,
補了一段訓練弱分類器方法:
4.決策樹中連續變量的閾值
決策樹算法中,通過計算信息熵和信息增益(或增益比)的決定各個決策節點的構造關係,具體算法參考《機器學習》這本書中關於
決策樹的介紹,或者通過 C4.5 決策樹 (側重連續變量的閾值計算),決策樹算法總結(側重信息熵、信息增益)這兩篇博客。
在第一篇博客中,對於golf數據集
按照如下步驟計算,其中E.g 中使用info表示信息熵不規範,應該為Entropy公式。
1.信息熵公式
2.信息增益
同時可以參考stackoverflow中關於adaboost閾值的討論 The best way to calculate the best threshold with P. Viola, M. Jones Framework
csdn論文資源:
Rapid Object Detection using a Boosted Cascade of Simple Features
Robust Real-Time Face Detection
An Extended Set of Haar-like Features for Rapid Object Detection
參考的博客地址:
人臉檢測 中文博客:
https://www.cnblogs.com/ello/archive/2012/04/28/2475419.html
決策樹 連續值節點閾值的計算:
https://fangdonghao1029.blog.163.com/blog/static/34364307201281352032174/
決策樹 熵、信息增益的計算:
https://www.cnblogs.com/biyeymyhjob/archive/2012/07/23/2605208.html
haar特征數計算:
https://blog.csdn.net/xiaowei_cqu/article/details/8216109
stackoverflow關於adaboost弱分類器閾值的討論:
https://stackoverflow.com/questions/9777282/the-best-way-to-calculate-the-best-threshold-with-p-viola-m-jones-framework
重要:
opencv doc 物體檢測 https://docs.opencv.org/modules/objdetect/doc/cascade_classification.html
最後更新:2017-04-03 14:53:53
上一篇:
poj 1248 Safecracker
下一篇:
關於四舍五入
網絡子係統83_inet協議族-SOCK_RAW(四)
九度題目1209:最小郵票數
Android 安全架構及權限控製機製剖析
android之listview緩存圖片(緩存優化)
用戶 'sa' 登錄失敗。原因: 該帳戶被禁用。 (Microsoft SQL Server,錯誤: 18470)
Android 解決程序啟動時的黑屏問題
Android大圖片裁剪終極解決方案(下:拍照截圖)
《vSphere性能設計:性能密集場景下CPU、內存、存儲及網絡的最佳設計實踐》一3.1.5 新硬件的基準測試
struts中采用注解配置Action
Cramfs、JFFS2、YAFFS2全麵對比