Stable Diffusion
は画像をいれてAIに再描画させることができるが、基本的には1枚ずつとなる。
バッチ処理もあるのだが、結局複数の静止画データ(png等)を用意する必要があり面倒。
そこで、動画ファイルをそのまま放り込む方法を紹介する。
前提条件としてStable Diffusion
にControlNet
のExtensionがインストールされている必要がある。
これは別記事に譲るので、まだ入れていない人は入れておこう。
またControlNet
の基本的な使い方だけは知っておく必要があるので注意。
ControlNetの詳しい解説!輪郭やポーズから思い通りの絵を書かせる【Stable Diffusion】 | 謎の技術研究部
Preprosessor
やModel
を設定して画像が出せるレベルならOK
今回ご紹介するのは、抹茶もなかさんが開発されているControlNet
向けのスクリプトである。
もととなっているGitHab
は次だが、現在はControlNet
に標準装備されているので別途インストールする必要はない(最新版にすること)
mattyamonaca/sd-webui-controlnet: WebUI extension for ControlNet
抹茶もなかさんのツイッターアカウントは次
抹茶もなか(@GianMattya)さん / Twitter
この場を借りて素晴らしいプログラムに感謝いたします。
少しだけControlNet
の設定が必要。
上でも書いたが最新のControlNet
がインストールされていれば拡張スクリプトは同梱されている。
Stable Diffusion
を起動したら上のSettings
タブから
左側ControlNet
を開いてAllow other script to control this extension
をチェックしておく。
この項目がチェックされていないとエラーで動画ファイルがControlNet
に送られ無いためコンソールにエラーが出る。
この後必ず上部のAppyly settings
を押す。
Web UI
の再読み込みか、すぐ右にあるReload UI
を押して準備完了。
実際に作例を使ってやり方を解説する。
今回は次の動画データを用意した。
ファイル形式はmp4
動画ファイルに関してはどのような形式が利用できるのかといった詳細な内容はよくわかっていない。
とりあえずよくある動画ファイルならいけそうに思えるが、ダメならエンコードが必要かもしれない。
いつも通りtxt2img
タブで行う。
img2img
タブからでもできる。その場合1枚だけ合成するイメージとして利用(全フレームに適用)
AI画像を使って映像データにする場合はフレーム間の整合性がなくなりチカチカとちらつきやすい。
そこで、プロンプト等である程度同一の画像が出るように絞ると良い。
私は次を設定した。
beautiful sunset
とだけ入力Seed
値を1以上に設定して固定(-1
のままだとチラツキやすい)ControlNet
をオンにして設定する。
Enable
をチェックPreprocessor
とModel
を設定今回は他デフォルト。
上でも書いたが、この設定に関してはControlNet
を使って画像を生成したことがある程度の知識は必要。
ControlNetの詳しい解説!輪郭やポーズから思い通りの絵を書かせる【Stable Diffusion】 | 謎の技術研究部
ControlNet
タブの下部にScript(none)
になっている箇所があるので、クリックしてcontrolnet m2m
を選ぶ。
このままだと設定画面が出ないので、下に現れた折りたたみタブをクリックして開く。
するとi2iと同じようになにか画像をドロップするようなUIが出るので、そこに動画ファイルを突っ込めばOK!
あとは通常通り右上のGenerate
ボタンで生成スタート。
コンソールを見てエラーが出ていないかだけ確認しよう。
エラーが出ている場合は殆どの場合は上で書いたControlNet
の設定(Allow other script to control this extension
)をスキップしていると思う。
よくわかってないのだが動画のフレーム数が終わっても延々と画像が出力されることがある。
このスクリプトはDuration
設定だけしか付いていないシンプルなものだが、これが関係しているのかも?
欲しいフレーム数書き出されても実行が続く場合、強制終了したほうが良いかも。
Duration = 10
の設定で動画が2週分書き出されて正常終了を確認(10以下にできない)
他調査中
通常の1枚絵と違って生成結果がUI上で見れるわけではないので注意。
動画ファイルは/stable-diffusion-webui/outputs/txt2img-images/controlnet-m2m/
配下にgif
動画として書き出される。
こちらはファイルサイズが大きくなりがち。
一緒にpng
画像の連番としても書き出されているので、小さくまとめたい場合は自前でpng
連番をエンコードしてやる。
png
が書き出されるディレクトリは/stable-diffusion-webui/outputs/txt2img-images/
これに関しては割りと一般的な処理なので詳しくは書かないがDaVinci Resolve
で結合するときの簡易解説を過去に書いている。
【Stable Diffusion】AI絵をつなげてアニメーションを作る | 謎の技術研究部
最後にDaVinci Resolve
でmp4
で書き出して完成。
チラツキはあるが波紋の輪郭がControlNet
で切り取られて映像に反映されている。
あまり細かい設定はできないが、とにかくサクッと映像化を試したい場合は有効かもしれないので今回紹介した。
是非試してもらえたらと思う。