이전 포스팅에서는 ML-Agents 관련 스트립트를 작성하였고 프로젝트를 완성해보겠습니다.
* 이 포스팅의 내용은 유니티에 대한 어느정도의 지식이 있다고 가정하여 작성하였습니다.
2. 프로젝트에 오브젝트 배치하기
화면에 임의의 오브젝트를 아래 스크린샷 같이 배치합니다.
타겟과 바닥 그리고 벽을 Sprite Renderer로 생성하여 배치해줍니다.
이후 임의의 Agent로 사용할 임의의 빈 오브젝트를 생성하고 작성한 MoveToTargetAgent 스크립트를 추가해줍니다.
그럼 Behavior Parameters와 Desicion Requester 스크립트도 자동으로 같이 추가됩니다.
또한 타겟과 충돌 체크에 필요한 Collider와 Rigidbody를 추가하여 줍니다.
* 벽으로 사용할 Sprite Renderer에는 Rigidbody없이 Collider만 있으면 됩니다.
다른 부분은 수정할 필요없이 작성했던 OnActionReceived 함수와 Heuristic 함수에서 ContinuousActions을 2개 지정했기 때문에
Actions 항목에에 Continuous Actions만 2로 바꾸어줍니다.
이제 게임을 실행시켜서 키보드로 움직여 의도된대로 행동하는지를 확인합니다.
3. ML-Agents로 학습시키기
가상환경이 설정된 상태에서 아래와 같이 학습 명령어를 CMD창에서 실행합니다.
mlagents-learn --run-id=AI_TEST
그럼 위와같이 유니티에서 플레이 버튼을 누르라는 화면이 출력됩니다.
그리고 실행하면 학습을 실행합니다. 하지만 하나만 가지고는 학습 데이터가 너무 적습니다.
더 많은 학습을 하기 위해서 해당 오브젝트를 더 복사하고 ONNX(Open Neural Network Exchange)를 추가로 설치하겠습니다.
그러면 결과물이 다양한 딥 러닝 프레임워크 간에 모델 이동, 모델 이식 성능을 최적화하여 다양한 환경에서 딥 러닝 모델을 보다
효율적으로 사용 할 수 있습니다.
pip install onnx
아래와 같이 무작위로 배치를 하고 한번에 학습을 실행시켜 봅시다.
다시 학습 명령어를 통해 학습을 실행하면 됩니다. (--force 를 사용하면 덮어쓰게 됩니다.)
대략 10만번의 학습을 40초 정도만에 완료한것을 확인 할 수 있습니다.
학습된 데이터는 Result 폴더에 저장됩니다. 이제 해당 파일을 유니티 프로젝트 내에 추가하고 Behavior Parameters에 Model에 추가해줍니다.
이후 엔진에서 게임을 실행하면 학습된 데이터를 기반으로 움직이는 것을 확인 할 수 있습니다.
다음 포스팅에서는 다른 학습방법과 각 함수와 값을 보다 자세히 알아보겠습니다.
'AI > ML-Agents' 카테고리의 다른 글
[Unity] ML-Agents 간단 프로젝트 제작 #1 (0) | 2024.02.27 |
---|---|
[Unity] ML-Agents 설치 및 세팅 (0) | 2024.02.27 |