HOG

TEO·2025년 1월 31일

paper review

목록 보기
2/9

HOG Algorithm

HOG알고리즘은 CNN을 사용하지 않은 고전 방법이다.

detection의 흐름은 크게 2가지이다

  1. 후보영역 생성
  2. 후보영역 분류

HOG알고리즘은 생성된 후보영역 안에 있는 object가 실제로 잘 탐지되었는지 분류하는 알고리즘이다.

후보 영역을 생성할 때는 ‘sliding window’ 알고리즘을 사용한다

예를들어 후보 박스인 빨간색 박스 안에 있는 object가 사람인지 아닌지를 분류하는 상황을 가정해보자.

이 문제를 해결하기 위해서 직관적으로 드는 생각은 빨간색 박스 안에 있는 이미지로부터 feature를 뽑아내서 실제 사람 이미지의 feature와 비교해봐야겠다는 생각이 든다.

HOG알고리즘은 여기서 window안에 있는 feature를 어떻게 뽑아낼 것인가를 설명한다.

1. 후보 영역 크기 변환

박스로 탐지된 영역을 128x64로 변환한다.

2. 후보영역 분할

128x64의 영역에서 8x8 pixel 크기로 나누어 16x8개의 타일을 생성한다.

128=8x16 → 8x8크기가 16칸

64=8x8 → 8x8크기가 8칸

이렇게 해서 128x64→ 16x8로 만들고 한 타일당 8x8의 pixel을 가지고 있다고 생각하면 된다.

3. 각 타일에서 특징을 추출 후 사람과 비교

먼저 8x8 pixel크기의 1 타일에서 특징을 뽑아낸다.

특징을 뽑아내는 과정은 아래와 같다.

  1. 8x8 영역(1개의 타일)에서 x축과 y축으로 에지 연산자를 이용하여 그레디언트 방향을 계산후 9개 구간으로 양자화

    edge연산자는 prewitt, sobel 등이 있다.

    edge filter를 이용하여 x그레디언트 y그레디언트를 계산 후

    그레디언트 방향을 계산하는 식에 대입하여 그레디언트 방향을 계산한 다.

    그레디언트 방향을 계산 후 9개 구간으로 양자화 시킨다.

  2. 특징 벡터 추출

    양자화 된 특징벡터를 명암 변화에 robust하기위해 정규화 시킨다.

    이 때 특징벡터는 9차원을 갖는다.

    지금까지 1개의 타일에서 계산하였다.

  3. 다른 타일과 concat

    마찬가지로 다른 타일에서 이와같은 계산을 수행한다.

    2x2타일 크기로 해당 window내에 있는 타일끼리 묶는다.

    2x2타일pixel 내에 있는 특징벡터들을 concat하여 36차원으로 만들고 요소의 제곱의 합이 1이 되도록 만든다.

    그러면 36차원의 특징벡터가 2x2 window 내에서 1개 생성되었다.

  4. 2x2 window를 slide 시켜 최종 계산

    2x2 window는 세로로 15번, 가로로 7번 이동한다.

    이때 이동하는 window마다 해당 영역내에서 추출된 특징 벡터들을 합치면

    15x7x36=3780차원의 특징벡터를 최종적으로 얻는다.

  5. 특징 벡터를 SVM에 넣어 분류

    여기서 얻은 3780 특징벡터를 사람인지 아닌지 이진분류 하도록 학습된 SVM에 넣어 최종적으로 분류한다.

profile
기록용

0개의 댓글