2 min read

HoG Feature

  • Histogram of oriented gradients, 줄여서 Hog라고 부르는 feature는 머신러닝에서 주로 image detection, recognition에 자주 사용되는 feature 중 하나다.

  • Hog feature를 통해서 대상의 움직임, 혹은 각도를 쉽게 학습시킬 수 있기 때문에 Computer Vision 연구에서 자주 사용되어 왔다.

  • Hog feature를 시각화 한 예시는 다음과 같다. image

용어 설명

Hog는 이미지의 pixel을 기준으로 Gradient를 구한다. 그리고 일반적으로 정사각형 크기의 cell이라는 단위를 사용해, 해당 셀 내에서 각각의 픽셀에 대한 Gradient 값을 계산한다.

  • Gradient값은 하나의 픽셀을 중심으로 여러 각도에서 계산할 수 있다. 이를 hyperparameter로 지정하고, 각각의 각도에 따라 계산한 Gradient를 나눈 각도 수 만큼의 ‘bin’에 저장한다.

  • 예를 들어, 2x2의 cell에 대해서 Hog를 계산한다면,총 4개의 pixel에 대해 각각의 각도에 대한 Gradient를 구한 뒤, 이을 각각의 Bin에 넣어 숫자를 계산한다.

  • 이를 통해 특정 각도에 대한 가중치 값을 얻을 수 있다.

  • cell : 몇 개의 pixel을 묶은 단위.

  • block : 몇 개의 cell을 묶은 단위.

feature 계산.

  1. Gradient 계산.
    • edge 계산 e
    • 1D kernel - 양 옆에 픽셀 값을 빼줌.
    • quantization
    • → orientation map 생성.
  2. Gradient를 이용, Local Histogram 생성.
    • 블록크기별로 local histogram을 생성한다. histogram의 index는 orientation을 몇 개의 bin으로 나눴는지, 해당 index에 속한 pixel의 수가 histogram의 높이.
  3. 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의 일반적 단계

    1. 이미지 전처리, resizing, normalization

    2. 모든 픽셀에 대한 gradient vector 계산, magnitude, direction도 계산

    3. 이미지를 8x8 픽셀의 셀들로 나눈다. 각각의 셀에서 magnitude 값들은 9개의 bucket의 알맞은 index에 더해진다. gradient direction은 각도를 의미하고, 해당 각도가 포함된 범위의 bucket에 넣어준다. 넣어줄 때 중간 값이라면 나눠서 넣어줌.

    4. 마지막으로, 16x16 pixel에 대해 2x2 pixel을 보면서 지나가는데, 각각의 2x2 pixel 블럭에 대해서 4개의 cell 에 대한 histogram들(각각 9개)은 이어져서 36개의 value를 갖는 1차원 벡터가 만들어지고, unit weight를 갖도록 정규화.

      최종 HOG feature vector는 보든 block vector의 합이 된다. 이는 SVM과 같은 classifier의 먹이가 되어 모델을 학습시킨다.