Ebsynth Utilityでアートを生み出す: ステップバイステップのチュートリアル

2024年2月13日

広告

環境整備

Stable DiffusionでEbsynth Utilityを使う為に、いくつかの外部ソフト利用しています。
こちらで環境を整えてから、チュートリアルを始めてください。

使用する拡張機能

キャラクターを制御する為に、ControlNet v1.1.438 を使用しますので、導入がまだの方は こちらのサイトからコードをコピーして拡張機能タブのリポジトリのURLからインストールを行ってください。

張り付けるコード ( https://github.com/Mikubill/sd-webui-controlnet.git )

ControlNet の設定

コントロールネットの設定を変更していきます。

デフォルトでは検出されたマップの自動保管機能がoffに設定されていますので、この設定をONに変更する必要が有ります。

変更方法はStable Diffusionの設定タブ(settlings)タブのControlNetをクリックして設定画面を表示させます。

矢印のMulti-ControlNet: ControlNet unit number (requires restart)の設定を2
モデルのキャッシュサイズ (再起動が必要)Model cache size (requires restart)の設定を2へ変更します。

次に、検出されたマップの自動保存を許可(Allow detectmap auto saving)のチェックを入れ、設定を適用させます、念のため、UIの再読み込みをして再起動させます。

以上で環境が整いました。

Ebsynth Utilityの操作方法

画像をアニメーションにするには、沢山の画像が必要になります、生成される画像を全て保存していてはすぐにドライブが一杯に成ってしましますので、設定で(画像/グリッド画像の保存Saving images/grids)(ディレクトリへの保存Saving to a directoryStable Diffusion)の画像をサブディレクトリに保存するSave images to a subdirectory のチェックを外すか、不要な画像をこまめに削除するようにしてください。

今回使うEbsynth Utilityの作業用フォルダにも沢山の画像が出力されて行きますが、最終的には生成された動画ファイル以外は全て削除しますので、その点は、ご安心ください。

では 作業用のフォルダ作成から初めていきます。

作業用フォルダーの新規作成

作業用に使うフォルダーを好きな所に作ってください、ただし パスが半角英数字になるようにしてください、ここではDドライブにanimeと言う名前で、新しいフォルダを作成しました。

複雑に入り込んだ所にファイルを置くと、ファイルにたどり着くのが面倒なので、その場合はショートカットなどをデスクトップに張り付けるなどをしておいてください。

では、Stable Diffusionの画面から、操作を行って行きます。

stage1

作業内容

ステージ1
ファイルの指定と画像サイズ設定
ここでは、ビデオのすべてのフレームとすべてのフレームのマスク画像が生成されます。

Stable DiffusionのEbsynth Utilityタブを開くとstage1~stage8までのステップ表示がされます。このステップを踏んで行く事で自然に出来上がる構成に成って居ます。

第一ステップは作業フォルダーのパス指定と参考動画の指定を行います。

先ほど作った作業用フォルダーのパスを、Project directory に張り付けます、貼り付け方は空の作業用フォルダを開いてアドレスバーをクリックしてキーボードの(CTRL+C)でコピー (CTRL+V)でペーストします。
Original Movie Pathにも 動画のパスを入れる、又は動画ファイルをドロップして記載します。

フレームサイズとその他

configurationタブを選択し、フレームの幅と高さを設定します。 -1は元の動画サイズを意味します

ターゲット(Mask Target)には 女の子や犬・猫などを記載します。今回はgirlと記載

生成(Generate)

設定が終わりましたら、生成ボタンを押します。

作業用フォルダ内にvideo_frameフォルダが現れ、その中に画像ファイルが生成されます

もう一つ現れた video_maskフォルダにはマスク画像が生成されます

stage2

作業内容

stage2では、フレーム内から動きの有るフレームを抜き取る作業を行います。 キーフレームの間隔は、動きが多い場所では短く、動きが少ない場所では長くなるように選択されます。
アニメーションが壊れる場合はキーフレームを増やし、ちらつく場合はキーフレームを減らします。

configurationタブの中のstage2を選択すると、フレーム間隔の設定画面が標示されます。

stage2タグの最小キーフレーム間隔はデフォルトでは10と成って居ますが、
仕上がりは少しカクカクしますのでもう少し少なくした方が良さそうです、今回は、半分の5に設定します。

最大キーフレーム間隔は300→10に変更 。動きが無い場合はこちらが優先されるようです。

「デルタ フレーム エッジのしきい値」は、フレーム間のエッジの変化を検出するためのしきい値、つまり、どの程度のエッジの変化をエッジとして検出するかを設定する値、と解釈できます。つまり 変化度合いのパラメーターといえます。

設定が終わればstage2にチェックを入れて生成してください。

作業用フォルダにvideo_keyフォルダが出現し、抽出されたキーフレームがフォルダに保管されます。

あまり、動きのない動画ですので 10フレーム間隔で抽出されました。

stage3

作業内容

ステージ3(GitHub – s9roll7/ebsynth_utility)参照

キーフレームを1つ選択してimg2imgに投げて、画像生成を実行します。
Taggerなどで表示されたプロンプトからぼかしなどの不要な単語を削除します。
残りの設定は、通常画像生成の場合と同様に入力します。

stage3はimg2img で作業を行いますが、まずは生成ボタンを押してください。

生成ボタンの下に、設定に関する情報が表示されます。

内容を翻訳するとこの様になります。

stage 3

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1. img2imgタブに移動します。

2 スクリプトコンボボックスで [ebsynth utility] を選択します。

3「プロジェクトディレクトリ」フィールドに[D:\anime]と入力します。

4「マスクモード(img2img マスクモードを上書き)」の項目を[通常]で選択します。

5「幅」フィールドに[960]を入力することをお勧めします。

6「高さ」フィールドに[512]を入力することをお勧めします。

7「ノイズ除去の強さ」欄には0.35未満の数値を入力することをお勧めします(controlnetを併用する場合は、大きな値を入れることができます、1.0でも可能です)。
8. img2img の残りの設定フィールドに入力します。画像やマスクの設定は必要ありません。(下の詳細で確認してください。)
9.任意の画像をimg2imgのメイン画面にドロップします。これはエラーを回避するために必要ですが、img2imgの結果には影響しません。
10. 生成
画像は[D:\anime\img2img_key]に出力されます
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

では、上記の指示通りに作業を行います。

スクリプト設定

img2imgタブに移動して、スクリプトの中のebsynth utilityを選択します。
プロジェクトデレクトリーには作業用フォルダのパスを入れます。

補足と、その他の設定に付いて。

  1. マスクモード
    • Normal デフォルト設定のまま。
  2. 画像の幅と高さ
    • 指示通り 幅を960、高さ512に変更
  3. ノイズ除去強度Denoising strength
    • 今回は、コントロールネットを使用するので 0.9~1に上げる、画像のバランスが改善します。
  4. プロンプトの入力
    • Taggerでタグを書き出します、Stable DiffusionのバージョンアップでTaggerが使えなくなっています。再インストるをするか、自力で記載してください。再インストールの方法はこちら
  5. ネガティブプロンプト
    • EasyNegativeV2などの定番プロンプトと 生成させたくない物を記載する。
  6. ControlNet0 を有効にする
    • コントロールネットの有効にチェックを入れ、OpenPoseにチェックを入れる
    • プリプロセッサPreprocessorにはdw_openpose_fullを選択
    • Upload independent control imageをチェックを入れ、画像をドロップする
    • コントロールウェイトの値を若干下げる 0.8~0.6程度
  7. ControlNet1を有効にする
    • コントロールネットの有効にチェックを入れ、Tile/Blurにチェックを入れる
    • プリプロセッサPreprocessorにはtile_resample(デフォルト)
  8. 先ほど、抽出された画像を一つ img2img 内に ドロップしてください。
    • どの画像でも問題は有りません、どの様な画像を生成させるかを決める工程です
  9. 画像の品質に満足したら seedを固定します
  10. checkpointの選択
    • アニメ画像を実写調にする場合は注意が必要です。

その他の設定

特に変更するところは無いのですが、ControlNetオプションの重量制御と書かれている所は0.5と0.34に変更しています。

分かりやすくする為に、日本語に翻訳していますので、なんとなく、想像が付くと思います。

img2Imgリピート回数(ループバック):1~5

何回繰り返すかの設定ですが、抽出された画像のみ適応されるのか、全体に適応されるのかが今の所、不明です。
外部ソフトで中間のフレームを繋ぎ合わせるので意味が無いのかもしれません。

自動タグ付け (検証中)

deepdanbooruに変更すれば、すべてのキーフレームにdeepdanbooruによる自動タグ付けが行われます。

CLIPに変更すれば、すべてのキーフレームにCLIPによる自動タグ付けが行われます。

画像の書き出し作業

設定は終わりです、いよいよ画像の書き出しです。
書き出す前に一応、ControlNetに張り付けた画像を消去して下さい。
ここの画像はControlNetで制御され、入れ替わるので不要です。

では、生成を始めてください。

作業用フォルダにimg2img_keyが出現して、生成された画像が保管されていきます。

※注意:オプションを使う場合、GPUメモリーが不足して動かない場合が有ります。

メモリーは最低12GBは欲しいです、8GBでも時間を掛ければいけるかも知れませんが12GBのメモリーで今回の動画生成に1時間40分かかっています。最近3000番台のビデオボードが3万円台で手に入れられるようになりましたので、12GBのビデオボードに乗せ換えてチャレンジしてみてください。
ちなみに 12GBの3080Tiを使用していますが、オプション設定をすると、止まります、16GB塔載の4080が欲しくてたまりません!😂

stage3.5

Stage3.5色補正を追加(オプション)

生成された画像の色修正を行うことが出来ます。
日本語訳が少し可笑しいですが、説明します。

mg2img 結果の最初のフレームにチェックが入っていますが、「mvgdの」と「MKLの」はフレーム毎に少しづつ変化して行きましたので、最終フレームの結果をお見せします。

「うーん」元は「hm」でした。

画像

お好みで変更してみてください。

stage4

このstageは省略が可能です、必要が無ければ飛ばしてください。

拡大または縮小

拡大または縮小して、元のビデオとまったく同じサイズにする場合に使用します
生成を押すと。

stage 4

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
次の項目
を有効にします 設定 ->
画像/グリッドの保存 ->
その他タブでバッチ処理をする際、元のファイル名を出力ファイル名に使う

extrasタブのバッチ処理中に出力ファイル名に元の名前を使用
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  1. D:\animeに「img2img_upscale_key」ディレクトリがすでに存在する場合は、手動で削除してから実行してください。
  2. エクストラタブに移動します
  3. [ディレクトリ]タブから[バッチ]に移動します
  4. 「入力ディレクトリ」欄に[D:\anime\img2img_key] と入力します
  5. 「出力ディレクトリ」フィールドに[D:\anime\img2img_upscale_key] を入力します
  6. Scale to tab (スケールをタブ に変更)]に移動し、「幅」フィールドに [1920]「高さ」フィールドに[1080]と入力します
  7. アップスケーラーの残りの構成フィールドに入力し。
  8. 生成

