딥러닝 기반 OpenPose를 이용한 한국 수화 동작 인식에 관한 연구
Copyright ⓒ 2021 The Digital Contents Society
This is an Open Access article distributed under the terms of the Creative Commons Attribution Non-CommercialLicense(http://creativecommons.org/licenses/by-nc/3.0/) which permits unrestricted non-commercial use, distribution, and reproduction in any medium, provided the original work is properly cited.
초록
기존의 수화에 대한 연구는 고가의 장비를 사용하거나 비수지 신호를 고려하지 않는 연구가 대부분이다. 이러한 문제를 개선하기 위해 RGB카메라를 이용하여 이미지를 얻고 기존의 수형만 인식하는 것에서 나아가 수화에 있어 상당한 비중을 차지하는 비수지 신호를 포함하여 수화를 인식하고자 한다. OpenPose 라이브러리를 이용하여 데이터에 손짓이나 몸짓 및 표정 등을 키포인트로 나타내어 비수지 신호로 포함하고 딥러닝 신경망 모델을 이용하여 데이터를 학습한 후 학습시킨 모델을 통하여 수화동작을 인식하는 방법을 제안한다. 학습에 사용한 딥러닝 모델은 GoogLeNet( InceptionV3)모델이다. 본 논문에서는 비수지 신호를 포함한 데이터를 학습하고 수화동작을 인식하므로 특정한 센서나 웨어러블 기기의 도움 없이 각 수화 동작에 대해 인식률을 높이는 것을 목표로 한다.
Abstract
Most of the studies on the existing sign language use expensive equipment or do not consider non-manual signals. In order to improve this problem, we intend to acquire an image using an RGB camera and recognize sign language by including non-manual signals, which take a considerable weight in sign language, beyond recognizing only the existing hand shape. By using the OpenPose library, hand gestures, body gestures, and facial expressions were represented in the data as key points and were included as the non-manual signals . In addition, we propose a method of learning data using a deep learning neural network model and recognizing sign language motion through the trained model. In this paper, the goal is to increase the recognition rate for each sign language motion without the help of a specific sensor or wearable device because it learns data including non-manual elements and recognizes sign language motions.
Keywords:
Deep Learning, CNN, OpenPose, Korea Sign Language, Sign Language Recognition키워드:
딥러닝, CNN, OpenPose, 한국 수화, 수화인식Ⅰ. 서 론
장애인들과 비장애인들의 의사소통 문제를 해결하기 위하여 수화에 관한 연구가 꾸준히 진행되어 왔다. 하지만 대부분 동작보다는 지문자와 지숫자 등 수형인식에 관한 연구이거나 비수지적 신호(신체, 팔, 표정 등)를 고려하지 않은 연구였고 외국의 사례가 많았다. 그마저도 상용화된 사례들은 드물었고 상용화에 성공한 사례들은 고가의 웨어러블 센서 또는 깊이 카메라를 이용하여 수화동작을 인식하는 방법이었다. 센서를 통한 수화인식 중 스켈레톤 추적 기능을 이용하여 수화 데이터를 정규화 및 데이터베이스화하여 학습시키면 수화 인식이 가능 하였지만 비수지 신호를 포함할 수 없어 단어의 표현이 제한되며, 공간 제약의 한계점이 있었다.
이로 인하여 본 논문에서는 기존의 수형만 인식하는 것에서 나아가 수화 동작 및 수화에 있어 상당한 비중을 차지하는 비수지 신호를 포함하여 수화를 인식하고자 하였고 비싼 고가의 웨어러블 센서나 깊이 카메라가 아닌 RGB카메라를 이용하여 이미지를 얻고 OpenPose 라이브러리를 이용하여 비수지적 신호를 담아내고 딥러닝 모델을 이용하여 데이터를 학습하였다. 그리고 학습시킨 모델을 통하여 수화 동작을 인식하여 각 수화에 대한 인식률 및 정확도를 향상시키는 연구를 진행하였다[1, 2].
Ⅱ. 관련 연구
2-1 수화(Sign Language)
수화는 소리로 하는 언어가 아닌 손짓을 이용하여 뜻을 전달할 수 있는 언어의 일종이다. 요즘은 수어라고도 하는데 대부분 청각 장애인들이 사용한다. 수화는 수지 신호와 비수지신호로 구성되어 있다. 수지 신호는 수위(손의 위치), 수형(손의 모양), 수동(손의 움직임) 등이 있고 비수지 신호에는 얼굴의 표정과 머리와 몸의 움직임 등이 있는데 이는 놀람, 공포, 기쁨, 증오, 행복, 슬픔, 혐오, 비웃음 등의 감정을 나타낼 수 있다. 비수지 신호는 수화를 통한 의사소통에 있어서 높은 비중을 차지한다.
레이 버드 히스텔은 두 사람 간의 의사소통에서 일반적으로 언어적 요소에 의한 의미전달이 35% 이하인데 비언어적인 의사소통은 65% 이상이라고 주장하였다. 그만큼 청각 장애인들에게 비수지 신호는 음성 언어에서의 억양, 강세, 리듬과 같은 역할하기 때문에 중요한 요소라고 볼 수 있다[3. 4].
2-2 CNN
CNN(Convolutional Neural Network)는 모델이 직접 이미지, 비디오, 텍스트 또는 사운드를 분류하는 머신 러닝의 한 유형인 딥러닝에 가장 많이 사용되는 알고리즘이다[5]. CNN은 딥러닝에서 이미지를 인식하는데 가장 많이 사용 되고 있는 모델로 이미지 패턴을 분류하는데 사용한다. 합성곱의 아키텍처는 특징을 추출하는 합성곱 계층과 합성곱 계층에서 추출된 특징을 Sampling하는 풀링 계층으로 이루어져 있다. 합성곱 계층은 이미지에 필터링 기법을 적용하고, 풀링 계층은 이미지의 국수적인 부분들을 하나의 대표적인 스칼라 값으로 변환하여 이미지의 크기를 줄이는 등의 기능을 수행한다. 본 논문에서 CNN모델로 사용한 Google에서 개발한 Inception모델에 대해 살펴본다[6].
Inception은 많이 사용되는 이미지 인식 모델로 합성곱, 평균 풀링, 이어붙이기, 드롭아웃, 최대 풀링, 완전 연결형 레이어를 비롯한 대칭/비대칭 구성요소로 이루어져 있다. 그림 1은 Inception 모듈의 구조를 나타낸 것이다. Inception 모델이 기존 다른 CNN모델들과 다른 점은 한 번에 여러 개의 크기의 필터를 동시에 사용한다는 점이다. 이 때문에 이미지를 처리할 때 이 필터들을 복합적으로 사용되어 이미지의 특징을 더 잘 추출할 수 있다[6, 7].
Batch Normalization은 모델 전반에 광범위하게 사용되며 활성화 입력에 적용되고 출력은 소프트맥스 활성화 함수를 통해 계산된다. InceptionV3는 기존 InceptionV2와 구조가 비슷하고 추가된 사항으로는 Stem Layer의 7×7 Conv 연산을 3×3 Conv 연산을 세 번 하는 것으로 대체하고 Optimizer로 RMSProp을 사용하고 Auxiliary Classifier를 1개만 사용한다. 그림 2는 InceptionV3 모델의 Architecture를 나타낸 것이다[7].
2-3 OpenPose
OpenPose는 Carnegie Mellon University 에서 OpenCV와 Caffe를 사용해서 C++기반으로 개발된 오픈소스 라이브러리로 단일 이미지에서 실시간으로 몸체, 손, 얼굴 그리고 발들의 키포인트들을 최대 130개까지 인식 할 수 있는 모델이다. 입력 된 이미지 또는 비디오로부터 키포인트들을 추출하여 출력으로는 배경이미지와 키포인트가 합쳐진 이미지, 키포인트만 가진 이미지를 JSON, XML, 영상 데이터로 저장할 수 있다.
그림 3은 OpenPose의 System으로 이미지를 넣어 특징 벡터를 거치면 특징이 강조되어 나온다. 특징 벡터를 거친 이미지를 2개로 분할하여 Stage에 있는 Branch에 입력 값으로 넣는다. 각 Branch에서 Confidence Map(사람의 관절이 있는 곳 예측)과 Affinity Fields(관절의 연결 관계를 표현한 맵)를 예측하고 이 정보를 종합한다. 이 때 특징벡터 F를 가져와 같이 종합한 후 다음 Stage를 통해 Training을 Recurrent한다[8].
Ⅲ. 수화 동작 인식의 설계 및 구현
3-1 수화 데이터의 인식 범위 및 구성
본 논문에서 인식할 한국 수화 데이터는 AI Hub와 국립국어원의 Open Data 중 조회 수가 높은 10개의 단어를 수화 데이터로 선정하였다. 선정된 10개의 수화 데이터는 ‘감사’, ‘경찰’, ‘머리’, ‘안녕’, ‘아래’, ‘위’, ‘집’, ‘존경’, ‘친구’, ‘아빠’ 등 이다. 선정된 10개의 수화데이터에는 수화 동작의 형태가 비슷한 단어들이 포함되어 있어 수화 동작 인식 및 분류에 대한 난이도를 높이고자 하였다. 그림 4는 선정한 10개의 단어에 대한 수형 이미지를 나타낸 것이다[9].
촬영한 수화 비디오의 해상도는 1280 × 720픽셀이고 같은 동작을 촬영한 비디오도 촬영자 별로 약 3~6초로 비디오 길이가 달랐다. 데이터의 균일화 및 전처리를 위해 핵심 부분만 잘라서 프레임 추출을 위한 짧은 비디오로 만들었다. 수화 동작의 핵심 부분으로 이루어진 비디오를 이미지로 표현하기 위하여 동영상의 5번째 프레임마다 핵심 프레임으로 추출하여 총 12프레임으로 구성하였다. 이때 프레임당 이미지의 크기는 650 × 650 픽셀이다.
3-2 수화 동작 인식 시스템
키포인트들이 들어있는 비디오에서 프레임을 추출하여 클래스 폴더에 이미지를 추가한다. 그리고 학습된 모델에 테스트 세트의 이미지를 제공하면 특정 비디오의 각 프레임 예측 결과를 목록으로 가져오게 된다. 이와 같이 다수결 투표 방식을 사용하여 비디오의 클래스 예측을 얻을 수 있다. 만들어진 수화 단어 이미지 파일은 사람들은 단어를 구분할 수 있지만, 컴퓨터는 단어를 구분할 수 없기에 각 클래스(단어)에 해당하는 값을 Labelling할 필요가 있다. 그림 5는 본 논문에서 제안한 수화 동작 인식 시스템의 전체 Architecture를 나타낸 것이다.
촬영한 수화의 RGB형식 비디오 파일을 ‘감사’, ‘경찰’, ‘머리’, ‘안녕’, ‘아래’, ‘위’, ‘집’, ‘존경’, ‘친구’, ‘아빠’ 등 10개의 수화 비디오를 OpenPose 라이브러리를 통하여 키포인트가 포함된 비디오를 추출해낸다. 추출한 몸체, 손 그리고 얼굴의 키포인트가 들어있는 비디오를 통하여 비수지 요소인 얼굴표정과 머리와 몸의 움직임 등을 데이터에 포함 할 수 있다.
OpenPose의 키포인트가 포함된 각 단어 비디오에서 5번째 프레임마다 핵심 프레임으로 추출하여 총 12 프레임으로 구성된 단어별 이미지 데이터 셋을 생성하였다. 각 이미지의 크기는 650 × 650 픽셀이다. 그림 6은 OpenPose를 이용한 비디오 프레임 키포인트 추출 과정을 나타낸 것이다.
한 단어당 10명의 사람으로부터 촬영된 10개의 단어를 12프레임씩 나눠 수집한 총 이미지 데이터는 1,200장이다. 이 이미지 데이터를 Augmentation 기법을 활용하여 총 13,200장으로 늘렸다.
본 논문에서 사용한 Augmentation 방법은 Rotation, Shifting, Rescaling, Stretching, Brightness를 사용하였다. 먼저 Rotation은 이미지를 0~360도 사이의 임의의 각도로 회전시키는 방법이다. 두 번째로 Shifting은 임의로 이미지를 10픽셀씩 상-하-좌-우로 이동시키게 하는 방법이다. 세 번째 Rescaling은 이미지를 1~1.6배로 사진을 확대하는 것이다.
네 번째 Stretching은 1~1.3배로 이미지를 늘어뜨리는 방법이다. 마지막으로 Brightness는 이미지의 밝기를 랜덤으로 0~1사이의 밝기를 다르게 하는 것으로 0에 가까워질수록 밝기는 어두워져 암흑에 가까워진다.
앙상블(Ensemble) 학습은 여러 개의 학습 알고리즘을 사용하고, 그 예측을 결합함으로써 보다 더 정확한 최종 예측을 도출하는 기법으로 이미지 분류에 쓰이는 기법중 하나이다. 앙상블 학습의 유형은 가장 많이 알려진 보팅(Voting), 부스팅(Boosting), 배깅(Bagging) 등이 있으며, 이 외에도 많은 앙상블 기법이 존재한다. 보팅(Voting) 은 가장 보편적인 앙상블 기법으로 보팅은 분류에서 많이 사용하고 서로 다른 분류기를 결합하는 방식이다. 부스팅(Boosting) 알고리즘은 여러 개의 Weak Learner를 순차적으로 학습 및 예측하며 잘못 예측한 데이터에 가중치를 부여해 오류를 개선해 나가면서 학습하는 방식이다. 배깅(Bagging)은 Bootstrap Aggregation의 약자로 샘플을 여러 번 뽑아(Bootstrap) 각 모델을 학습시켜 결과물을 최종적으로 데이터 집계에서는 Voting방법으로 결과를 집계한다. 본 논문에서는 분류에서 많이 사용하는 Voting 방식을 사용하고자 한다. 그림 7은 다수결 투표 기반으로 분류하는 Voting의 방법을 나타낸 것이다[10].
학습 과정에서 사용될 데이터 셋은 촬영한 수화의 RGB형식 비디오 파일에서 추출한 총 12프레임을 가진 이미지 데이터 셋(RGB)과 OpenPose 라이브러리를 통해 키포인트가 포함된 비디오 파일에서 추출한 총 12프레임을 가진 이미지 데이터 셋(RGB+OpenPose)으로 구성한다. 준비한 두 개의 데이터 셋을 Data Augmentation하여 각 데이터 셋을 13,200장으로 늘리고, 늘린 데이터를 이용하여 CNN모델로 학습시킨다. CNN모델로는 InceptionV3을 사용하여 분류하였고 출력층의 Cross Entropy를 통해 오차가 계산된다. 역전파 과정에서 계산된 오차와 Optimizer를 통해 가중치를 최적화하고 Optimizer는 ADAM을 사용한다. 데이터를 학습시킨 후 테스트 데이터 셋을 통하여 인식 결과를 측정한다. 그림 8은 ConvNet을 통한 데이터 학습 과정을 나타낸 것이다.
각 10개의 수화 단어에 Class Label을 부여하고 앙상블 기법 중 다수결 투표 방식인 Voting방법을 통해 입력된 테스트 이미지를 분류한다. 학습된 모델을 이용하여 각 테스트 이미지 프레임에 대해 각 Class Label의 확률점수를 출력한다. 다수결 투표 방식인 Voting 방법을 통해 각 테스트 이미지 프레임의 Class Label이 결정되고 다시 Voting 방법을 통해 테스트 이미지에 대한 최종 Class Label이 분류된다. 수식(1)은 각 이미지 프레임에 대한 분류 방법을 나타낸다.
(1) |
y는 수화 비디오의 Class Label이고 L(X1),... L(X12)는 각 프레임에 대하여 분류된 Class Label을 나타낸 것이다. 그리고 수식에 X1,X2,... X12 는 수화 단어 비디오에서 추출한 12개의 핵심 프레임의 단일 프레임을 말한다.
그림 9는 수화 단어 중 ‘경찰’을 Police Class로 분류된 결과이다. OpenPose 데이터가 포함된 RGB데이터를 학습시킨 모델을 통하여 프레임 별로 분류가 된다. 각 프레임을 개별적으로 분류하여 확률 점수를 출력한다. 모든 프레임은 평균 74%의 확률로 Police Class로 분류 인식되었다.
Ⅳ. 성능평가 및 분석
4-1 학습 데이터 성능 평가
그림 10은 손실함수 Cross Entropy를 사용한 결과로 RGB+OpenPose 데이터셋을 CNN모델의 Cross Entropy 학습 결과를 나타낸다. 한 epoch 당 500step씩 1000번 반복을 진행하였고, 학습이 500 Step에 가까워 졌을 때 손실이 감소했음을 알 수 있다.
그림 11은 학습 정확도를 나타낸 것으로 OpenPose를 포함한 비디오 프레임 데이터 셋을 학습시켰을 때 Training Accuracy는 86% 이다.
4-2 수화 인식 결과 비교 분석
표1은 각 데이터 셋을 테스트했을 때 12프레임 중 Class Label을 올바르게 분류한 개수를 표로 나타낸 결과이다. 각 단어 별로 12프레임 중 True Label로 올바르게 분류한 개수를 표로 나타내었다. 표1를 보면 키포인트가 포함되지 않은 RGB 이미지만을 학습했을 경우 12개의 프레임 중 평균 8.7개의 프레임만을 올바르게 인식하였다. 그러나 기존 RGB이미지에 OpenPose 라이브러리를 이용해 키포인트를 포함한 데이터 셋을 학습시켰을 경우 12개의 프레임 중 평균 9.8개 프레임을 올바르게 분류하여 오분류율이 줄어들었다.
그림 12는 각 단어별로 테스트 이미지 데이터 셋의 인식률에 대한 정확도를 나타낸 Confusion Matrix 이다. Confusion Matrix 에 표기된 알파벳은 A는 ‘감사’, B는 ‘경찰’, C는 ‘머리’, D는 ‘안녕’, E는 ‘아래’, F는 ‘위’, G는 ‘집’, H는 ‘존경’, I는 ‘친구’, J는 ‘아빠’의 수화 단어를 나타낸 것이다. 테스트 데이터 셋으로 수화 동작 인식을 진행했을 때 12프레임 중 Class Label을 올바르게 분류한 결과를 Confusion Matrix를 나타낸 것이다. 테스트 데이터 셋의 인식률의 정확도는 총 평균 약 81%로 비슷한 동작의 프레임이 포함되어 있음에도 불구하고 높은 인식률로 올바르게 예측하여 분류하였다.
Ⅴ. 결 론
수화를 인식하는 것은 청각 장애인들의 삶의 질 향상에 중요하다고 생각된다. 실시간으로 수화를 인식할 수 있게 된다면 시간과 노력을 들여가며 수화를 배워 타인과 소통하려고 노력하지 않고도 장애인과 비장애인의 의사소통 문제를 해결할 수 있다.
수화에 있어서 비수지 신호는 매우 중요하다. OpenPose 라이브러리를 통해 이미지에 머리, 몸, 손 등을 키포인트로 나타낸 비수지 신호를 포함하여 딥러닝을 통해 수화 동작을 학습하고자 하였다. 수화 동작 데이터 셋은 RGB 비디오를 가지고 OpenPose를 이용해 비수지 신호가 포함된 비디오와 포함되지 않은 비디오를 각 수화 동작마다 12개의 프레임으로 나누어 이미지를 생성하였다. 그리고 데이터 셋을 CNN 모델로 이미지를 학습시키고 학습시킨 모델을 통하여 수화 동작을 인식하였다.
그 결과 본 논문은 딥러닝의 CNN 모델을 이용하여 수화 동작의 인식이 가능함을 보였고 81%의 정확도로 분류할 수 있음을 알 수 있었다. 또한 기존의 수화인식에서 포함되지 않았던 수화에서 상당한 비중을 차지하는 비수지 신호를 OpenPose를 이용해 데이터 셋에 포함하여 새로운 수화 언어의 인식 방법을 제안하였다. 기본 수화 이미지만으로 학습 하였을 때 보다 OpenPose를 통하여 얼굴, 손, 손의 위치 등 키포인트를 포함하여 딥러닝 모델을 학습했을 때 인식률이 높아지는 것을 확인할 수 있었다.
향후 연구에서는 데이터 셋을 나누어 학습하고 더 많은 키포인트를 포함할 수 있게 된다면 오분류율을 줄일 수 있을 것이고 또한 더 많은 Training 데이터 셋으로 학습시키거나 다른 여러 CNN 모델을 사용하고 비교하여 학습을 시킨다면 더 나은 결과와 변화를 줄 수 있을 것으로 생각한다.
References
- S.Lee, I.Jung, “A Design and Implementation of Natural User Interface System Using Kinect”, The Journal of Digital Contents Society, Vol.15, No.4, pp. 473-480, Aug. 2014 [https://doi.org/10.9728/dcs.2014.15.4.473]
- Cheol-soo Bae, “A study on hand gesture recognition using 3D hand feature,” The Journal of Digital Contents Society, Vol.10, No.4, pp. 674-679, Aug. 2006
- Kim Hyun-cheol at all. The Easy and fun sign language. Yangseowon, 2010
- wikipedia. SignLanguage. 2020.11.27., https://ko.wikipedia.org/wiki/SignLanguage, .. 2020.11.30
- Young-Jae Lim, I.Jung, "Hand Gesture Recognition in the Virtual Space based on Deep Learning", The Journal of Digital Contents Society, Vol. 21, No. 3, pp. 471-478, Mar. 2020 [https://doi.org/10.9728/dcs.2020.21.3.471]
- Google. Advanced Guide to Inception v3 on Cloud TPU. https://cloud.google.com/tpu/docs/inception-v3-advanced?hl=en#introduction, .
- Christian Szegedy , Vincent Vanhoucke , Sergey Ioffe , Jonathon Shlens , Zbigniew Wojna, “Rethinking the inception architecture for computer vision”.The Journal of IEEE conference on computer vision and pattern recognition, pp. 2818-2826, 2016 [https://doi.org/10.1109/CVPR.2016.308]
- Nepirity. Real-time people tracking technology., https://www.nepirity.com/blog/people-tracking-technology/, .
- National Institute of the Korean Language, http://sldict.korean.go.kr, .2020.03.13
- YSY. [Machine Learning][Machine Learning][Ensemble] Voting. https://ysyblog.tistory.com/
저자소개
2019년 : 대전대학교 컴퓨터공학과 공학사
2021년~현 재 : 대전대학교 대학원 컴퓨터공학과 석사과정
※관심분야:멀티미디어(Multimedia), 딥러닝(Deep Learning), 컴퓨터 그래픽스(Computer Graphics) 등
1993년 : 애리조나 주립대학교 컴퓨터공학과 졸업 (공학석사)
1998년 : 애리조나 주립대학교 컴퓨터공학과 졸업 (공학박사)
1998년~현 재 : 대전대학교 컴퓨터공학과 교수
※관심분야:컴퓨터 그래픽스(Computer Graphics), 멀티미디어(Multimedia), 가상현실(Virtual Reality), 딥러닝(Deep Learning) 등