1. 程式人生 > >AdaBoost人臉檢測訓練演算法 (下)

AdaBoost人臉檢測訓練演算法 (下)

http://blog.csdn.net/hqw7286/article/details/5556812

就像我一開始說的,比起ViolaJones人臉檢測方法,Lienhart的人臉檢測方法只是在Harr-like特徵的選取、計算以及AdaBoost訓練演算法上有區別。

一、Harr-like特徵的選取 

Lienhart提出了一些新的旋轉Haar-like特徵。

包含4個邊緣特徵、8個線性特徵和2箇中心特徵。

而對角線特徵(對應圖中的4)沒有用到,是因為對角線特徵和線性特徵裡的特徵相似。

在特徵值的計算過程中,黑色區域的權值為負值,白色區域的權值為正值。

二、特徵值的計算

對於豎直矩陣

,我們定義SAT(x,y)為點(x,y)左上角區域的畫素和。

用公式可以表示為:

為了節約時間,減少重複計算,可按如下遞推公式計算:

而計算矩陣特徵的特徵值,是位於對角線矩形SAT(x,y)之差。可參考下圖:

         

    對於45°旋角的矩形,我們定義RSAT(x,y)為點(x,y)左上角45°區域和左下角45°區域的畫素和。

       

用公式可以表示為:

為了節約時間,減少重複計算,可按如下遞推公式計算:

而計算矩陣特徵的特徵值,是位於十字行矩形RSAT(x,y)之差。可參考下圖:

三、AdaBoost的訓練演算法

Lienhart通過學習得到的系統能夠用於旋轉人臉的快速檢測,同時也能使平均的誤檢率降低10%。

此外他還研究了一些其他的Boosting演算法,如:離散的Adaboost演算法(Discrete Adaboost),實值的Adaboost演算法(Real Adaboost)和平緩的Adaboost演算法(Gentle Adaboost)。

通過比較得出基於平緩的Adaboost演算法(Gentle Adaboost)效果較好。

離散的Adaboost演算法和平緩的Adaboost演算法如下(演算法圖若看不清,請點選放大):

總的來說,基於Adaboost演算法的系統在速度方面具有很大的優越性。它是在提出的一系列Haar-like特徵的基礎上,通過Adaboost演算法學習一些弱

分類器,再組合成一個強分器。

但一般一個強分類器還不足以圓滿完成任務,還要級聯一系列這樣的強分類器,但是要進一步提高檢測精度,就需要級聯更多的強分類器,但是這樣又會降低檢測速度。

我們認為一方面可以採用更好的、計算卻更簡單的影象特徵表述方法;另一方面就是綜合Adaboost和一些強分類器。

在Adaboost學習的過程中,可以提高正例學習的閾值,如可以將每級常採用的正檢率閾值(一般設為98.5%)適當增加,當然誤檢的非人臉會相應增加,這樣學習得到的一些弱分類器組合後形成的強分類器作為分級分類器的前面幾級,最後再用一個強分類器進一步過濾。

由於在前幾級消除了大多數的非人臉,因此通過最後一級強分類器的視窗將大大減少。這樣可以獲得一個既提高檢測速度又提高檢測精度的系統。

包含4個邊緣特徵、8個線性特徵和2箇中心特徵。

而對角線特徵(對應圖中的4)沒有用到,是因為對角線特徵和線性特徵裡的特徵相似。

在特徵值的計算過程中,黑色區域的權值為負值,白色區域的權值為正值。

二、特徵值的計算

對於豎直矩陣,我們定義SAT(x,y)為點(x,y)左上角區域的畫素和。

用公式可以表示為:

為了節約時間,減少重複計算,可按如下遞推公式計算:

而計算矩陣特徵的特徵值,是位於對角線矩形SAT(x,y)之差。可參考下圖:

         

    對於45°旋角的矩形,我們定義RSAT(x,y)為點(x,y)左上角45°區域和左下角45°區域的畫素和。

       

用公式可以表示為:

為了節約時間,減少重複計算,可按如下遞推公式計算:

而計算矩陣特徵的特徵值,是位於十字行矩形RSAT(x,y)之差。可參考下圖:

三、AdaBoost的訓練演算法

Lienhart通過學習得到的系統能夠用於旋轉人臉的快速檢測,同時也能使平均的誤檢率降低10%。

此外他還研究了一些其他的Boosting演算法,如:離散的Adaboost演算法(Discrete Adaboost),實值的Adaboost演算法(Real Adaboost)和平緩的Adaboost演算法(Gentle Adaboost)。

通過比較得出基於平緩的Adaboost演算法(Gentle Adaboost)效果較好。

離散的Adaboost演算法和平緩的Adaboost演算法如下(演算法圖若看不清,請點選放大):

總的來說,基於Adaboost演算法的系統在速度方面具有很大的優越性。它是在提出的一系列Haar-like特徵的基礎上,通過Adaboost演算法學習一些弱分類器,再組合成一個強分器。

但一般一個強分類器還不足以圓滿完成任務,還要級聯一系列這樣的強分類器,但是要進一步提高檢測精度,就需要級聯更多的強分類器,但是這樣又會降低檢測速度。

我們認為一方面可以採用更好的、計算卻更簡單的影象特徵表述方法;另一方面就是綜合Adaboost和一些強分類器。

在Adaboost學習的過程中,可以提高正例學習的閾值,如可以將每級常採用的正檢率閾值(一般設為98.5%)適當增加,當然誤檢的非人臉會相應增加,這樣學習得到的一些弱分類器組合後形成的強分類器作為分級分類器的前面幾級,最後再用一個強分類器進一步過濾。

由於在前幾級消除了大多數的非人臉,因此通過最後一級強分類器的視窗將大大減少。這樣可以獲得一個既提高檢測速度又提高檢測精度的系統。