정보공간_1

[4기 강남 김태협]ChainCode와 MultiClass SVM을 이용한 제스처 인식 방법 본문

IT 놀이터/Elite Member Tech & Talk

[4기 강남 김태협]ChainCode와 MultiClass SVM을 이용한 제스처 인식 방법

알 수 없는 사용자 2013. 10. 29. 22:04

안녕하세요. 강남멤버십 22-2기 김태협 입니다.

 

이번에 포스팅 할 내용은 체인코드와 MultiClass SVM을 이용한 제스처 인식 방법입니다 :)

자 그럼, 시작해볼까요?

 

제스처 인식이란?

제스처 인식은 사람과 컴퓨터의 상호작용을 위한 HCI(Human Compure Interaction) 분야에서 많이 쓰이는 기술중 한 가지 방법입니다. 현재 스마트 폰, 스마트 TV 등 다양한 전자 제품에도 탑재되고 있으며, 여러 분야에서 사용자의 입력을 보다 편하게 하기위해 사용되고 있습니다.

 

제스처 인식 방법

 

 

그럼 제스처의 종류는 어떤 것들이 있을까요? 위 그림에서 보시는 것처럼 제스처는 연속된 선으로 이루어진 패턴이라 할 수 있습니다. 이 조건을 만족하는 제스처의 종류는 정말 다양하겠죠? (위 그림에서 검정색 동그라미는 제스처의 시작점을 의미 합니다.)

 

간단하게 위와 같은 제스처를 인식하는 방법에 대해서 생각해볼까요? 먼저, 꼭지점의 개수로 인식을 해보겠습니다. 1번은 꼭지점이 5, 2번은 0, 3번은 4, 4번은 0, 5번은 3개가 되겠네요. 하지만, 2번과, 4번이 0개로 동일해서 분류가 잘 되지 않습니다. 이번에는 시작점의 위치를 기준으로 해보겠습니다. 1번은 좌상단, 2번은 좌하단, 3번은 좌상단, 4,5번은 상단에 있네요. 이것도 1,3, 4,5번이 각각 동일하게 겹쳐서 분류가 완벽하게 되지 않습니다.

 

방금 보신 것처럼, 간단하게 몇 가지 특징을 정해서 제스처 인식을 한다면, 제스처의 종류가 적을 경우에는 쓸만하겠지만, 제스처의 종류가 많아질수록 인식률이 급격히 떨어질 것이 예상됩니다. 따라서, 좀 더 일반적으로 위와 같은 제스처의 패턴을 정의할 수 있는 방법이 필요하게 되겠죠?

 

체인 코드(Chain Code)

위 그림처럼, 연속된 선으로 이루어진 제스처 패턴의 특징을 보다 일반적으로 추출하기 위해 체인 코드라는 방법이 있습니다.

 

 

제스처 인식에서, 체인 코드는 제스처를 일정한 간격으로 샘플링하고 각 샘플링간 직선의 각도와 가장 가까운 8방향 코드를 선택하여 생성된 숫자의 나열입니다. 위 그림에서 우측에 있는 삼각형 타입 제스처의 체인코드는 11111444477777이 되겠죠? 이렇게 생성된 체인코드는 분류기를 학습시키기 위한 특징벡터가 됩니다. 이러한 방식으로 모든 제스처에 대해서 체인코드를 이용하여 특징벡터를 구할 수 있습니다.

 

MultiClass SVM 학습

지금까지 체인 코드를 이용해서 제스처에 대한 특징을 만드는 법을 알아보았습니다. 지금부터는 제스처를 인식하기 위해서 이전 포스팅에 소개된 SVM 분류기를 여러개 사용하여 MultiClass SVM을 만들고 각 제스처를 인식하도록 하겠습니다.

 

 

 

위 그림은 삼각형, 동그라미, 사각형 등의 세 가지 타입의 제스처를 인식하기 위해 각 제스처 별로 Positive, Negative 셋을 구성하여 학습하고 이를 결합하여 Multi Class SVM을 만든 모습입니다. (SVM은 체인 코드의 특징개수만큼의 차원을 갖습니다. 생성된 체인코드의 특징의 길이가 위 예처럼 14개일 경우, SVM14차원의 특징공간에서 Postive 셋의 그룹과 Negative 셋의 그룹를 분류할 수 있는 최적의 분류경계를 찾게 됩니다.)

Multi Class SVM은 인식하려는 제스처가 들어오게 되면, 체인 코드를 통하여 특징벡터를 구합니다. 그리고 이 특징과 각 제스처 타입별로 모델링된 SVM의 분류경계와의 거리에 따라 신뢰도 값을 계산하고 가장 높은 신뢰도를 갖는 클래스를 제스처 타입으로 인식하게 됩니다.

 

지금까지 체인코드와 Multi Class SVM을 이용한 제스처 인식에 대해서 알아보았습니다.

여러분들도 여러분의 프로그램에 자신만의 제스처 인식 프로그램을 넣어보시면 어떨까요? :)

위 그림은 삼각형, 동그라미, 사각형 등의 세 가지 타입의 제스처를 인식하기 위해 각 제스처 별로 Positive, Negative 셋을 구성하여 학습하고 이를 결합하여 Multi Class SVM을 만든 모습입니다. (SVM은 체인 코드의 특징개수만큼의 차원을 갖습니다. 생성된 체인코드의 특징의 길이가 위 예처럼 14개일 경우, SVM14차원의 특징공간에서 Postive 셋의 그룹과 Negative 셋의 그룹을 분류할 수 있는 최적의 분류경계를 찾게 됩니다.)

MultiClass SVM은 인식하려는 제스처가 들어오게 되면, 체인 코드를 통하여 특징벡터를 구합니다. 그리고 이 특징과 각 제스처 타입별로 모델링된 SVM 분류경계와의 거리에 따라 신뢰도 값을 계산하고 가장 높은 신뢰도를 갖는 클래스를 제스처 타입으로 인식하게 됩니다.

 

지금까지 체인코드와 MultiClass SVM을 이용한 제스처 인식에 대해서 알아보았습니다.

여러분들도 여러분의 프로그램에 자신만의 제스처 인식 프로그램을 넣어보시면 어떨까요? :)

 

그럼, 다음 포스팅으로 다시 찾아뵙겠습니다.

감사합니다.