Stable Diffusion web UIにAnimateDiffを導入してみたんだ
やっとこさやる気を出してAnimatediffに手を出してみたので記録メモです
ちなみにweb UIはバージョン1.10.0で日本語化済み PCはRTX3060 Laptop(VRAM6GB)です
インストールとセッティング
Stable Diffusion web UI (AUTOMATIC1111)を起動します
拡張機能リストの画面で"animatediff"を検索し "sd-webui-animatediff"をインストールするか URLからインストールのタブで"https://github.com/continue-revolution/sd-webui-animatediff.git"を入力してインストールします
次にここ↓からモデルファイルをダウンロードします
https://github.com/continue-revolution/sd-webui-animatediff/blob/master/README.md#model-zoo
自分はとりあえずこれ↓を使います
SDXL用のモデルファイルはこちら 今回は使わないです
モデルファイルは以下のフォルダに入れます
\stable-diffusion-webui\extensions\sd-webui-animatediff\model
一度再起動します
Generationタブの下の方 拡張機能のところにAnimatediffが追加されます
とりあえず何か作ってみる
使ったモデルはdreamshaper_8です
サイズは512×512のデフォルト
テストなのでプロンプトは単純に"dancing cat"として ネガティブプロンプトは入れません
今回は2秒のgif動画にしたいと思うので Animatediffのパラメータをそのように設定してから 生成を押します
できました
うーんなんとも言えない
でもとりあえずできたね よかったね
ちなみに生成されたファイルは以下のフォルダに入っています
\stable-diffusion-webui\outputs\txt2img-images\AnimateDiff
各パラメータについて
詳細は公式を参照してください
今回の設定にそって軽く説明します
・Enable Animatediff
チェックを入れて有効にします
これをしないと動画ができません
・Motion module
さきほど入れたモデルです
"mm-stabilize_high.pth"を選びました
・Save format
保存形式です GIFを選びました
ちなみにWEBPやPNGを選ぶと全フレームの画像ファイルを保存できます
TXTはプロンプトやらサンプラーやらseed値やらの情報が保存されたテキストファイルです
・Number of frames
フレーム数です
全体の画像の枚数のことです
後述のfpsを8にして2秒の動画を作りたかったので フレーム数は16にしました
・FPS
フレームレートです
1秒間に何フレーム表示するのかという設定です 動画の滑らかさに影響します
今回のフレームレートはデフォルトの8です
・Display loop number
gifが再生される回数です 0にすると無限ループします
デフォルトの0にしました
・Context batch size
モーションモジュールに一度に渡されるフレームの数だそうです
SDモデルは16フレームでトレーニングされているそうなので16がいいみたいです(SDXL用のhotshotというモデルは8フレームらしいです)
デフォルトの16にしました
・Closed loop
"この拡張機能が最後のフレームを最初のフレームと同じにしようとすることを意味します" だそうです
N ループなし フレーム数がコンテキストバッチ以下の場合これしか選択できません
R-P コンテキストの数を減らそうとします プロンプトトラベルはクローズドループに補間されません
R+P コンテキストの数を減らしつつプロンプトトラベルを補間します
A 拡張機能が積極的に最後のフレームと最初のフレームを同じにしようとします プロンプトトラベルは補間されます
という感じです よくわかりませんね あとプロンプトトラベルについては後述
とりあえず今回はデフォルトのR-Pにしました
・Stride
"動画のフレームの間隔を2の累乗で設定するパラメータです フレーム数がコンテキストバッチサイズを超えるときに有効になります 特にControlNetが有効な場合や動画フレーム数がコンテキストバッチサイズを超えている場合に機能します"
だそうです よくわかりませんね
値を大きくすると動きがカクカクします
デフォルトの1にしておきました
・Overlap
"コンテキストで重複させるフレーム数 オーバーラップが -1の場合 オーバーラップは 'コンテキストバッチサイズ ÷ 4' になります"
だそうです よくわかりませんね マジでわからん
デフォルトの-1にしておきます
・Frame Interpolation
FILMを選ぶと拡張機能のDeforumを使ってフレーム間を描いてくれるそうです
自分はDeforum入れてないのでOffにします
・Interp X
"各入力フレームをX個の補間された出力フレームに置き換えます"
だそうです よくわかりませんね
とりあえずデフォルトでいきました
・Video source
V2V用のソースを入れる場所です 使用する場合はcontrolnetをオンにするそうですが
今回はそんな複雑なことはしないので使いませんでした
・FreeInit
FreeInitを使用してビデオの時間的一貫性を向上させます
ここはまた細かい設定があるようですが はい わかりません
だいたい以上です
見ての通り自分にはよくわからない部分が多いのですが 使えりゃいいんだよ! の精神です
プロンプトトラベルについて
上の方法だと ダンス とか 歩く とか一種類のアニメーションしかできませんが プロンプトトラベルを使うと別の動きを付け加えることができます
通常のプロンプト欄に入力すればいいのですが 書き方があります
今回使うプロンプトはこんな感じ
"1girl, dance, pink hair, yellow eyes, pink dress, stage, masterpiece, bestquality, ultradetailed
0: open eyes
6: one eye closed
18: open eyes
smile"
一行目はいつものやつですね 基本情報を入れます
二行目からは
"アニメーションを変え始めたいフレーム数: 内容"
になります
最後の行はオプションのtail promptです 特に指定がないなら書かなくてもいいです
このプロンプトで作ったのが以下です(モデルはAnything ink base)
ウィンクしてくれました やったね
以上 自分なんかにもできた! animatediff導入! でした
おわり