stage5

設定するものは何もありません。

ebs用ファイル生成

生成ボタンを押すとebs ファイルが生成されます。

stage5

img2img_upscale_key_path : no such dir D:\anime\img2img_upscale_key
The size of frame and img2img_key matched. use D:\anime\img2img_key instead
exported : 20240128-124711_00000.ebs
exported : 20240128-124711_00001.ebs
exported : 20240128-124711_00002.ebs
exported : 20240128-124711_00003.ebs
exported : 20240128-124711_00004.ebs

completed.

作業用フォルダに保管されていますので、外部ソフトEbSynth-Beta-Winを立ち上げてください。

stage6

.ebs ファイルを実行します。
設定は変更出来ませんが、.ebs 操作方法などが表示されます

外部ソフトEbSynth-Beta-Winの使用

EbSynth-Beta-Winのロゴの横のOpenをクリックしてexported : 20240128-124711_00000.ebsを読み込ませます。

一番下にあるRun Allを押し、フレーム間の画像を生成します。

この作業を繰り返して4つのexported の処理を終わらせてください。

stage7

最後に、ビデオを出力します。

生成を押すとバラバラだった画像を、一つの動画ファイルに変換してくれます。
変換されるファイルは2種類あって、1つは無音、もう一つは音声付のファイルです。
音声付きの動画を使用した時は、20240128-132500_with_snd の様に_with_snd を選んでください。

完成動画

stage8

stage 8
これは追加のステージです。
好きな画像や画像、動画を背景に配置できます。
この項目では、-> [Ebsynth Utility]->[configuration]->[stage 8]->[Background source] マスク反転モードで背景動画を作成している場合は([Ebsynth Utility]->[configuration]->[etc]->[Mask Mode])、
“path_to_project_dir/inv/crossfade_tmp"を指定できます。

結果

stage1→stage2→stage3→stage5→stage6(外部ソフト)→stage7→終わりの流れで良いようです。

動画の品質では、服装が変わったり、目の挙動が変だったり、ハンカチが食べ物やコップに変化したりしていますので、完璧だとは言えません、LoRaやプロンプトを工夫する余地はありそうです。

おまけ