Unity で機械学習(Machine Learning)が行える ML-Agents について、前回、前々回に 3DBall と言うサンプルをサンプルデータ(学習済みデータ)を用いて試してみました。
ML-Agents の3DBall を試す(サンプルデータ使用)Part1
ML-Agents の3DBall を試す(サンプルデータ使用)Part2

今回は、サンプルの学習済みデータを用いず、自分で学習を行わせてみます。(前回までの設定はされている前提です。)
ML-Agents_26
【作業の概要(機械学習編)】

 4.Unityでの設定とビルド
  4.1. Unityでの設定
  4.2.  Unityでのビルド
 5.機械学習の実行
  5.1. 機械学習下準備
  5.2. 機械学習の実行
 6.学習結果を使用して実行
  6.1. Unityでの設定
  6.2. 学習結果を用いて実行

【4.Unityでの設定とビルド】

4.1. Unityでの設定
Edit > Project Settings > Player で Player Settings を開きます。
ML-Agents_27

[Resolution and Presentation] エリアで以下を確認します。
・[Run In Background] にチェックが入っている。
・[Display Resolution Dealog] が Disable になっている。
ML-Agents_28

次に、Hierarchyビュー上で、「Ball3DBrain」を選択。Inspectorビュ-上で Brain Type を External に変更します。
ML-Agents_29

ここで、File > Save Scenes でシーンを保存しておきます。

4.2. Unityでのビルド
File > Build Settings で Build Settings 画面を開きます。
今回は「PC, Mac & Linux Standalone」でビルドします。「Build」ボタンをクリックして、ビルドを開始させます。
ML-Agents_30

ファイルの保存先を聞いてきますので、ml-agents-master > python 配下に 3DBall と言う名前で保存をします。「Save」をクリックしてビルド実行。
ML-Agents_31

ml-agents-master > python 配下に 3DBall と言う exeファイルができました。
ML-Agents_32

(ML-Agents 0.4 から、このように先にビルドしなくても直接 Unity Editor から学習させることもできるようになったようです。)

【5.機械学習の実行】

5.1. 機械学習下準備
前回使用した Anaconda Prompt を閉じてしまった人ように。
Anaconda Prompt を起動させます。
ML-Agents_04

コマンドプロンプトから「chcp 65001」と入力して Enter を押します。
chcp 65001

フォルダを ml-agents-master に移動します。
cd <パスをコピペ>

ml-agents に環境を切り替えます。
activate ml-agents

フォルダを python に移動します。
cd python

ML-Agents_33

5.2. 機械学習の実行
Pythonの学習プログラム learn.pyで先ほど同じフォルダに作成したexeファイル、3DBallを指定して実行します。(ML-Agents v0.2まではppo.pyを使用。)
python learn.py 3DBall --train

ML-Agents_34

機械学習が始まりました。小さなスクリーンが立ち上がり、高速に何回も実行をしています。
ML-Agents_35

最初はボロボロです。
ML_3DBall_04

学習がどんどん進みます。
ML_3DBall_03

すると、うまくバランスがとれるようになってきました。
ML_3DBall_01

学習が終了して、学習結果は ml-agents-master > python > models > ppo フォルダに、3DBall_ppo.bytes ファイルとして作成されています。
ML_3DBall_06


【6.学習結果を使用して実行】

6.1. Unityでの設定
それでは、いま作成した学習ファイル(bytesファイル)を使用して実行してみましょう。
まず、作成した「3DBall_ppo.bytes」ファイルを Projectビューの TFModelsフォルダにドラッグ&ドロップします。
ML-Agents_36

次に、Hierarchyビュー上で、「Ball3DBrain」を選択。Inspectorビュ-上で以下の様に設定。
・Brain Type: 「Internal」に変更。
・Graph Model: 今作成した bytesファイル「3DBall_ppo.bytes」を Projectビューからドラッグ&ドロップ。
ML-Agents_37

6.2. 学習結果を用いて実行
Unity Editor上でゲームを実行してみましょう。いい感じにバランスしております。
ML-Agents_24

このような感じで Unity上での機械学習は行われます。

3DBall のサンプルはとても分かりやすく、インパクトがありますね。今度は他のサンプルも試してみようかと思います。

Sponsored Link