LoginSignup
20
18

More than 3 years have passed since last update.

WindowsでUnityにml-agents(0.8.1)を導入して機械学習を試してみる

Posted at

Unityで機械学習を使うためのml-agentsアセットを導入し、Windows環境で3DBallというサンプルを動作させるための手順をまとめました。

色々ぐぐると今とはバージョンがずれていたりエラーが出たりフォルダ構成が違ってたりするので
自分用メモ代わりにまとめます。

導入するもの一覧

  • Unity Hub
  • Unity(2017.4以降なら問題なさそう、今回は2019.1.2f1)
  • Anaconda 2019.03 for Windows 64bit Python3.7
  • TensorFlow 1.7.1
  • ml-agents 0.8.1
  • pillow 5.4.1(公式の手順で進めると6.0.0がインストールされてしまうので手動でインストールします)

導入手順

  • Unity Hubのインストール

最初にUnity Hubをインストールします。Unityの各バージョンを管理できるパッケージ管理ツールです。Unityはプラグインがバージョンに依存する場合も多く、入れておいた方がいいと思います。

  • Unity(2017.4以降)のインストール

Unity Hubを起動し、インストールボタンを押すと各バージョンをインストールできます。
今回は2019.1.2f1をインストールしてください。

  • Anacondaのインストール

Windows 64bit Python3.7をインストールします。

  • 「Anaconda Navigator」を起動

スタートメニューで「Anaconda Navigator」と入力すると起動できます。
起動時に各種初期設定を行うので起動が終わったら閉じて大丈夫です。

  • ml-agentsのダウンロード

ここからzipファイルでダウンロード、またはgitでクローンしておきます。

  • Pythonの導入

ml-agents(0.8.1)のドキュメントを読むと
Python3.6が指定されているのでその通りインストールします。

> conda create -n ml-agents python=3.6
> conda activate ml-agents
  • Tensorflow1.7.1のインストール
    ```

    pip install tensorflow==1.7.1
    ```

  • ml-agents用の環境のインストール
    ※ml-agentsが自動でインストールするpillowが6.0.0なのでここでエラーになります。
    以下のコマンドを入力してバージョンを5.4.1に差し替えます。

> pip uninstall pillow
> pip install pillow==5.4.1

ローカルに展開したml-agentsのフォルダに移動します。

> pip install mlagents
> cd ml-agents-envs
> pip install -e .
> cd ../ml-agents
> pip install -e .

いよいよ学習

  • Unityを起動、UnitySDKプロジェクトを開く
    Examples/3DBall/Scenes/3DBallを開いてください。

  • 学習モードをセットする
    HierarchyのBall 3D Academyを選択し、Controlチェックボックスをつけてください。
    このチェックが付いていると学習モード、外すと再生モードになります。

  • 学習開始

以下のコマンドを実行してください。

> mlagents-learn config/trainer_config.yaml --run-id=firstRun --train 

Playボタンを押してと表示されたらUnityのPlayボタンを押す

デフォルトだと50000回まで学習する設定になっていますが、好きな時にCtrl+cを押して終わらせる事で
N回学習したデータとして学習結果が保存されます。

  • 学習結果を再生してみる

models/firstRun-0/3DBallLearning.nnを
UnitySDK/Assets/<好きな名前>.nnにコピーする(例. own_3DBallLearning.nn)

Brains/3DBallLearningのプロパティでModelをown_3DBallLearningに変更
HierarchyのBall 3D Academyを選択し、Controlチェックボックスを外す

UnityのPlayボタンを押す

→学習結果が再生される

学習回数ごとの結果、まとめ

1000回

ちょっと動いていますが、まだぼろぼろと球が落ちます

3dball-1k.gif

5000回

だいぶうまくなってきました。数秒持つけど落としちゃう。みたいな

3dball-5k.gif

10000回

球を落とさないという意味ではもう収束しているようですね。多少板の上で球が動くくらいです。

3dball-10k.gif

50000回

もうあまり10000回と変わりませんでした。板を曲面にするとかもう少し難しくしたりしてみると面白いと思います。

3dball-50k.gif

20
18
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
18