こんにちは、エンジニアの渡辺(@mochi_neko_7)です。
昨今の生成系AIの発展のスピードが凄まじいのは言うまでもありませんが、GPT によるテキスト生成、Stable Diffusion による画像生成を発端に様々なデータの生成AIが開発されています。
本記事では 2023/07 の調査論文「Human Motion Generation: A Survey」を参照しながら、人間のモーションの生成技術の現状をざっくり紹介します。
モーション生成ではどのようなモデルが使用されるのか、条件付けによる利用イメージ、現状の課題などモーション生成AIの専門的な知識がなくても大まかなイメージが持てる内容になっているかと思います。
モーションデータを作成するコストは画像等の他のデータと比較しても大きいため、もし精度の高いモーションが Stable Diffusion や最近の DALL•E 3 のように自然言語で生成・編集できるようになると 3D アバター技術のより一層の発展が見込めるという点で注目しています。
1. モーションデータ
1.1 モーションデータの表現方法
前提知識としてモーションのデータの表現方法は大きく2通りあります。
- Keypoint-based
- 骨格のキーポイントの座標の移動でモーションを表現する方法
- Rotation-based
- 骨格のキーポイント間の相対的な回転の変化でモーションを表現する方法
Blender などの 3D CG ソフトや Unity などのゲームエンジンでは骨格を階層構造で表現することが多いため、後者の Rotation-based のモーションを目にする機会が多いかもしれません。
1.2 モーションデータの作成方法
生成AIを使用せずにモーションデータを作成する方法は大きく4通りあります。
- Marker-based
- マーカーの動きを測定してモーションを計算する方法
- Markerless
- マーカーを使用せずに単数または複数のカメラ映像や深度等からモーションを推定する方法
- Pseudo-labeling
- 単数のカメラ映像から姿勢推定を使用してモーションを推定する方法
- Manual annotation
- 手付けでモーションを作成する方法
1〜3 は人間(モーションアクター)の実際の動きを計測・推定する方法です。
2 と 3 の違いが自分もちゃんと理解できているわけではありませんが、おそらくカメラの数や深度等を使用するかによる精度の違い、それによる手軽さの違いを区別したいという意図でしょうか。(もし間違っていたらご指摘ください。)
精度の高い順に並べると 4 > 1 > 2 > 3 の順番で、精度が高い方法はコストも同時に高くなります。
そのため、精度の高いモーションが低コストで生成可能になることには実用的な価値があります。
2. 生成モデル
モーションの生成に使用されるモデルは大きく5通りあります。
- GAN(Generative Adversarial Network)
- VAE(Variational Autoencoder)
- Normalizing Flow
- Diffusion Model
- Motion Graph
1 〜4 は一般的な生成モデルで、モーション生成においても同じアルゴリズムを利用することができます。
各モデルの詳細な説明は既に世の中に情報がありますのでここでは割愛します。
5 は複数のモーションをグラフ構造化して、それらを滑らかに遷移できるようにし、グラフ上でランダムウォークをさせることで新しいモーションを生成するものです。
詳細は論文の 3.2 の Motion Graph の段落を参照してください。
3. モーション生成の条件付け
生成モデルを利用すればモーション生成ができることは想像に難くありませんが、Stable Diffusion が自然言語で生成画像の指示ができるように、モーション生成においても期待する条件付けができることが実用上重要になります。
ここでは論文で紹介されている条件付けのパターンを簡単に紹介します。
- テキストによる条件付け
- Action to Motion
- 特定のアクション(電話をかける、ジャンプなど)をするモーションを生成する
- Text to Motion
- 自然言語で指定したモーションを生成する
- Action to Motion
- 音声による条件付け
- Music to Dance
- 音楽に合わせたダンスのモーションを生成する
- Speech to Gesture
- 話(音声、あるいは文字起こししたテキスト)からジェスチャーを生成する
- Music to Dance
- シーンによる条件付け
- 特定の状況(映像や 3D オブジェクト、特定のゴール地点などの状況設定)に合わせたモーションを生成する
Stable Diffusion のように自然言語で指定ができる Text to Motion に注目するのはもちろんですが、会話の音声からジェスチャーを生成する Speech to Gesture もキャラクターの自然なモーション制御に有用そうですね。
各方法の詳細や具体的な研究事例を知りたい場合は論文の4〜6章を参照してください。
4. データセットと評価指標
条件付けをしたモーション生成のモデルを学習させるためには、
- 対応したラベル付けがされているデータセット
- → 7章、TABLE 2
- モデルの性能を評価するための指標
- → 8章、TABLE 3
が必要ですが、それぞれ論文の該当箇所にまとめられていますので必要に応じて参照してください。
5. 現状の課題
- モーションのデータセットが少ない
- 画像や動画と比較して、高品質なモーションデータの収集は難しくお金がかかる
- モーションの意味をどのように持たせるか
- モーションは非言語のコミュニケーションの手段の一つだが、その意味は文化的・社会的な文脈に依存する
- 客観的な評価指標がない
- 現在使用されている評価指標では限界がある
- 細かな調整が難しい
- 実用性を考えると細かい調整やインタラクティブな編集ができることは重要
- インタラクティブ性のある研究はまだ十分にはされていない
- 1人のモーションの研究が多いが、人間同士や人間と環境の相互作用も考慮したモーション生成も考えられる
より詳細な説明が知りたい場合には論文の9章を参照してください。
弊社には VICON による高精度の全身トラッキング環境がありますが、機材はとても高価ですし計測するにはキャリブレーションや調整など工程も多く大掛かりでオペレーション人員も必要なため、高品質なモーション収録の大変さはとても実感しています。
6. 最近の事例
昨年バンダイナムコさんが研究向けのデータセットを公開されていましたね。
ゲーム関係でも需要は大きいはずなので投資だと思います。
Motion Diffusion Model では Text to Motion ができます。
下記サイトを参考に Google Colaboratory 上でセットアップすることもできましたので、自分で触ってみたい方は挑戦してみてください。
個人的な所感としてはプロンプトによる指示がなかなか思ったようにはいかず難しいなと感じました。
デモのクオリティが高くて驚いた GenMM も少し触ってみましたが、指定したモーションをベースとしたランダム生成なので細かい指示ができない点に注意が必要です。
他にも様々なモデルが論文の Fig. 2 にまとめられていますので気になる方は参照してください。
7. まとめ
ここまでで紹介した内容を簡潔にまとめます。
- 生成AIを使わない手法で精度の高いモーションデータを作成する場合には高いコストがかかる
- モーション生成においては一般的な生成モデルやモーションのグラフ構造が使用される
- 利用目的によってモーション生成の条件付けが様々存在する
- 自分でモデルを学習させる際に必要なデータセットや評価指標は論文にまとめられている
- データセットが少ないこと、モーションの意味をどのように持たせるべきかなど研究上の課題も残っている
- 実際に動かせるモデル、ソースコードが公開されているものもある
8. おわりに
人間のモーション生成技術の概観を調査論文をベースにざっくり紹介しました。
自分がいくつか触ってみた所感は「今後に期待」という感じですが、何度か説明をしているように高精度なモーション収録のコストが高いことを考えると将来の実用化時のインパクトは大きいと思われます。
テキストでモーションを生成できるのはもちろん便利そうですが、画像生成における Image to Image の Inpaint のようにモーションを自然言語で部分的に編集することができるようになると高品質なモーションが作りやすくなって実用性が上がりそうです。
また論文では人間の骨格のモーション生成がメインでしたが、指の動きや顔の形状などのモーションもキャラクター制御を考える上では需要がありますし、ゲーム分野では動物や非実在の生き物のモーションなども需要があるのではないでしょうか。
モーション生成分野は今後も定期的にチェックしていきたいです。