본문 바로가기

논문

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

gradient computation과 orientation binning은 이전 포스팅을 참고해주세요

 

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

HOG 개괄정보는 이전 포스팅을 참고해주세요! [정리]Histograms of Oriented Gradients for Human Detection (HOG) -1 Histograms of Oriented Gradients for Human Detection [feature extraction을 위한 feature..

studyingfox.tistory.com


Normalization and Descriptor Blocks

이전 단계에서는 그레디언트에 기반하여 cell마다 히스토그램 구하는 방법을 알아보았다.

그런데 이 그레디언트는 밝기에 민감하다고 한다. 즉, 밝기에 따라 그레디언트 값이 달라져 코드 실행결과에 영향을 미칠 수 있다는 뜻이다.

아쉽게도 이미지에서 이 부분을 완전히 제거 할 수는 없다. 그래도 그레디언트를 normalizaiton하여 밝기 변화?차이?를 줄일 수 있다.

Descriptor Blocks

이전 포스팅에서 cell마다 hitsogram 구하는 방법에 대해 알아보았다.

 

그렇다면 cell들이 많이 모이게 된다면 어떻게 될까?

☞바로 Block이 된다.

 

연결된 Block으로 cell을 그룹화 할 경우 그레디언트를 local normalization할 수 있게 된다.

이때 HOG descriptor는 모든 block 영역에서 정규화된 cell 히스토그램 요소의 이어붙인 벡터(concatenated vector)가 된다.

block들은 일반적으로 중복되는데, 각 셀이 final descriptor에 두 번이상 겹치는?해당하는?것을 의미한다.

 

논문에서 기술한 block은 R-HOG C-HOG이다. 

 

[그림 1] 3*3 R-HOG, 중심이 나눠진 C-HOG, 중심에 단일 cell이 있는 C-HOG

 

R-HOG block은 정사각형 그리드로, block당 cell의 수, cell당 픽셀 수, 그리고 cell 히스토그램당 채널 수를 파라미터로 나타낸다.

논문에 따르면 최적의 파라미터는 9개 히스토그램 채널을 갖는 8*8 cell 의 16*16 블록이다.

 

C-HOG block은 하나의 중심 cell이 있는 block과 각도에 맞춰 분할된 중앙에 단일 cell이 있는 두가지 버전이 있다.

파라미터로는 angular와 radian bin들의 수, 중심 bin의 radius, 추가 radial bin들의 radius를 위한 확장 factor가 있다.

논문에 따르면 C-HOG의 두 버전은 동일한 성능을 내며, 두 네 angular bins에서 두 radial bins, 4 픽셀의 중심 radius, 그리고 2의 확장 factor는 최고의 성능을 냈다고 한다.

 

Normalization

논문은 block normalizaiton을 위해 찾아낸 방법은 총 네가지이다.

 

는 주어진 block에서 모든 히스토그램을 구성하는 아직 normalization가 되지 않은 벡터이다.

는 k=1,2일 때 k-norm이 된다.

는 상수이다.

 

method1)

method2)

L2-hys: L2-norm followed by clipping (limiting the maximum values of to 0.2) and renormalizing 

 

method3)

 

method4)

 

L2-hys는 L2-norm을 가져와 결과를 클리핑 한 다음 다시 normalization하여 계산할 수 있다.

 

[그림 2] normalization 방법 FPPW

논문에 따르면 L2-hys, L2-norm 및 L1-sqrt는 비슷한 성능을 제공하지만, L1-norm은 약간 덜 안정적인 성능을 제공한다고 한다. 그래도 네 방법 모두 normalization되지 않은 데이터보다 성능이 크게 개선되었다.

 

normalization 관련해서 구글링 해보면 대부분 L2-norm을 많이 사용하는 것 같다.


Object recognition

Detector Window and Context

논문에서 64*128 detection window(아마 입력하는 이미지를 말하는 것 같다)는 모든 네 사이드에 사람 주위로 16픽셀 마진이 포함되어 있다. 이 값은 감지 할 때 상당히 큰 도움을 준다.

만약 마진 값을 8 픽셀(+detection window는 48*112로 바뀜)로 감소시키면 성능이 약 6% 하락하였다고 한다. window를 그대로 두고 사람의 크기를 키워 마진을 줄이는 것도 사람의 resolution이 실제로 늘어났음에도 불구하고 똑같이 성능이 떨어졌다고 한다. 

 

HOG descriptor는 머신 러닝 알고리즘에 feature를 제공하여 object recognition에 사용될 수 있다.

논문에서 HOG descriptor는 SVM에서 feature로 사용되었다. 

Classifier

저자는 기본적으로 soft linear SVM으로 SVMLight를 훈련시켰고, 

가우시안 kernel SVM을 사용하면 런타임 시간은 늘어나지만 3%정도 성능이 향상되었다고 한다.

 

*여기서 SVM(Support Vector Machine)이란?

 -결정 경계(Decision Boundary)=분류를 위한 기준 선을 정하는 모델

 -머신 러닝의 예측 성공률은 얼마나 정확한 경계선을 긋느냐에 달렸다고 해도 과언이 아님!

 -규칙을 찾아 학습을 위한 경계를 긋고 새로운 값을 예측해내는 것을 위한 것 중 하나가 SVM


인터넷을 찾아보니 코드로 HOG를 구현하기는 쉽지 않은 것 같다.

성공할 수 있을지 모르겠지만 우선 코드를 찾게된다면 시도해봐야겠다.

 

참고

모두의 딥러닝

https://books.google.co.kr/books?id=YG1xDgAAQBAJ&pg=PA16&lpg=PA16&dq=8x8+pixels+cells+per+block+(16x16+pixels+per+block)&source=bl&ots=4mAbxwht2L&sig=ACfU3U3upkAdLYpTUDjtlkDYAC3tlVjbXQ&hl=ko&sa=X&ved=2ahUKEwiD1rnb287pAhUXUd4KHYF-AE8Q6AEwAHoECAgQAQ#v=onepage&q&f=false

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

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

http://hleecaster.com/ml-svm-concept/

www.researchgate.net/figure/Variants-of-HOG-descriptors-a-A-rectangular-HOG-R-HOG-descriptor-with-3-3-blocks_fig1_282891670