13.3 HOG 알고리즘과 보행자 검출
이 절에서는 2005년에 다랄(N. Dalal)과 트릭스(B. Triggs)가 발표한 HOG 알고리즘을 이용한 보행자 검출 기능에 대해 설명합니다[Dalal05]. HOG(Histograms of Oriented Gradients)는 그래디언트 방향 히스토그램을 의미합니다.5 다랄과 트릭스는 사람이 서 있는 영상에서 그래디언트를 구하고, 그래디언트의 크기와 방향 성분을 이용하여 사람이 서 있는 형태에 대한 특징 벡터를 정의하였습니다. 그리고 머신 러닝의 일종인 서포트 벡터 머신(SVM, Support Vector Machine) 알고리즘을 이용하여 입력 영상에서 보행자 위치를 검출하는 방법을 제안했습니다. 먼저 HOG 알고리즘에 대해 간략하게 알아본 후, OpenCV에서 HOG 알고리즘을 사용하는 방법에 대해 설명하겠습니다.
그림 13-9를 보면서 주어진 영상으로부터 HOG를 계산하는 방법에 대해 알아보겠습니다. 보행자 검출을 위한 HOG는 기본적으로 64×128 크기의 영상에서 계산합니다. 그림 13-9(a)는 64×128 크기의 입력 영상을 확대하여 나타낸 그림입니다. HOG 알고리즘은 먼저 입력 영상으로부터 그래디언트를 계산합니다. 그래디언트는 크기와 방향 성분으로 계산하며, 방향 성분은 0°부터 180°까지로 설정합니다. 그다음은 입력 영상을 8×8 크기 단위로 분할하는데, 각각의 8×8 부분 영상을 셀(cell)이라고 부릅니다. 64×128 영상에서 셀은 가로 방향으로 여덟 개, 세로 방향으로 16개 생성됩니다. 각각의 셀로부터 그래디언트 방향 성분에 대한 히스토그램을 구하며, 이때 방향 성분을 20° 단위로 구분하면 총 아홉 개의 빈으로 구성된 방향 히스토그램이 만들어집니다. 그리고 인접한 네 개의 셀을 합쳐서 블록(block)이라고 정의합니다.
5 HOG는 ‘호그’ 또는 ‘에이치-오-지’로 읽습니다. 원문의 의미는 방향성이 있는 그래디언트의 히스토그램이지만, 실제 알고리즘은 그래디언트 방향 성분에 대한 히스토그램에 가깝습니다.