Otama's Playground

AIで遊んだ結果などをつらつら載せていきます。

AnimateDiff: Stable Diffusionを拡張した軽量動画生成モデルの仕組み

今回はAnimateDiffを紹介します。AnimateDiffとは画像生成モデル(Stable Diffusion)を拡張し、動画を生成できるように学習させたモデルです。ほとんど元の画像生成モデルと変わらないので、かなり軽量に動画を生成することができます。AnimateDiffは、ユーザーが指定するパラメータや条件に基づいてアニメーションをカスタマイズできる機能を持ちます。こういった技術の研究がさらに進んでいけば、アニメーションスタジオや個人クリエイターが迅速かつ効率的に高品質なアニメーションを制作することにつながるため、ゲーム開発や広告制作など多岐にわたる分野で期待がされています。

今回の記事ではAnimateDiffの仕組みについて調べてみようと思います。

AnimateDiffについて

arxiv.org

AnimateDiffの概要

AnimateDiffはStable Diffusionモデルをベースとして拡張することで、動画生成を可能にしたモデルです。Stable Diffusionは、画像生成タスクで高精度な結果をもたらす強力な拡散モデルであり、ノイズの逐次的な除去を通じてデータを再構築するプロセスを特徴としています。(ここら辺は以下の記事で説明しています)

otama-playground.com

AnimateDiffはこのStable Diffusionモデルを拡張し、連続するフレーム間の時間的な一貫性と滑らかさを維持しつつ、高品質なアニメーションを生成する能力を持っています。以下でどのような手法でこれが実現されているかを説明します。

AnimateDiffの特徴

AnimateDiffではStable Diffusionモデルの拡張と学習方法の工夫の二つのアプローチで実現されています。まず、

モデルの拡張

Domain Adapter, Motion Module, Motion LoRAの三種類の拡張を使ってStable Diffusionを動画用に改造します。

Domain Adapter
  • Domain AdapterはいわゆるLoRAです。LoRAと同様の構造を持ちドメイン間の分布の違い(今回でいえば画像用データセットと動画用データセットの質の違い)を埋めるためにStable Diffusionモデルに追加され学習されます。
  • これにより、異なるアニメーションスタイルやフレーム間の一貫性を保ちながら、異なるデータセット間の情報を効果的に統合できるそうです。

※LoRAが何者かがわからない方は下の記事で説明しているのでよかったら読んでみてください。

otama-playground.com

モーションモジュール
  • 時系列の一貫した動きと変化を学習するために、トランスフォーマーを組み込んだモジュールを追加します。これにより、スムーズな動きを実現しています。
  • モーションモジュールはStable Diffusionの各層の後ろに直列に追加されます。
  • このモジュールは5Dに変換された入力を受け取り、筆者が提案するTemporal Transformerで処理を行います。処理を行った後は再度テンソルの形を元に戻して、Stable Diffusionの層に渡します。

Yuwei Guo, Ceyuan Yang, Anyi Rao, Zhengyang Liang, Yaohui Wang, Yu Qiao, Maneesh Agrawala, Dahua Lin, Bo Dai, 2023, AnimateDiff: Animate Your Personalized Text-to-Image Diffusion Models without Specific Tuning, https://arxiv.org/abs/2307.04725

Motion LoRA
  • 端的にいってしまうと、Motion Moduleの層に追加するLoRAです。特に特徴的なこともないです。

学習方法

AnimateDiffは次の3段階でモデルを途中で拡張しながら学習を行います。これにより、画像用に学習されたモデルが持つ空間的情報を利用しながら、段階的に時間軸の情報をモデルに学習させていくことができます。

  1. 各層にDomain Adapterを追加し、追加した部分のみを学習させます。(元モデルのweightは固定)
    • 画像用に学習されたモデルを動画のデータセット用に調整する
  2. 各層にモーションモジュールを追加し学習します。
    • モーションを学習する
  3. (オプショナル)モデルの各層にMotion LoRAを追加し、数本の動画で特定の動きを学習します。

Yuwei Guo, Ceyuan Yang, Anyi Rao, Zhengyang Liang, Yaohui Wang, Yu Qiao, Maneesh Agrawala, Dahua Lin, Bo Dai, 2023, AnimateDiff: Animate Your Personalized Text-to-Image Diffusion Models without Specific Tuning, https://arxiv.org/abs/2307.04725

最後に

AnimateDiffは、Stable Diffusionモデルの強力な画像生成能力を活用しつつ、動画生成を可能にする新たな技術です。Domain Adapter、Motion Module、Motion LoRAなどの拡張と、工夫された学習方法により、高品質なアニメーションを軽量に生成することができるようになりました。今後、このような技術がさらに進化し、より多様なアニメーションスタイルや高精度な動きを実現できるようになることを期待しています。

以下の記事では実際に生成してみた結果を載せているので、良かったら見ていってください。

otama-playground.com

Stable Diffusion周りで読んだ論文は以下の記事でまとめているので、興味ある方はぜひご活用ください。

otama-playground.com