이전 포스팅에 이어 객체 탐지 및 추적 방법을 소개하고자 한다. 이전 포스팅은 다음 링크에 있다.
http://eehoeskrap.tistory.com/90
객체 탐지 및 추적방법에 대한 포스팅 관련 논문은 A Survey on Object Detection and Tracking Methods 을 참고하였다. 배경추출에 대한 논문은 Background Subtraction Algorithm Based Human Motion Detection 참고
1. Object Classification Method
사람과 자동차, 동물, 떠다니는 구름과 같은 다양하고 서로 다른 물체들을 추적하고, 객체를 추출하기 위해서는 다양한 Classification 알고리즘들이 있다. 이 논문에서는 Shape feature을 이용하여 영역에서 객체를 추출하고자 한다.
(1) Shape-based classification
point, box 그리고 blob 등과 같은 특징으로 shape는 이루어지게 된다. 이와 같은 정보는 움직이는 물체를 분류하여 식별 할 수 있다.
(2) Motion-based classification
유연하지 않고, 연결성이 없는 물체들의 움직임과 같은 동작들은 추적을하기에 적절함(?)을 보여준다. 이는 strong cue로 작용할 수 있다. Optical flow는 물체를 분류하는 데 있어서 유용하게 사용될 수 있다. Residual flow(잔류운동)는 움직이는 객체가 유연하게 다른 프레임과 연결되는지를 분석하는데 유용하게 사용 될 수 있다.
(3) Color-based classification
컬러정보를 이용한 객체의 분류는 viewpoint의 변화와 밀접한 관련이 있다. color 정보는 항상 적절한 결과를 가져오는게 아니다. 보행자나 움직이는 물체를 실시간으로 추적하기 위해서 컬러 히스토그램을 사용하곤 한다. Gaussian Mixture Model(가우시안혼합모델)에 따르면 이미지 시퀀스와 배경과 객체에서 color의 distribution을 표현 할 수 있다고 한다. 잠깐 가우시안 혼합모델에서 살펴보자면, 아래와 같다.
* Gaussian Mixture Model (가우시안 혼합모델, GMM)
머신러닝 분야에서 데이터를 군집화 하는 것은 아주 중요한 일이다. 이러한 데이터를 군집화(Clustering)하기 위한 과정에서 패턴을 분류하는 과정이 필요하다. 패턴을 분류함에 있어서 데이터들의 분포특성을 분류하는 것은 중요하다.
확률모델이란 데이터의 분포특성을 알기 위해 적절한 확률밀도함수를 가정하여 데이터 분포에 대한 모델을 만드는 것이다. 다양한 확률분포중 가우시안 확률 분포가 있는데, 이를 이용하여 모델링 하기 위해서 데이터들의 평균을 중심으로 하나의 그룹으로 뭉쳐있는 unimodel한 형태만 표현이 가능하다는 제약이 있다. 이러한 한계점을 완화시ㅣ기 위해 고안된 것이 가우시안 혼합모델(GMM, Gaussian Mixture Model)이라고 한다. 가우시안 혼합모델의 형태는 아래 사진과 같다.
왼쪽 사진의 가우시안 1차원 데이터 분포를 보면 데이터가 밀집되어있는 그룹이 3개로 나누어져 있다. 평균을 중심으로 하나의 그룹으로 뭉쳐져 있는 형태를 표현하는 가우시안 분포로는 그 특성을 제대로 표현하기가 힘들다.
이와 같은 한계를 극복하기 위해서는 두번째 그림과 같은 가우시안 분포를 사용하는 것이 바람직하다. 도넛 형태의 데이터 분포를 가지고 있는데, 하나의 가우시안만으로 표현하기 불가능 하지만, 이러한 분포에서 여러 개의 가우시안들이 각각 특정 영역을 맡아 표현 할 수 있도록 하고, 그것을 연결하면 어느 정도 유사한 형태의 확률 모델을 찾을 수 있을 것이다.
이와 같이 복수개의 가우시안 분포들의 합으로 새로운 확률 분포를 나타내는 가우시안 혼합모델(GMM)을 활용하면 아무리 복잡한 형태의 함수라도 충분한 가우시안 함수를 혼합해 사용하기만 하면 근사하여 정확한 결과를 얻을 수 있을 것이다.
(4) Texture-based classification
텍스쳐 기반 분류 방법 기술은 이미지의 지역적으로 퍼져있는 부분에서 gradient orientation(그래디언트 방향)을 계산 할 수 있다.
아래는 4가지 객체 분류 방법들의 성능을 간단히 비교해 놓은 표이다. (논문 참고)
Shape-based 방법을 제외하곤 계산 시간이 모두 오래 걸리고, 객체를 분류하는데 있어서 가장 정확성을 가지는 알고리즘은 Texture, Color 를 이용한 방법이다.
Shape 기반 모델은 동적인 환경에 알맞지 않으며, 내부의 움직임은 탐지가 불가능하다. 단지 정해놓은 간단한 패턴에 대해서만 적용이 가능하다.
Motion을 이용한 방법은 움직이지 않는 객체에 대해서는 추적을 할 수 없다는 단점이 있다. 객체가 가능한한 계속 움직이는 환경에서 적용해야 좋은 알고리즘이다.
Texture 정보를 이용한 방법은 영상에 따라 부가적인 계산이 늘어 날 수 있다는 단점을 가지지만, 정확성은 높다.
마지막으로 Color를 이용한 분류 방법은 Gaussian Mixture Model을 이용하여 보다 정확하게 객체를 분류할 수 있다. 개인적으로 Color에 의한 분류방법을 선호하는 편이다.
2. Object Tracking Methods
Tracking은 주변 환경에서 일어나는 이미지의 움직임, 경로(Path)를 추적하는 문제로 정의 할 수 있다. 영상의 single frame의 환경에서 객체의 움직음을 찾을 때, route를 생성해가는 과정을 거친다. 객체 추출, 객체 인식 및 Tracking 그리고, 행동에 대한 분석을 위한 Object Tracking 방법을 설명하고자 한다.
논문에 따르면 객체 추적은 Point Tracking, Kernel based Tracking 그리고 Silhouette based Tracking 세가지로 나뉘어진다. point tracker는 매 프레임에서 상황을 결정하고, kernel이나 contour 등을 이용한 추적 방법에서는 object가 오직 처음에 나타날 때만 detection하는 과정을 거치게 된다. 트래킹에 관한 방법들을 도식화 한 그림은 다음과 같다.
A. Point Tracking
이미지 구조에서 움직이는 객체는 특징점에 의해 나타난다. Point Tracking은 복잡한 문제이며, 잘못된 point를 인식하믕로써 다른 추적 결과를 낳을 수 있다. 그러나 객체를 Recognition하는 것은 Thresholding을 이용해 간단하게 수행 될 수 있다.
(1) Kalman Filter
다음은 마우스 이벤트를 이용한 칼만필터 예제이다. (OpenCV 3.0 예제) 마우스를 따라 방향을 추적해 가는 예제이다.
KalmanFilter::KalmanFilter(int dynamParams, int measureParams, int controlParams=0, int type=CV_32F)
Parameters: |
|
---|
(출처 : http://opencvexamples.blogspot.com/2014/01/kalman-filter-implementation-tracking.html)
칼만필터는 Optimal Recursive Data Processing Algorithm에 기반한 방법이다. 이는 the restrictive probability density propagation을 수행 할 수 있다. 칼만필터는 mathematical equation의 집합이고, 추적을 위한 효과적인 계산을 할 수 있다. 칼만필터는 상황을 추적하고, 노이즈 측정에 관한 피드백을 제공해준다. 즉, feedback control을 이용함으로써 process를 추정하게 된다.
칼만필터의 방정식은 2가지 그룹으로 나뉘어 수행된다. time update equation과 measurement update equation으로 나뉘어 수행된다. time update 방정식은 projection을 수행하는데 있어 계산을 하고, measurement update 방정식은 feedback을 제공하는데 사용된다.
그리고 칼만필터는 언제나 optimal solutions을 제공하게 된다.
(2) Particle Filtering
particle filtering은 다음 변수가 움직이기 전까지 한가지 변수를 위한 모델을 생성한다. 무한하게(unboundedly) 다양한 변수들을 다룰 수 있고, 동적인 상황의 변수들이 있을 때 유리한 알고리즘이다. 이는 항상 new operation of resampling 과정을 거치게 된다. 칼만필터의 단점은 변수를 추정하는 과정이 분산된다는 것이었다. (Gaussian) 그래서 칼만필터는 가우시안 분포를 사용하지 ㅇㄶ는 변수에 대해서는 낮은 성과를 보여준다.
이 알고리즘은 주로 contours, color features, or texture mapping에서 사용된다. Bayesian sequential importance Sample technique이다. 칼만 필터보다 prediction 과 update에 강건한 알고리즘이다.
B. Kernel Based Tracking
Kernel Tracking 알고리즘은 주로 움직이는 객체를 계산하며 수행하는 방식으로 진행된다. 하나의 프레임에서 다음에 나올 프레임까지 embryonic(초기의, 배아의) 방식으로 객체의 영역을 나타내게 된다. 객체의 움직임은 보통 tanslation, conformal, affine 등의 parametic motion의 형식으로 나타내게 된다. 이렇게 표현될 수 있는 움직임들에 대한 각각의 요소들을 계산하며 수행하는 방식으로 객체를 추적하게 된다.
이 알고리즘은 추적된 객체의 수, 객체를 나타내는데 이용된 것, 객체의 움직임을 추정하는데 사용된 방법들로 나누어 설명 할 수 있다. 실시간 환경에서 geometric shape를 이용하여 객체를 추적하는 것이 기본이며, 한가지 제한점이 있는데 object의 일부가 정의된 shape 밖에 잔상처럼 남을지도 모른다. 이는 rigid 과 non-rigid(유연하게 이어지는 것과 아닌 것)으로 나뉘어 추적할 수 있다. 이는 object representation, object features, appearance and shape of the object에 기반한 large tracking techniques이다.
(1) Simple Template Matching
Template matching은 관심있는 영역을 brute force method을 이용하여 추적하는 방법이다. tarcking은 영상에서 single object를 추적 가능하고, 부분적으로 oberlapping되는 객체에 대해 부분적으로 추적을 수행 할 수도 있다. Template Matching은 매치된 이미지의 작은 부분을 탐지해 digital image를 처리하거나 프레임 안에서 template과 일치하는 동등한 이미지 모델을 추적해여 처리하는 방법이다. 이는 다시한번 말하지만 single image나 partial occlusion of object를 추적 할 수 있는 알고리즘이다.
(2) Mean Shift Method
Mean-shift 알고리즘은 잘 알려진 알고리즘으로써 미리 전처리된 모델과 locally하게 나타내는 모델의 유사점을 찾는 방법으로 수행된다. track 된 이미지 영역은 히스토그램으로 나타낼 수 있다. gradient ascent procedure은 현재의 이미지 영역과 모델 사이에서 최대로 비슷한 score를 찾아가며 트래킹을 수행하는 방식으로 진행된다. 즉, Tracker를 현재 영역과 모델 사이의 유사 정도가 최대가 되는 위치를 찾으며 트래킹을 수행하게 된다. Object Tracking 알고리즘의 Target은 rectangular나 elliptical region(타원)으로 나타나 추적을 수행하게 된다. 아래 그림과 같이 주로 사각형으로 영역을 지정하여 추적을 수행하게 된다.
1. 이전 포스팅 Mean Shift Algorithm 내용
2. OpenCV 레퍼런스의 Mean Shift, CAM Shift 내용 한번 읽어보고 실습해보면 좋을 듯
이와 같이 target region은 target model과 target candidate를 포함하게 된다. 타겟 영역의 컬러 히스토그램을 특징화하기 위하여 선택되고, Target model은 probability density function(PDF, 확률 밀도 함수)로 나타나게 된다. 이는 asymmetric kernel과 함께 spatial masking 함으로써 정규화된다.
(3) Support Vector Machine
SVM 내용은 생략하도록 하겠다. 추적된 이미지 영상을 sample date set에 포함시켜 추적을 한다는 내용이다.
(4) Layering based Tracking
multiple object 환경에서 커널 기반 트래킹을 수행할 때 사용하는 방법으로 각 layer는 ellipse과 같은 모양을 포함하고, translation과 rotation과 같은 모션을 포함하고, layer appearance, based on intensity 를 포함하기도 한다. 매번 이미지에서 나타내는 픽셀의 확률은 객체의 전경에서 나타내는 motion에서 계산됨에 의해 수행된다. multiple image를 트래킹할 때, 또는 object의 fully occlusion에서 주로 사용되는 방법이다.
C. Silhouette Based Tracking
실루엣 기반 트래킹은 주로 손, 손가락, 어깨와 같은 복잡한 모양을 추적할 때 사용한다. 이는 간단하게 geometric shape로 정의될 수 없는 모델들이다. 실루엣 기반 추적 알고리즘은 객체에 대한 정확한 묘사를 위해 애쓰는(?) 알고리즘이다. 이 전 프레임으로부터 생성되는 오브젝트 모델의 의미를 매 프레임마다 객체 영역에서 추적한다. 즉, 전 프레임으로부터 생성된 object model에 대해 의미가 있는 것을(다음에 같은 객체라고 판단하고 추적할만한, 후보자 인 것 같은 객체를 의미가 있다고 하는 듯) 모든 frame을 찾는 과정이라고 할 수 있다.
(1) Contour Tracking
Contour Tracking은 현재 프레임에서 발생하는 새로운 position에 대해 이전 프레임에서 미리 contour를 반복적으로 수행하는 알고리즘이다. contour 과정은 이전 프레임에서 객체의 영역과 overlay되는 현재의 프레임에서 객체의 중요한 영역을 필요로한다. 즉, 이전 프레임에서 나타내는 객체의 중요한 contour와 현재의 나타내는 객체의 중요한 contour에서 overlay 되는 영역을 "많이" 찾음으로써 Tracking을 수행하게 된다. 먼저, Uses state space models to model the contour shape and motion. 두번째 접근법은 directly evolves the contour by minimizing the contour energy using direct minimization techniques such as gradient descent. 실루엣 트래킹의 가장 큰 이점은 객체의 다양한 Shape들에 대해서 다룰 수 있다는 것이다.
(2) Shape Matching
이는 존재하는 존재하는 프레임 안에서 object model을 검사하는 방식으로 진행된다. Shape matching performance는 커널 기반의 템플릿 매칭과 비슷하다. 다른 접근법은 두개의 연속적인 프레임에서 탐지되는 매치되는 실루엣을 탐지함으로써 수행된다. 또한, 실루엣 기반의 탐지는 배경을 추출함으로써 수행되고, 오브젝트의 모들엔 밀도함수의 형식으로 나타낼 수 있다. 이는 Single object 환경에서 사용 할 수 있고, Hough transform 기술과 함께 수행될 수 있다.
'AI Research Topic > Object Tracking' 카테고리의 다른 글
[Object Tracking] Optical Flow 비교 (2) | 2017.02.09 |
---|---|
[Object Tracking] SVM을 이용한 HOG 기반 객체 추적 (0) | 2017.02.01 |
[Object Tracking] 객체 탐지 및 추적 방법 (1) (2) | 2016.09.24 |
[Object Tracking] Visual Tracking Algorithm 성능 분석 사이트 (0) | 2016.09.19 |
[Object Tracking] 1. OpenCV 비디오 입력 및 CANNY 에지 검출 (0) | 2016.09.05 |