2023-03-10

【ControlNet m2m】動画を直接Aiに渡す!【Stable Diffusion】

ControlNet m2mというScriptを利用すると簡単に動画を動画として書き出せる。

Article Image

動画データをAI化したい

Stable Diffusionは画像をいれてAIに再描画させることができるが、基本的には1枚ずつとなる。

バッチ処理もあるのだが、結局複数の静止画データ(png等)を用意する必要があり面倒。

そこで、動画ファイルをそのまま放り込む方法を紹介する。

ControlNet必須

前提条件としてStable DiffusionControlNetのExtensionがインストールされている必要がある。

これは別記事に譲るので、まだ入れていない人は入れておこう。

またControlNetの基本的な使い方だけは知っておく必要があるので注意。

ControlNetの詳しい解説!輪郭やポーズから思い通りの絵を書かせる【Stable Diffusion】 | 謎の技術研究部

PreprosessorModelを設定して画像が出せるレベルならOK

開発元

今回ご紹介するのは、抹茶もなかさんが開発されているControlNet向けのスクリプトである。

もととなっているGitHabは次だが、現在はControlNetに標準装備されているので別途インストールする必要はない(最新版にすること)

mattyamonaca/sd-webui-controlnet: WebUI extension for ControlNet

抹茶もなかさんのツイッターアカウントは次

抹茶もなか(@GianMattya)さん / Twitter

この場を借りて素晴らしいプログラムに感謝いたします。

事前準備

少しだけControlNetの設定が必要。

特殊なインストール不要

上でも書いたが最新のControlNetがインストールされていれば拡張スクリプトは同梱されている。

ControlNetの設定

Stable Diffusionを起動したら上のSettingsタブから

Settingsタブ外観

左側ControlNetを開いてAllow other script to control this extensionをチェックしておく。

チェック項目

この項目がチェックされていないとエラーで動画ファイルがControlNetに送られ無いためコンソールにエラーが出る。

この後必ず上部のAppyly settingsを押す。

Apply Settings

Web UIの再読み込みか、すぐ右にあるReload UIを押して準備完了。

やり方

実際に作例を使ってやり方を解説する。

今回は次の動画データを用意した。

ファイル形式はmp4

動画ファイルに関してはどのような形式が利用できるのかといった詳細な内容はよくわかっていない。

とりあえずよくある動画ファイルならいけそうに思えるが、ダメならエンコードが必要かもしれない。

txt2imgタブで

いつも通りtxt2imgタブで行う。

img2imgタブからでもできる。その場合1枚だけ合成するイメージとして利用(全フレームに適用)

プロンプト等

AI画像を使って映像データにする場合はフレーム間の整合性がなくなりチカチカとちらつきやすい

そこで、プロンプト等である程度同一の画像が出るように絞ると良い。

私は次を設定した。

  • プロンプトにbeautiful sunsetとだけ入力
  • 画像サイズを設定(元動画が少し横長なので変更)
  • Seed値を1以上に設定して固定(-1のままだとチラツキやすい)

ControlNetの設定

ControlNetをオンにして設定する。

設定

  • Enableをチェック
  • PreprocessorModelを設定

今回は他デフォルト。

上でも書いたが、この設定に関してはControlNetを使って画像を生成したことがある程度の知識は必要。

ControlNetの詳しい解説!輪郭やポーズから思い通りの絵を書かせる【Stable Diffusion】 | 謎の技術研究部

Scriptを選択する

ControlNetタブの下部にScript(none)になっている箇所があるので、クリックしてcontrolnet m2mを選ぶ。

controlNet m2mの外観

このままだと設定画面が出ないので、下に現れた折りたたみタブをクリックして開く。

折りたたまれた奴

するとi2iと同じようになにか画像をドロップするようなUIが出るので、そこに動画ファイルを突っ込めばOK!

動画ファイルを出す場所

実行

あとは通常通り右上のGenerateボタンで生成スタート。

コンソールを見てエラーが出ていないかだけ確認しよう。

エラーが出ている場合は殆どの場合は上で書いたControlNetの設定(Allow other script to control this extension)をスキップしていると思う。

処理が終わらないことがある

よくわかってないのだが動画のフレーム数が終わっても延々と画像が出力されることがある。

このスクリプトはDuration設定だけしか付いていないシンプルなものだが、これが関係しているのかも?

欲しいフレーム数書き出されても実行が続く場合、強制終了したほうが良いかも。

Duration = 10の設定で動画が2週分書き出されて正常終了を確認(10以下にできない)

他調査中

PNGとgifが保存

通常の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 Resolvemp4で書き出して完成。

チラツキはあるが波紋の輪郭がControlNetで切り取られて映像に反映されている。

あまり細かい設定はできないが、とにかくサクッと映像化を試したい場合は有効かもしれないので今回紹介した。

是非試してもらえたらと思う。



この記事のタグ

この記事をシェア


謎の技術研究部 (謎技研)