HOG特徵如何可視化?
01-28
有關HOG特徵提取的論文中好像對結果都有一個標準的表示方式如下圖所示:
但是論文中都沒有提到是如何實現的,所以想問一下這樣的圖是怎樣得來的?每一個「亮線」的方向和長度大小代表什麼?
MIT的Carl Vondrick已經做了相關的工作,公布了HOG可視化的代碼。你可以看看。
HOGgles: Visualizing Object Detection Features
可以嘗試一下Matlab的extractHOGFeatures函數,這個函輸出兩個結果,一是1xN維的HOG特徵矢量,一個是Vision,可以使用plot函數畫出HOG特徵圖。
貼上代碼和結果:
img = imread(xxx);
[feature,vision] = extractHOGFeatures(double(img),CellSize,[32 32]);
figure;imshow(img);hold on
plot(vision)
from skimage.feature import hog
from skimage import io
im = io.imread(./timg.jpg,as_grey=True)
normalised_blocks, hog_image = hog(im, orientations=9, pixels_per_cell=(8, 8), cells_per_block=(8, 8), visualise=True)
io.imshow(hog_image)
去年看過很多 HOG論文也實現過。我記得HOG不是把每個block內的東西分為9個角度吧,梯度大小根據梯度方向貢獻給了這9個方向,貌似是這樣。
如果知道HOG的原理這個圖應該不難理解,因為每個cell的descripter就是像素點梯度方向和強度的統計,所以每一大塊應該是一個cell或者block,其中每條線的方向代表著這個單元內每個像素點的梯度方向。。。。。。(我沒看過hog的任何論文,只是大概知道其原理,做了上述推測)
推薦閱讀:
※[171108] 基於 Python OpenCV 圖像處理的特殊濾鏡(鉛筆畫、風格化、細節增強等)
※中科院醫工所智能醫療影像團隊公開「iMED-Origa650數據集」
※實時多人的姿態估計【 CVPR'17 (Oral)】
※簡單易懂的講解深度學習(入門系列之五)