Windows で Unity + IronPython 2.7 環境を作る(Chocolatey を利用)(書きかけ)
Windows で,Chocolatey を用いて,Unity + IronPython 2.7 環境を作る手順を説明する.
特記事項: Unity の利用条件、ライセンス条項は,利用者で確認すること
ここで行うこと
- Chocolatey のインストール
- Chocolatey を用いて,次に挙げるソフトウェア類のインストール
- Git, cmake, wget, 7zip
- Python 開発環境: IronPython 2.7
- Unity, Unity Standard Assets, Unity for Linux
【目次】
- 前準備
- Chocolatey のインストール
- Chocolatey を用いて、Git, cmake, wget, 7zip をインストール
- Chocolatey を用いて、IronPython 2.7 をインストール
- Chocolatey でインストール済みのパッケージを一括更新
- インストールしたソフトウェア類に関する設定
- Chocolatey を用いて、Unity, Unity Standard Assets, Unity for Linux をインストール
- 各種パッケージのインストール
- Unity を起動し、Unity ML-Agents の設定を行う
- 事前学習済みのモデルを実行してみる
- 学習を行ってみる
注意事項. Chocolatey を使うと、種々のソフトウェアのインストールが楽になる. このとき、インストールしたソフトウェアの利用条件、ライセンス条項は必ず、確認すること.
特に、次のことに気をつけること
- 他の人のパソコンでのインストール作業を代行することは避ける
- 自分がインストールしたソフトウェア付きのパソコンを他人に貸したり、使わせたりすることは避ける
- 自分がインストールしたソフトウェアで、何かの商用製品を作ったり、商用サービス(請負など)を作ることは避ける
* インストールするソフトウェアの利用条件,ライセンス条項を利用者で確認すること
前準備
Windows の 「アプリと機能」で、インストール済みのプログラムを見る。 次のソフトがある場合には、アンインストールする
今からインストールを行うので、混乱を防ぐため
- 7-Zip
- CMake
- Git
- Unity
- IronPython
Chocolatey のインストール(Windows 上)
まず,git, cmake, wget, 7zip などのインストールや更新を楽に行えるようにするために、 Chocolatey をインストールする.
注意事項. Chocolatey を使うと、種々のソフトウェアのインストールが楽になる. このとき、インストールしたソフトウェアの利用条件、ライセンス条項は必ず、確認すること.
Chocolatey の Web ページの記載の手順に従う.
-
Windows で,PowerShell を管理者として実行する.
- Web ブラウザで、Chocolatey の Web ページを開く
- 「Get Started」をクリック
新しい画面に変わるので確認する
- 案内を確認する.ライセンス条項も利用者自身で確認すること.
- PowerShell を管理者として実行.案内に従い,PowerShell で「Get-ExecutionPolicy」を実行す
- その結果が「Restricted」だった場合には,案内に従い,PowerShell で「Set-ExecutionPolicy Bypass -Scope Process」を実行する
- 引き続き,案内に従い,Webページに表示されているコマンドをコピーし,PowerShell で実行する
- 実行の結果,エラーメッセージが出ていないことを確認する.
Chocolatey を用いて、Git, cmake, wget, 7zip をインストール
- Windows で,コマンドプロンプトを管理者として実行
コマンドプロンプトを管理者として実行: 別ページ »で説明
- Git, cmake, wget, 7zip をインストール
実行のとき、エラーメッセージが出ないことを確認すること
choco install -y git.install cmake.install wget 7zip.install
- Windows の システム環境変数 Pathに,C:\Program Files\Git\cmd, C:\Program Files\CMake\bin を追加することにより,パスを通す.
コマンドプロンプトを管理者として実行: 別ページ »で説明
次のコマンドを実行
powershell -command "$oldpath = [System.Environment]::GetEnvironmentVariable(\"Path\", \"Machine\"); $oldpath += \";C:\Program Files\Git\cmd\"; [System.Environment]::SetEnvironmentVariable(\"Path\", $oldpath, \"Machine\")" powershell -command "$oldpath = [System.Environment]::GetEnvironmentVariable(\"Path\", \"Machine\"); $oldpath += \";C:\Program Files\CMake\bin\"; [System.Environment]::SetEnvironmentVariable(\"Path\", $oldpath, \"Machine\")"
- Windows の システム環境変数 Path の確認
いまのコマンドプロンプトで次を実行し,エラーメッセージが出ないことを確認.
refreshenv where git where git-gui where cmake where cmake-gui where wget
Chocolatey を用いて、IronPython 2.7 をインストール
- Windows で,コマンドプロンプトを管理者として実行
コマンドプロンプトを管理者として実行: 別ページ »で説明
- IronPython 2.7 をインストール
実行のとき、エラーメッセージが出ないことを確認すること
choco install -y ironPython dotnet4.5 dotnetcore-sdk
- インストールできたことを確認
* エラーメッセージが出なければ OK
where ipy
- IronPython のバージョンの確認
ipy -V
- ensurepip を用いて pip, setuptools をインストール
http://ironpython.net/blog/2014/12/07/pip-in-ironpython-275.html の記述に従う
ipy -X:Frames -m ensurepip
- IronPython で、インストール済みのパッケージの確認
ipy -X:Frames -m pip list
Chocolatey でインストール済みのパッケージを一括更新
インストールしたソフトウェア類に関する設定
- Windows の システム環境変数 Path の確認
新しく、 Windows のコマンドプロンプトを実行する.
そして、次のコマンドを実行する
where git where git-gui where cmake where cmake-gui
Chocolatey を用いて、Unity, Unity Standard Assets, Unity for Linux をインストール
- Windows で,コマンドプロンプトを管理者として実行
コマンドプロンプトを管理者として実行: 別ページ »で説明
- Chocolatey を用いて、Unity, Unity Standard Assets, Unity for Linux をインストール
しばらく待つ
* Unity などをインストール済みのときは、違った画面になる
実行のとき、エラーメッセージが出ないことを確認すること
choco install -y unity unity-standard-assets unity-linux
各種パッケージのインストール
pip を用いて,Python パッケージを、簡単に扱うことができる.
- Window でコマンドプロンプトを実行
- IronPython で、 のインストール
- dll ファイルのコピー
以下、書きかけ conda install -y numpy scipy h5py scikit-learn scikit-image matplotlib seaborn pandas pandasql pillow conda install -y jupyter pytest docopt pyyaml cython - imutils, mtcnn のインストール
* mtcnn については https://github.com/open-face/mtcnn
mkdir c:\ipytools cd c:\ipytools rmdir /s /q imutils rmdir /s /q mtcnn
- python-visualization/folium, DinoTools/python-overpy, ianare/exif-py, mapado/haversine, Turbo87/utm のインストール
mkdir c:\ipytools cd c:\ipytools rmdir /s /q folium rmdir /s /q python-overpy rmdir /s /q exif-py rmdir /s /q haversine
cd c:\ipytools git clone https://github.com/python-visualization/folium cd folium python setup.py build python setup.py install cd c:\ipytools git clone https://github.com/DinoTools/python-overpy cd python-overpy python setup.py build python setup.py install cd c:\ipytools git clone https://github.com/ianare/exif-py cd exif-py python setup.py build python setup.py install cd c:\ipytools git clone https://github.com/mapado/haversine cd haversine python setup.py build python setup.py install cd c:\ipytools git clone https://github.com/Turbo87/utm cd utm python setup.py build python setup.py install
- その他、各種パッケージのインストール
* 下から必要なものを選んでインストール
conda install -y chainer conda install -y graphviz conda install -y pydot conda install -y yaml conda install -y flask conda install -y django conda install -y sympy conda install -y sqlite conda install -y redis conda install -y gensim conda install -y cython conda install -y pylint conda install -y bz2file conda upgrade -y --all
Unity を起動し、Unity ML-Agents の設定を行う
Unity はゲームエンジン.ここでは、Unity を起動し、Unity ML-Agents の設定を行う
https://github.com/Unity-Technologies/ml-agents/blob/master/docs/Basic-Guide.md の記述に従う
- Unity を起動する
スタートメニューを使って起動するのが簡単
- サインインする
Unity ID を持っていないときは、「Sign in with google」などでログインするか、「create one」をクリックして Unity ID を作る
すでに、「Sign in with google」でログインしたことがある場合は、次のような画面が表示される
- 初回起動時には、ライセンス管理の画面が開く.
下の画面では、
「Unity Personal」の方を選んでいる
Unity の利用条件、ライセンス条項を確認し、利用すること
- 初回起動時には、「Please select one of the options below」の画面が開くので、1つ選び、「Next」をクリック
- 初回起動時には、「Thank you!」の画面が開くので、1つ選び、「Start Using Unity」をクリック
- Unity の画面が開くので確認する
- UnitySDK のプロジェクトを開きたいので、「Open」をクリック
- 「c:\tools\ml-agents\UnitySDK」を選ぶ.少し待つ
- このとき「Opening Project in Non-Matching Editor Installation」という画面が出る場合がある。
「Continue」をクリック
- 設定を行う
「Edit」 →「Project Settings」 →「Player」 と操作する
- 「Other Settings」をクリック
- Scripting Runtime Version は、「.NET 4.6 Experimental」か「.NET 4.x Equivalent」にする(どちらかが選べるはず)
- Scripting Defines Symbols は、「ENABLE_TENSORFLOW」を設定する
-
「File」
→「Save Project」
と操作して、設定を保存する
- TensorFlowSharp プラグインをダウンロードする
次の URL からダウンロードする
https://s3.amazonaws.com/unity-ml-agents/0.5/TFSharpPlugin.unitypackage
うまくダウンロードできないときは、 https://github.com/Unity-Technologies/ml-agents/blob/master/docs/Basic-Guide.md のWebページを開き, 「Setting up the ML-Agents Toolkit within Unity」のところにある 「Download」をクリック
- ダウンロードが始まる
- ダウンロードしたTensorFlowSharp プラグインをインポートする
ダウンロードしたファイルを実行する
次のような画面が開くので「Import」をクリック
少し待つ
- インポートが成功したかの確認
Unity のプロジェクトの画面で、 「Assets」 →「ML-Agents」 →「Plugins」 →「Computer」のディレクトリに、TensorFlow のファイルがあるのを確認する
事前学習済みのモデルを実行してみる
- Unity のプロジェクトウインドウ (Project window) で、
「Assets」
→「ML-Agents」
→「Examples」
→「3DBall」のディレクトリを開く
- ここの「Scene」下にある、3DBall のシーンファイルを、ダブルクリックして開く
- 画面が変わるので確認
- 上にある画面をクリック。
マウスの右ボタンを押しながらマウスを動かすと、回転する
マウスのホイールで、前後移動するする
- 階層の画面(Hierarchy window)で、
Ball3DAcademy ゲームオブジェクト の下にある
Ball3DBrain をクリック
* 階層の画面(Hierarchy window)は、ゲームオブジェクトの階層構造が表示される画面
- インスペクタの画面(Inspector window)に、プロパティが表示されるので確認する
- Ball3DBrain ゲームオブジェクトのプロパティである Brain 要素は、
Player, Heuristic, External, Internalから選ぶことができる
- Brain 要素を、
Player から Internalに変更する
- Unity のプロジェクトウインドウ (Project window) で、
「Assets」
→「ML-Agents」
→「Examples」
→「3DBall」
→「TFModels」
のディレクトリを開く
- このディレクトリにある「3DBall」という名前のモデルファイルを、
Ball3DBrain ゲームオブジェクトのプロパティである Brain 要素の Graph Modelフィールドにドラッグする
*すでに設定済みの可能性があるが念のため
これで、事前学習済みのモデルが設定できた。
- 実行を開始する。
「Play ボタン」をクリックして、実行を開始する。
事前学習済みのモデルでバランスをとる様子を確認できる
- もう1度「Play ボタン」をクリックして、実行を停止する。
学習を行ってみる
- もし実行中のときは、「Play ボタン」をクリックして、実行を停止しておく.
- 階層の画面(Hierarchy window)で、
Ball3DAcademy ゲームオブジェクト の下にある
Ball3DBrain をクリック
* 階層の画面(Hierarchy window)は、ゲームオブジェクトの階層構造が表示される画面
- インスペクタの画面(Inspector window)で、
Ball3DBrain ゲームオブジェクトのプロパティである Brain 要素を、
Externalに変更する
- 「External」に設定されていることを確認する
- 「Play ボタン」をクリックして、実行を開始する。
うまくボールを受け止めることができていないことを確認する
- もう1度「Play ボタン」をクリックして、実行を停止する。
-
「File」
→「Save Project」
と操作して、設定を保存する.
* 実行中のときは保存できないので、実行を停止してから保存する
これで、学習を始める準備ができた.Unity の画面は閉じないこと
- Windows でコマンドプロンプトを実行
- Python の仮想環境を有効にする
次のコマンドを実行.
activate ml-agents
- カレントディレクトリを、ML-Agents ツールキットのディレクトリに移動
cd c:\tools\ml-agents
- mlagents-learn コマンドを用いて学習
- 使用する設定ファイル: config/trainer_config.yaml
- 今回の学習に付ける ID : 1
「\」でなく「/」を使う
mlagents-learn config/trainer_config.yaml --run-id=1 --train
セキュリティ警告が出た場合には許可する
- 「training by pressing the Player button in the Unity Editor」と表示されるので、Unity の「Play ボタン」をクリック
- 学習が進む
- 学習が終わる
- 学習済みのデータを Unityの配下にコピーする
copy c:\tools\ml-agents\models\1-0\editor_Ball3DAcademy_1-0.bytes c:\tools\ml-agents\UnitySDK\Assets\ML-Agents\Examples\3DBall\TFModels
- 階層の画面(Hierarchy window)で、
Ball3DAcademy ゲームオブジェクト の下にある
Ball3DBrain をクリック
* 階層の画面(Hierarchy window)は、ゲームオブジェクトの階層構造が表示される画面
- インスペクタの画面(Inspector window)に、プロパティが表示されるので確認する
- Brain 要素を、
Player から Internalに変更する
- Unity のプロジェクトウインドウ (Project window) で、
「Assets」
→「ML-Agents」
→「Examples」
→「3DBall」
→「TFModels」
のディレクトリを開く
- このディレクトリにある「editor_Ball3DAcademy_1-0.bytes」という名前のモデルファイルを、
Ball3DBrain ゲームオブジェクトのプロパティである Brain 要素の
Graph Modelフィールドにドラッグする
-
「File」
→「Save Project」
と操作して、設定を保存する
* 実行中のときは保存できないので、実行を停止してから保存する
- これで、学習済みのモデルが設定できた。
「Play ボタン」をクリックして、実行を開始する。
結果を確認する
- もう1度「Play ボタン」をクリックして、実行を停止する。