[Unity 3D] Unityで機械学習!ML-Agentsのサンプルを学習させる方法。

(2022/10/18)
Unityで機械学習!ML-Agentsのサンプルを学習させる方法。
実行環境
  • macOS:Monterey(バージョン12.6)
  • Unity Hubのバージョン3.3.0 (3.3.0)
  • Unityのバージョン:2020.3.25f1
  • Pythonのバージョン:3.7.0
  • 目次

  • ML-Agentsとは
  • ML-Agents Toolkitをクローンする
  • 学習済みのサンプルを再生する
  • サンプルを学習させるための準備
  • サンプルを学習させる
  • 学習させたモデルを使ってみる
  • この記事では、GitHubの を参考にしてML-Agentsのバージョン「Release 19」を使用します。

    ※ML-Agentsを使用するために、Unityのバージョン2020.3以降とPythonのバージョン3.6.1以降が必要になります。

    ML-Agentsとは

    ML-Agentsとは、Unityで機械学習を実行するためのオープンソースプラグインのことです。ML-Agentsを使うことで、複雑なコードを書かなくても機械学習を行うことができます。

    ML-Agents Toolkitをクローンする

    まずターミナルを起動し、ML-Agents Toolkitを任意の場所にクローンします。

    $ git clone --branch release_19 https://github.com/Unity-Technologies/ml-agents.git
    学習済みのサンプルを再生する

    Unity Hubを起動し、「開く」をクリックしてクローンしたml-agentsのProjectを選択します。

    Unityで機械学習!ML-Agentsのサンプルを学習させる方法。

    Projectが開いたら、Assets→ML-Agents→Example→3DBall→Scenes→3DBallの順にクリックして、3DBallのシーンを開きます。

    Unityで機械学習!ML-Agentsのサンプルを学習させる方法。

    シーンを開いたら、ゲームオブジェクトがすでに用意されています。この状態でUnityエディターを再生すると四角い顔がバランスを取り、ボールを落とさないようにします。

    Unityで機械学習!ML-Agentsのサンプルを学習させる方法。

    サンプルが動いていることが確認できたら、実際に学習させていきます。

    サンプルを学習させるための準備

    ①ターミナルでPythonのバージョンが3.6.1以降であることを確認します。

    $ python3 -V

    ②サンプルを学習させるために仮想環境を使うのでターミナルを立ち上げて任意の場所にディレクトリを作ってください。今回はSampleという名前のディレクトリを作りました。

    $ mkdir Sample

    ③cdコマンドでSampleに移動した後、今回使う新しい環境を作成します。ここでは、learning-envという名前の仮想環境を作成しました。

    $ python3 -m venv learning-env

    ④仮想環境が作成できたら、作成した仮想環境を有効化します。

    $ source learning-env/bin/activate

    ⑤仮想環境を有効化している状態でpipとsetuptoolsをアップグレードします。

    $ pip3 install --upgrade pip
    $ pip3 install --upgrade setuptools

    ⑥mlagentsPythonパッケージをインストールします。

    $ python -m pip install mlagents==0.28.0

    ⑦importlib-metadataのバージョンを変更します。

    $ pip install importlib-metadata==4.13.0

    仮想環境は$ deactivateで終了することができます。

    $ deactivate

    これからUnity側の準備をしていきます。

    ⑧Hierarchyの3DBallを選択し、InspectorのPrefabのOpenをクリックします。

    Unityで機械学習!ML-Agentsのサンプルを学習させる方法。

    ⑨HierarchyのAgentを選択し、InspectorのInference DeviceをCPUに変更します。

    Unityで機械学習!ML-Agentsのサンプルを学習させる方法。

    これで準備は完了です。

    サンプルを学習させる

    いよいよサンプルを学習させます。

    まず仮想環境を有効化します。

    $ source learning-env/bin/activate

    次にターミナルでcdコマンドを使い、クローンしたml-agentsのファイルに移動します。移動できたら下のコマンドを入力します。
    (--run-id=の「Learning-3Dball-1」は好きに変えてもらっても大丈夫です。)

    $ mlagents-learn config/ppo/3DBall.yaml --run-id=Learning-3Dball-1

    入力した後、下の画像のようにUnityのロゴが出ていれば成功です。

    Unityで機械学習!ML-Agentsのサンプルを学習させる方法。

    Unityエディターで再生をクリックすると学習が開始されます。

    Ctrl+Cで学習を終了させることができます。

    またCtrl+Cで終了させた後、$ tensorboard --logdir resultsと入力し、ブラウザでlocalhost:6006に移動すると学習のプロセスの詳細が確認できます。

    学習させたモデルを使ってみる

    学習させたモデルはクローンしたml-agentsのresultsの中の保存されます。
    今回は、resultsにLearning-3Dball-1というディレクトリが作成されているはずなので、そのディレクトリの中の3DBall.onnxをUnityのProjectウィンドウのAssetsにドラッグアンドドロップします。(ここでは、元からあるサンプルモデルと見分けやすいように名前をLearning-3Dball-1.onnxに変更しています)

    ①Hierarchyにある3DBallを選択しInspectorのPrefabのOpenをクリック。

    ②HierarchyにあるAgentのInspectorのModelにLearning-3Dball-1.onnxをドラッグ。

    Unityで機械学習!ML-Agentsのサンプルを学習させる方法。

    この状態でUnityエディターの再生をクリックすると、学習させたモデルが実行されます。

    UnityのML-Agentsについて学べる本
     
    他の記事も見る
     
  • プライバシーポリシー