본문 바로가기

논문

[정리]Histograms of Oriented Gradients for Human Detection (HOG) -1

Histograms of Oriented Gradients for Human Detection 

[feature extraction을 위한 feature descriptor:HOG descriptor]

-Navneet Dalal and Bill Triggs


Abstract

논문은 테스트 케이스로 선형 SVM을 기반으로하는 사람 감지를 적용한 강건한 visual object recognition을 위한 feature set에 대해 작성하였다.

 

저자는 descriptor를 기반으로 하는 edge와 그레디언트를 리뷰한 뒤, HOG의 그리드 descriptor가 사람 감지를 위한 feature set에 잘 맞는다는 것을 실험적으로 보인다.

 

저자는 fine-scale 그레디언트, fine orientation binning, 상대적으로 coarse한 spatial binning, 그리고 오퍼래핑한 descriptor blocks에서 높은 품질의 local contrast 표준화는 좋은 결과를 위해 필수적이라는 결과를 내는 각 단계의 연산의 영향을 연구한다.

새로운 접근법은 MIT 보행자 DB에서 거의 완벽한 분리를 가능하게 하여, 다양한 포즈와 배경이 있는 1800개가 넘는 어노테이드된 사람 사진들을 데이터셋에 포함하는 더욱 어려운 수행과제를 소개한다.


Overview of the method

[그림 1] HOG 과정 overview 

overview 섹션은 feature extraction chain(특징 추출 과정..?)을 보여준다.

 

*여기서 특징 추출이란?

 - 데이터 차원을 줄이기 위해 원본의 특징(feature)들의 조합으로 새로운 특징(feature)를 생성하려는 것이다. 즉, 고차원의 원본 특징(feature) 공간저차원의 새로운 특징(feature) 공간으로 옮기는 것을 의미한다.

 

기반 아이디어는 local object appearnace와 shape은 local intensity 그레디언트나 edge방향에 의해 잘 특성화 될 수 있다는 것이다.

실제 실험은 작은 spatial region(이하 cell)으로 image window를 나누어 각 cell 마다 그레디언트 방향이나 egde 방향을 구해 축적하였다.

 cell cell의 픽셀마다 local 1차원 그레디언트 방향 히스토그램이나 edge orientation을 축적함

결합된 히스토그램 entry representation을 형성한다.

local responses에 대비 표준화(contrast-nomalize)를 수행한 뒤 local responses를 사용한다.

이는 큰 영역인 “Block”에 대한 local 히스토그램 “energy”의 측정값을 축적하고, Block에 모든 cell을 표준화 한 결과를 사용해 수행할 수 있다.

즉 표준화된 descriptor block=HOG descriptor임을 알 수 있다.

 

detection window를 HOG desciptor의 dense grid로 타일링 하고 기존 SVM 기바의 window clssifier로 결합된 feature를 사용하여 [그림1]을 만들게 된다.

 


우선 Feature Descriptor부터 알아봐야한다잖아~

Feature Descriptor: 필요한 정보를 추출하거나 필요없는 부분을 버려 간단해진 이미지나 이미지 패치를 대표하는 것을 말한다.

 

Feature Descriptor가 하나만 있는 것은 아니다.

유명한 descriptor는 HOG, SIFT, SURF 등이 있다. 이번 HOG 포스팅은 HOG descriptor를 알아보려고 한다.

 

HOG decriptor

HOG는 이미지 데이터로부터 feature를 추출하는데 사용되는 feature descriptor이다. 

 

그렇다면 HOG descriptor는 다른 descriptor와 어떻게 다른 것일까?

 1. 구조나 객체의 shape에 초점을 둔다

  -edge feature와 다른 점은 픽셀의 edge여부뿐만 아니라 egde의 방향까지도 포함하는 것! ☞ edge의 그레디언트와 oriectation(magnitude와 direction 이라 해도 됨)를 추출하는 것

 

 2. 이 orientation들은 local화된 부분에서 계산된다.

  -완료된 이미지는 더 작은 영역과 각 영역으로 나눠지고, 그레디언트와 orientaion이 계산된다. ☞ local이라는 작은 영역에서 그레디언트와 orientaion가 계산되는 것

 

 3. 각 영역별로 히스토그램을 만들어낸다.

  -히스토그램은 픽셀 값의 그레디언트와 orientaion을 사용하여 만들어진다.

 

위에 나열한 특징을 종합해보면 다음과 같다.

HOG feature descriptor는 이미지의 로컬화된 부분에서 그레디언트 orientation의 수를세는 것이다.

 

그래서 지금부터는 HOG는 어떻게 feature를 찾고 계산하는지 알아볼 것이다!!


Preprocessing

Gamma/Color Normalization

Gamma Normalization은 감마 보정을 말한다.

감마 보정은 픽셀 값을 비선형적으로 보정하는데, 다음과 같은 수식을 따른다.

 

감마 보정 수식

보통 사진 보정에서 감마값을 조정하는 것=밝기(혹은 휘도?) 보정으로 통용되는 것으로 알고 있다.

아마 원본보다 더 밝은 이미지를 사용하기 위해 감마 보정을 수행하는 것 같다.

 

사실 감마 보정 과정은 효과가 미미하다. 그래서 해도 그만 안해도 그만이다.

Image resizing

논문에서 HOG descriptor는 64*128 이미지 패치를 계산한다.

저자가 임의로 설정한 값일 수 있지만, 분석할 패치 종횡비가 1:2 비율인 것은 꼭 지켜야 한다.

 

우선 대부분의 포스팅에서 64*128을 사용하였기에, 나중에 실제로 코드를 실행해야 할 경우 64*128로 해봐야겠다.

 


이어지는 정리는 gradient computation이랑 spatial/orientation binning을 할 예정인데

과연... 더 할 수 있을지....!??!?!?!

 

참고

https://lear.inrialpes.fr/people/triggs/pubs/Dalal-cvpr05.pdf

https://en.wikipedia.org/wiki/Gamma_correction

www.en.wikipedia.org/wiki/Histogram_of_oriented_gradients

www.imloil.blogspot.com/2016/12/opencv-hog-with-paper-1-normalize-gamma.html

www.learnopencv.com/histogram-of-oriented-gradients/

www.analyticsvidhya.com/blog/2019/09/feature-engineering-images-introduction-hog-feature-descriptor/