画像1枚から動画を生成するAI「AnimateDiff」 DreamBoothやLoRAなどにも対応
https://www.techno-edge.net/article/2023/07/17/1603.html#animatediff
「この研究では、どんなパーソナライズドされたText-to-Imageモデルに対してもアニメーション画像を生成できるようにするための手法「AnimateDiff」を提案します。AnimateDiffは、モデル固有のチューニング作業を必要とせず、静止画像1枚から外観の一貫性を保持した短い動画を生成します。
この手法では、ベースとなるText-to-Imageモデル(例えば、Stable Diffusion)を使用し、Motion Modeling Moduleを動画データセットで学習し、モーションプリオールを抽出します。この段階では、Motion Moduleのパラメータのみが更新され、ベースのText-to-Imageモデルの特徴空間は保持されます。
一度訓練されたモーションモジュールは データ収集やカスタマイズされたトレーニングのための更なる努力をすることなく、ベースとなったText-to-Imageモデルに対応する全てのパーソナライズされたText-to-Imageモデル(DreamBoothやLoRAなど)をアニメーション化します。」
ということで、t2iのモデルを動画に効率的に直すモデルのようです。
論文
AnimateDiff: Animate Your Personalized Text-to-Image Diffusion Models without Specific Tuning
Yuwei Guo, Ceyuan Yang, Anyi Rao, Yaohui Wang, Yu Qiao, Dahua Lin, Bo Dai
https://arxiv.org/abs/2307.04725
プロジェクトページ
AnimateDiff: Animate Your Personalized Text-to-Image Diffusion Models without Specific Tuning
https://animatediff.github.io/
実装
https://github.com/guoyww/AnimateDiff
引用:https://animatediff.github.io/
「提案されたフレームワークの核心は、凍結された基盤のテキストから画像へのモデルに新しく初期化されたMotion Modeling Moduleを追加し、その後ビデオクリップでトレーニングして合理的な動作の事前モデルを抽出することです。一度トレーニングされると、このMotion Modeling Moduleを単に注入するだけで、同じ基盤から派生したすべてのパーソナライズされたバージョンが、多様でパーソナライズされたアニメーション画像を生成するテキスト駆動モデルに容易になります。」
詳しい解説はなかったので、論文をみます。
「私たちは、AnimateDiffという効果的なフレームワークを提案します。これは、モデル固有の調整なしにパーソナライズされたテキストから画像(T2I)モデルをアニメーションジェネレーターに拡張するものです。大規模なビデオデータセットから動きの事前モデルを学習した後、AnimateDiffはユーザーによってトレーニングされたか、またはCivitAI [4]やHuggingface [8]のようなプラットフォームから直接ダウンロードされたパーソナライズされたT2Iモデルに挿入することができ、適切な動きを持つアニメーションクリップを生成します。」
モデルの調整なしに、アニメータージェネレーターに拡張するために、モーションモジュールを入れ込むだけでできるようです。
パーソナライズされた生成モデルのアニメーションに関する類似研究
「パーソナライズされたT2Iアニメーション。このレポートで提案された設定は新しく、現在それを対象とした研究はほとんどありません。既存のT2Iモデルに時間構造を拡張してビデオ生成を行うことは一般的な実践ですが、既存の研究[7, 12, 15, 28, 31, 33]はネットワーク内のすべてのパラメーターを更新し、元のT2Iモデルのドメイン知識を損ないます。最近、いくつかの研究がパーソナライズされたT2Iモデルのアニメーションへの応用を報告しています。例えば、Tune-a-Video [31]は、わずかなアーキテクチャの変更とサブネットワークの調整を通じて、ワンショットビデオ生成タスクを解決します。Text2Video-Zero [15]は、事前定義されたアフィン行列を与えられた潜在ラッピングにより、事前訓練されたT2Iモデルをアニメーション化するトレーニングフリーの方法を導入します。私たちの方法に近い最近の研究はAlign-Your-Latents [3]で、これはT2Iモデル内の別々の時間レイヤーをトレーニングするテキストからビデオへの(T2V)モデルです。私たちの方法は、単純化されたネットワーク設計を採用し、多くのパーソナライズされたモデルに対する広範な評価を通じて、このアプローチラインの有効性を検証します。」
具体的な方針です。
「パーソナライズされた画像モデルをアニメーション化するには、通常、対応するビデオコレクションとの追加の調整が必要で、これははるかに困難です。このセクションでは、パーソナライズされたアニメーションを対象とし、以下のように正式に定式化します:パーソナライズされたT2Iモデル(例えば、ユーザーによってトレーニングされた、またはCivitAI [4] やHuggingface [8] からダウンロードされたDreamBooth [24] やLoRA [13] のチェックポイント)が与えられた場合、目標はそれをトレーニングコストがほとんどまたは全くないアニメーションジェネレーターに変換することであり、元のドメイン知識と品質を保持します。たとえば、T2Iモデルが特定の2Dアニメスタイルにパーソナライズされている場合、対応するアニメーションジェネレーターは、前景/背景のセグメンテーション、キャラクターの身体の動きなど、適切な動きを持つそのスタイルのアニメーションクリップを生成できるようにする必要があります。」
ということで、結構難しいみたいですが、方法を見てみます。
「ネットワークインフレーション。元のSD(Stable Diffusion)は画像データバッチしか処理できないため、モデルの拡張が必要となります。これにより、私たちのMotion Modeling Moduleと互換性を持たせます。このモジュールは、バッチ×チャンネル×フレーム×高さ×幅の形状を持つ5Dビデオテンソルを入力として取ります。これを達成するために、私たちはVideo Diffusion Model[12]に似たソリューションを採用します。具体的には、元の画像モデルの各2D畳み込み層とattention層を、フレーム軸をバッチ軸に再形成し、ネットワークが各フレームを独立して処理できるようにすることで、空間のみの擬似3D層に変換します。上記とは異なり、新しく挿入されたモーションモジュールは、各バッチ内のフレーム間で動作し、アニメーションクリップの動きの滑らかさと内容の一貫性を実現します。詳細は図3に示されています。」
「図3. モジュールの挿入(左):私たちのモーションモジュールは、事前訓練された画像層の間に挿入されます。データバッチが画像層と私たちのモーションモジュールを通過する際に、その時間的および空間的軸はバッチ軸に別々に再形成されます。モジュールのデザイン(右):私たちのモジュールは、ゼロ初期化された出力プロジェクト層を持つvanilla temporal transformerです。」
事前学習された画像層の後にレイヤーが挿入されるようです。
「モジュールデザイン。私たちの動きモデリングモジュールのネットワークデザインにおいて、フレーム間で効率的な情報交換を可能にすることを目指しています。これを達成するために、私たちはバニラの時間的トランスフォーマーをモーションモジュールの設計として選びました。私たちは他のネットワークデザインも動きモジュールについて実験してきましたが、バニラの時間的トランスフォーマーが動きの事前知識をモデル化するのに十分であることが分かりました。より良いモジュールの探索は将来の研究に委ねられます。
バニラの時間的トランスフォーマーは、時間軸に沿って動作するいくつかのself attentionブロックから構成されています(図3)。私たちのモジュールを通過する際、特徴マップ \( z \) の空間次元の高さと幅は最初にバッチ次元に再形成され、結果としてフレームの長さに対応するバッチ × 高さ × 幅のシーケンスになります。再形成された特徴マップはその後、投影され、いくつかのself attentionブロックを通過します。これは以下のようになります。」
vanilla(元のモデルのまま)ということなので、pureなトランスフォーマーモジュールに、今回のモジュールを通ったデータが入力されて計算されるそうです。
「この操作により、モジュールは時間軸を通じて同じ位置の特徴間の時間的依存性を捉えることができます。私たちのモジュールの受容野を拡大するために、U字型拡散ネットワーク(おそらくU-Net)の各解像度レベルにそれを挿入します。さらに、self attentionブロックに正弦波位置エンコーディング[30]を加え、ネットワークがアニメーションクリップ内の現在のフレームの時間的位置を認識できるようにします。トレーニング中に有害な影響を与えずに私たちのモジュールを挿入するために、時間的トランスフォーマーの出力投影層をゼロで初期化します。これはControlNet [32]によって検証された効果的な実践です。」
「私たちの動きモデリングモジュールのトレーニングプロセスは、潜在拡散モデル[22]に似ています。まず、サンプリングされたビデオデータは、、事前訓練されたオートエンコーダを介してフレームごとに潜在コードにエンコードされます。その後、潜在コードは定義された前方拡散スケジュールを使用してノイズ化されます。私たちきモジュールで拡大された拡散ネットワークは、ノイズ化された潜在コードと対応するテキストプロンプトを入力として受け取り、L2損失項によって奨励される潜在コードに追加されたノイズの強度を予測します。」
ということでした、全体的な構成としては一般的な拡散モデルと同じようですが、今回はモーションモジュールの差し込みによって動画が作成されているという仕組みでした。以上です。