본문 바로가기
Unity/08.ML-Agents

03-3DBall 예제 활용하기

by 레드아이™ 2021. 1. 17.

1. 아래의 링크에서 최신 ML-Agents를 다운받는다.

github.com/Unity-Technologies/ml-agents/releases

 

Releases · Unity-Technologies/ml-agents

Unity Machine Learning Agents Toolkit. Contribute to Unity-Technologies/ml-agents development by creating an account on GitHub.

github.com

 

2. 다운받은 Source code.zip을 압축 해제하고, Project-Assets 폴더내의 파일들을 Unity 프로젝트 뷰에 떨군다.

 

3. Project 뷰에서 ML-Agents-Examples-3DBall-Scenes내의 3DBall 씬을 더블 클릭하여 오픈한다.

 

4. Play 버튼을 실행해서 작동시키려고 하면 Console 창에 "error CS0234: The type or namespace name 'Extensions' does not exist in the namespace 'MLAgents' (are you missing an assembly reference?)" 라는 에러가 발생하고 Play가 되지 않는다.

본 예제에 활용된 ML-Agents Extensions가 설치되어 있지 않아 발생하는 에러라는 아래 링크의 답변을 참고하여 Extensions 패키지를 설치한다.

github.com/Unity-Technologies/ml-agents/issues/3637#issuecomment-736437667

 

Namespace MLAgents.Sensors does not exist · Issue #3637 · Unity-Technologies/ml-agents

I'm using the 1.14.1 release. when I install the ML-agents 1.14.1 package in Unity and write scripts following the documentation, Unity throws the following errors: Assets\actionagent.cs(4,16):...

github.com

 

5. Window-Package Manager에 들어가서 왼쪽 상위에 + 버튼을 누른 후, Add package from git URL 메뉴를 선택한다.

 

6. 아래의 주소를 입력하고 'Add' 버튼을 클릭한다.

git+https://github.com/Unity-Technologies/ml-agents.git?path=com.unity.ml-agents.extensions

 

7. 바로 반응이 오진 않고, 잠시 기다리면 아래 이미지와 같이 Assets 설치 화면이 나오고, 완료 후 Play 버튼을 누르면 제대로 실행된다.

 

 

# 지금까지의 과정은 이미 학습되어 있는 pre-trained model을 3DBall에 적용하는 것 뿐이고, 새롭게 모델을 학습시키기 위해서는 아래의 과정을 거친다.


 

1. 터미널에서 ml-agents repository를 클론했던 폴더로 이동한다.

cd ~/Documents/Workshop/MLAgents

 

2. 아래의 명령어로 새로운 학습을 실행한다.

mlagents-learn config/ppo/3DBall.yaml --run-id=first3DBallRun

# config/ppo/3DBall.yaml은 학습 config 파일이 존재하는 Default 위치
# run-id는 새로운 학습 세션에 부여한 ID

 

3. "Start training by pressing the Play button in the Unity Editor" 메시지가 터미널에서 출력되면, Unity로 돌아가서 Play 버튼을 누른다. 그러면 아래와 같은 메시지가 나오고 학습이 시작된다.

 

4. 잠시 후, 학습이 완료되고 아래와 같은 화면을 확인할 수 있다.

# Mean Reward가 학습이 진행 되면서 증가하는 것은, 학습이 제대로 진행중인 증거

# 학습 결과는 results/ppo/3DBall.onnx에 저장됨

# 학습이 완료되고 자동으로 Unity에서 Play 모드가 종료되기 전, 혹은 터미널에서 Ctrl+C를 눌러서 학습이 완료되지 않은 상태로 종료가 되면 아래의 명령어를 통해서 학습을 재 시작할 필요 없이 Resume 할 수 있다.

mlagents-learn config/ppo/3DBall.yaml --run-id=first3DBallRun --resume

# run-id를 기존의 모델 id로 맞춰준다.

 

5. ML-Agents가 설치된 폴더에 가보면 아래와 같이 결과 파일(<behavior_name>.onnx)이 생성된 것을 확인할 수 있다.

 

6. 아래의 명령어를 터미널에 입력하고, 웹브라우저에서 localhost:6006 주소를 입력하면, 웹브라우저에서 텐서보드를 실행하여 시각적으로 결과를 확인할 수 있다.

tensorboard --logdir results

# Cumulative reward는 학습이 진행될 수록 증가하면서, 100으로 수렴됨을 확인 할 수 있다. (100은 Agent가 받을 수 있는 최고 reward 값임)


# 학습된 Model을 Unity의 Agent에 적용하기 위해서는, onnx 모델 파일을 Project/Assets/ML-Agents/Examples/3DBall/TFModels로 옮긴 후, Unity에서 3DBall prefab Agent를 선택한 후, 해당 onnx 파일을 Model 부분에 적용하면 됨 

댓글