-
Histogram of oriented gradients, 줄여서 Hog라고 부르는 feature는 머신러닝에서 주로 image detection, recognition에 자주 사용되는 feature 중 하나다.
-
Hog feature를 통해서 대상의 움직임, 혹은 각도를 쉽게 학습시킬 수 있기 때문에 Computer Vision 연구에서 자주 사용되어 왔다.
-
Hog feature를 시각화 한 예시는 다음과 같다.
용어 설명
Hog는 이미지의 pixel을 기준으로 Gradient를 구한다. 그리고 일반적으로 정사각형 크기의 cell이라는 단위를 사용해, 해당 셀 내에서 각각의 픽셀에 대한 Gradient 값을 계산한다.
-
Gradient값은 하나의 픽셀을 중심으로 여러 각도에서 계산할 수 있다. 이를 hyperparameter로 지정하고, 각각의 각도에 따라 계산한 Gradient를 나눈 각도 수 만큼의 ‘bin’에 저장한다.
-
예를 들어, 2x2의 cell에 대해서 Hog를 계산한다면,총 4개의 pixel에 대해 각각의 각도에 대한 Gradient를 구한 뒤, 이을 각각의 Bin에 넣어 숫자를 계산한다.
-
이를 통해 특정 각도에 대한 가중치 값을 얻을 수 있다.
-
cell : 몇 개의 pixel을 묶은 단위.
-
block : 몇 개의 cell을 묶은 단위.
feature 계산.
- Gradient 계산.
- edge 계산 e
- 1D kernel - 양 옆에 픽셀 값을 빼줌.
- quantization
- → orientation map 생성.
- Gradient를 이용, Local Histogram 생성.
- 블록크기별로 local histogram을 생성한다. histogram의 index는 orientation을 몇 개의 bin으로 나눴는지, 해당 index에 속한 pixel의 수가 histogram의 높이.
- Local Histogram을 이어붙여 1D vector 생성(feature vector)
- overlapping
-
추출하는 함수는 다음과 같다. extractHOGFeatures
-
Object detection for dummies Object Detection for Dummies Part 1: Gradient Vector, HOG, and SS
-
이미지 픽셀 값에 대한 gradient를 계산.
-
image derivatives vector : 이미지 픽셀은 x, y축에 대해서 계산할 수 있기 때문에, 각각에 대한 partial derivatives를 계산한다.
-
HoG Feature Extraction의 일반적 단계
-
이미지 전처리, resizing, normalization
-
모든 픽셀에 대한 gradient vector 계산, magnitude, direction도 계산
-
이미지를 8x8 픽셀의 셀들로 나눈다. 각각의 셀에서 magnitude 값들은 9개의 bucket의 알맞은 index에 더해진다. gradient direction은 각도를 의미하고, 해당 각도가 포함된 범위의 bucket에 넣어준다. 넣어줄 때 중간 값이라면 나눠서 넣어줌.
-
마지막으로, 16x16 pixel에 대해 2x2 pixel을 보면서 지나가는데, 각각의 2x2 pixel 블럭에 대해서 4개의 cell 에 대한 histogram들(각각 9개)은 이어져서 36개의 value를 갖는 1차원 벡터가 만들어지고, unit weight를 갖도록 정규화.
최종 HOG feature vector는 보든 block vector의 합이 된다. 이는 SVM과 같은 classifier의 먹이가 되어 모델을 학습시킨다.
-