背景
某物理エンジンYoutuber(チャンネル)と同じことをしたかったんですが、
表題の方法がネットで探しても見つかりませんでした。
一人で試行錯誤しながら環境を構築するのが地獄だったので、
後続の人に同じ道を歩ませんとここに手順を残しておきます。
(M1 MacとIntel Macの記事が混じっててまじで地獄でした。。。)
前提
2022年2月6日時点で筆者が下記の手順で環境を構築できることを確認しました。
バージョンの変更などあればご容赦ください。
本稿のゴール
デモプロジェクトでシミュレーション及び学習ができること。
手順
1.ML-Agentsのダウンロード
ML-Agentsとは?
Unity上で機械学習の学習環境を構築するフレームワークです。1.1.下記URLからML-Agentsをダウンロード
https://github.com/Unity-Technologies/ml-agents
1.2.上記でダウンロードしたファイルを解凍する
2.仮想環境の構築
2.1.下記URLからMiniforgeのダウンロード
https://github.com/conda-forge/miniforge
2.2.ダウンロードしたフォルダ直下で、下記コマンドを実行
bash Miniforge3-MacOSX-arm64.sh
適宜Enterとyesを入力してください。
2.3.ターミナルを再起動する
2.4.下記コマンドを実行して、仮想環境を作成する
conda create -n 【環境名】 python=3.9.9
2.5.仮想環境をアクティベート
conda activate 【環境名】
2.6.必要なライブラリのインストール
下記コマンドを実施(場所は問わない)
conda install numpy
conda install Pytorch=1.8.0
conda install h5py
conda install grpcio
2.1.でダウンロードしたml-agentsのフォルダ直下で下記コマンドを実施
python -m pip install mlagents==0.28.0
3.Unityの準備
Unityとは?
ユニティ•テクノロジーズ社が提供するゲーム開発プラットフォームです。
下記の要素を備えており、「これがあればゲームが作れますよ」というツールキットになっています。
- 3D/2D描画
- サウンド再生
- UI管理
- データ管理
- 物理エンジン(力学的な法則のシミュレーション)
ゲーム画面を作るためにコードを書くのではなく、マリオメーカーのようにオブジェクトを配置してゲーム画面を作成するので、
プログラミングに明るくない方でも直感的な操作だけで(ある程度の)ゲームを作成できます。
UnityHubとは?
Unityのバージョン管理ツールです。
3.1.下記URLから、UnityHubのダウンロード
https://unity3d.com/get-unity/download
3.2.Unityアカウントの作成
ここは各々頑張ってください笑
3.3.(したい人は)言語を日本語に変更
歯車マーク > Appearance > Language >日本語
3.4.MLagentsのデモプロジェクトをインポート
3.5.Unityをインストールして起動
インポートしたプロジェクトをクリックするとエディタの
インストールを進めるポップアップが出てくるため
「他のエディターバージョンを選択」を選択し、最新のバーションをインストールしましょう。
※2022年2月6日現在ではデモと同じバージョンのApple Siliconエディタがないため
ワーニングが出ますが無視しましょう。
4.デモの実行
今回は「3DBall」というデモを実行してみます。
4.1.デモプロジェクトを開く
プロジェクトウィンドウのAssets\ML-Agents\Examples\3DBall\Scenes\3DBallを開く
4.2.学習済みモデルでシミュレーション
上の再生ボタンを押下すると既に学習しているので、
ボールを落とさないようにバランスを取るようにキャラが動きます。
かわいい()
4.3.学習を行う
ターミナルで下記コマンドを実施
mlagents-learn 【2.1.でダウンロードしたml-agentsのフォルダ】¥config¥ppo¥3DBall.yaml --run-id=【任意のID】
この状態で再生ボタンを押すと学習が行われます。
4.2.と異なり学習モードなので、実行速度が速かったりボールを落としまくる姿が見れます。
とてもかわいい()
最後に
デモプロジェクトさえ動けば、あとは遊ぶだけです!
今後はこの環境で遊ぶ方法や遊んだ結果などを投稿します。
拙稿をお読みいただきありがとうございました。