※ 고등학생이기 때문에 주변에 이 분야에 실력있는 사람이 없을 뿐더러 공부를 하는 사람도 없기에 구글링과 도서에 의존합니다. 출처는 꼭 밝힙니다. 제가 공부한 것을 작성하기 때문에 틀린 부분도 있을 수 있습니다. 지적해주시면 감사합니다.
요즘 영상 처리와 컴퓨터 비전 분야에 관심이 많아져서 이런 저런 공부를 하다가 이번 프로젝트로 영상 추적 프로그램을 개발하기로 했다.
그래서 알아보던 중 Mean Shift 란 것과 Cam Shift 라는 것을 알게 되어서 Mean Shift 라는 것에 대해서 작성을 하려고 한다.
먼저 말하고 싶은 것은 Mean Shift은 하나의 추적 방법인 것이 아니라 하나의 일반적인 방법론적 도구라고 한다.
주변에 이 분야에 실력 있는 분이 없을 뿐더러 아직 고등학생이기 때문에 여러 수식이나 이런 분야에 있어서는 구글링과 도서에 의존할 수 밖에 없어
Mean Shift 에 대한 여러 블로그 포스팅을 보고 글을 작성하겠다. (이 분야 모든 글을 블로그나 책을 참고하면서 작성했다..실력이 부족해서)
Mean Shift이란 특정 데이터들의 중심으로 이동하는 알고리즘이다. 즉, 현재 자신의 주변에서 가장 데이터가 밀집되있는 곳으로 이동하는데 이렇게 하다보면 언젠가는 데이터가 분포하는 중심을 찾을 수 있을 것이라는 방법이다.
[그림 1] Mean Shift
출처 : youtube - GabrielaBauermann
[그림 1]을 보면 초록색 원의 중심이 검은색으로 화살표 방향으로 데이터가 분포되있는 중심으로 간다는 것이 Mean Shift 알고리즘이다.
이곳에서부터는 제 롤모델이신 "다크 프로그래머"님의 블로그에서 참고한 내용들과 내가 조금 더 조사한 내용들이다.
Mean Shift 는 Hill Climb 라는 탐색 방법의 일종이라고 하는데 Hill Climb 라는 탐색 방법은 깊이우선 탐색에 기초한다. 탐색 효율을 높이기 위해 Heuristic 이 사용된다고 한다. 이것을 검색해보니 정립된 공식에 의해서가 아니라 정보가 완전하지 않은 상황에서 노력을 통해 시행착오를 거쳐 Rule of Thumb 을 통해 지식을 알게되는 과정을 의마한다고 한다. 이것을 art of good guessing 이라고 표현하기도 한다. - Heuristic 출처 : www.aistudy.co.kr -
즉 각 단계에서 선택한 것이 다른 것보다 더 나은지를 측정하고 계속해서 다른 선택을 하는 것이 바로 Hill Climb 라는 탐색 방법이다.
(완전 탐색 방법)
이제 Mean Shift을 다시 보자. Mean Shift에선 기본적으로 주변에 있는 데이터들에서 가장 데이터가 밀집되있는 곳으로 이동하는 것이기 때문에 일정 지역만 보고 진행방향을 결정하기 때문에 Mean Shift를 적용하기 위해서는 search radius(탐색 변경)의 설정이 필요한다고 한다. 이것을 너무 크게 잡아도 안되며 너무 작게 잡아도 안된다고 한다.
여기서 가장 큰 단점 중 하나는 탐색 윈도우(탐색 반경)의 크기를 정하는 것이 쉽지 않다는 것이다. 영상 추적을 할 때에는 내가 추적하려는 대상의 그기, 형태가 바뀔 수도 있는데 그러면 이 대상의 변화에 다라서 탐색 윈도우의 크기나 형태를 바꿔주어야 하는데 이게 적절하게 변경되지 않으면 추적 성능에 많은 영향을 끼치게 된다고 한다.