MkItYs

MkItYs > 音楽・漫画・VR・自律制御 > 

images

ヒトの歩く姿勢に近づける#3(模倣学習)[検証中]:Unity (ML-Agents, MarathonEnvs) , DeepMimic

images

- 2022.06.11

模倣学習の別の手法「DeepMimic 」を試してみます。

images

© 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]

images

© github.com/Unity-Technologies/marathon-envs


※1
素体はMuJoCoのキャラクタの流用でしょうか。ただしボーンの構造はHumanoidになっています(なのでアニメーションのアバターも、Humanoidのものを適用できるはずです)。

再生:XR


VR/MR向けには、シーンを作り〜再生したい環境のプレファブを取り込むだけです:

Assets/MarathonEnvs/Envionments/*

この物理演算でどのような手応えがあるのかをみてみたいので、(歩行のシーンもありますが)まず<バク宙>の挙動をMRで体験してみました:[※1]


※1
まだ挙動の調整をしていないため、すぐに次のステップが始まります。この状態だとインタラクションは(起こしたり倒したりとかは)なかなか難しい……

訓練[検証中