【Windows】Unity ML-Agentsのサンプルを動かす② ~学習モデルの作成~ (Release 1対応版)

2020年5月26日


前回の記事では
ML-AgentsのダウンロードやAnacondaの環境の構築などの下準備を行いました。

今回の記事では実際にML-Agentsのサンプル「3DBall」を動かしてみます。

こちらは前回の記事の続きです。
前回の記事は以下のリンクから
【Windows】Unity ML-Agentsのサンプルを動かす① ~環境の準備~ (Release 1対応版)


学習の実行と学習結果ファイルの適用

Anaconda Promptの作業フォルダを切り替える


Anaconda Promptで前回、解凍(リネーム・移動)した「ml-agents」フォルダに移動します。

やり方は以下の通りです。

前回、解凍(リネーム・移動)した「ml-agents」フォルダを開きます。

「ml-agents」フォルダを開くことができたら、フォルダのアドレス(パス)のコピーを行います。

アドレスバーの部分を右クリックして「アドレスのコピー」を選択することで
「ml-agents」フォルダのアドレス(パス)のコピーを行うことができます。

フォルダのアドレス(パス)のコピーができたら、Anaconda Promptの画面に戻ります。
Anaconda Promptでは、以下のようなコマンドを入力して、作業フォルダを切り替えてください。

cd <先ほどコピーしたフォルダのアドレス(パス)>

例えば、先ほどコピーしたフォルダのアドレス(パス)が
「C:\Users\admin\Desktop\Unity\ml-agents」であれば

cd C:\Users\admin\Desktop\Unity\ml-agents

のようなコマンドになります。

正しく入力されれば、画像のように作業フォルダが切り替わっていると思います。

学習の実行


それでは、今回のメインである学習を行います。

Anaconda Promptに以下のコマンドを入力して実行します。

mlagents-learn ./config/trainer_config.yaml --run-id=firstRun3DBall


コマンドを実行するとWindowsのセキュリティ警告が表示されるので
「アクセスを許可する」をクリックします。

コマンドを実行するとこのように表示されます。

このように表示されたら、Unityのエディタ画面に戻り

Playボタン(▶)ボタンをクリックすると学習がスタートします。

学習が終わるまで、数分間待ちます。
学習が終わると自動で停止します。

※注意

コマンドを実行して、Unityエディタ側でPlayボタン(▶)を押さずに放置していると、Anaconda Promptに画像のようなエラーが表示されます。
その場合は、Anaconda Promptに以下のコマンドを入力し、Unityエディタに戻ってもう一度Playボタンを押してください。

mlagents-learn ./config/trainer_config.yaml --run-id=firstRun3DBall --force



学習が完了すると「ml-agents > models > firstRun3DBall」の中に「3DBall.nn」という名前で学習結果ファイルが生成されていると思います。


学習結果ファイルを使う


生成された学習結果ファイルをUnityに取り込んで実行させます。

先ほど生成された学習結果ファイル「3DBall.nn」の名前を「3DBall_0.nn」にリネームします。

リネームするのは、Unity ML-Agentsプロジェクトに既にデモ用として存在する学習結果ファイル「3DBall.nn」と区別をするためです。

Unityエディタを開き「Project」ビューから以下の順で「TFModels」フォルダを開きます。
「Assets > ML-Agents > Examples > 3DBall > TFModels」

「TFModels」フォルダが開けたら、先ほどリネームした学習結果ファイル「3DBall_0.nn」をドラッグアンドドロップでUnityエディタの「TFModels」フォルダに取り込みます。

取り込みが完了すると「3DBall_0.nn」ファイルが表示されていると思います。

次に「Project」ビューから以下の順で「Prefabs」フォルダを開きます。
「Assets > ML-Agents > Examples > 3DBall > Prefabs」

「Prefabs」フォルダが開けたら、その中にある「3DBall」をダブルクリックして開きます。
すると、上記の画像のような画面になると思います。

次に「Hierarchy」ビューから「Agent」の項目を選択します。
すると、画面右の「Inspector」ビューに上記の画像のような情報が表示されるはずです。

「Inspector」ビューの中に「Behavior Parameters」という項目があり

「Behavior Parameters」の中に「Model」という項目があります。
「Model」の項目の右端に「⦿」ボタンがあるので、そこをクリックします。

すると「Select NNModel」というウィンドウが表示されるので、
先ほど取り込んだ学習結果ファイルの「3DBall_0」を選択します。

正しく変更されると「Behavior Parameters」の中の「Model」の設定が「3DBall_0 (NNModel)」になります。

設定が完了したら、3DBallのシーンに戻ってPlay(▶)ボタンを押してみましょう!

キューブちゃんたちが、頑張ってボールを落とさないようにバランスを取っている様子を見ることができると思います。

これで無事チュートリアルを動かすことができました。


UnityUnity