ST 퀘스트 이벤트
Quest 7
퀘스트 7/7 - Deep Learning-based AI Bird Game 작성자 : 칩헤드

 

 

 

* 동영상

 

* 소개 

이번 퀘스트 행사 덕분에 새롭게 추가된 QT 라이브러리의 API들을 공부 및 복습할수 있는 유익한 시간이었습니다. 제공된 STM32MP1 DK2 보드의 하드웨어 완성도가 높고,  편리한 소프트웨어 개발  SDK,  잘 갖춰진 Yocto 플랫폼 이미지,  Bitbake와 Devtools를 이용하여 배포판 제작 인프라 등을 접하면서 하드웨어부터 애플리케이션 소프트웨어까지 수직적으로 공부하면서 미쳐 놓쳤던 지식들을 새로 배워서 너무 좋았습니다.  퀘스트 7단계의 자율과제를 설계 및 개발하기 위하여 셋업한 하드웨어 환경 및 소프트웨어 환경은 아래와 같습니다. 

 

  1.  하드웨어 구성 환경 
    1). Sound Device
    2). Touch Screen
    3). Neon SIMD

    4). GC NANO GPU

 

  2. 소프트웨어 동작 환경 
    1). Deep Neural Network (DNN)  Algorithm Engine
    2). QT Game Engine Module
    3). QT Multimedia Module
    4). Reinforcement Programming
    5). Audio Programming

 

 

 

* QT 애플리케이션: 

  (Quest7 자율과제: Deep Learning-Based AI Bird Game)

 

  1. 요약: 
게임 애플리케이션에 딥러닝 기반 AI Bird를 설계하여 동작 시나리오를 구현했습니다. 제공받은 DK2보드의 컴퓨팅 파워가 자체 딥러닝 훈련을 하기에는 엄청 부족합니다. 그래서 딥러닝 모델을 경량화 해야하였고, 3D GPU와 NEON SIMD를 활용하여 딥러닝 속도를 최대한 가속화하는데 집중을 하였습니다. DK2 개발보드에서 동작 데모 동영상에서 AI 를 사용할때와 AI 없이 사용자가 게임을 할때의 차이에 대해서 보실수 있습니다. 업로드한 동영상은 DK2의 AI.Cube를 활용한  AI Bird의 데모입니다. 딥러닝을 위하여 설계했던 딥러닝 네트웍 모델은 Convolution, Max pooling, Zero padding, Dropout, Fully connected, Batch normalization. concat/Slice, sigmoid, softmax 등 으로 구성하였습니다.

 


  2. 상세: 

동영상에서 DK2 보드의 터치스크린으로 AI 기능 없이 사용자가 플레이를 하는 모습을 볼수 있습니다.  AI를 이용하여 플레이를 하기 위하여 좌측 상단의 "AI" 아이콘을 클릭합니다. 게이머가 플레이시 어느 방향으로 미리 위치하고 있어야 하는지 학습된 딥러닝이 도와줍니다.

 

구현시에 딥러닝 알고리즘은 Lecun 분이 등재하였던 논문을 토대로 DNN 알고리즘을 활용 했습니다. 

* Y. LeCun, L. Bottou, Y. Bengio, and P. Haffner, Gradient-based learning applied to document recognition. Proceedings of the IEEE, 86, 2278-2324, http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf

 

 

 

스페이스바를 누르면 위로 파다닥 날라 오릅니다. Bird가 앞으로 갈때마다 어디로 가야하는 지  실시간으로 딥러닝으로 방향을 안내합니다. 방향 안내를 위해 빨강색선을 이용하여 게이머가 미리 준비해야 하는 방향을 인지합니다.

 


퀘스트 아이콘이 있는 파이프라인을 통과할때마다 통과 단계를 표시합니다. DK 보드의 CPU 자원이 낮기때문에 성능을 위해 NEON SIMD와 3D GPU를 이용합니다. 사용자가 게임을 할때마다 실시간으로 DNN기반으로 사용자의 게임 패턴을 학습합니다. 

 


DK2보드에서 AI 딥러닝을 실행시 기존보다 하드웨어 자원을 5~7배 많이 필요하였습니다.  좌측의 하단의 글자는 딥러닝을 이용한 실시간 사전 학습 상황을 나타냅니다. 사용자가 게임을 하는 횟수가 증가할수록 구글의 알파고 처럼 딥러닝을 통한 AI 학습 수준도 빠르게 성장합니다. 

 


이러한 시도를 통해서 DK2기반 AI를 이용하여 게임을 하면 게임틀 통한 교육 및 온라인 학습에 응용을 여러방면에서 가능할 것으로 보입니다. 사용자가 퀘스트 파이프라인을 통과할때마다 사운드가 진행상태를 알리도록 동작합니다. 학습시에 발생가능한 OverFitting 이슈들을 적절히 해소하기 위하여 BatchSize는 16, Epoch는 1000으로 학습을 시켰습니다. 게임을 처음 하는 사용자의 경우에 인공지능을 통해 게임실력을 조기에 향상시킬수 있습니다. 

 


ST Community 포럼에서 ST 엔지니어로부터 질의 답변을 통해 DK2는 NPU가 없다는 것을 알았고, 그래서 최대한 모델 경량화 및 NEON SIMD와 3D GPU를 밀착시키는 구현을 하였습니다. 아무쪼록 다음 하드웨어 버젼이 될  DK3보드가 시장에 나올때는 딥러닝 텐서 데이타를 빠르게 처리하기 위하여 높은 TOPS를 제공하는 NPU SOC의 내장을 기대합니다. 구현후에 다양한 방법으로 개발보드에서 실험을 해본 결과, QT 프레임웍의 게임 모듈과 멀티미디어 모듈을 이용하면 개발속도를 더 향상시킬수 있었습니다. 


인공지능을 이용할때와 없을때의 사용자의 게임 적응 수준이 3배 이상 차이 나는 것을 체험하였습니다.  다가오는 미래의 모든 임베디드 디바이스들은 아마도 인공지능 칩을 지금의 CPU, GPU처럼 필수적으로 내장하지 않을까 합니다.


특히, 구현 데모의 반복 실험 결과,  실시간 딥러닝 강화 학습기반의 게임을 개발시에는 네트웍 모델을 최적화하는것이  상당히 중요할거 같습니다. 그리고, 이러한 딥러닝 동작들은 무엇보다 임베디드 보드에서 성능저하로 직결되는 것을 피부로 미리 직접 체험할수 있었습니다. 

 

 

* 실행파일

  - 실행가능한 ELF 바이너리 파일을 (ai-bird.zip) 첨부합니다.  

 

 

 

 

감사합니다.