HOG特徵(Histogram of Gradient)學習總結

轉自:https://www.cnblogs.com/wyuzl/p/6792216.html

最近再看人臉檢測HOG+SVM的內容,看到這樣一篇blog,感覺看懂了,寫的不錯,轉發一下。

參考資料: 

HOG的經典論文:Dalal N, Triggs B. Histograms of oriented gradients for human detection[C]//Computer Vision and Pattern Recognition, 2005. CVPR 2005. IEEE Computer Society Conference on. IEEE, 2005, 1: 886-893.(2016:Google Citation: 14046) 
下載鏈接:https://hal.inria.fr/file/index/docid/548512/filename/hog_cvpr2005.pdf 
較爲詳細的博士論文:Dalal N. Finding people in images and videos[D]. Institut National Polytechnique de Grenoble-INPG, 2006.(Google Citation: 337) 
下載鏈接:https://tel.archives-ouvertes.fr/tel-00390303/document

採用級聯結構對HOG檢測進行加速:Zhu Q, Yeh M C, Cheng K T, et al. Fast human detection using a cascade of histograms of oriented gradients[C]//Computer Vision and Pattern Recognition, 2006 IEEE Computer Society Conference on. IEEE, 2006, 2: 1491-1498.(Google Citation: 1270)

關於HOG特徵的三線性插值論文: 
[Wang, 2009] X. Wang, X. Han, and S. Yan. A HOG-LBP human de-tec-tor with par-tial oc-clu-sion han-dling [A]. In Proc. of ICCV[C], 2009.(Google Citation: 965) 
[Pang, 2011] Y. Pang, Y. Yuan, X. Li, et al. Efficient HOG human detection [J]. Signal Processing, 2011, 91: 773-781.(Google Citation: 105)

比較好的博文: 
http://blog.sina.com.cn/s/blog_60e6e3d50101bkpn.html 
http://blog.csdn.net/icvpr/article/details/8454527 
對經典文章的翻譯:http://blog.csdn.net/masibuaa/article/details/14056807 
從理論到OpenCV實現:http://blog.csdn.net/zhazhiqiang/article/details/21047207

行人數據集:INRIA Person dataset 
Download:http://pascal.inrialpes.fr/data/human/ 
INRIA Person dataset

概述

CVPR2005這篇文章中,HOG是用來做行人檢測的。作者研究了行人檢測的特徵集問題,局部歸一化的HOG描述子相比於現存的特徵集(包括小波)有更好的表現。相比於邊緣方向直方圖(Edge Orientation Histograms)、SIFT描述子、形狀上下文(Shape Contexts),HOG是在網格密集的大小統一的細胞單元(dense grid of uniformly spaced cells)上進行計算,而且爲了提高性能,還採用了重疊的局部對比度歸一化(overlapping local contrast normalizations)。作者用行人檢測(行人是大部分可見的並且基本上是直立的)進行測試,爲了保證速度和簡潔性,使用線性SVM作爲分類器。

作者在文中提到他們的非正式實驗表明,即使截止到05年最好的基於特徵點的方法,在行人檢測方面比本論文的方法的錯檢率也要高上至少1-2個數量級,主要是因爲這些基於特徵點的檢測器不能可靠地檢測行人結構。HOG有個優點,提取的邊緣和梯度特徵能很好的抓住局部形狀的特點,且因是對圖像做了Gamma校正和採用cell方式進行梯度方向量化,在局部進行提取,所以對幾何和光學變化都有很好的不變性,變換或旋轉對於足夠小的區域影響很小。對於行人檢測,在粗糙空域採樣(coarse spatial sampling)、精細方向採樣(fine orientation sampling)和強局部灰度歸一化(strong local photometric normalization)這些條件下,只要行人大體上能夠保持直立的姿勢,就容許有一些細微的肢體動作,這些細微的動作可以被忽略而不影響檢測效果。綜上,HOG特徵很適合於做圖像中的人體檢測。

1 Overview of the Method

An overview of our feature extraction and object detection chain
HOG方法是基於對稠密網格中歸一化的局部方向梯度直方圖的計算。此方法的基本觀點是:局部目標的外表和形狀可以被局部梯度或邊緣方向的分佈很好的描述,即使我們不知道對應的梯度和邊緣的位置。在實際操作中,將圖像分爲小的元胞(cells),在每個元胞內累加計算出一維的梯度方向(或邊緣方向)直方圖。爲了對光照和陰影有更好的不變性,需要對直方圖進行對比度歸一化,這可以通過將元胞組成更大的塊(blocks)並歸一化塊內的所有元胞來實現。歸一化的塊描述符就叫作HOG描述子。將檢測窗口中的所有塊的HOG描述子組合起來就形成了最終的特徵向量,然後使用SVM分類器進行行人檢測。如上圖描述了特徵提取和目標檢測流程。檢測窗口劃分爲重疊的塊,對這些塊計算HOG描述子,形成的特徵向量放到線性SVM中進行目標/非目標的二分類。檢測窗口在整個圖像的所有位置和尺度上進行掃描,並對輸出的金字塔進行非極大值抑制來檢測目標。

