【Automatic1111 on Google Colab】gif2gifとControlNetで動画を作る

先日の記事「【AUTOMATIC1111 on Google Colab】ControlNetを利用して動画を作る」よりもラクそうな方法があったので,その方法で動画を製作してみた.

はじめに

gif2gifという,ControlNetを利用して動画が作れるAUTOMATIC1111の拡張機能があったので,入れて触ってみた.

gif2gifは,Aniamted GIF(アニメーションGIF)画像を直接入力できるので,先日の記事のように動画を画像ファイルに分割する必要がない.出力動画のFPSの調整や,フレーム補間もできるので便利である.

gif2gifのリポジトリ:https://github.com/LonicaMewinsky/gif2gif

なお,本記事はControlNetをAUTOMATIC1111にインストールしていることが前提なので,導入していない場合は,先日の記事[1][2]を参考にインストールすること.

環境

・Win10 PC
・Google Colab
・ffmpeg(MP4動画のGIFアニメーションへの変換に使った.この辺とか見てインストール)
先日使ったノートブックContrlNetは導入しておくこと
・mp4形式の動画(あまり良くないかもしれないが,Windowsキー+Gによりキャプチャ)

方法

FFmpegでMP4をAnimated GIF画像に変換(ローカルで実施した)

以下のコマンドで,mp4の動画をAniamted GIF(アニメーションGIF)画像に変換する.⇒参考サイト

ffmpeg -i 変換したい動画ファイル名.mp4 保存先フォルダ/出力ファイル名.gif

gif2gifをAUTOMATIC1111にインストール

1.先日使ったノートブックのセル内の変数 extension_urlsに 「https://github.com/LonicaMewinsky/gif2gif」を設定する.

上記のノートブックを使わない(paperspaceのwebuiとかでインストールする等)場合は,先日の記事でControlNetをExtensionとして追加した時と同様に,WebUIの起動後に「Extensions」タブを開き「Install from URL」の入力欄にgithubのリポジトリのURL(gif2gifのリポジトリは,https://github.com/LonicaMewinsky/gif2gif)を入力して追加する.

2.セルを上から実行し,いつも通りAUTOMATIC1111 WebUIを立ち上げる.

3.Extensionsタブを開き,Installedにgif2gifがあることを確認

4.「Settings」タブを開き,「Allow other script to control this extension」の項目を探し,チェックを入れる(Ctrl+Fで検索ボックスを開き, “Allow other script to control this extension”で検索するとすぐに見つかる).

5.「Apply settings」ボタンを押し設定を反映する.

画像のSeed値の探索

1.img2imgタブ内のimg2imgタブをクリックする.

img2imgタブ内のimg2imgタブ

2.Animated GIF画像をimg2img2の下のボックスにアップロードする(以下の位置).赤枠を見ながら,WidthとHeightを調整する.Denoising Strengthも適当な値に設定する(要調整.0.35~0.65ぐらいが使われている?).何枚か画像を生成して,良さそうな画像があればSeed値を固定する.良さそうな画像を選択した状態でリサイクルマークを押すとSeed値が表示される.
ちなみに,本記事ではControlNetの有効化は後述する「gif2gifを実行」の中で行っているが,本工程でControlNetを有効にした方がSeed値の探索がしやすいと思われる

入力画像の目付近に入れている黒い線はブログ用の画像を作る際に入れたものであり,入力画像自体には黒い線は無い.
良さそうな画像を選択した状態でリサイクルマークを押すとSeed値が表示される.

gif2gifを実行

1.「Script」の右側のVマークみたいなのをクリックして,gif2gifを選択する.選択すると,gif2gifのメニューが開く.

ScriptとVマーク
gif2gifを選択するとメニュー画面が出る.

2.「Upload GIF」ボタンをクリックし,Animated GIF画像をアップロードする.
※なんかインタフェース変わったみたいで,「クリックしてアップロード」とかになってるかも.

3.正常に読み込まれるとAnimated GIF画像の情報が表示される(Original FPSなどの部分).

その後,Desired FPSInterpolation framesを設定する.Desired FPSは,GIF動画を生成する際のFPSである.Interpolation framesは,フレームから生成した補間画像を各フレームの間に挿入してくれるみたい.得られたGIFを見ながら後で調整すれば良いと思う.

それらのパラメータを変更すると,Actual FPSActual total duration, Actual total framesも変化して,出力される動画の時間やFPSが変わる.

4.ControlNetを設定する.Enableへのチェックと,PreprocessorとModelを選択する.Canvas WidthとCanvas Heightは上記で調整したWidthとHeightと同じ値にする.
※もしかしたら,ControlNetは設定しなくても結果は同じかもしれない.gif2gifが自動的にControlNetを利用しているかも.ただ,後述するがEnableの有無によってボーンの有無が変わることは確認している.

5.Promptを入力し,Generateボタンを押し画像を生成する.

6.生成されたGif画像は,デフォルトの保存先のimg2imgフォルダ内gif2gifフォルダに入っている.

得られたAnimated GIF画像

動きが早いのは,FPSの設定がテキトーだから.

得られたGIF(Denoising Strength=0.5.,Desired FPS=33.3,Interpolation frames=0. )

gif2gifDesired FPSの値を下げれば, ゆっくりになる.あと,ControlNetのEnableのチェックを外すと,ボーンが外れる.Denoising Strengthが小さい方が一貫性はある気がするが,変化が少ない.

得られた動画(Denoising Strength=0.35. Desired FPS=10,Interpolation frames=2. ControlNet “Enable”のチェック無し
得られた動画(Denoising Strength=0.35. Desired FPS=10,Interpolation frames=2. ControlNet “Enable”のチェック有り

まとめ

とりあえず動画はできたが,例によって調整はテキトーなので,キレイにはできてない.

一貫性という観点では,Denoising Strengthの値が重要な気がする.低くすればするほど,入力画像からの変化は少なくなるので,一貫性が上がる.今回の手法で一貫性が高い動画を作成するには,画風を変えるぐらいが限界なのかもしれない.

ControlNetのEnableのチェックを外して良いのかが分からないが,似たような画像が出てるので問題ないのかな?

参考サイト

How to Use gif2gif with Automatic1111’s Stable Diffusion Web UI | kombitz
gif2gif is a script extension for Automatic1111's Stable Diffusion Web UI. It accepts an animated gif as input, process the frames one by one and combines them ...

コメント

タイトルとURLをコピーしました