기술 이야기
home
Programming
home
👁️‍🗨️

게임 경험 관찰 AI

Upload date
2022/01/12
Tag
컴퓨터비전
AI
인공지능
Editor
머신러닝파트_권승진
Editor is
AI엔지니어입니다. AI 중에서도 특히, 게임에 접목시킬수 있는 AI에 관심이 많고, 그런 AI들을 서비스화 시키는 팀에서 일하고 있습니다.
상태
2 more properties

Table of contents

들어가며

안녕하세요 머신러닝 파트 엔지니어 권승진입니다. 오늘 저는 유저가 게임을 플레이하는 도중 얼굴에 내비치는 반응을 관찰하는 ‘게임 경험 관찰 AI’ 소개하는 글을 준비해봤습니다. 게임을 더 재미있게 만들기 위해 유저를 연구하는 시도이자, AI 프로젝트가 서비스화된 사례를 소개드리겠습니다.
. . .

유저의 게임 경험을 관찰하는 AI : 프로젝트 소개

인텔리전스랩스 머신러닝파트에서는 AI를 게임에 접목하여 유저분들에게 좋은 경험을 드리기 위한 다양한 노력을 하고 있습니다. 그 노력 중 하나로 유저분들의 게임 경험을 AI를 통해 관찰하는 솔루션에 대한 개발 사례를 공유해보겠습니다.
그림 1 : 얼굴에 드러나는 감정 분석 모델
참가자가 카메라가 부착된 자리에서 게임을 플레이하는 동안 얼굴에 어떤 반응이 일어나면 실시간으로 분석되어 타임라인에 표시 되는데요. 화가 난 표정을 지으면 타임라인에 ‘화남’ 태그가 기록되고, 슬픈 표정을 지으면 ‘슬픔’ 태그가 기록됩니다.

FGT란?

FGT(Focus Group Test)는 테스터를 모집하여 게임 플레이를 요청하고 테스트 과정을 관찰하여 테스터의 피드백을 게임 개발에 반영하는 유저 연구 방법입니다.
그림 2 : FGT 모집 공고
FGT는 사용자 관점에서 게임 플레이 경험을 평가하고 개선하기 위한 테스트로 고품질 게임을 개발하고 서비스하기 위한 필수 테스트입니다.
참가자들은 정해진 환경에서 게임을 플레이하고, 그들의 경험은 설문지, 인터뷰, 영상의 형태로 기록됩니다. 이렇게 기록된 데이터를 도메인 전문가들이 분석하여 개발과 서비스에 적용하는 방식으로 이루어집니다.
FGT 과정에서 참가자를 모집하는 것부터 테스트를 진행하고 보상을 제공하기까지 많은 시간과 비용이 요구됩니다. 이로 인해 오래 전부터 한 번의 테스트에서 다양한 데이터를 수집하기 위해 설문 조사, 직접 관찰, 신체에 장치를 부착한 관찰 등 많은 방법이 제시되었습니다. 이러한 기존의 방식을 통해서도 대체로 훌륭하게 유저의 반응을 수집할 수 있었지만, 대규모 수집이 어렵고 리서치를 진행할 인력이 많이 필요하거나, 장비 부착의 불편함 등으로 인한 노이즈가 발생하는 등의 문제점 또한 가지고 있습니다.

Facial Expression

