Unityで機械学習をやってみよう。今回はWindows10上に環境を作成する。
今回使うRelease12の必要環境は以下
Unity:2018.4~
Python:3.6.1~3.8.x
このチュートリアルはUnityのバージョンは2018.4.32f1、Pythonは3.8で行っている。なお、シェル(黒い画面)はgitbashを使う。
環境構築の際に多くの通信が発生するので通信環境の良い場所で行うこと。
Python確認
以下のコマンドでインスールされているPythonのバージョンを確認
$ py --list-paths

3.7と3.8がインストールされている。もし、3.6~3.8を持っていない人はインストールする。
バージョン別インストーラを探すのは下のサイトが便利
https://pythonlinks.python.jp/ja/index.html
ml-agents公式
基本的にはGitHubに上がっている公式に従ってやっていく。
https://github.com/Unity-Technologies/ml-agents/blob/release_12_docs/docs/Installation.md
驚くべき開発スピードだが、今回はRelease12ブランチで構築していく。

ML-Agents Toolkitのダウンロード
最初にUnity用のML-Agentsを用意しよう。
任意の場所(Desktop等)に以下をクローンする。
$ cd ~/Desktop
$ git clone --branch release_12 https://github.com/Unity-Technologies/ml-agents.git
Unityにインストール
Unityにて新規3Dプロジェクトを立ち上げ以下の手順でパーケージをインストールする(プロジェクト名は任意)
1.メニューに移動Window-> Package Manager。 2.パッケージマネージャーウィンドウで、+ボタンをクリック。 3.選択する Add package from disk…

*2019~バージョンのUnityは上にある

4.最初にダウンロードしたml-agents内にあるcom.unity.ml-agentsフォルダに移動。 5.package.jsonファイルを選択。

extentionのインストール
Sampleプログラムの幾つかが必要とするのでextentionもインポートしておこう。
同じようにPackageManagerからAdd Package from diskを選択して

com.unity.ml-agents.extensionフォルダー内にあるpackage.jsonを選択する

サンプルプロジェクトのコピー
それではサンプルプロジェクトをコピーしていこう。ここではファインダーを使ってコピペで移動する。
GitHubからクローンしてきたml-agentsフォルダ内にあるProject->AssetsフォルダにあるML-Agentsフォルダをコピーして、Unityで作成したプロジェクト内のAssetsフォルダに貼り付ける

ひとまず確認
確認してみよう。Unityに行って
Asstes->ML-Agents->Examples->3DBall->Scenesフォルダにある3DBallシーンを選択する。

実行してみよう。すでに学習済みのデータによってボールを落とさないようにうまく操作していることがわかる。

学習環境の構築
サンプルデータの再生では学習済みのデータを再生しただけだ。なので実際に学習をできる環境を作っていこう。機械学習といえばPythonだ。まずはPython環境を作成する。ローカル環境にPython3.8がインストールされているものとする。
仮想環境の構築
Pythonの仮想環境を作成しよう。こうしておくことで特定の用途に適したPython実行環境を構築することができる。今回の例で言うとUnityで機械学習させる専門のPython環境を構築できる。
1.まずは任意の場所に仮想環境用のフォルダを作成する。今回はホームフォルダにpython-envsというフォルダを作成した。
$ mkdir ~/python-envs
2.以下のコマンドで今回のUnity用の実行環境を作成する。名前をmy-unity-envとしたがもちろん好きな名前でOK。Python3.3からvenvを使って簡単に仮想環境を構築できるようになった。(-3.8はpythonのバージョンを指定)
$ py -3.8 -m venv ~/python-envs/my-unity-env
3.以下のコマンドで作成した環境をアクティブにする。
$ . ~/python-envs/my-unity-env/Scripts/activate
仮想環境に入ることができた!

(もしも仮想環境から出たい場合には以下のコマンドだ)
$ deactivate
(備考)pipやsetuptoolsが古くなっていると警告が出る場合がある。その場合は以下のコマンドでupgradeをすると良い
$ pip3 install --upgrade pip
$ pip3 install --upgrade setuptools
pytorchのインストール
Windows環境で環境構築を行う際はpytorchを別途インストールする必要がある。
$ pip3 install torch == 1.7.0 -f https://download.pytorch.org/whl/torch_stable.html
mlagentsのインストール
この環境にmlagents(machine-learning agents)をインストールしよう。
$ pip3 install mlagents==0.23.0
ここで指定している0.23.0というのは以下の表のPythonPackageのバージョンだ。
今回はRelease12で行っているのでバージョンは0.23.0ということになる、

実行
これで仮想環境ができあがったので実行しよう。以下のコマンド打つ
$ mlagents-learn

うぉぉ!なんかすごい!!これでUnity機械学習用のPythonが起動した。
Unityに戻って先程のプロジェクトを実行してみよう。Unityの再生に合わせてPythonも動き出した。

おお、こちらも何やら動いている!!
停止
Unityの再生を止めよう。するとPythonも色々とログを出しながら止まることがわかる。

機械学習の環境構築完了!
これでUnityとPythonが連携して行う機械学習の環境設定はOKだ。次回は実際に機械学習をさせてみよう。
コメント