1. 程式人生 > >HOG特徵人體檢測

HOG特徵人體檢測

1. 引言

  HOG(Histogram of Oriented Gradient),即方向梯度直方圖。它通過計算和統計區域性區域的梯度方向直方圖來構成特徵,一般與SVM分類器結合用於目標的影象識別。由於人體姿勢和外表的多變,在影象中檢測人體是一項具有挑戰性的工作,要在不同的光照和背景下都能清晰的識別出人體,首先需要的是一個強壯的特徵集。而研究表明,區域性歸一化的HOG特徵描述子相比邊緣方向直方圖、形狀上下文等,在對人體的特徵描述方面有更佳的表現。因此,目前主流的人體識別採用的是HOG+SVM。

2. HOG特徵

  利用HOG特徵的方法基本觀點是:區域性目標的外表和形狀可以被區域性梯度或邊緣方向的分佈很好的描述,即便我們不知道對應的梯度和邊緣的位置。而這就引出一個問題,到底什麼是梯度?在

梯度(Gradient)與梯度下降法(Gradient descent)這篇文章中,對於梯度介紹的比較清楚。主要可以總結為:梯度是一個向量,即有方向有大小;它的方向是最大方向導數的方向,它的模為方向導數的最大值。通俗的講,梯度指的是函式在變數空間的某一點處的最大變化率及其方向。

  在HOG特徵提取中,我們首先將影象分割成小的細胞單元(cells),將各個單元視為變數空間中的一點,在每個細胞單元中計算其梯度方向直方圖。考慮到對光照和陰影的不變性,對所得到的直方圖進行對比度歸一化,即將幾個細胞單元組合成一個更大的塊(blocks),並歸一化塊內的所有細胞單元。歸一化後的塊描述符即為HOG描述子,而後將一幅影象中所有塊的描述子組合起來就形成了最終的特徵向量,即HOG特徵。然後就可以通過SVM分類器進行人體檢測。

3. HOG特徵提取

  使用某一特徵進行目標識別,首先要對特徵進行提取,而後才能進行匹配。HOG特徵的提取主要分為以下幾步:
  1. 影象歸一化

    影象歸一化,或者說是標準化,即標準化gamma和顏色空間(Gamma/Colour Normalization)。其主要目的是減少光照因素的影響,同時可以抑制噪聲的干擾。

    Gamma壓縮如下:

       

    其中,gamma<1在高灰度區域內,動態範圍變小,影象對比度降低,影象整體灰度值變大,顯得亮一些;gamma>1,在低灰度值區域內,動態範圍變小,影象對比度降低,影象整體灰度值變小,變得暗淡。

  2. 計算畫素點的梯度

    對影象中的每一個畫素點,計算其水平和垂直方向的梯度及梯度方向值,計算公式如下:

       

    式中,分別表示畫素點(x,y)處的水平方向梯度、垂直方向梯度、畫素值。

    畫素點處的梯度幅值和方向為:

       

  3. 分割細胞單元(cells)並構建直方圖

    在這一步,將影象分割成8*8個畫素的細胞單元(cells),採用若干個bin的直方圖來統計這8*8畫素的梯度資訊(加權投影)

  4. 細胞單元組合塊(blocks)及歸一化梯度直方圖

    由於區域性光照的變化以及前景-背景對比度的變化,使得梯度強度的變化範圍非常大。這就需要對梯度強度做歸一化。歸一化能夠進一步地對光照、陰影和邊緣進行壓縮。首先將多個臨近的cells組合成塊,並求其梯度直方圖向量,需要注意的是,塊與塊之間的細胞單元是共享的;然後採用不同的方法進行歸一化處理,即將直方圖向量中bin值的最大值限制為0.2以下,然後再重新歸一化一次,歸一化的方法主要有L2-norm、L1-norm、L1-sqrt和L2-Hys四種;塊的選取主要有兩種 形狀:矩形和環形,在此就不贅述了。用於行人檢測的最佳引數設定是:3×3細胞/區間、6×6畫素/細胞、9個直方圖通道。則一塊的特徵數為:3*3*9;

  5. 組合形成HOG特徵向量

       最後一步就是將檢測視窗中所有重疊的塊進行HOG特徵的收集,並將它們結合成最終的特徵向量供分類使用。

  總結的流程圖如下:

 

4. 總結

  以上即為HOG特徵提取的原理及流程,事實上,在Open Cv中包含已經訓練好的分類模型,足以實現一些基本的識別要求。至於HOG與SVM的結合,這裡有一個行人資料集INRIA Person dataset,可用於SVM的訓練,具體的SVM訓練及識別方法以後有機會再更。