본문 바로가기

분류 전체보기

(98)
12. ML Agents 기본 예제 - Ball3DAgent 분석 Ball3DAgent 3DBalls에서는 에이전트로 Platform을 사용했다. 계층 뷰에서 Gamexx 오브젝트 아래에 묶여있는 것을 볼 수 있다. 에이전트 에서 가장 유심히 봐야할 것은 Agent 컴포넌트이다. Brain속성은 은 에이전트에서 사용하는 브레인을 지정한다. 현재 Ball3DBrain 객체를 사용하도록 지정되어 있다. Agent Cameras 속성은 에이전트에 카메라를 설치해서 이미지를 입력으로 처리할 수 있는 기능을 지원한다. 현재는 Vector Observation을 사용하기 때문에 카메라를 추가하지 않는다. Max Step은 학습을 진행할 횟수를 지정한다. 5000이 지정되어 있어 5000회 학습을 진행해야 하지만 Academy에서 Max Step이 0으로 지정되어 있기 때문에 상위..
11. ML Agents 기본 예제 - Ball3DBrain 분석 Ball3DBrain Ball3DBrain 객체에서 중요한 부분은 역시 Brain 컴포넌트 설정 부분이다. Vector Observation 속성 중 Space Size는 몇 개의 변수를 수집할 지 지정하는 부분이다. 여기에서 지정된 숫자와 Ball3DAgent 클래스의 CollectObservations 함수에서 브레인으로 전달하기 위한 관찰 값을 저장하고 있는 AgentInfo(AddVectorObs 함수에 인자로 들어가는 값은 내부적으로 AgentInfo 구조체에 저장)에 들어가는 변수의 개수가 일치해야 한다. Stacked Vectors는 브레인으로 전달하기 위한 변수 세트 크기를 지정한다. 이 값이 2이 지정되어 있다면 2세트 모두 16개(8x2)의 변수가 브레인으로 한번에 전달된다는 의미이다...
10. ML Agents 기본 예제 - Ball3DAcademy 분석 Ball3DAcademy 아카데미 아카데미는 유니티 씬에 있는 모든 에이전트와 브레인을 조율하는 역할을 한다. 3DBall에 사용된 Ball3DAcademy를 분석하면서 아카데미의 기능에 대해 알아보자. 계층 뷰에서 Ball3Dacademy객체를 선택하면 인스펙터 뷰에서 상세 내용을 볼 수 있는데 여기에서 주의 깊게 봐야할 것이 어떤 스크립트를 사용하는 지와 Max Steps 속성이다. 아카데미의 동작을 정의하는 스크립트에는 Ball3DAcademy를 정의해서 사용했다. 스크립트를 더블 클릭하면 데이터 찾에서 코드를 확인 할 수 있다. Max Steps 속성은 아카데미에서 몇 번 학습할 지 정의한다. 1000으로 설정하면 학습을 모두 1000번 진행하고 종료한다. 0으로 설정하면 강제로 학습을 종료할 때..
9. ML Agents 기본 예제 - 학습 환경 분석 유니티 게임 구조 3DBall의 구성을 먼저 살펴보자. Ball3DAcademy 한 개와 Ball3DBrain 한 개를 사용했다. 에이전트를 생성하기 위해 빈 객체(Empty Object)를 만들고 그 아래 Platform, Plane 그리고 Ball을 자식 객체로 넣었다. 빈 객체 이름을 Game으로 하고 프리팹을 생성하고 모두 12개를 복사했다. 프로젝트 에셋은 Materials, Prefabs, Scenes, Scripts 그리고 TFModels로 구성된다. 이와 같은 폴더 구조는 다른 ML 에이전트 프로그램에도 유사하게 적용된다. 여기에서 새로 나온 것이 TFModels인데 여기에는 학습된 모델이 저장된다. ML 에이전트 학습 구성도 ML 에이전트 학습 기본 구성은 에이전트, 브레인, 아카데미이다..
8. ML Agents 기본 예제 - 모델 활용 ML 에이전트 학습된 모델 활용 결과가 저장된 폴더를 보면 확장자가 bytes인 파일이 있다. 모델 학습 결과는 bytes 파일에 저장된다. 유니티에서 학습된 모델을 활용하기 위해서는 bytes 파일을 유니티 프로젝트 뷰 TFModels 폴더에 드래그 앤 드랍 하면 된다. 이제 모델을 브레인과 연결시켜야 한다. 먼저 계층 뷰에서 Ball3DBrain을 선택한 다음에 Brain Type을 Internal로 변경하고 Graph Model 항목에 학습된 모델(bytes 파일)을 끌어다 놓으면 된다. 이제 플레이 버튼을 눌러 게임이 잘 동작하는지 살펴보자. 모델이 충분히 학습되고 설정이 잘 됐다면 공이 바닥으로 떨어지지 않을 것이다.
7. ML Agents 기본 예제 - 학습 브레인 타입 변경 3DBall 게임을 강화학습을 통해 훈련하는 방법에 대해 알아보자. 학습하기 위해 많은 작업이 선행되어야 하지만 이미 유니티에서 준비를 다 해놨기 때문에 브레인 타입만 변경해서 학습을 하도록 하겠다. 먼저 앞에서 설정한 브레인 타입을 External로 변경하자. ML 에이전트 실행 강화학습을 진행하기 위해서는 먼저 ML 에이전트를 띄워야 한다. 앞에서 설치한 아나콘다에서 ml-agents 실행 환경을 활성화 시키고 ML 에이전트 관련 파일이 저장된 C:\ml-agents-master 디렉토리로 이동한다. 실제로 디렉토리를 이동하지 않고 학습과 관련된 메타 정보를 가지고 있는 trainer_config.yaml 파일의 경로만 잘 지정하면 되지만 ML 에이전트와 관련된 모든 작업을 하나의 ..
6. ML Agents 기본 예제 - 실행 하기 3DBall 열기 프로젝트 뷰에서 다음 경로 Assets > ML-Agents > Examples > 3DBall > Scenes 에 있는 Scenes 폴더를 선택하면 3DBall 씬 파일을 확인할 수 있다. 파일을 열면 계층 뷰와 씬 뷰에 3DBall 관련 내용이 나오는 것을 확인할 수 있다. 3DBall 실행 플레이 버튼을 눌러 프로그램을 실행해 보자. 공을 그대로 바닥으로 떨어트려 게임이 계속 다시 시작하는 것을 확인해보자. 평면(Plane)을 조정해서 공이 떨어지지 않도록 해야 하는데 사용자가 12개의 평면을 모두 조절한다는 것은 불가능에 가깝다. 이제 평면에 지능을 부여해서 공을 어떻게 컨트롤하는지 살펴보자. 여기에서는 미리 학습된 모델을 사용해보도록 한다. 프로젝트 뷰에서 Ball3DAcade..
5. ML Agents 기본 예제 - 실행 준비 UnitySDK 프로젝트 생성 유니티를 실행시키면 프로젝트 화면이 나온다. 상단에 Open 메뉴를 선택해서 ML 에이전트 파일을 다운로드 받아서 저장한 폴더를 선택한다. ML 에이전트 폴더(C:\ml-agents-master) 아래에 있는 UnitySDK 폴더를 선택하면 유니티에서 제공하는 ML 에이전트 예제 및 관련 파일을 모두 포함한 프로젝트를 생성할 수 있다. UnitySDK 프로젝트 확인 프로젝트가 정상적으로 생성됐으면 프로젝트 뷰에서 그림과 같은 내용을 확인할 수 있다. ML 에이전트 환경 설정 유니티에서 ML 에이전트를 사용할 수 있도록 환경 설정을 해보자. Edit 메뉴에서 Project Settings를 선택하고 Player 메뉴를 누르면 인스펙터 뷰에서 환경설정을 할 수 있다. 아래쪽으로..