【目標檢測】HOG特徵學習記錄
HOG特徵即方向梯度直方圖(Histgram of Oriented,HOG),最初是用來檢測行人的特徵描述子,現在也廣泛用於計算機視覺和影象處理中進行物體檢測。
通過計算和統計影象區域性區域的梯度方向直方圖來構成特徵。
影象的梯度主要存在於物體的邊緣,而區域性目標和形狀能夠被梯度或邊緣的方向密度分佈很好地描述。
先放一張HOG特徵檢測的流程圖。
一、影象預處理
因為在HOG特徵中,顏色並不起什麼作用,所以首先將彩色影象灰度化。
為了減少光照的影響,需要將影象進行規範化,能有效降低影象區域性的陰影和光照變化。
通常用Gamma公式對影象進行規範化:
二、計算梯度
影象的梯度分為水平方向的梯度和垂直方向的梯度,再以此梯度計算每個畫素的梯度幅值和梯度方向。
使用的梯度運算元是:
- 水平邊緣運算元:[-1, 0, 1];
- 垂直邊緣運算元:[-1, 0, 1]T。
影象畫素點(x,y)水平方向梯度和垂直方向梯度分別是:
進而可以求出該畫素點的梯度幅值和梯度方向:
當然,作者也實驗了更復雜的梯度運算元,但結果表明,在行人檢測中,越簡單的運算元效果越好。
三、構建cell梯度方向直方圖
作者將影象分成若干個cell,cell有矩形,圓形,和圓環。作者實驗發現矩形cell和圓形cell的效果差不多,圓環cell的效果最差。
這裡以矩形cell為例,每個cell 6x6個畫素。
梯度分為有符號的梯度0-360,和無符號的梯度0-180。作者在行人檢測中使用的是無符號的梯度。
將180度等分成9個bin,用這9個bin來統計6x6畫素的梯度資訊。對cell內的每個畫素用梯度方向直方圖進行加權投票,權重的梯度的幅值。在實際實現中加權採用三線性插值的方法,即將當前畫素的梯度方向大小,畫素在cell中的x座標與y座標這三個值來作為插值權重,而被用來插入的值作為畫素的梯度幅值。
四、構建block歸一化梯度直方圖
由於光照等因素的影響,使得cell內的梯度幅值的變化範圍非常大,因此作者對梯度做了歸一化。
採用的方法是將cell組合成更大的block,將一個block內所有的cell的特徵向量串聯起來得到該block的HOG特徵。
作者將3x3個cell組成一個block,所以一個block的尺寸是18x18畫素。
block的構建採用滑窗的形式,設定步長在整個影象上進行滑動。根據設定的步長不同,block和block之間可能有重疊的部分,這樣能使得同一個cell的不同歸一化結果對最後的HOG向量都有貢獻。
借用網路上的一幅圖來表示(如有侵權,請聯絡刪除):
一個cell有9個bin,所以一個block的特徵描述是9*9=81維。
作者對block採用的是L2-Hys的規範化方法。
L2-Hys分為兩步:
- L2-norm:
- 對1的結果進行截斷(v-0.2v)
五、生成HOG特徵描述向量
將影象上的每一個block進行正規化之後,將所有的描述子收集起來就是整個影象的特徵。