“얼굴 표정은 사람의 감정을 나타내는 중요한 신호 역할을 한다.”
그림 3 : 미국의 심리학자 폴 에크만 사진
미국의 폴 에크만은 감정과 표정의 관계에 대해 평생을 연구해 온 심리학자입니다. 이분은 이미 1978년에 사람의 표정에 따른 감정 상태를 정의해 두었는데요. 구체적으로 눈썹이나 눈, 입술의 움직임 등을 Action Unit이라는 것으로 정의하고 이것들이 어떤 형태를 띠는 지에 따라 얼굴 표정을 정의했습니다. 예를 들어, ‘눈썹이 위로 올라가 있다면 화가 난 표정이다’, ‘입꼬리 양쪽이 위로 올라가 있다면 미소를 짓고 있는 것이다’라는 것을 코드로 정의한 것입니다. 그 각각의 Action Unit들이 어떤 모양을 하고 있는 지에 따라서 무표정, 행복, 놀람, 슬픔, 화남, 두려움의 여섯 가지의 기본 감정을 정의했습니다.
그림 4 : Upper Face Action Units and Lower Faace Action Units
이보다 한참 더 이후 세대인 딥러닝에서의 표정 분석 방식도 대부분 이 연구의 영향을 기본 토대로 합니다. 이 연구는 얼굴 기반의 감정 분석 모델을 논할 때 항상 언급되고 있으며, 현재까지도 대부분의 연구가 이분이 주장한 여섯 가지의 기본 감정에 플러스알파의 형태로 구분되고 있습니다.
우리 프로젝트는 FGT 진행 중에 테스트 참가자의 Facial Expression을 감지하고 분석하여 유저 경험을 파악하고 개선하는 도구로 개발되었습니다.

얼굴 분석 연구 Overview

목표 UX 분석가가 테스터의 게임 플레이 화면과 참가자의 얼굴을 실시간으로 받아 보면서 동시에 얼굴 분석도 실시간으로 이루어질 수 있는 환경 구축
그림 5 : 분석 플로우
UX 연구자가 테스터에게 접속 링크를 보내면, 테스터가 그 링크에 접속하면서 테스트가 시작됩니다. 테스트 참가자는 이렇게 접속한 후 게임을 플레이하기만 하면 되고, UX 연구자는 원격으로 연결된 다른 컴퓨터에서 표정 분석 화면을 보며 실시간으로 관찰할 수 있습니다.
그림 6 : 실시간 감정 분석 모습
화면 구성을 좀 더 자세히 설명해 드리면, 먼저 그림의 1번과 같이 참가자의 얼굴이 카메라로 실시간으로 연결되어 연구자의 화면에 표시 되고, 그 위에 감지된 얼굴을 오버레이로 표시해주고 있는 모습을 볼 수 있습니다. 얼굴이 어디 있는지, 얼굴이 화면이 아닌 다른 방향을 보고 있지는 않은 지를 오버레이를 통해 표시하는 것입니다.
그리고 동시에 그림의 2번과 같이 사용자가 게임 플레이하고 있는 화면 또한 실시간 스트리밍으로 공유됩니다.
실시간으로 전송 받은 영상 화면은 역시 실시간으로 서버에서 분석되며, 그 분석 결과가 그림의 3번과 같이 아래의 창에 표시됩니다. 또한 4번처럼 UX 분석가가 필요할 때마다 타임라인에 메모를 입력할 수 있는 기능도 제공합니다.

얼굴 분석에 쓰여진 기술들

Face Detection

얼굴을 분석하려면 얼굴이 어디있는지를 알아야…
그림 7 : Face Detection 예시
Face Detection은 얼굴의 위치를 인식하는 작업으로, 이미지를 입력으로 주면 얼굴의 위치를 찾아서 좌표를 반환해줍니다. 어떤 딥러닝 모델을 평가하는 데에는 여러 가지 고려 요소가 있겠지만, 개인적으로 Face Detection에서 가장 중요하다고 생각하는 항목은 정확도, 환경 변화에 대한 대응력, FPS입니다. 먼저 정확도는 얼굴에 해당하는 영역을 얼마나 정확하게 짚어 낼 수 있는가입니다. 두 번째로는 환경 변화에 대한 대응력, Robustness라고도 하는데요. 동영상이라 발생할 수 있는 문제, 예를 들면 화면에 블러가 낀다든지, 어두운 곳이라든지, 아니면 저해상도 이미지가 입력되는 등의 변화에 얼마나 견고하게 대응할 수 있는가를 고려하는 것입니다.
그림 8 : Face Detection 모델의 고려 요소
마지막으로 FPS는 처리 속도로, 저희가 가장 중요하게 생각한 부분입니다. 테스트 참가자는 저희가 준비한 환경에서 테스트를 진행하기 때문에 공간의 밝기나 카메라와의 거리 등은 필요에 맞게 환경을 조성할 수 있습니다. 덕분에 정확도나 환경 변화에 대한 대응력에 대해서는 상대적으로 수월하게 준비할 수 있지만, 참가자의 얼굴을 실시간으로 관찰할 수 없다면 앞의 조건들이 무색해지기 때문에 속도가 가장 중요했습니다.
그림 9 : 여러 가지 모델 성능 비교
그런 기준을 가지고 여러 가지 모델을 비교해보며 벤치마크를 해봤는데요. 논문이나 paperwithcode에서 자주 보이는 여러 모델들을 속도를 우선점을 두고 실험해본 결과 그 중 Ultra light라는 모델이 좋은 FPS 퍼포먼스를 발휘한다는 것을 확인했습니다. 평균 fps 88이라는 준수한 성능에 저희는 이 모델을 선택했습니다.

