Stable Diffusionで動画生成AnimateDiff

本記事ではStable Diffusionで動画を生成する際に、最も有効な手法であるAnimateDiffの使い方について解説します。本記事では次のような疑問や要望について回答する記事となっております。

  • AnimateDiffのインストール方法について知りたい。
  • テキストから動画生成したい。
  • AnimateDiffにControlNetを併用して動画を生成したい。

AnimateDiffとは?アニメーション生成ツール

AnimateDiffはテキストから動画を生成できる技術です。Motion Moduleという動画データを学習させたパラメータとStable Diffusionを使うことでテキストから動画を生成することを実現しています。

2023年7月に発表された研究にも関わらずStable Diffusion Web UIでも拡張機能があったりと技術発展の速さを実感するような研究になっています。

AnimateDiff: Animate Your Personalized Text-to-Image Diffusion Models without Specific Tuning
With the advance of text-to-image (T2I) diffusion models (e.g., Stable Diffusion) and corresponding personalization tech...

Animate Diffのメリット・デメリット

Animate Diffのメリット

  • お手軽: Animate Diffの使い方はとても簡単なのでお手軽に動画生成ができます。
  • テキストから動画を生成できる: 他の手法はフレーム間の一貫性を保つために参照する動画が必要となりますが、Animate Diffは一貫性を保つためのモデルを使うことで参照する動画がなくても動画を生成することができます。
  • ちらつきのない高品質な動画が生成できる: ControlNet M2Mなどの他の手法では動画のちらつきが多くなりますがAnimate Diffだとちらつきのない高品質な動画が生成できます。またControlNetを併用することで動画の変換も可能となっております。

Animate Diffのデメリット

  • 高性能なPCが必要: Animate Diffを利用するには高性能なPCが必要となります。

Animate Diffで生成した動画のサンプル

具体的な使い方を紹介するまえにどのような動画が生成できるかを紹介します。海を歩く美女をテーマにしたプロンプトを入力した生成した動画です。ちらつきがなく滑らかな動画が生成されていることが確認できます。

AnimateDiffの推奨スペック

AnimateDiffのスペックはVRAM~12GB程度とされています。12GBあると動きますがそれ以下になると動作が確認できないという意味です。本記事ではRTX 3080 Ti(16GB)を使って試します。

AnimateDiffインストール方法

Stable Diffusion Web UIにインストール

sd-webui-animatediffを検索してインストールします。具体的な手順は次の通りです。

  1. Extensionsタブへ切り替え
  2. Load fromでプラグインの一覧を取得
  3. animatediffで検索
  4. Installをクリックしてインストール

sd-webui-animatediffがインストールされていることを確認して再起動しましょう。

AnimateDiffのモデルのダウンロード

animatediffにはmotoinモデルという動きを推論するモデルが必要となります。モデルはCivitaiで公開されています。以下のページからモデルをダウンロードしましょうう。今回はv1.5 v2をダウンロードしました。ダウンロードされたファイルは”animatediffMotion_v15V2.ckpt”です。

AnimateDiff Motion Modules – v1.5 v2 | Stable Diffusion Motion | Civitai

AnimateDiffのモデルを配置する

“animatediffMotion_v15V2.ckpt”を”stable-diffusion-webui/extensions/sd-webui-animatediff/model”に配置します。

AnimateDiffの基本的な使い方

AnimateDiffは少ない設定で利用できるので使い方は簡単です。

txt2imgのときと同様に生成したい動画のプロンプトを入力します。今回は次のように設定しました。

プロンプト: (8k, RAW photo, best quality, masterpiece:1.2), (realistic, photo-realistic:1.4), (extremely detailed 8k wallpaper), (white plain bikini: 1.5), Japanese actress walking on the beach.

ネガティブプロンプト: EasyNegative, (worst quality, low quality: 2.0), normal quality, ugly face, unclear eyes, bad mouth, bad anatomy, extra legs, beach, bad anatomy

解像度などを設定したい場合は設定してください。今回は512×768にしました。

AnimateDiffのメニューを開きます。Motion moduleが空欄になっていたら更新マークを押してモデルを読み込みます。あとはEnable AnimateDiffにチェックを入れてAnimateDiffを有効化します。

後はtxt2imgの時と同様にGenerateをクリックして動画を生成しましょう。

生成時間は3秒程度の動画で3分ぐらいかかります。

AnimateDiffとControlNetを併用して実写動画をアニメ動画に変換

AnimateDiffはControlNetを利用して、動画から動画を生成するm2mのようなこともできます。

AnimateDiffとControlNetを併用する
  • 1/3
    AnimateDiffの設定

    まずはAnimateDiffを次のように設定します。参照する動画をセットして、そのあとにFPSを設定しましょう。FPSは1秒あたりのフレーム数のことで動画をセットするとそれと同じFPS(20~50)が設定されるのですが、処理が重たいので4~8ぐらいに設定するのをおすすめします。

  • 2/3
    ControlNetの設定

    ControlNetのメニューを開いて設定を行います。画像はセットしないでください。Enableにチェックを入れてControl Typeを設定します。今回はLineartを選択しました。PreprocessorとModelが意図したものになっているかを確認します。

  • 3/3
    プロンプトと解像度などを調整して生成

    最後にプロンプトや解像度を調整すると参照動画をもとに動画が生成されます。7秒の動画(FPS:4)でで1時間10分生成するのに時間がかかりました。今回はアニメ動画を作成したいのでAnythingv5にモデルを切り替えてます。

作成した動画は次の通りです。

FAQ

Animate Diffの速度の改善方法はないの?

Animate Diffは--opt-sdp-attentionオプションをStable Diffusion Web UIの起動コマンドに適用することで省メモリ化と時間効率化の両面で改善することができます。似たようなオプションとしてXFormersの方がメジャーでしたがAnimate Diffは対応しておりません。そのため--opt-sdp-attentionを利用することをおすすめします。具体的な使い方については次の記事で解説しています。

コメント