ForgeだとA1111のAnimateDiffをインストールしても使用することができません。
ForgeでAnimateDiffを使用するには、Forge専用の拡張機能をインストールする必要があります。
今回はForgeでAnimateDiffを使う方法について解説します。
SDWebUI Forgeとは?
Forgeは、lllyasvielさんによって開発された新しいStable DiffusionのUIです。
自動でPC環境に最適化し、SDXLなどの生成速度が向上しています。
また最初からさまざまな機能がついているため、幅広い画像生成が可能です。
・インストールはこちら
AnimateDiffとは?
AnimateDiffは、txt2movやmov2movで動画が生成できるツールです。
WebUI用の拡張機能を作った方がいるため、それをインストールすればWebUI上で動かすことが可能。
プロンプトをフレームごとに指定したり、ControlNetと併用したりして、一貫性の高い動画が作れます。
SDWebUI ForgeでAnimateDiffをインストール
Forge用のAnimateDiffは以下のURLでインストールできます。
https://github.com/continue-revolution/sd-forge-animatediff.git
Extensions→Install from URL→URL for~に下記URLを入力し、Installボタンをクリックしてください。
リスタート、再起動すればインストール完了です。
AnimateDiffの使い方
モデルの導入
AnimateDiffを使用するためにモーションモジュールが必要です。
以下のリンクからいずれかをダウンロードしてください。
- mm_sd_v14.ckpt
- mm_sd_v15.ckpt
- v3_sd15_mm.ckpt
それぞれの違いについては公式サイトにて確認できます。
また他にもいくつかモーションモジュールがあるので、興味がある方は探してみてください。
ダウンロードしたファイルは以下のパスに置きます。
C:\stable-diffusion-webui-forge\extensions\sd-forge-animatediff\model
AnimateDiffのパラメータを設定
txt2imgにAnimateDiffというタブが追加されているので、そちらを開きます。
使用するモーションモジュールを選択して、Enable AnimateDiffにチェックを入れます。
その他のパラーメータは以下の通りです。
Motion module | 使用するモーションモジュール |
Save format | 保存形式 |
Number of frames | 動画のフレーム数(長さ) |
FPS | 1秒に使用する画像の枚数 |
Display loop number | ループ回数 |
Closed loop | ループの設定 |
Context batch size | 一度に処理するフレームの値 |
Stride | 値に合わせて動きも大きくなる |
Overlap | フレームの重なりをどれくらいにするか |
Frame Interpolation | フレーム補間の有無 |
Interp X | フレームレートを補間 |
上記以外に動画を取り込んでAI化することも可能です。
よくわからなければ以下3つだけ設定すればOKです。
- Motion module
- Save format
- Number of frames
今回Number of framesは32、FPSはデフォルトの8にしました。
32枚の画像で動画を作り、1秒間に8枚使用するので、動画の長さは4秒となります。
プロンプトの書き方
普通書く方法と、フレームごとに指定する方法があります。
普通に書く場合は「1girl, dancing」のように表現したい内容を入力するだけです。
フレームごとに指定する場合は、以下のように書きます。
1girl, school uniform, portrait
0: closed eyes
8: open eyes
16: smile
31: grin
class room
数字でフレーム数を指定し、コロンの後に半角スペースを入れてプロンプトを指定しています。
1行目はそれぞれの行頭に追加するものです。
0フレーム目: 1girl, school uniform, portrait, closed eyes
8フレーム目:1girl, school uniform, portrait, open eyes
~
最後の行はそれぞれの行末に追加するものです。
0フレーム目:1girl, school uniform, portrait, closed eyes, class room
8フレーム目:1girl, school uniform, portrait, open eyes, class room
~
前後が違うだけで、どちらも全体に反映されるプロンプトになります。
なお、フレーム数を指定する場合にいくつか注意点があります。
- コロンの後に半角スペースを入れる
- 指定できるのはNumber of framesで指定した数の-1まで(32なら31まで)
- Dynamic Promptsは併用できない
3のDynamic PromptsについてはONにしてても動画は生成できますが、フレームごとに指定したプロンプトが反映されません。
フレームごとにプロンプトを指定する場合は、必ずオフにしてから実行してください。い。
これでGenerateを押すとこんな動画ができます。
Save formatでPNGにチェックしておけばフレームごとの画像が全て保存されるので、指定したプロンプトがしっかり反映されてるか確認もできます。
ForgeでAnimateDiffを使うメリットは?
使用感はほぼ変わりませんが、hires.fixを使ったときの生成速度が異なります。
A1111でAnimateDiffとhires.fixを同時使用すると非常に生成が遅くなるため、hires.fixは非推奨とされていました。
ただForgeだとhires.fixを使用してもそこまで大きな遅延がありません。
同じプロンプト・パラーメータで比較したところ、約2倍Forgeの方が早かったです。
A1111:14 min. 8.6 sec
Forge:7 min. 25.7 sec
若干の違いはありますが、結果もほぼ同じでした。
AnimateDiffとHires.fixを併用したい方は、Forgeの方がいいかもしれません。
SDWebUI ForgeでAnimateDiffを使う方法まとめ
今回はSDWebUI ForgeでAnimateDiffを使う方法について解説しました。
ForgeでAnimateDiffを使いたい方は、専用の拡張機能をインストールしていろいろ試してみてください。
参考になれば幸いです。