2 Gamma/Colour Normalization

標準化gamma空間和顏色空間。爲了減少光照因素的影響,首先需要將整個圖像進行規範化(歸一化)。在圖像的紋理強度中,局部的表層曝光貢獻的比重較大,所以,這種壓縮處理能夠有效地降低圖像局部的陰影和光照變化。 
f(I)=Iγ 
gamma<1在高灰度值區域內,動態範圍變小,圖像對比度降低,圖像整體灰度值變大,顯得亮一些;gamma>1在低灰度值區域內,動態範圍變小,圖像對比度降低,圖像整體灰度值變小,變得暗淡。 
gamma校正
作者在他的博士論文裏有提到,對於涉及大量的類內顏色變化,如貓,狗和馬等動物,沒標準化的RGB圖效果更好,而牛,羊的圖做gamma顏色校正後效果更好。是否用gamma校正得分析具體的訓練集情況。

3 Image Smoothing

對於灰度圖像,一般爲了去除噪點,所以會先利用離散高斯平滑模板進行平滑:高斯函數在不同平滑的尺度下進行對灰度圖像進行平滑操作。Dalal等實驗表明moving from σ=0 to σ=2 reduces the recall rate from 89% to 80% at 10?4 FPPW,即不做高斯平滑人體檢測效果最佳,使得漏檢率縮小了約一倍。不做平滑操作,可能原因:HOG特徵是基於邊緣的,平滑會降低邊緣信息的對比度,從而減少圖像中的有用信息。

4 Gradient Computation

梯度公式

式中Gx(x,y),Gy(x,y)分別表示輸入圖像在像素點(x,y)處的水平方向梯度和垂直方向梯度。則G(x,y),α(x,y)分別爲像素點(x,y)的梯度幅值和梯度方向。Dalal等人利用許多一階微分模板進行求梯度近似值,但在實驗中表明模板[-1,0,1]效果最好。

首先用[-1,0,1]梯度算子對原圖像做卷積運算,得到水平方向(以向右爲正方向)的梯度分量,然後用[1,0,-1]T梯度算子對原圖像做卷積運算,得到豎直方向(以向上爲正方向)的梯度分量。然後再用以上公式計算該像素點的梯度大小和方向。

%matlab code
hx = [-1,0,1];hy = -hx';
gradscalx = imfilter(double(img),hx);
gradscaly = imfilter(double(img),hy);
  • 1
  • 2
  • 3
  • 4

梯度圖

5 Spatial / Orientation Binning

這一步驟的目的是爲局部圖像區域提供一個指示函數量化梯度方向的同時能夠保持對圖像中人體對象的姿勢和外觀的弱敏感性。 
將圖像分成若干個“單元格cell”,例如每個cell爲8?8的像素大小。假設採用9個bin的直方圖來統計這8?8個像素的梯度信息,即將cell的梯度方向0~180度(或0~360度,考慮了正負,signed)分成9個方向塊。如下圖所示:如果這個像素的梯度方向是20-40度,直方圖第2個bin即的計數就加1,這樣,對cell內每個像素用梯度方向在直方圖中進行加權投影,將其映射到對應的角度範圍塊內,就可以得到這個cell的梯度方向直方圖了,就是該cell對應的9維特徵向量(因爲有9個bin)。這邊的加權投影所用的權值爲當前點的梯度幅值。例如說:某個像素的梯度方向是在,其梯度幅值是4,那麼直方圖第2個bin的計數就不是加1了,而是加4。這樣就得到關於梯度方向的一個加權直方圖。 
梯度直方圖統計

採用梯度幅值量級本身得到的檢測效果最佳,而使用二值的邊緣權值表示會嚴重降低效果。採用梯度幅值作爲權重,可以使那些比較明顯的邊緣的方向信息對特徵表達影響增大,這樣比較合理,因爲HOG特徵主要就是依靠這些邊緣紋理。

根據Dalal等人的實驗,在行人目標檢測中,在無符號方向角度範圍並將其平均分成9份(bins)能取得最好的效果,當bin的數目繼續增大效果改變不明顯,故一般在人體目標檢測中使用bin數目爲9範圍0~180度的度量方式。

6 Tri-linear interpolation

在計算每個cell的梯度直方圖時,可以用三線性插值來提高計算速率。對於每個cell裏的點,我們認爲都是一個三維向量(x,y,θ),如下圖所示某一待處理像素點它位於block中的C0單元中, 利用該點與四個cell中的中心像素點 (圖中4個圓點,(x1,y1),...,(x4,y4)) 的距離計算權值, 將待處理像素點的梯度幅值分別加權累加到C0、C1、 C2、 C3中相應的直方圖上,與θ相鄰的兩個bin上(θ1,θ2)。 
這裏寫圖片描述
這裏寫圖片描述
參見上圖,以(x,y,θ)對cell0的梯度直方圖即h(x1,y1,θ1)的加權投影爲例,三線性插值公式如下: 
這裏寫圖片描述
這樣不斷累加更新得到最終的h(x1,y1,θ1),...,h(x4,y4,θ4),就是我們所要4個cell的梯度直方圖。

