Human Motion Diffusion Modelによるテキストから3Dモーションの自動生成
この記事では、Human Motion Diffusion Modelによって、人の動きの3Dアニメーションモデルを生成する方法を紹介します。
Human Motion Diffusion Modelとは
Human Motion Diffusion Modelは、拡散モデルの仕組みを利用して人の3Dモーションを生成するモデルです。
学習時の予測対象を工夫することにより、よりリアルなモーションの生成を実現しているところに大きな特徴があります。ここでは、入力したテキストに沿った3Dモーションを生成するText-to-Motionのデモのみ行いますが、特定のクラスのアクションの3Dモーションを生成するAction-to-Motion、モーションをテキストで修正するMotion Editingも同じモデルで実現することができます。理論面の詳細は論文をご覧ください。
デモ
それでは、Google Colaboratoryを使って実際に実行していきます。
なお、記事内で紹介したコードをすべて含むノートブックは、以下のリンクから直接参照することができます。
環境設定
はじめに、画面上部のメニューから、「ランタイム」、「ランタイムのタイプを変更」と進み、「ハードウェアアクセラレータ」を「GPU」に変更しておきます。これにより、推論時にGPUを利用することができます。
※ 2022年10月よりGoogle Colaboratoryの料金プランがこちらの内容に変更されました。ご利用の際はご注意ください。
conda環境を利用するため、condacolabをインストールします。colab上でcondaを利用する方法については、下記の記事をご覧ください。
!pip install -q condacolab
import condacolab
condacolab.install()
続いて、リポジトリをクローンし、conda仮想環境を構築します。
!git clone https://github.com/GuyTevet/motion-diffusion-model.git %cd motion-diffusion-model !conda env create -f environment.yml
必要なライブラリ等をインストールします。
%%bash eval "$(conda shell.bash hook)" conda activate mdm python -m spacy download en_core_web_sm pip install git+https://github.com/openai/CLIP.git
最後に、描画に必要なSMPLモデルのパラメータをダウンロードしておきます。
!bash prepare/download_smpl_files.sh
モデル設定
学習済みのパラメータをダウンロードします。
import gdown # 学習済みパラメータのダウンロード url = 'https://drive.google.com/uc?id=1PE0PK8e5a5j-7-Xhs5YET5U5pGh0c821' output = 'humanml_trans_enc_512.zip' gdown.download(url, output, quiet=False) !unzip humanml_trans_enc_512.zip -d ./save/
推論
モーションを生成します。text_prompt
でプロンプトを指定することができます。
%%bash eval "$(conda shell.bash hook)" conda activate mdm pip install ipykernel python -m sample --model_path ./save/humanml_trans_enc_512/model000200000.pt --text_prompt "the person walked forward and is picking up his toolbox."
出力された結果がこちら。
前掲のYoutubeの動画のように、人型のメッシュで動画化するためのobjファイルやsmplパラメータを生成したい場合は、以下のコードを実行します。input_path
には、上記のコードで出力されたmp4ファイルのパスを入力します。
%%bash eval "$(conda shell.bash hook)" conda activate mdm python -m visualize.render_mesh --input_path /content/motion-diffusion-model/save/humanml_trans_enc_512/samples_humanml_trans_enc_512_000200000_seed10_the_person_walked_forward_and_is_picking_up_his_toolbox/sample00_rep00.mp4
まとめ
テキストから3Dモデルを生成し、さらにそれをテキストで動かす、といった技術があっという間に現実的になってきました。今後の発展に要注目です。