1. 서 론
제스처 인식 및 분류를 위한 컴퓨터 비전 분야의 다양한 알고리즘들은 최근 SVM, 딥 러닝(Deep Learning)과 같은 방법을 활용하여 높은 인식률을 보여주고 있다. 그러나 이러한 알고리즘은 모바일 환경과 같은 낮은 성능의 하드웨어를 가진 특수한 상황에 있어 비효율적인 측면을 가진다. 특히, 게임과 같은 응용분야의 경우 실시간 렌더링, 물리연산 등 게임 구현에 필요한 시스템 자원을 미리 사용함으로서 별도의 정교하고 높은 인식률의 제스처 인식 알고리즘을 적용하는데 근본적인 한계가 있다. 일반적으로 게임 어플리케이션의 내부 연산량이 높을수록 실시간 렌더링을 수행하는데 처리 속도가 낮아지며 이는 게임 전체의 프레임 저하 등으로 인해 사용자에게 불편을 제공하거나 콘텐츠의 질이 저하되는 원인이 된다.
최근 XBOX와 같은 게임전용 콘솔의 경우 카메라 영상과 컴퓨터 비전 알고리즘을 활용한 Kinect라 불리는 동작인식 분야를 개척해왔지만, 제스처 인식에 있어서 아직까지 폭 넓은 적용이 시도되지 못하고 있는 것이 사실이다. 최근 이 같은 기술이 동작을 인식 하는데 기본적으로 랜덤 포레스트(Random Forest)와 같은 알고리즘을 활용하여 준비된, 학습된 데이터로부터 임의의 복원 추출과정을 통해 신체 관절사이의 조인트 정보를 예측하는 형태로 동작한다[1]. 통상 이 같은 알고리즘이 정상적으로 동작하기 위해서는 대규모의 데이터, 빅 데이터가 필요하며 낮은 사양의 모바일 환경에서는 이를 적용하기 쉽지 않은 것이 사실이다. 최근 또 다른 소형 동작인식 기기로 각광받는 Leap Motion과 같은 경우, 3D 모션센서를 통해서 들어온 3D 영상 데이터를 적절하게 처리하여 실시간으로 손가락의 움직임을 감지하는 것이 가능해졌다[2]. 이 같은 하드웨어들의 정확도나 인식률은 여러 알고리즘의 활용과 조합에 의해 재구성되며, 실생활이나 게임과 같은 콘텐츠에서 활용되기 위해서는 공통적인 인터페이스를 유도하고 보다 나은 인식률을 낼 수 있도록 개선하는 과정이 매우 중요하며 많은 곳에서 연구가 진행되고 있는 것이 사실이다[3].
본 논문에서는 데스크탑, 모바일 환경 기반의 게임 콘텐츠와 같은 환경에 제스처 인식 알고리즘을 적용하고 실시간 인식 및 분류를 위한 알고리즘의 개선, 적용방법을 제시하였다. 본 논문의 구성은 다음과 같다. 2장에서 기존의 제스처를 분류하는 방법을 선행연구를 통해서 알아본다. 3장에서는 k-Nearest Neighbors Algorithm을 활용하여 입력데이터의 전처리 과정을 거치고 인식률을 효과적으로 개선시키는 방법을 제시한다. 그리고 4장에서는 개선된 알고리즘이 타탕한지 검증하기 위하여 게임 어플리케이션에 적용했으며, 입력벡터에 따른 프레임 수와 제스처의 인식률을 측정하기 위해 실험을 진행하였고, 제시한 알고리즘을 평가한다. 5장에서 실험 결과로부터 결론을 맺으며 향후 연구방향을 제시한다.
2. 이 론
2.1 선행 연구
데스크탑은 마우스를 이용하는데 반해 모바일 환경에서는 사람의 손가락으로 터치스크린을 통해 플레이를 하게된다. 본 연구에서는 Fig. 1과 같은 제스처에 대한 인식과 분류를 진행한다. 모바일 환경의 경우 터치스크린 멀티터치 환경의 특성상 손가락 하나만을 통한 제스처가 아닌 여러 개의 손가락을 통해 유저의 제스처가 시행될 수 있다[4]. 이것은 제스처를 분류하는데 있어 인식 방법 및 인식률에 있어 밀접한 관련을 가진다. 세부적인 모양이나 숫자를 입력하는데 있어 단순히 하나만을 입력하는 것이 아닌, 여러 종류의 패턴을 입력했을 때 들어온 입력 벡터의 개수, 모양에 따라 예측한 값이 크게 달라질 수 있다. 이러한 연구는 Stroke[5]라는 키워드를 통해 많이 찾아볼 수 있으며 최근 들어 다양한 알고리즘으로 활용되며 계속 이어져왔다.
Fig. 1.The kinds of shape for gesture classification.
선행 연구에서는 총 16개의 모양으로 실험했으며 slow(시간은 느리지만 인식률이 높은 제스처), medium(적당한 시간과 인식률을 나타내는 제스처), fast(시간은 빠르지만 인식률이 낮은 제스처)로 분류하여 각각 10개씩 3분류로 총 480개의 제스처로 분류, 실험을 진행하였다. 연구에 쓰인 알고리즘은 k-Nearest Neighbors Algorithm과 유사함을 보이며 비교 알고리즘으로 DTW(Dynamic Time Wrapping), Rubine이 사용되었다[5].
Fig. 2의 실험결과는 입력벡터의 개수가 많아짐에 따라 slow로 분류되며, 모양에 따라 실행시간 기준으로 비교했을 때 각각 3분류로 분류되는 것이 달라지는 결과를 확인할 수 있다. 다른 알고리즘에 비해 선행 연구에서 사용된 $1 알고리즘이 높은 인식률을 보이기 때문에 본 논문에서는 이를 적용한 게임 콘텐츠를 소개한다.
Fig. 2.The performance for $1 algorithm, DTW algorithm and Rubine algorithm.
일반적인 제스처를 인식하는 방법 중 통상적으로 컴퓨터 비전 분야에 있어 입력 데이터에 대한 부분은 2D 평면 이미지를 통해 많이 처리되어 왔다. 최근까지 많이 활용된 SVM(Support Vector Machine)[6], 기계학습 분야에서 높은 인식률과 역량을 보여주는 깊은 신경망(deep learning)[7] 알고리즘을 Fig. 3을 통해 예시로 들 수 있다. 이 같은 알고리즘들은 통상분류기로 불리며 다양한 분야에 복합적으로 활용되고 있다.
Fig. 3.Support Vector Machine(SVM) and Convolutional Neural Network(CNN) Model.
그러나 이 같은 모델의 알고리즘들은 대규모의 학습 데이터나 많은 연산량을 필요로 하며 다양한 인터페이스에서 광범위하게 적용되기 쉽지 않다. 특히 깊은 신경망(deep learning)같은 경우 많은 학습량을 필요로 하며 GPU 기반의 연산을 통해 학습을 진행해야 실질적인 활용이 가능한 수준이 된다. 만약 렌더링과 기타 연산에 많은 컴퓨터 자원을 활용하는 게임 콘텐츠의 경우 이 같은 알고리즘을 적용하게 되면 많은 제약이 따르게 되며 적절한 입력 데이터 선택과 수많은 최적화와 분류방법을 찾을 필요가 있다.
2.2 k-Nearest Neighbors Algorithm
k-Nearest Neighbors Algorithm은 흔히 최근접 이웃 분류기로 불리며 거리척도 기반의 학습을 수행한다. 새로운 데이터가 입력 값으로 들어오면 임의의 훈련 데이터들을 모두 비교하여 가장 가까운 유클리디안 거리(euclidean distance)를 가진 k개의 데이터를 선출하여 유사도를 구한다. 여기서 구한 유사도를 기반으로 데이터 중 가장 유력한 항목을 선별하며 선별된 항목을 토대로 입력된 데이터를 최종적으로 분류하게 된다[8]. 통상적으로 물체인식, 얼굴인식 등의 분야에서 인식 및 분류를 위한 하나의 방법으로 많이 활용되어 왔다[9].
Fig. 4는 유클리디안 거리를 기반으로 작동하는 k-Nearest Neighbors Algorithm에 대한 설명을 위한 이미지이다. 유클리디안 거리(euclidean distance)는 다차원 공간에서 두 벡터간의 거리를 구한다. 임의의 두 벡터를 (v1,v2.....vn), (u1,u2.....un)라고 표기할 때 유클리디안 거리의 공식은 아래와 같다. 두 벡터간의 거리를 구하여 가장 유력한 항목의 유사도를 구할 수 있다[10].
Fig. 4.k-Nearest Neighbors Algorithm.
유클리디언 거리를 구하는 방법은 일반적으로 수많은 연산이 필요한 게임 콘텐츠와 같은 환경에서 충분하지 못한 컴퓨터 자원을 최적화 하기 위한 방법으로 많이 사용된다. 연속적인 데이터에 대한 대응이 가능하기 때문에 게임과 같은 경우 많이 활용되는 방법이다.
선형 보간법(linear interpolation)은 양 끝의 벡터가 주어졌을 때 그 사이에 위치한 값을 직선거리에 따라 선형적으로 계산하는 방법으로 임의의 두 벡터 v, u으로 만들어진 벡터를 w라 표기할 때 선형 보간법의 공식은 아래와 같다. 두 벡터간의 보간 계산법은 본 논문의 제스처 입력벡터를 임의의 개수로 재구성할시 사용된다[11].
입력벡터의 보간 방법에 따른 개수의 차이에 따라 정확도나 모양의 인식에 있어 큰 영향을 줄 수 있다. 개수가 많을수록 제스처에 대한 정보가 보다 자세할 수 있지만 과다할 경우 과적합(Overfitting)문제를 일으킬 수 있다.
3. 제안한 방법
3.1 게임 콘텐츠 적용
본 논문에서는 Unity 3D를 사용하여 게임을 구현하였으며 총 11개의 제스처를 구성하여 제스처 인식모듈에 학습, 적용시켰다. 게임엔진 버전을 4를 사용하였으며 iOS 버전으로 변환하여 아이폰, 아이패드 환경에서 터치스크린을 통해 제스처를 입력하는 방법을 사용하였다.
게임 콘텐츠는 오른쪽에서 나타나는 좀비가 왼쪽을 향해 달려가며 왼쪽 끝에 위치한 사용자 캐릭터에 다다르면 체력이 감소하고 패배하는 조건을 가지고 있다. Fig. 5와 같이 오른쪽에서 등장하는 각 좀비에게는 제거를 위한 제스처가 말풍선 UI를 통해 표현되어 있으며 사용자는 좀비를 제거하기 위해 해당되는 제스처를 입력하게 되는 형태의 게임이다.
Fig. 5.Gesture recognize for game contents.
Fig. 6은 터치 혹은 마우스 입력을 통해 입력된 제스처를 나타내는 화면이다. 스테이지가 높을수록 보다 복잡하고 다양한 종류의 제스처가 등장하며 좀비의 이동속도도 빨라져 빠른 제스처 입력이 필요하게 된다. 좀비에 해당되는 제스처를 입력하면서 동시에 사용자는 마법 스킬을 사용할 수 있다. 마법에 해당되는 제스처를 입력하면 해당 마법 스킬이 발동되며 게임을 진행함에 있어 도움을 받을 수 있다.
Fig. 6.Drawing gesture in game.
게임의 난이도가 증가하면서 Fig. 7과 같이 보다 빠르게 등장하는 다양한 종류의 좀비와 제스처는 사용자에게 빠른 입력을 요구하게 하며 이 같은 상황은 동시에 사용자가 제스처를 그리는 모양과 시간에 있어 많은 영향을 주게 된다. 사용자가 급하게 제스처를 그릴수록 제스처 모양을 간소화 하거나 작게 그리거나, 혹은 명확하게 입력하지 않아서 프로그램의 의도 범위 안에서 제스처를 제대로 그리지 못하는 경우가 발생할 수 있다.
Fig. 7.Boss stage and magic skill for game contents.
본 논문의 골자가 되는 k-Nearest Neighbors Algorithm은 훈련 데이터를 유클리디안 거리(euclidean distance)를 통해서 나온 유사도를 활용하여 가장 근접한 데이터를 유추한다. 사용자가 즉시 입력하는 제스처를 통해 최대한 빠르게 인식하고 반응해야 게임의 원활한 진행이 가능하기 때문에 최적화 과정이 필요하다. Fig. 8은 게임 내에서 실시간으로 제스처 인식을 위해 처리되는 과정을 나타낸다. 실제 게임의 초당 프레임 수(frame per second)는 통상 30-60의 범위이며 최소 10프레임 안에서 인식이 이루어져야 원활한 게임이 가능하다. 이를 위해 제스처 이미지를 그대로 입력하는 것이 아닌 각 제스처 모양마다 선형 보간을 통해 구한 연속된 벡터 정보를 가지고 분류를 진행하게 된다.
Fig. 8.Flowchart for gesture recognition algorithm.
모바일 환경은 터치스크린을 통해서, 데스크탑의 경우 마우스를 통해서 제스처에 대한 벡터를 입력받는다. 하지만 사용자가 입력하는 벡터의 개수는 보간 방법에 따라 유동적이다. 입력 벡터가 많을수록 훈련데이터의 탐색으로 별도의 스레드 처리를 하지 않을 경우 게임 전체의 렌더링 속도가 떨어지면서 초당프레임 수가 떨어질 수 있기 때문에 적절한 리샘플링(resampling)을 필요로 한다. 선형 보간(linear interpolation)을 통해 무작위로 들어오는 입력 벡터와 훈련 벡터에 대한 수를 가능한 같도록 고정하였으며 제스처에 대한 인식률 향상을 위해 그리는 입력 벡터를 적절히 분절하여 그 구간마다 적절한 수의 보간 벡터를 추가, 데이터를 재구성하였다.
무엇보다 게임 콘텐츠에 적용되는 알고리즘이기 때문에 게임의 실시간 정확도와 렌더링 프레임의 속도를 떨어뜨리지 않고, 유연하게 프로그램이 실행되는 것과 각각의 제스처를 융통성 있는 범위 안에서 인식하는 것이 중요하기 때문에, 재구성한 훈련 벡터와 입력 벡터로 이루어진 제스처가 얼마나 정확하게 나오는지에 대하여 실험을 진행하였다.
4. 실험 결과 및 고찰
4.1 훈련 벡터 재구성에 따른 게임 프레임 수의 변화 측정 및 정확도 결과
Fig. 9는 사용자의 입력 벡터를 보간 및 복원, 가공한 데이터를 적용함에 따라 프레임 수의 변화를 기록한 그래프이다. 초당 평균 프레임 수를 계산한 경우 그래프에서 본 것과 같이 벡터 수가 늘어날수록 프레임이 1프레임 씩 감소하는 것을 확인할 수 있다. 또한 수가 늘어날수록 프레임 감소량도 점점 늘어나는 것을 확인할 수 있으며 실제 256, 512 정도의 벡터 수를 적용할 경우 실질적인 게임 구동이 힘들어지는 것을 확인할 수 있었다. 본 게임의 경우와 같이 사용자의 빠른 반응이 필요한 경우 평균 초당 60프레임 이상을 확보할 필요가 있으며 이 보다 낮을 경우 사용자에게 게임 플레이에 있어 불쾌감을 줄 수 있다.
Fig. 9.Frame numbers according to training vectors.
제스처의 종류는 Fig. 10의 총 10가지로 각 제스처별 4개의 데이터로 총 40개의 학습 데이터를 토대로 학습과정을 진행하였다. 제스처의 종류는 가변적으로 추가하거나 제거할 수 있으며 학습 데이터에 대한 변경도 가능하다. 다양한 종류의 학습 데이터가 있을수록 다양한 경우에 대응이 가능하다는 점에서 개선의 가능성이 남아있다.
Fig. 10.Gesture types that used in research.
Fig. 11은 사용자의 입력에 따른 각 제스처의 인식 정확도를 나타낸 그래프이다. x 축은 입력 벡터의 개수를 의미하며 y 축은 10회 입력 시 성공 횟수를 계산한 정확도를 나타낸다. 직선 제스처인 3, 5의 경우 모든 경우에서 높은 정확도를 확인할 수 있다. 대부분의 경우에서 가장 낮은 정확도를 보이는 2, 4번 패턴의 경우 복잡한 형태의 패턴이며 방향성(orientation)이 있을 수 있기 때문에 정확도가 비교적 낮게 나오는 것을 알 수 있다. 너무 과다한 벡터 개수가 설정되지 않는 이상 소량의 학습 데이터만으로도 평균 80% 이상의 정확도를 실험에서 확인할 수 있으며 게임 콘텐츠에 적용하기에 크게 문제가 없는 수준으로 보이지만 실제 게임에 적용된 경우 사용자에 따라 조금씩 다른 입력 패턴과 크기 때문에 사용자별로 정확도가 판이하게 다른 결과가 나타나기도 했다. 때문에 추후 다량의 학습 데이터를 확보할 필요가 있다.
Fig. 11.Accuracy change of input vector reconstruction.
5. 결 론
본 논문에서는 k-Nearest Neighbors Algorithm 기반의 제스처 인식 알고리즘을 활용하여 게임 콘텐츠에 적용하였다. 유저가 게임을 플레이할 경우 입력되는 제스처 모양에 따라 학습된 제스처 데이터의 특징 중 가장 유사한 레이블을 결정, 게임에 분류 정보를 피드백 하는 형태의 프로그램을 작성하였으며 최근 높은 인식 성능으로 각광받는 SVM, 딥 러닝(Deep Learning)등 많은 연산량을 필요로 하는 알고리즘에 비해 모바일 환경과 같은 특수한 환경에서 실질적으로 응용할 수 있는 가능성을 확인하였다.
연구과정에서 학습 데이터의 과적합(overfitting) 문제가 발견되었으며, 학습 데이터 중 가장 가까운 레이블을 찾는 최근접 이웃 알고리즘의 특징으로 볼 때 모호한 특징을 가진 제스처를 입력하면 인식률이 떨어지는 현상을 확인할 수 있었다. 특히, 보간을 통해 확보된 방향벡터의 데이터가 부족할 경우 인식률이 심하게 저하되었으며 게임을 플레이하기 위한 프레임을 확보하면서 최대한 인식률을 높일 수 있도록 최적화된 보간 설정을 필요로 한다.
추후 다량의 학습 데이터를 확보하고 그에 맞는 최적화된 보간 알고리즘을 탐색한다면 게임 프레임을 유지하면서 제스처 인식률을 더 높일 수 있는 방안을 찾을 수 있을 것으로 예상된다. 이를 통해 상용게임 어플리케이션과 같은 응용분야에 본 알고리즘을 효과적으로 적용할 수 있을 것으로 기대된다.
References
- U. Johansson, H. Bostrom, T. Lofstrom, and H. Linusson, “Regression Conformal Prediction with Random Forests,” Machine Learning, Vol. 97, No. 1-2, pp. 155-176, 2014. https://doi.org/10.1007/s10994-014-5453-0
- G. Marin, F. Dominio, and P. Zanuttigh, "Hand Gesture Recognition with Leap Motion and Kinect Devices," Proceeding of IEEE International Conference on Image Processing, pp. 1565-1569, 2014.
- S. Mitra and T. Acharya, “Gesture Recognition: A Survey,” IEEE Transactions on Systems, Man, and Cybernetics, Part C (Applications and Reviews), Vol. 37, No. 3, pp. 311-324, 2007. https://doi.org/10.1109/TSMCC.2007.893280
- N.A. Ibraheem and R. Khan, “Survey on Various Gesture Recognition Technologies and Techniques," International Journal of Computer Applications, Vol. 50, No. 7, pp. 38-44, 2012. https://doi.org/10.5120/7786-0883
- Y. Jiang, F. Tian, X. Zhang, W. Liu, G. Dai, H. Wang, et. al., "Unistroke Gestures on Multi-touch Interaction: Supporting Flexible Touches with Key Stroke Extraction," Proceeding of the 2012 ACM International conference on Intelligent User Interfaces, ACM, pp. 85-88, 2012.
- N.H. Dardas and N.D. Georganas, “Real-Time Hand Gesture Detection and Recognition Using Bag-of-Features and Support Vector Machine Techniques,” IEEE Transactions on Instrumentation and Measurement, Vol. 60, No. 11, pp. 3592-3607, 2011. https://doi.org/10.1109/TIM.2011.2161140
- J. Liu, K. Yu, Y. Zhang, and Y. Huang, "Training Conditional Random Fields Using Transfer Learning for Gesture Recognition," 2010 IEEE International Conference on Data Mining, pp. 314-323, 2010.
- N. Bhatia and Vandana, “Survey of Nearest Neighbor Techniques,” International Journal of Computer Science and Information Security, Vol. 8, No. 2, pp. 302-305, 2010.
- Batsuri Suvdaa and Jaepil Ko, “A Comparison of Distance Metric Learning Methods for Face Recognition,” Journal of Korea Multimedia Society, Vol. 14, No. 6, pp. 711-718, 2011. https://doi.org/10.9717/kmms.2011.14.6.711
- Euclidean Distance, https://en.wikipedia.org/wiki/Euclidean_distance (accessed 20, Dec., 2015).
- Linear Interpolation. https://en.wikipedia.org/wiki/Linear_Interpolation (accessed Nov, 24, 2015).
Cited by
- 게임 어플리케이션을 위한 컨볼루션 신경망 기반의 실시간 제스처 인식 연구 vol.20, pp.5, 2017, https://doi.org/10.9717/kmms.2017.20.5.835