2013년 11월 3일 일요일

연속 영상에서 분류의 결정

연속 영상에서 물체를 인식하거나 분류를 결정할 경우를 생각해 보자.
분류기가 어떤 결과를 줄 것이다. 결과는 1(물체) 또는 0(배경)이다.

영상은 항상 조명이 변하거나 노이즈가 영향을 끼쳐, 실제 물체가 존재한다고 해도 결과는 일관적(consistent)이지 않다.
예를 들면, 연속된 영상 내의 어떤 위치에 물체가 있다.
연속 10 프레임동안 감지를 수행한다고 가정하자.
결과가 1,1,0,1,1,1,0,0,1,1이다. 즉, 물체, 물체, 배경, 물체,... 이다.

첫 부분이 현재 프레임의 결과이고, 나머지는 이전 프레임의 결과들이다. 이 때, 현재 프레임의 결과 1은 과연 '물체'인지, '배경'인지를 판단해야 한다.  AMC(additive Markov chain)은 분류 판단을 위해서 이전 프레임들을 참고하는 방법이다.

AMC는 현재 랜덤 변수의 상태가 연속된 이전 랜덤 변수의 상태에 영향을 받는 것을 표현한다 [1].
즉, 연속해서 여러 프레임 동안 '물체'로 감지되었고, 현재 프레임에서도 '물체'로 감지되었다면 실제 '물체'일 가능성이 높다.
AMC의 식은 다음과 같다:


여기서 z는


로 확률(pdf) 생성을 위한 정규화 값이다. xi는 0과 1의 값을 가진다.

f()는 메모리 함수로 이전 결과에 의해 정의된다.
이전의 5프레임(n=5)을 본다고 하면 f함수는 5개가 정의 된다:

f(x1,x0), f(x2,x1), f(x3, x2), f(x4, x3), f(x5, x4).

(xi,xi-1)에 대한 f함수는 다음과 같다:


두 항 중에서 앞의 항은 현 프레임의 결과를 고려하고, 뒤 항은 이전 프레임과의 상관성을 고려한다.

alpa값은 두 항 중 어느쪽에 가중치를 둘지를 결정한다. alpa의 값은 0~1사이 값이다.   또한 (1/2)^(n-i)는 각 프레임 시간에 대한 가중치인데 현재 프레임(n)에 가까울수록 큰 값으로 기여하게 된다.



(예제) 이전 5프레임을 고려한다. alpa=0.7이고 (x2,x1)=(1,1)일 때 f()값을 계산하시오.

x2 프레임에서 물체로 감지(x2=1)가 되고, 이전 프레임(x1)도 물체로 감지(x1=1)되었다.  가중치는 1/2^(n-2)=1/2^3=1/8이다.
각 항을 대입하면,

f(x2,x1)=0.7( (1/8).1 ) + 0.3( (1/8).(1&1) ) = 0.7*(1/8) + 0.3*(1/8)

이다.




예제를 보면, (xi,xi-1)의 값과 프레임 순서가 주어지면 미리 f()값을 계산할 수 있다.  계산된 값을 LUT(lookup table)에 저장해 놓고 필요 시에 사용할 수 있다.
LUT는 (xi,xi-1, tn)의 함수이다. tn은 프레임 순서를 나타낸다.

즉, (xi=1, xi-1=0)이고, n=5에서 첫번째로 가까운 프레임 이라면

f(1,0,1) = 0.7( (1/2)^1 x 1 ) + 0.3( (1/2)^1 x (1 & 0 )) = 0.7x(1/2)

이다. 이런 식으로 미리 (xi, xi-1, tn)의 모든 경우에 대해 계산해 놓으면 된다.

f(0,0,0) = 0
f(0,1,0) = 0
f(1,0,0) = 0.7
f(1,1,0) = 1

f(0,0,1) = 0
f(0,1,1) = 0.3( (1/2)x 0) = 0
f(1,0,1) = 0.7 x 0.5
f(1,1,1) = 0.7 (1/2) + 0.3(1/2) = 0.5

f(0,0,2) = 0
f(0,1,2) = 0
f(1,0,2) = 0.7 (1/4)
f(1,1,2) = 0.7 (1/4) + 0.3 ( (1/4) ) = 1/4

....

online 연산에서는 새로 f()를 계산하지 말고 LUT에 저장되어 있는 값을 호출해서 사용한다.

최종 분류의 결정은 다음과 같다:






참고 문헌
[1] Fire detection system using random forest classification for image sequences, Optical Engineering, 2013.

댓글 없음:

댓글 쓰기