논문

하루에도 수만개의 글자를 읽고 있습니다. 하루에도 수백장의 종이를 들춰 읽습니다.
이것은 그 읽기에 대한 일기입니다.

Detecting pedestrians using patterns of motion and appearance

[cite]10.1109/ICCV.2003.1238422[/cite]

1. Introduction

영상에서의 인식은 패턴 인식을 잘 활용되는 분야 중 하나입니다. 일반적으로 트레이닝 샘플을 이용해서 디텍터를 생성한 다음, 디텍터가 전체 이미지를 훑어가며 패턴을 찾게 됩니다. 이러한 접근법을 사용하여 얼굴의 경우 인식이 잘 되었으나, 보행자의 경우에는 그보다 잘 작동하지 않았습니다. 아마도 보행자는 몸의 자세나 옷 덕분에 그 픽셀 값들이 얼굴보다는 더 변하기 때문일 것입니다.

이 연구에서는 픽셀 정보에 움직임 정보까지 더하여 보행자를 인식하는 시스템에 대해서 다루고자 합니다.

한편, 사람의 움직임을 인식하는 연구들은 많이 진행되어있습니다. 기존의 연구들은 앞에서 연구한 인식과는 달리, 여러 프레임에서의 움직이는 물체를 탐지하여 이를 추적하는 것에 관심을 두고 있습니다. 처음에서 언급한 인식기(detector) 형식의 알고리즘은 빠르게 전체 이미지를 탐색하여 많은 데이터로 훈련되어 낮은 false positive rates를 보입니다. 따라서 여기에서는 픽셀 정보에 움직임 정보까지 활용한 인식기(detector) 방식을 알고리즘에 적용해보았습니다. 그 결과 20 * 15의 작은 크기의 스케일에서도 낮은 false positive rate를 보였습니다.

이 연구는 Viola and Jones의 연구를 토대로 만들어졌습니다.

2. Related Work

다른 연구들과는 달리 이 논문에서는 사람의 모양과 움직임, 등을 포함한 가능성이 있는 모든 물체를 이미지에서 한꺼번에 추출합니다. 즉, 추적, 세그멘테이션, 정렬, 정합 등의 작업과 그에 필요한 파라미터를 구하는 일들을 분리해서 할 필요가 없다는 것입니다. 단지 피쳐 셋과 트레이닝 데이터의 크기, 그리고 인식에 사용될 크기를 지정해주는 것만으로 끝입니다. 알고리즘의 파인 튜닝 작업들은 트레이닝 과정에서 알아서 이루어집니다.

3. Detection of Motion Patterns

보행자 인식기는 Viola and Jones의 연구에서 보였던 단순한 사각형 필터에 기반하여 만들어졌습니다. 먼저 필터를 동작을 검출할 수 있도록 확장하였습니다.

일반적으로 동작에 대한 정보는 시간 차를 가진 두 이미지 쌍으로부터 추출할 수 있습니다. 주로 사용되는 방법으로는 Block motion estimation과 Optical flow가 있으나, block motion estimation 방법은 스케일을 고정된 단점이 있고 Optical flow 방법은 계산 속도가 느린 단점이 있습니다. 기존 방법들의 단점을 극복하기 위하여 Viola-Jones의 피쳐를 확장하여 두 이미지 사이의 차이를 찾아낼 수 있도록 하여봅시다.

두 이미지가 준비되어있고, 이미지를 탐색하는 서브 윈도우(혹은 detection 윈도우)를 생각하여 봅시다. 만약 같은 서브 윈도우 영역에 대하여 두 이미지의 차이가 크다면 무언가 움직임이 있는 영역이라고 생각할 수 있습니다. 나아가서 첫번째 이미지의 영역과, 두번째 영역에서는 처음 영역으로부터 어떤 한 방향으로 영역을 이동(shift)시킨 다음 두 영역의 차이를 구해보면 어느 방향으로 이동하였는지에 대한 정보를 얻을 수 잇을 것입니다. 이를 수식으로 나타내면 아래와 같습니다.

$$\Delta = abs (I_t - I_{t+1})$$

$$U = abs (I_t - I_{t+1} \uparrow)$$

$$L = abs (I_t - I_{t+1} \leftarrow)$$

$$R = abs (I_t - I_{t+1} \rightarrow)$$

$$D = abs (I_t - I_{t+1} \downarrow)$$

각각의 화살표는 $ I_t$에서의 영역을 기준으로 화살표 방향으로 한 픽셀 이동시킨 $T_{i+1}$영역을 뜻합니다.

이제 필터를 정의해봅시다. 첫번째 필터는 $ \Delta $와 U, L, R, D 중 하나와의 차이를 더한 것입니다.

$$f_i = r_i (\Delta) - r_i(S)$$

S는 U, L, R, D 중 하나를 뜻하고, $ r_i $는 사각형 영역의 합을 뜻한다. 이 필터는 특정한 영역에서 주어진 방향으로 움직임이 있는지에 대한 likelihood와 관련이 있습니다.

두번째 필터는 서브 윈도 영역 내에서, Viola-Jones의 사각형 필터 $\phi $를 적용하여 계산한 것입니다.

$$f_j = \phi_j (S)$$

이 필터는 움직임에 대한 모양 변화를 반영합니다.

