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で切り取られて映像に反映されている。
あまり細かい設定はできないが、とにかくサクッと映像化を試したい場合は有効かもしれないので今回紹介した。
是非試してもらえたらと思う。
