Programming/Unity_Engine

Python과 Unity ML-Agents 연동법: AI 모델 훈련하기

카플로 2025. 2. 9. 23:16
반응형

유니티 엔진 강화학습 ML Agents

게임 AI를 연구하거나 강화학습을 활용하고 싶다면 Unity ML-Agents는 훌륭한 선택입니다. 이 라이브러리는 Python과 Unity를 연동하여 AI 모델을 학습하고, 게임 환경에서 적용할 수 있도록 도와줍니다.

이번 글에서는 Python과 Unity ML-Agents 연동 방법을 단계별로 살펴보고, 기본적인 AI 모델을 훈련하는 방법을 알아보겠습니다.


Unity ML-Agents란?

Unity ML-Agents(Machine Learning Agents)는 Unity에서 강화학습(Reinforcement Learning)을 수행할 수 있도록 지원하는 오픈소스 라이브러리입니다. 이 라이브러리를 사용하면 Unity 환경에서 AI를 훈련하고, 학습된 모델을 게임이나 시뮬레이션에 적용할 수 있습니다.

🎯 ML-Agents의 주요 기능

  • 강화학습(RL): 에이전트가 환경과 상호작용하며 학습
  • 모방학습(Behavior Cloning): 인간 플레이어의 데이터를 기반으로 AI 훈련
  • 커스텀 환경 구축: Unity 내에서 자유롭게 AI 환경 설계 가능
  • Python 연동: TensorFlow 및 PyTorch를 활용한 AI 모델 훈련

1. ML-Agents 설치 및 설정

ML-Agents를 사용하려면 Python 환경과 Unity 환경을 설정해야 합니다.

1.1 Unity 프로젝트 생성 및 ML-Agents 설치

  1. Unity Hub에서 새로운 3D 프로젝트 생성
    • Unity 버전: 2021.3 LTS 또는 그 이상 추천
    • 3D 환경에서 AI를 훈련할 것이므로 3D 템플릿 선택
  2. ML-Agents 패키지 설치
    • Unity Package Manager에서 ML-Agents 추가
    • Window > Package Manager에서 "com.unity.ml-agents" 검색 후 설치

1.2 Python 환경 설정

Python을 통해 Unity와 연동하려면 mlagents 라이브러리를 설치해야 합니다.

pip install mlagents

 

설치 후, 올바르게 설치되었는지 확인:

import mlagents
print(mlagents.__version__)

2. Unity ML-Agents 기본 구조 이해하기

🔹 ML-Agents의 주요 구성 요소

  1. 환경(Environment): Unity에서 AI가 학습할 가상 환경
  2. 에이전트(Agent): 환경 내에서 학습하는 AI 모델
  3. 브레인(Brain): 정책(Policy)을 결정하는 AI 모델
  4. 행동(Action) & 보상(Reward): AI가 행동을 수행하고 보상을 받는 시스템

3. Unity에서 간단한 AI 환경 만들기

3.1 AI 캐릭터(Agent) 만들기

  1. 새로운 Capsule(에이전트) 생성
    • GameObject > 3D Object > Capsule 추가
    • Agent라는 이름으로 변경
  2. Rigidbody 추가
    • Inspector에서 Rigidbody 컴포넌트 추가
    • Use Gravity 체크 해제 (공중에 떠 있는 경우)
  3. ML-Agents 컴포넌트 추가
    • Agent 오브젝트에 Behavior Parameters 컴포넌트 추가
    • 행동 유형(Action Type): Continuous
    • 결정 빈도(Decision Frequency): 5

3.2 Python으로 ML-Agents 학습 스크립트 작성

이제 Python을 활용하여 AI를 학습시키는 기본 코드를 작성해보겠습니다.

예시 : 학습 스크립트 (train.py)

from mlagents_envs.environment import UnityEnvironment

# Unity 환경 로드
env_path = "build/AI_Training"  # 빌드된 Unity 실행 파일 경로
env = UnityEnvironment(file_name=env_path)

# 환경 시작
env.reset()

# 행동 요청 및 보상 확인
for episode in range(10):  # 10 에피소드 학습
    decision_steps, terminal_steps = env.get_steps("AgentGroup")
    
    # 랜덤 행동 적용
    actions = decision_steps.agent_id  # 현재 활성화된 Agent ID
    action_values = [[0.1, -0.1] for _ in actions]  # 예시 행동값
    
    env.set_actions("AgentGroup", action_values)
    env.step()  # 한 스텝 진행

env.close()
print("훈련 종료!")

 

🔹 코드 설명

  • Unity 환경을 로드하고, AI 학습을 위한 기본적인 행동(Action)을 수행합니다.
  • env.get_steps("AgentGroup"): 현재 상태(Observation) 가져오기
  • env.set_actions("AgentGroup", action_values): 행동 적용
  • env.step(): 한 스텝 진행

4. AI 모델 훈련 및 적용

4.1 학습 진행

이제 AI를 학습시켜봅시다. Unity 프로젝트 내의 config.yaml을 설정한 후, 터미널에서 학습을 실행합니다.

mlagents-learn config/training_config.yaml --run-id=MyTraining --train

 

이제 Unity에서 AI가 학습하는 모습을 확인할 수 있습니다.

4.2 학습된 모델 불러오기

훈련이 끝나면, Unity에서 모델을 적용할 수 있습니다.

  1. Assets > ML-Agents > Models 폴더에 .onnx 모델 파일을 복사
  2. Unity의 Agent 오브젝트에 Behavior Parameters 설정에서 모델 불러오기
  3. Unity에서 플레이 버튼을 눌러 훈련된 AI 실행

5. 강화학습 보상 시스템 설정

강화학습의 핵심은 보상 시스템입니다. AI가 원하는 목표를 향해 학습하려면 올바른 보상을 제공해야 합니다.

using Unity.MLAgents;
using Unity.MLAgents.Sensors;
using Unity.MLAgents.Actuators;

public class AI_Agent : Agent
{
    public override void OnEpisodeBegin()
    {
        transform.position = new Vector3(0, 0, 0); // 에이전트 위치 초기화
    }

    public override void CollectObservations(VectorSensor sensor)
    {
        sensor.AddObservation(transform.position);  // 현재 위치 입력
    }

    public override void OnActionReceived(ActionBuffers actions)
    {
        float moveX = actions.ContinuousActions[0]; 
        float moveZ = actions.ContinuousActions[1];

        transform.position += new Vector3(moveX, 0, moveZ) * Time.deltaTime;
        
        // 목표에 도달하면 보상 부여
        if (transform.position.x > 5)
        {
            SetReward(1.0f);
            EndEpisode();
        }
    }
}

이제 AI는 오른쪽으로 이동하는 것이 보상이 크다는 것을 학습하게 됩니다.


Unity ML-Agents를 활용하면 Python과 Unity를 연동하여 강력한 AI 모델을 학습하고 적용할 수 있습니다.

이번 글에서 다룬 내용을 정리하면:

✅ Python과 Unity ML-Agents 연동
✅ 간단한 AI 학습 환경 구축
✅ 강화학습을 위한 행동 및 보상 시스템 적용

반응형