第二章 HOG 區域特徵描述子與各種基於 HOG 之人形分類器
2.5 HOG-AdaBoost-LFV 人形分類器(Our)(Method 4)
HOG-AdaBoost Long Feature Vector(LFV)人形分類器,也就是本研究[41]在不 影響偵測率的前提之下為了提升運算速度所提出的一種人形分類器演算法,是基 於 Dalal 人形分類器與 HOG-AdaBoost 人形分類器經過些許修改與變化而來,其訓 練階段過程中一共需要經過三個階段的訓練,前兩個階段與 HOG-AdaBoost 人形 分類器的訓練過程完全相同,即這兩種方法經由 AdaBoost 所挑出的弱分類器位置 是相同的,如圖 2-21 所示。HOG-AdaBoost-LFV 人形分類器的設定以及其訓練階 段的演算法如下。
31
HOG-AdaBoost-LFV Human Classifier
Block Locations
(Totally there are 23 Blocks)
64
128
16 16
圖 2-21 HOG-AdaBoost-LFV 人形分類器區塊位置圖(CBCL Datasets)
HOG-AdaBoost-LFV 人形分類器設定 偵測視窗大小(Detecting Window Size):64x128 Pixels.
區塊大小(Block Size):16x16 Pixels.
單元大小(Cell Size):8x8 Pixels.
區塊移動間距(Block Spacing Stride):8 Pixels.
一個偵測視窗的總區塊數量:105 Blocks. (7x15) 一個偵測視窗使用的區塊數量上限(T):40 Blocks.
基礎分類器:線性支持向量機。(Linear Support Vector Machine,LSVM) 機器學習演算法:自適應增強。(Adaptive Boosting,AdaBoost)
32
HOG-AdaBoost-LFV 人形分類器 Training Stage Input:
訓練樣本集以及其經由人為標註的正確結果(Ground Truth)。
p is total number of positive sample.
n is total number of negative sample.
m is total number of training sample, m = p + n.
B is total number of blocks. (105)
Stage1:Linear SVM 訓練階段 1
將每個 HOG 特徵視為弱分類器(Weak Classifier),進行 Linear SVM 的訓練並且 記錄每個弱分類器對樣本的分類結果。
for (j = 1; j <= B ; j++) {
Step 1:計算所有正樣本的第 j 個 HOG 向量特徵。
for (i = 1; i <= p; i++) {
Step 1.1 計算第 i 張正樣本的第 j 個 HOG 特徵。
Step 1.2 將第 i 張正樣本的第 j 個區塊計算得到的 36D 向量特徵標示 Ground Truth 為人。(+1.0)
}
Step 2:計算所有負樣本的第 j 個 HOG 向量特徵。
for (i = 1; i <= n; i++) {
Step 1.1 計算第 i 張負樣本的第 j 個 HOG 特徵。
Step 1.2 將第 i 張負樣本的第 j 個區塊計算得到的 36D 向量特徵標示 Ground Truth 為非人。(-1.0)
}
Step 3:利用全部樣本的第 j 個區塊所計算得到的 36D 特徵向量與其 Ground Truth 進行 Linear SVM 的訓練。
Step 4:輸出訓練完畢的第 j 個弱分類器的 SVM Model File。
Step 5:使用第 j 個弱分類器的 SVM Model File,對所有樣本進行分類並且 記錄結果。
}
33
HOG-AdaBoost-LFV 人形分類器 Training Stage Stage2:AdaBoost 訓練階段
使用 AdaBoost 機器學習演算法挑選出分類效果較佳的弱分類器編號與其權重 Alpha_T。經由 AdaBoost 機器學習演算法挑選完後可以得到 b 個弱分類器,弱 分類器可以組合成一個強分類器(Strong Classifier)。
Step 1:初始化訓練樣本權重。
34
HOG-AdaBoost-LFV 人形分類器訓練階段完成後得到的 SVM Model File 即可 在偵測階段使用,若偵測視窗大小與訓練樣本集的大小(64x128)不同,則需要先縮 放至 64x128,接著計算偵測視窗中第 1 個到第 b 個 HOG 的 36D 特徵向量並且將 其依序串接(Concatenated)成 b*36D 特徵向量,此特徵向量即可使用訓練好的 Linear SVM 進行分類 ,並 且根據分 類結果 輸出 結果是人 (Human)(+1) 或者結果 非人 (Non-Human)(-1) 。 HOG-AdaBoost-LFV 人 形 分 類 器 運 作 流 程 圖 與 範 例 如 圖 2-22~2-23 所示。
HOG-AdaBoost-LFV 人形分類器 Training Stage Stage3:Linear SVM 訓練階段 2
使用 Stage2 所得到的弱分類器位置,但不使用權重 Alpha_t。將所得到的 b 個 弱分類器的特徵向量串接成 b*36D 特徵向量,並且使用 Linear SVM 進行訓練。
Step 1:計算所有正樣本的 b*36D 向量特徵。
for (i = 1; i <= p; i++) {
Step 1.1 計算第 i 張正樣本第 1 個到第 b 個 HOG 特徵。
Step 1.2 將 b 個 36D 向量特徵串接成 b*36D 向量特徵。
Step 1.3 將第 i 張正樣本計算得到的 b*36D 向量特徵標示 Ground Truth 為人。(+1.0)
}
Step 2:計算所有負樣本的 b*36D 向量特徵 for (i = 1; i <= n; i++)
{
Step 2.1 計算第 i 張負樣本第 1 個到第 b 個 HOG 特徵。
Step 2.2 將 b 個 36D 向量特徵串接成 b*36D 向量特徵。
Step 2.3 將第 i 張負樣本計算得到的 b*36D 向量特徵標示 Ground Truth 為非人。(-1.0)
}
Step 3:利用全部樣本的 b*36D 特徵向量與其 Ground Truth 進行 Linear SVM 的訓練。
Step 4:輸出訓練完畢且可用來分類的 SVM Model File。
35 Start
End for i = 0; i < b; i++
i
使用Linear SVM 進行分類
圖 2-22 HOG-AdaBoost-LFV 人形分類器測試階段流程圖
36D Vector 23 36D Vector 22 36D Vector 2 36D Vector 1 36D Vector 23 36D Vector 22 36D Vector 2 36D Vector 1
Non-Human!
……
HOG Concatenated
Human!
Linear SVM
……
HOG Concatenated Linear
SVM
828D (23x36)
828D (23x36)
圖 2-23 HOG-AdaBoost-LFV 人形分類器測試階段運作流程範例
36