環境 mac
Unity 2017.4.4.f1
ちょっとUnityで機械学習試して見たいのでやってみる
学習させるところまでとりあえず・・・。
必要なものをダウンロード
Unity ML-Agentsのアセットをダウンロードする
Unity Machine Learning Agents Toolkit
TensorFlowSharpプラグインをダウンロード
上記リンクのBasic GuideのところにあるDownloadをクリックするとpackageをダウンロードできる
unitypackageの状態で落とせるよ
Pythonをインストールしてない人はPythonもインストール
わからないときはターミナルから
python --version
すればバージョンが表示される。
2.7.10だったので3系インストールする
手っ取り早くAnacondaでPhthonの環境構築
2系と3系があるけど3系の方をチョイス
そしてインストールして起動
Anaconda起動
左メニューEnvironmentsを選択し、左下のCreateボタンを押す

適当に名前つけて、Pythonのバージョンを設定してCreate

作成したものをクリックしてOpen Terminalでターミナルが開く

ML-Agentsのアセットサンプルを動かす
まずはUnityで新規プロジェクト3Dで作成
ダウンロードしたUnity ML-Agentsnounity-environmentのAssetsフォルダを作成したプロジェクトに突っ込む

そしてTensorFlowSharpのプラグイン TFSharpPlugin.unitypackageもインポート
これ結構大きい
ここまでできたら
PlayerSettingのResolution and Presentationの
Runin Backgroundをチェック
Display Resolution DialogをDisabled
Other SettingsのScripting Runtime VersionをExperimental(.NET 4.6 Equivalent) Unity再起動するよ
Scripting Defined SymbolsにENABLE_TENSORFLOW を記載

シーンの設定
現状でこのようなフォルダ構成になっているはずなので
ML-Agents/Examples/3DBall/Scenes/3DBallのシーンを開く

学習方法の設定は
ヒエラルキーのBall3DAcademy/Ball3DBrainのインスペクターにある
Brain.csのBrainTypeで変更します。
学習させたいので今回はExternalに。
デフォルトだとPlayerになっていて十字キーで自分で操作できます

Brain TypeはPlayer, Heuristic, External, Internalの4種類
Playerは人間が動かす
Heuristicはコードで動かす
ExternalはUnityEditor上もしくはコンソールからの起動で自動で学習させる
Internalは学習させたデータを使って動かす
BuildSettingにシーンを追加してmacでビルド
このまま実行してもボールが落ちるだけなので学習させる
必要なPythonのパッケージのインストール
ターミナルにてml-agents-masterのpythonフォルダに移動
pip install .
pythonフォルダの状態で
python3 learn.py <ビルドしたappのパス> --train
デフォルトだとStepが50000だから結構ほっとかないと終わらなかった。
もっと少なくすればよかった --save-freq=回数 のパラメータを設定してあげれば変更可能
終わるとball3D_ppo.bytesがml-agents-master/python/models/ppoに出力されます

ソースとかまだ読んでないからあまり中身わかってないけど・・・
一旦ここまで。