Facial Expression Recognition

얼굴 표정을 보고 사람의 감정을 추론하는 인간의 판단력도 정확도가 65 ± 5% 정도…
그림 10 : Facial Expression Recognition 흐름
얼굴 이미지가 입력값으로 들어가면 감정을 판단해주는 모델입니다. 좀 더 자세히는 모델이 얼굴 이미지를 보고 감정을 추론하고 무표정, 행복, 놀람, 슬픔, 화남, 역겨움, 두려움, 경멸이란 감정을 각각 몇 % 확률로 확신하는지에 대한 결과값을 추출, 그 결과에서 가장 확률이 높은 감정 라벨을 선택하는 것입니다. 그 결과 ‘두려워하고 있다.’ 혹은 ‘행복해하고 있다.’와 같은 결과값을 출력합니다.
그림 11 : 모델 결과값
이 감정 분석 또한 처리 속도가 중요했기 때문에 최상위 정확도를 가진 모델 중에서 속도를 고려하여 “Facial expression and attributes recognition based on multi-task learning of lightweight neural networks” 논문의 모델을 사용했습니다.

Head Pose Estimation

테스트 참가자가 화면을 응시 중인가요?
Head Pose Estimation은 얼굴의 자세를 추정하는 일입니다. 저희는 이 얼굴 자세 추정 모델을 ‘테스트 참가자가 화면을 응시하고 있는가?'를 판별하는 데 사용했습니다. 구체적으로는 얼굴의 이미지가 입력되면, 모델이 이미지를 보고 얼굴이 어느 방향을 향하고 있는 지를 추론합니다. 그리고 그 결과를 Yaw, Pitch, Roll이라는 세 가지 수치로 주게 되는데요. 이는 각각 x축, y축, z축으로 회전한 각도를 뜻합니다.
그림 12 : Head Pose Estimation
그림에서 보시는 것처럼 y축을 기준으로 회전한 량을 뜻하는 값을 Yaw라고 하는데요. 저희는 이 Yaw가 ‘일정 각도 이상 벗어났는지 벗어나지 않았는지‘로 ‘사용자가 화면을 보고 있다, 보고 있지 않다’를 판단하여 True/False로 결과를 내게 만들었습니다.

프로젝트 고도화

