閱讀701 返回首頁    go 阿裏雲 go 技術社區[雲棲]


機器學習_基於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

                        基於gentle adaboost算法的人臉檢測研究

                        參考的博客地址:

                        人臉檢測 中文博客:

                        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

  上一篇:go poj 1248 Safecracker
  下一篇:go 關於四舍五入