Unity/ML-Agents

ML-Agents_3 (수치 관측) 인스펙터에 값 입력

Korokke 2022. 5. 3. 21:07

 

 

 

Al agent 스크립트를 작성했던 Mummy Ctrl을 추가하면 Behaior Parameters 컴포넌트가 자동으로 추가된다.

Max Step은 얼마만큼 반복할 것인가에 대한 값이다.

0으로 하면 무한히 반복하고 1000으로 하면 1000번동안 반복한다.

 

Space Size는 수집하는 데이터의 개수를 나타낸다. 전 포스팅에서 CollectObservations를 보면 Vector의 값이 총 8개 있다. Target의 Transform.position 값(3) Vector3(x, y, z), Agent의 Transform.position 값(3) Vector3(x, y, z), rb의 x velocity(1) rb.velocity.x, rb의 z velocity(1) rb.velocity.z 총 8개이다.

public override void CollectObservations(VectorSensor sensor)
    {
        /*
            
            수치관측 (Vector Observation)

            - 연속 수치 (Continuous) : -1.0f ~ 0.0f ~ + 1.0f
            - 이산 수치 (Discreate) : -1.0f, 0.0f, -1.0f
        */

        // 타겟의 위치 관측
        sensor.AddObservation(targetTr.localPosition);  // 3
        // 자신의 취를 관측
        sensor.AddObservation(tr.localPosition);        // 3

        // 속도 관측
        sensor.AddObservation(rb.velocity.x);           // 1
        sensor.AddObservation(rb.velocity.z);           // 1

    }

Stacked Vectors: 몇번째까지 관측데이터를 설정한 것인지에 대한 파라미터

 

Stacked Vectors는 Agent가 다음 추론에 지난 관찰 데이터를 사용하도록 하는 파라미터다. Stacked Vectors가 2일 경우 바로 전 관찰까지 참조하게 된다. Agent가 이전 position과 현재 position을 알게 되므로, Player의 방향을 추론...

 

이후, Agent에 Decision Requester 추가할 것! 

 

기본 설정이 끝났으니 만들었던 스테이지를 프리팹으로 만들고 복사하여 이런식으로 배치한다.

그리고 파일 탐색기를 열어서 C: -> GitHub -> ml-agents -> config -> ppo 안에 있는 3dBall.yaml 을 복사하여 Mummy.yaml로 파일명을 변경한다.

Behaviors 명을 바꾸고 max_steps를 원하는 시도 횟수로 변경한 후 저장한다.

C/Github/ml-agents/config/ppo 경로로 이동한 뒤 mlagents-learn ./Mummy.yaml --run-id=Mummy01 을 입력하면 Mummy.yaml내용대로 시작이 되며 결과값은 C/Github/ml-agents/config/ppo/result/Mummy01 폴더에 저장된다.

 

명령어를 입력후 엔터를 누르면 이렇게 뜨는데 엑세스를 허용하고 유니티에 돌아가서 실행을 누르면

 

ml를 시작한다.

이후 C/Github/ml-agents/config/ppo/resultMummy01 안에 저장된 Mummy.onnx 파일을 유니티 폴더에 복사하여 가지고 온다음 Behavior Parameters Model 에 연결하면 이미 만들어진 모델을 실행할 수 있음

출처: https://everycommit.tistory.com/69