실시간으로 관찰할 수 있는 하나의 프레임워크가 되면 좋겠다!
저희가 이 프로젝트를 시작할 때만 해도 프로젝트 기반이 부족해 게임 플레이 영상도 수동으로 녹화하고 얼굴 영상도 수동으로 녹화한 후 파이썬에서 한 장씩 불러와 분석 모델을 돌려보는 식으로 프로토타이핑을 진행했습니다. 그러다가 이러한 작업이 해볼 만하다는 검증을 어느 정도 하고 나니 이 과정이 실시간으로 관찰할 수 있는 하나의 프레임워크가 되면 좋겠다는 생각이 들었습니다. 게임 플레이 영상과 얼굴 영상의 싱크를 맞춰 녹화하는 시스템 자체만으로도 유저 리서치에 큰 도움이 될 것이며, 거기에 더해 AI의 분석 결과가 실시간으로 처리가 되면 더 좋을 것이라 판단했습니다. 그러한 접근 하에 프로젝트 고도화를 시도하게 되었습니다.
그림 13 : 고도화 예상 플로우
먼저 첫 번째로 UX 연구자가 서비스 서버에 접속하여 세션을 생성하면, 참가자가 그 세션에 참가하는 것으로 하나의 세션을 이루게 됩니다. 참가자가 세션에 접속하면 얼굴 영상과 오디오, 게임 플레이 화면을 공유하는 것을 허용할 수 있게 되는데요. 여기서 WebRTC라는 기술이 사용됩니다. 이는 화상 회의 같은 시스템에서 많이 사용되는 기술로 참가자가 공유 허용 버튼을 누르면 참가자와 UX 연구자 사이가 WebRTC를 통해 피어 투 피어로 연결됩니다. 이렇게 얼굴 화면과 오디오, 게임 플레이 화면이 실시간으로 전송될 수 있는 환경이 갖춰지면 UX 연구자는 참가자의 얼굴, 게임 플레이 영상을 1초에 30회씩 영상 통화하듯이 받아볼 수 있습니다. 그와 동시에 참가자는 얼굴 화면을 1초에 1회씩 분석 서버로도 전송하게 되며 분석 서버는 이를 받아서 얼굴 분석 AI에 입력하여 분석 결과를 얻고 이 결과를 다시 UX 연구자의 관찰 화면에 표시해 줍니다. 이렇게 해서 UX 연구자는 실시간으로 관찰도 하면서 1초에 1회씩 분석된 결과까지 추가로 확인할 수 있는 것입니다.
그림 14 : 분석 서버를 중심으로한 세부 모듈 구조도
이 분석 서버라는 것을 좀 더 자세히 살펴보겠습니다. 아까 설명해 드렸던 기술들로 분석을 하는데, 먼저 얼굴을 감지하고, 감지된 얼굴 이미지를 각각 head pose estimator와 facial emotion analyzer에 입력값으로 받으면 분석을 통해서 얼굴의 좌표, 추론된 감정, 추론된 얼굴의 방향 각도를 출력값으로 받습니다. 그리고 이 과정을 계속 반복하는 것이죠. head pose estimator와 facial emotion analyzer는 각각 인터페이스로 구성이 되어있으며 딥러닝의 발전속도가 워낙 빠르다 보니 입력과 출력에 대해 일관성을 가지는 인터페이스 형식으로 구성해 놓고 내부는 변경이 쉽게 구성했습니다. 실제로 모델이 여러 번 바뀌기도 했고요. 이 인터페이스 형식으로 구성을 하니 한 번 적용했던 모델에 대해서는 쉽게 교체가 가능했습니다.
이러한 과정을 통해 게임 테스트를 진행할 때 게임 화면과 얼굴을 실시간으로 관찰할 수 있게 되었고, 거기에 더해 실시간으로 얼굴을 분석해주는 기능을 갖춘 테스트 프레임워크를 만들 수 있었습니다.

평가

사람이 라벨링 한 것과 AI가 추론한 결과를 비교
그림 15 : 레이블링 결과와 모델 추론 결과의 비교
이렇게 만들어진 테스트 프레임워크에서 얼굴 분석 AI가 잘 작동하는지 검증이 필요했습니다. 팀원들이 이 프레임 워크를 이용해서 반복적으로 게임을 플레이하고 그 영상을 녹화하여 검증 데이터로 썼습니다. 그 영상 데이터를 보고 사람이 직접 라벨링을 하고 같은 영상을 AI가 추론하게 한 뒤 비교하는 방식을 사용했습니다. 영상에서 감정이나 얼굴의 존재 유무, 화면 응시 유무는 연속성을 가지는 시퀀셜한 데이터이기 때문에 이를 start, end를 정해 구간으로 북마크를 하도록 했습니다.
그림 16 : 라벨과 AI의 추론 결과를 비교 분석한 매트릭스 (1)
이렇게 만들어진 라벨과 AI의 추론 결과를 비교 분석한 결과, 페이스 디텍션에서는 98%에 가까운 정확도를 보였습니다. 사람이 직접 라벨링 해서 ‘화면에 얼굴이 있다’고 표시한 데이터를 AI도 똑같이 ‘화면에 얼굴이 있다’고 추론한 결과가 99.9%, 사람이 화면에 얼굴이 없다고 표시한 데이터를 AI도 똑같이 화면에 얼굴이 없다고 추론한 결과가 97%였습니다.
그림 17 : 라벨과 AI의 추론 결과를 비교 분석한 매트릭스 (2)
같은 방식으로 얼굴이 화면을 벗어났는지에 대한 정확도도 사람이 표시한 라벨링과 비교 했을 때 84%로 높은 수준을 보였습니다.
그림 18 : 감정 클래스에 따른 예측 및 실제 값 비교
감정의 경우는 게임을 플레이하면서 역겨움, 두려움, 경멸을 느끼는 경우가 거의 없어서 충분한 데이터를 확보하지 못했지만, 무표정, 행복, 놀람, 슬픔, 화남에 대해서는 각각 78%, 90%, 60%, 68%, 52%로 괜찮은 정확도를 보였고 이 감정들에 대해서만 판단했을 때는 72%의 정확도를 보였습니다.
이 검증 결과들은 충분히 실제로 사용할 수 있을 정도의 정확도라고 판단되며, 앞으로 모델들이 발전해서 정확도는 더욱 높아질 것이므로 프로젝트의 유용성에 대해 긍정적으로 판단할 수 있었습니다.

