模倣学習の別の手法「DeepMimic 」を試してみます。
© xbpeng.github.io
関連
- ◯
- ヒトの歩く姿勢に近づける#2(模倣学習):Unity (ML-Agents (Walker)), GAIL, UnityChan
検証
- ◯
- 環境#1
- ・
- OS:macOS 11
- ・
- アプリ:Unity 2020.1.2f1
- ・
- ライブラリ:marathon-envs
- ・
- ライブラリ:UniVRM 0.99.0
- ◯
- 環境#2(VR)
- ・
- OS:Windows 10
- ・
- アプリ:Unity 2020.1.2f1
- ・
- ライブラリ:marathon-envs
- ・
- ライブラリ:XR Plugin Management 3.2.16
- ・
- ライブラリ:XR Interaction Toolkit 2.0.2
- ・
- ライブラリ:Oculus Integration 40.0
背景
物理ベースのキャラをヒトの動きに近づけるため、(SIGGRAPH 2018 で話題になった)Xue Bin Peng氏のDeepMimic を試してみます:
- ・
- https://xbpeng.github.io/projects/DeepMimic/
このアルゴリズムを、Joe Booth 氏がML-Agents を使ってUnity で実装しているので、ここではこれを使います:[※1]
- ・
- https://github.com/Unity-Technologies/marathon-envs
- ※1
- Unity の非公式なプロジェクト「MarathonEnvs」の一アルゴリズムに、DeepMimic が採用されてます。
導入
インストールするには、次からリポジトリのファイル群をコピーし:
cd ${DIR_PROJECT} git clone --depth=1 https://github.com/Unity-Technologies/marathon-envs.git
Unity 側は、次のフォルダを指定して起動します:[※1]
- ・
- ${DIR_PROJECT}/marathon-envs/UnitySDK
- ※1
- 現時点で最終のメンテナンスは、Unity の2020.1.2f1 版です(この前後のバージョンを試してみましたが、それなりにスクリプトの修正が必要になるようですね)。
導入:XR
XR関連のパッケージについては、それぞれ次のバージョンを設置できます:
- ・
- XR Plugin Management (3.2.16)
- ・
- XR Interaction Toolkit (2.0.2)
- ・
- Oculus Integration (40.0)
導入:独自形式のキャラクタ
独自形式キャラクタの導入では、UniVRMの設置で、スクリプトの修正が必要です:[※1]
- ・
- UniVRM (v0.99.0) : https://github.com/vrm-c/UniVRM
- ・
- 既定:
#if UNITY_2020_1_OR_NEWER using UnityEditor.AssetImporters; #else using UnityEditor.Experimental.AssetImporters; #endif
- ・
- 修正:
#if UNITY_2020_1_2_OR_NEWER using UnityEditor.AssetImporters; #else using UnityEditor.Experimental.AssetImporters; #endif
- ※1
- エラーが出るRemapEditor 関連のスクリプト群は、プリプロセッサのディレクティブを次のように修正しますーーこのUnity のバージョンが、AssetImportersが試験版から公式版に切り替わる境目だったようです。
再生
たんに訓練済みのNNモデルの挙動をみるだけなら、次のシーンを実行し〜メニューから環境を選べば、それぞれの挙動で再生されます:
- ・
- Assets/MarathonEnvs/Scenes/MarathonEnvs
さすがにオリジナルのDeepMimic にはおよばない感じですが、それでも動きの再現度は高いですね:[※1]
© github.com/Unity-Technologies/marathon-envs
- ※1
- 素体はMuJoCoのキャラクタの流用でしょうか。ただしボーンの構造はHumanoidになっています(なのでアニメーションのアバターも、Humanoidのものを適用できるはずです)。
再生:XR
VR/MR向けには、シーンを作り〜再生したい環境のプレファブを取り込むだけです:
- ・
- Assets/MarathonEnvs/Envionments/*
この物理演算でどのような手応えがあるのかをみてみたいので、(歩行のシーンもありますが)まず<バク宙>の挙動をMRで体験してみました:[※1]
- ※1
- まだ挙動の調整をしていないため、すぐに次のステップが始まります。この状態だとインタラクションは(起こしたり倒したりとかは)なかなか難しい……