검색결과 리스트
글
[영상추적#2] TLD - 추적하면서 학습한다
영상 추적(visual tracking) 방법 중에 pn tracker라는게 있습니다. PN tracker는 현재 공개된 영상 추적 방법 중에서 가장 성능이 뛰어난 것으로 인정받는 tracker입니다.
PN tracker는 2010년 CVPR 학회에서 "P-N Learning: Bootstrapping Binary Classifiers by Structural Constraints"라는 제목의 논문으로 발표된 방법입니다. 참고로 CVPR(Computer Vision and Pattern Recognition)은 현재 컴퓨터 비전 분야에서 가장 저명한 국제 학회입니다. 또한 pn tracker는 이후 내용을 좀더 정리하여 2012년 PAMI에 "Tracking-Learning-Detection"라는 논문 제목으로 게제됩니다. 그래서 pn tracker를 tld tracker라고도 부릅니다.
PN tracker는 영국 Surrey 대학의 박사과정 학생인 Zdenek Kalal이 개발한 추적 알고리즘으로, Predator라는 이름으로 불리기도 합니다. Predator라는 이름은 영화 '프레데터'에서 나온 이름으로 pn tracker가 학습 능력을 가지고 있기 때문에 붙여진 이름이라고 합니다. 본인 스스로 붙였는지 아니면 주변에서 붙여 주었는지는 잘 모릅니다. Z. Kalal은 대학을 졸업 후 개발한 영상추적 기술을 가지고 TLD Vision이라는 회사를 세웠다고 합니다.
아래 동영상은 Z. Kalal이 2011년 유투브에 올린 동영상인데 영상추적 기술이 어떻게 활용될 수 있는지, 그리고 pn tracker가 얼마나 뛰어난지를 잘 보여주고 있습니다. 개인적으로도 영상추적 연구를 하는 한 사람으로서 꽤나 인상깊게 보았던 동영상입니다.
동영상 내용중에 손가락 세개를 모아서 마우스를 대체하는 장면이 있습니다. 제스쳐 인식이나 HCI(Human Computer Interaction)에 있어서 가장 어려운 문제중 하나가 바로 명령어의 시작과 끝이 어디인지를 구분하는 것입니다. 그런데, 동영상에 나오듯이 손가락 세개를 모으면 인터렉션이 시작되고 손가락을 때는 순간 해제가 되니 참 대단한 발상입니다.
TLD(Tracking-Learning-Detection) 추적 프레임워크
PN tracker가 뛰어난 이유는 TLD(Tracking-Learning-Detection)라는 새로운 추적 프레임워크를 제안했기 때문입니다. TLD는 말 그대로, 추적하면서 학습함으로써 detection이 가능한 추적기라는 의미입니다.
여기서 잠깐 detector와 tracker의 차이를 살펴보겠습니다.
detector(검출기)는 미리 알고있는(학습된) 대상을 입력 영상에서 찾을 수 있는 방법인데, 아무 영상이나 이미지 1장만 주어져도 대상을 찾을 수 있어야 합니다.
반면 tracker(추적기)는 일반적으로 동영상의 인접한 영상 프레임들 사이의 시간적, 공간적, 형태적 유사성을 이용하여 대상을 찾는 기술을 말합니다. 따라서, tracker는 과거의 추적 정보를 활용하여 현재의 대상을 찾기 때문에 한번 대상을 놓치면 다시 찾기 힘든 경우가 대부분입니다.
하지만 사실 tracking도 어떻게 보면 매 영상프레임마다 대상의 위치를 detect하는 것으로 볼 수도 있습니다. 이러한 추적 방식을 tracking by detection이라고 부르는데, 보는 관점에 따라서는 모든 tracker를 이렇게 볼 수도 있을 것입니다. 하지만 어쨌든 중요한 점은 tracker는 최근의 추적 정보를 활용하기 때문에 만일 대상의 크기, 형태, 위치 등이 급격히 변할 경우에는 실패할 확률이 매우 높아진다는 것이고 detector의 경우에는 미리 가능한 다양한 크기 및 형태에 대해 학습해 둠으로써 이미지 한장 한장에 대해서 검출이 가능해야 한다는 것입니다.
Detector와 tracker의 차이는 이 정도로 하고, pn tracker에서 사용된 TLD에 대해 알아보도록 하겠습니다.
PN tracker는 내부적으로 tracker와 detector를 동시에 운용합니다. tracker로는 optical flow tracker를 사용하고 detector로는 ferns를 사용합니다([영상처리] - Ferns를 이용한 영상 Object Detection 글 참조).
- 처음에 사용자가 추적할 대상 영역을 설정해 주면 tracker와 detector가 동시에 초기화가 됩니다. 이 때, detector의 경우에는 처음 입력 영상 영역 하나에 대해서만 학습이 되는 셈입니다.
- 이후 입력 영상이 들어오면 tracker로도 대상을 찾고, detector로도 대상을 찾습니다. 만일 tracker가 성공했다면 tracker로 찾는 윈도우(window) 영역이 detector의 학습 데이터로 활용되어 detector를 좀더 강력하게 해 줍니다. 뿐만 아니라, detector가 찾은 영역들 중에서 tracker 결과와 일치하지 않는 것들은 오검출로 분류되어 detector를 학습시키기 위한 negative example로 활용됩니다.
- 만일 tracker가 실패한 경우에는 detector가 성공할 때까지 기다렸다가, detector가 성공하면 검출된 위치로 tracker를 초기화하고 다시 추적을 시작하는 것입니다.
대략적인 TLD 원리는 위와 같지만, tracker가 실패했는지 여부를 판단하는 문제와 tracker와 detector중 어느 것을 더 믿어야 하는지 등 세부적인 내용에 대해서는 TLD 논문 내용을 참조하기 바랍니다.
기타 관련 정보
TLD 회사 홈페이지: http://tldvision.com/index.html
TLD 소스코드: https://github.com/zk00006/OpenTLD
위 웹사이트에 가면 TLD에 관련된 여러 설명 자료, 데모 동영상을 볼 수 있으며 Matlab 소스코드와 실행파일을 다운로드 받을 수 있습니다.
by 다크 프로그래머
'영상처리' 카테고리의 다른 글
영상인식과 색상모델(Gray,RGB,HSV,YCbCr) (57) | 2013.05.17 |
---|---|
[영상추적#1] Mean Shift 추적 (69) | 2013.05.13 |
RANSAC의 이해와 영상처리 활용 (117) | 2013.05.03 |