1. 程式人生 > >Adaboost訓練及在目標檢測中的應用

Adaboost訓練及在目標檢測中的應用

Adaboost訓練及在目標檢測中的應用

1.       Adaboost原理

Adaboost(AdaptiveBoosting)是一種迭代演算法,通過對訓練集不斷訓練弱分類器,然後把這些弱分類器集合起來,構成強分類器。adaboost演算法訓練的過程中,初始化所有訓練樣例的具有相同的權值重,在此樣本分佈下訓練出一個弱分類器,針 對錯分樣本加大對其對應的權值,分類正確的樣本降低其權值,使前一步被錯分的樣本得到突顯,獲得新的樣本分佈,在新的樣本分佈下,再次對樣本進行訓練,又得到一個分類器。依次迴圈,得到T個分類器,將這些分類器按照一定的權值組合,得到最終的強分類器。訓練的關鍵是針對比較難分的訓練樣本,在聯合弱分類器時,使用加權投票,這樣分類效果好的弱分類器得到較大的權重,分類效果差的則權值較小。

      Adaboost方法是經過調整的boosting演算法,能夠對弱學習得到的弱分類器的錯誤率進行適應性調整, 相對boosting演算法,Adaboost方法使用加權後選取的訓練資料代替隨機選取的訓練樣本,訓練的焦點集中在比較難分的訓練資料樣本上;在聯合弱分類器聯合時,使用加權的投票機制代替平均投票機制。讓分類效果好的弱分類器具有較大的權重,而分類效果差的分類器具有較小的權重。

   adaboost訓練演算法流程如下:

     1.初始化所有訓練樣例的權重為1 / N,其中N是樣例數

      2.for m=1,……M:

         a).訓練弱分類器ym(),使其最小化權重

誤差函式

                                                                

                                                                 這裡的m為弱分類器的個數

        b)接下來計算該弱分類器的權重α:

                                                 

        c)更新權重:

                                           

                                                 其中

是規範化因子,使所有w的和為1。

       3.得到最後的分類器:

                                                    

  上述迭代算 法中,每一次迴圈根據當前的權重分佈對樣本x定一個分佈P,然後對這個分佈下的樣本使用弱學習演算法得到弱分類器,而這個錯誤率的上限並不需要事先知道。每 一次迭代,都要對權重進行更新。更新的規則是:減小弱分類器分類效果較好的資料的概率,增大弱分類器分類效果較差的資料的概率。最終的分類器是個弱分類器的加權平均。

2.        adaboost在目標檢測中的應用

 以車輛檢測為例,步驟如下:

      a. 讀取監控攝像頭的yuv視訊資料

      b. 匯入訓練好的分類器

      c. 設定adaboost檢測器的搜尋引數。

      d. 利用檢測器對視訊影象進行掃描,輸出檢測結果

檢測結果如下: