計算機視覺面試考點(2)HOG

計算機視覺工程師在面試過程中主要考察三個內容:圖像處理、機器學習、深度學習。然而,各類資料紛繁複雜,或是簡單的知識點羅列,或是有着詳細數學推導令人望而生畏的大部頭。爲了督促自己學習,也爲了方便後人,決心將常考必會的知識點以通俗易懂的方式設立專欄進行講解,努力做到長期更新。此專欄不求甚解,只追求應付一般面試。希望該專欄羽翼漸豐之日,可以爲大家免去尋找資料的勞累。每篇介紹一個知識點,沒有先後順序。想了解什麼知識點可以私信或者評論,如果重要而且恰巧我也能學會,會盡快更新。最後,每一個知識點我會參考很多資料。考慮到簡潔性,就不引用了。如有冒犯之處,聯繫我進行刪除或者補加引用。在此先提前致歉了!

HOG
Histogram of Oriented Gradients
方向梯度直方圖

原理

HOG是一種描述圖像的特徵。顧名思義,主要對像素的梯度方向敏感。
該特徵最早用於行人檢測,即檢測一張圖像中是否包含行人。
步驟如下:

  1. 使用常用圖像預處理方法,如去噪,對比度調整等,對圖像進行處理。
  2. 轉換爲灰度圖像。
  3. 使用常用梯度算子,求取每一個像素點的水平梯度x,豎直梯度y,將兩者平方相加開根號求得梯度大小。
  4. 使用x,y以及反正切函數計算梯度方向,並統一到0到180度的區間。
  5. 對於每一個像素有了兩個參數,梯度大小和梯度方向。
  6. 將180度分爲n個區間,比如9個:0,20,40,60,80,100,120,140,160。
  7. 如果一個像素的梯度大小爲10,梯度方向是60,那麼60區間加10。如果梯度大小爲40,梯度方向爲85,那麼80區間加30(40的四分之三),100區間加10(40的四分之一)。
  8. 對於一個mxm的cell,比如8x8,每一個點都進行第7步的統計,那麼此cell會得到一個9維的向量。
  9. k個cell,如4個組成一個正方形block,每一個cell的9維特徵進行歸一化。將4個cell的特徵連接,獲得36維特徵。
  10. 將圖像所有的block的特徵相連,如果有100個block,那麼最後的圖像特徵就是3600維的。這就是HOG特徵。

細節

一般會讓block之間會有一定的重疊,在一定程度上緩解了同一物體被分割的情況,但是會大幅增加計算量。
90度和270度的梯度方向雖然相反,但是都是豎直走向,區分上下沒有太大意義。所以可以將270度變爲90度,即最後把0到360度變成了0到180度。
不使用0到360的原因是,0到180的實驗效果好。作者沒有進一步解釋。我認爲如果梯度方向劃分的區間大小相同,0到360度的特徵維度就大了一倍,但是大的這一倍其實是沒必要的,所以造成了性能的下降。
可以直接處理RGB圖像,對三個維度分別計算梯度,取最大值。可以,但沒必要。
特徵歸一化是爲了減輕光照影響,因爲同樣的梯度,如果圖像亮一些,HOG特徵就會變大,這樣對比較圖像中較暗處的梯度就不公平了。
使用block的原因是當block重疊時,重疊的cell的特徵可以反覆利用。所以每張圖只需要計算每個cell(它們不重疊)的特徵。如果使用cell重疊,那麼每張圖要計算很多重疊的cell的特徵,增加了計算量。

擴展

提取的HOG特徵下一步一般使用SVM進行分類。
HOG可以與金字塔思想結合,如下所示。每一個level的block大小不同,最後將每一個level的HOG連接,形成最終的HOG。這樣可以增強對不同尺度特徵的敏感性。當然每一個block的特徵要歸一化,因爲大block的特徵向量中的數字肯定比小block的特徵向量中的數字大。
在這裏插入圖片描述


歡迎討論 歡迎吐槽

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