7 Normalization and Descriptor Blocks

由於局部光照的變化以及前景-背景對比度的變化,使得梯度強度的變化範圍非常大。這就需要對梯度強度做歸一化。歸一化能夠進一步地對光照、陰影和邊緣進行壓縮,使特徵向量空間對光照,陰影和邊緣變化具有魯棒性。本文的做法是:把各個細胞單元組合成大的、空間上連通的區域(blocks)。這樣,一個block內所有cell的特徵向量串聯起來便得到該block的HOG特徵。這些區間是互有重疊的,這就意味着:每一個單元格的特徵會以不同的結果多次出現在最後的特徵向量中。歸一化之後的塊描述符(向量)就稱之爲HOG描述符。 
BLOCK結構
通常使用的HOG結構大致有三種:矩形HOG(簡稱爲R-HOG),圓形HOG和中心環繞HOG。它們的單位都是Block(即塊)。Dalal的試驗證明矩形HOG和圓形HOG的檢測效果基本一致,而環繞形HOG效果相對差一些。 
Block層次結構
如上圖,一般一個塊(Block)都由若干單元(Cell)組成,一個單元都有如干個像素點組成。 
假設行人檢測的參數設置是:2×2 cell/block、8×8像素/cell、9個直方圖通道(9 bins),一個塊的特徵向量長度爲:2×2×9。

對block塊內的HOG特徵向量進行歸一化。一般採用的歸一化函數有以下四種: 
歸一化方式
在人體檢測系統中進行HOG計算時一般使用L2-norm,Dalal的文章也驗證了對於人體檢測系統使用L2-norm的時候效果最好。

8 Classi?er

計算一個樣本的HOG特徵維度,例如: 
detection window:64×128; 8×8 pixels/cell; bin=9;2×2cells/block; blockstride=1cell; 
block number:15×7=105;Length of HOG feature vector: 2×2×9×15×7=3780 
最後就是把這麼一個3780維的特徵向量輸入給SVM做訓練分類。

9 Visualizing Object Detection Features

關於HOG特徵可視化的程序如下:

基於OpenCV的C++程序,效果圖如下,通過該程序可以幫助理解HOG特徵。 
下載鏈接:http://download.csdn.net/detail/u011285477/9472067 
這裏寫圖片描述

用MATLAB實現的HOG特徵可視化代碼,視覺效果不錯。 
這裏寫圖片描述
下載鏈接:http://web.mit.edu/vondrick/ihog/index.html#code。 
相關資料:Vondrick C, Khosla A, Malisiewicz T, et al. Hoggles: Visualizing object detection features[C]//Proceedings of the IEEE International Conference on Computer Vision. 2013: 1-8.(Google Citation: 98)

10 Multi-Scale Object Localisation

這裏寫圖片描述
上圖右上角是對SVM分類結果的置信度做個映射得到檢測評分。檢測過程就是用固定大小的窗口對多個尺度的圖像進行滑窗檢測,將多個尺度計算得到的矩形框都還原成原圖尺寸,再進行非極大值抑制(NMS,Non-maximum Suppression)處理。在物體檢測非極大值抑制應用十分廣泛,主要目的是爲了消除多餘的框,找到最佳的檢測框的位置,大致思想如下圖所示。 
NMS

11 Conclusions

HOG的優點: 
- 核心思想是所檢測的局部物體外形能夠被梯度或邊緣方向的分佈所描述,HOG能較好地捕捉局部形狀信息,對幾何和光學變化都有很好的不變性; 
- HOG是在密集採樣的圖像塊中求取的,在計算得到的HOG特徵向量中隱含了該塊與檢測窗口之間的空間位置關係。

矩形HOG和SIFT有些相似的地方,關於SIFT具體看這篇博文SIFT特徵提取分析

HOG的缺陷: 
- 很難處理遮擋問題,人體姿勢動作幅度過大或物體方向改變也不易檢測(這個問題後來在DPM中採用可變形部件模型的方法得到了改善); 
- 跟SIFT相比,HOG沒有選取主方向,也沒有旋轉梯度方向直方圖,因而本身不具有旋轉不變性(較大的方向變化),其旋轉不變性是通過採用不同旋轉方向的訓練樣本來實現的; 
- 跟SIFT相比,HOG本身不具有尺度不變性,其尺度不變性是通過縮放檢測窗口圖像的大小來實現的; 
- 此外,由於梯度的性質,HOG對噪點相當敏感,在實際應用中,在Block和Cell劃分之後,對於得到各個像區域中,有時候還會做一次高斯平滑去除噪點。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章