역할

기존의 FGT 분석 방식도 유지하면서 추가적인 얼굴 분석 데이터도 획득!
그림 19 : 새 프레임워크로 FGT를 시행할 때 추가로 얻을 수 있는 효과
기존의 FGT 는 주로 설문 조사와 게임 플레이 영상을 기반으로 정성적인 설문조사 결과를 취합하고, 게임 플레이 영상과 대조해서 얻을 수 있는 인사이트를 통해 주로 정성적인 보고서가 작성되었습니다. 이는 게임 FGT를 다루는 문헌들에서도 확인할 수 있습니다. 저희는 여기에 이 프레임워크를 이용하여 테스트 참가자의 얼굴 분석을 통한 객관적인 반응 데이터를 정량적으로 확보 할 수 있음은 물론이고 한층 더 나아가 게임 로그와 감정 사이를 연결하여 정량적인 분석 결과들을 제공하고 있습니다.
기존의 방식은 그대로 진행하면서 우리 프레임워크로는 정량적 분석을 포함하는 새로운 형태의 레포트를 생성하고, 시간이 지나 이 보고서들이 쌓이면 더 탄탄한 FGT 결과를 낼 수 있을 것이라고 기대하고 있습니다.
정리하면 다음과 같은 프로세스로 분석이 진행된다 하겠습니다.
그림 20 : FGT 진행 프로세스
또한 이 분석 데이터들은 DB에 저장되어 언제든지 리플레이를 통해 반복적인 관찰이 가능합니다. 테스트 참가자의 얼굴과 게임 플레이, 얼굴 분석 결과를 리플레이할 수 있으며, x 축에는 시간에 따라 시각화 된 참가자의 관찰된 감정의 흐름이 그래프로 표시됩니다.
그림 21 : 분석 화면 예시

나가며

이 프로젝트의 결과물은 FGT를 진행할 때 딥러닝을 활용하여 사용자의 얼굴 표정을 실시간으로 수집하는 Framework로서 게임을 플레이하는 동안에 실시간으로 카메라를 통해 수집된 데이터를 자동으로 분석합니다. 또한 FGT에서의 추가적인 데이터 수집 방법이 실용적인 정확도를 가지고 있음도 실험을 통해 보였습니다. 게임에 대한 객관적인 반응을 엿볼 수 있게 해주는 유용한 AI가 되어주길 희망하는 마음으로 만들었고 지금도 업데이트 중입니다. 유저의 객관적인 반응들을 수집하고 개발팀이 의도했던 내용이 유저에게 잘 전달되는지를 파악하면서 이를 지속적으로 폴리싱한다면 게임이 보다 많은 사랑을 받는데 유용한 역할을 할 수 있으리라 생각합니다.
Techblog Contents
Related Sites
 넥슨 게임 포탈
회사 소개
인텔리전스랩스 소개
인재 영입
인텔리전스랩스 블로그 운영 정책
 테크블로그 문의 devrel@nexon.co.kr