세번째 필터는 이 움직임의 강도를 나타내고자 합니다.

$$f_k = r_k(S)$$

$ r_k() $는 역시 사각형 영역의 합을 뜻합니다.

또한 모양을 반영하기 위하여 두 이미지의 차이가 아닌 첫번째 이미지에서의 사각형 필터의 계산값도 이용합니다.

$$f_m = \phi(I_t)$$

이 움직과 모양에 관한 필터는 Viola-Jones의 연구에서와 같이 integral image를 이용하여 빠르게 계산할 수 있습니다. 마찬가지로 서브 윈도 영역 내에서 정의할 수 있는 필터의 수는 엄청나게 많습니다. 따라서 학습 알고리즘이 그 중에서 가장 적절한 필터를 선택할 것입니다. 이제 분류기를 정의하여 보면 아래와 같습니다.

$$C(I_t, I_{t+1}) = 1 \text{, if } \sum_{i=1}^N F_i(I_t, \Delta, U, L, R, D) \gt \theta \\
0 \text{ , otherwise }$$

$$F_i(I_t, I_{t+1}) = \alpha \text{, if } f_i(T_i, \Delta, U, L, R, D) \gt t_i \\
\beta \text{ , otherwise }$$

$ F_i$는 임계값에 따라 정수값 $\alpha, \beta$를 갖는 함수입니다. 임계값 $t_i$ 또한 정수값이며, $f_i$는 위에서 정의한 움직임 또는 모양에 관한 필터 중 하나입니다. $\alpha, \beta$는 AdaBoost를 이용하여 학습하는 과정에서 결정하게 됩니다.

다양한 크기의 서브 윈도우에 대해서도 지원하기 위해서 $ \uparrow, \downarrow, \leftarrow, \rightarrow $ 에 사용되는 이동 크기를 서브 윈도 크기에 따라 변화시켜 주어야 합니다. 이렇게 함으로써 크기에 무관하게 알고리즘을 작동하도록 할 수 있습니다.

학습 과정에서는 트레이닝 이미지를 기본 크기인 20 * 15의 이미지로 크기를 변화시킨 다음 학습하도록 합니다. 인식 과정에서는 이미지 피라미드를 생성하여 이를 이용하도록 합니다. 두 이미지 $ I_t, I_{t+1}$에서 피라미드를 생성하고, 단계 $l$의 이미지에서 필터를 계산하도록 합니다.

$$\Delta^l = abs (I^l_t - I^l_{t+1})$$

$$U^l = abs (I^l_t - I^l_{t+1} \uparrow)$$

$$L^l = abs (I^l_t - I^l_{t+1} \leftarrow)$$

$$R^l = abs (I^l_t - I^l_{t+1} \rightarrow)$$

$$D^l = abs (I^l_t - I^l_{t+1} \downarrow)$$

학습된 분류기는 동일한 크기 20 * 15로 크기가 조절된 이미지에서 학습되므로 이와 같은 방법은 스케일에 무관한 특징을 갖게 됩니다. 이미지 피라미드는 0.8의 배수로 생성하여 이미지의 크기가 20 * 15 보다 작아지면 생성을 종료합니다.

4. Training Process

학습 단계에서는 AdaBoost를 이용하여 분류기를 생성할 피쳐들의 집합을 선택합니다. 각 단계에서 모양이나 움직임 필터에 관계없이 적절한 필터를 피쳐로 선택하게 됩니다. 피처는 트레이닝 샘플에서 가장 낮은 weighted error를 보이는 피처가 선택됩니다. 또, 학습 과정에서 최적의 $\alpha, \beta $의 값이 결정됩니다. 결과적으로 분류기는 선택된 피쳐들의 선형 결합으로 구성됩니다.

Viola-Jones의 연구와 마찬가지로 다단계 아이디어를 적용하여, 각 단계의 분류기는 높은 인식률과 적절한 false positive rate를 갖도록 생성합니다. 초기 단계의 분류기에는 비교적 단순한 인식기가 배치되도록 합니다.

5. Experiments

5.1 Dataset

거리를 찍은 8개의 영상을 이용하여 실험하였으며, 찾은 보행자는 사각형으로 표시하였습니다. 각 영상은 약 2000프레임으로 이루어져 있습니다. 8개 중 6개를 학습을 위한 트레이닝 셋으로, 나머지 2개를 테스트 셋으로 사용하였습니다.

인식기를 두가지 종류로 나누어 dynamic detector와 static detector 따로 훈련을 시켰습니다. Dynamic detector의 경우 앞에서 설명한 것과 같이 연속된 두 이미지를 이용하여 훈련시켰고, static detector는 단일 이미지 만으로 모양에 대한 필터만을 사용하여 훈련 시켰습니다. 따라서 static detector의 경우 Viola-Jones의 얼굴 인식기와 동일한 구조를 가지게 됩니다.

5.2 Training the Cascade

Dynamic detector는 20 * 15 크기의 서브 윈도 내에서 무작위로 추출된 54624개의 필터를 통하여 훈련되었습니다. Static detector는 움직임에 대한 정보를 가지지 않기에 그보다 적은 24328개의 필터만을 사용하였습니다.

첫번째 단계에서 사용된 필터에 대한 해석이 논문에 나와있으니 참고하기 바랍니다.


Add a Comment Trackback