TemporalKit + EbSynthでAI変換動画を生成する方法

結果

AI変換した動画

元動画

りりり様のダンス動画をお借りしました(https://www.youtube.com/watch?v=mHuiJGGAJoE

TemporalKitとは?

「TemporalKit」とは、安定した拡散レンダリング(Stable Diffusion Render)に時間的安定性を追加するためのオールインワンソリューションで、automatic1111という拡張機能を通じて機能します​1​。

このツールを使用する前に、FFMPEGをパスにインストールする必要があります​。

TemporalKitの使用に関する具体的なデモやチュートリアルは、以下のリンクで確認できます:

TemporalKitの拡張機能には以下のような値が含まれます​:

  • FPS:ビデオが抽出され、生成されるフレームレート(Frames Per Second)です。
  • batch_Size:各キーフレーム間のフレーム数。例えば、FPSが30で、バッチサイズが10の場合、1秒あたり3つのキーフレームを作成し、残りを推定します。
  • per side:プレートごとのフレーム数の平方根。例えば、per sideの値が2ならば4つのプレート、3ならば9つのプレート、4ならば16つのプレートを作成します。
  • Resolution:各プレートのサイズ。この値はper sideの倍数に設定することを強く推奨されています。

その他、プレートのフォルダを生成するためのバッチ設定、最大フレーム数、ボーダーフレーム数、バッチフォルダ、出力解像度などの設定項目があります​1​。

TemporalKitを使用する上でのよくある質問として、「ビデオがぼやける(smearing)」という問題が挙げられています。

これに対する答えとして、FPSを高く設定するか、バッチ数を低く設定することが推奨されています。

キーフレームが近ければ近いほど、アーティファクト(不要な効果やノイズ)が少なくなります​。

AI変換動画の作り方

基本的にはAI変換したい動画を用意し、その動画を元にどのような絵柄に変換するか確認して、OKであればTemporalKitの拡張機能を使って外部ツールに取り込むための素材を準備し、準備ができたら取り込む形となっています。

実際に行ったこと

環境

OSWindows 11 (22HS)
CPUCore i7-11700K
メモリ16GB
GPURTX 3070 8GB

前提条件

  • Stable Diffusion WebUI(AUTOMATIC1111)がインストールされていること

やったこと

今回使うソフトウェアのダウンロード

以下2点のダウンロードおよび、初期セットアップが必要になってきます。

  • EbSynth
    • 生成した絵のように動画を変換するために必要なソフトウェア
  • FFmpeg
    • 動画を静止画に細切れするために必要なライブラリ。
    • TemporalKitが内部的に使用するものなので起動等はさせません。

EbSynthはこちらからダウンロードできます。

FFmpegはこちらからダウンロードできます。

FFmpegの場合、初期セットアップが必要になります。下記記事が参考になりますので、ぜひお試しください。

https://self-development.info/windows%E3%81%ABffmpeg%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B/

TemporalKitのインストール

Stable Diffusion WebUI(以下、SDWebUI)からインストールすることができます。

ExtensionsタブのInstall from URLより、URL for extension’s git repositoryの欄に下記URLを入力します。

https://github.com/CiaraStrawberry/TemporalKit

入力できたらInstallボタンでインストールが完了します。

完了したら、SDWebUIの再起動を行ってください。行わないとTemporalKitのタブが表示されません。

動画の準備

変換したい動画を用意しましょう。また、なるべく動画は特定のディレクトリの中に入れておいた方がいいです。ディレクトリごと指定したりとディレクトリ単位で操作が必要になってくるので、そのディレクトリに関係ないファイル等が混ざっていると邪魔になります。

今回はCドライブ直下にsampleというディレクトリを作成し、動画を入れるようにします。

SDWebUIで動画を分割

実際に作業に入っていきます。

Temporal-KitタブのPre-Processingタブを開きます。

Input Videoのところに先ほどディレクトリごと準備した中の動画を選択もしくはドラッグアンドドロップしましょう。

動画が取り込めたら、どう分割するかの設定に入っていきます。

Slides2フレーム数の平方根です。たとえば、片面の値が 2 の場合、プレートは 4 枚、プレートは 3 枚、9 枚、プレートは 4 枚、16 枚になります。数が多い程、1回の生成で大量に画像の変換ができます。
Height Resolution1280動画の高さの数値の倍数に合わせます。この数値が高いほど動画内の顔などの崩壊等がなくなります。ただ、その分、スペックを必要とします。当環境ではVRAMが8GBだったので、等倍の1280にしました。
frames per keyframe5すみません、調べてみましたがあまりよくわかっていないので5にしたままにしています。
fps30おそらく動画のfpsを入力します
EBSynth ModeEBSynthで取り込むモードにするかです。✅を入れます。
Target FolderC:\sample動画が格納されているディレクトリ(フォルダ)を指定します。
Batch Runバッチで動かすかどうかです。今回は✅を入れます
Max Key frames5プレートのフォルダーを生成するときに、取得したい上記の fps でのフレーム数を取得し、(各サイド * サイドごと * バッチ サイズ) のグループに分けてプレートに分割します。
Border Key Frames2プレートのフォルダーを生成するときに、取得したい上記の fps でのフレーム数を取得し、(各サイド * サイドごと * バッチ サイズ) のグループに分けてプレートに分割します。
Split Video動画を分けてEBSynthに合成させるかです。今回は細かく様子を見てやっていきたいので✅を入れます。
今回は上記のように設定しました。

設定が完了したら、右側のRunで実際に分割を開始します。

分割が完了すると、動画の秒数、設定値にもよりますが下記のようなフォルダ・ファイルが出来上がると思います。

変換する画風の作成&確認

動画を分割できたら、分割した1枚を元に大体こんな風に変換したいというのを決めていきます。

その前に1つ設定をしておく項目があります。

今回、ControlNetも活用するので、ControlNetを利用する場合は、Do not append detectmap to outputにチェックを入れておきましょう。

チェックを入れておかないと、ControlNet各種モデルで検知したボーンの画像やcannyの画像が変換動画に含まれてしまうようになります。

img2imgのタブへ行き、そこの画像指定で用意したフォルダの0番のinputの中の1枚を適当に選び貼り付けます。

あとは普段のimg2imgと同様で変換していきます。今回設定したパラメータを下記に記しておきます。

Resize modeJust resize
Sampling methodDPM++ SDE Karras
Sampling steps20
Width720
Height1280
CFG Scale7
Denosing strength0.6重要なパラメータになります。値が小さいほど元画像を参考にするかなので、小さめに設定すると違和感なく変換されます。
Batch count1
Batch size1
ControlNet Unit1 – Enable
ControlNet Unit1 – Low VRAM
ControlNet Unit1 – PixelPerfect
ControlNet Unit1 – ControlTypeAll
ControlNet Unit1 – Preprocessorlineart_realistic元画像の線画を吐き出してそれを元に変換していくので、このプリプロセッサーとこのあとのモデルは必須級です。
ControlNet Unit1 – Modelcontrol_v11p_sd15_lineart
ControlNet Unit2 – Enable
ControlNet Unit2 – Low VRAM
ControlNet Unit2 – PixelPerfect
ControlNet Unit2 – ControlTypeAll
ControlNet Unit2 – Preprocessordepth_zoe背景がばらつきやすいので、このControlNetを使うことによって人物と背景を分離させて手前のものだけを変換することにします。
ControlNet Unit2 – Modelconrol_v11p_sd15_depth

パラメータを入れることができたら、実際に変換して確認しましょう。確認ができたらシードを固定しておきましょう。これをしておかないと、絵柄がバラバラになってしまいます。

Ebsynthに取り込むための素材作成

前段がOKそうであれば、次は全部の画像をバッチで変換していきます。

img2imgのBatchを開きます。

今回であれば、

Input directoryC:\sample\input
output directoryC:\sample\output
inpaint batch mask directory[空]
Controlnet input directoryC:\sample
となります。

ここまで入力できたら、実行してきましょう。

実行はスペック、動画の長さにもよりますが1時間や2時間かかりますので気長に待ちましょう。

変換が完了したら、Temporal-KitタブのEbsynth ProcessタブでEbsynth向けに変換を行います。

Input FolderにはC:\sampleと入力し、下のread_last_settingsを押すとフォルダ内を読み込んでくれます。

読み込んだら、read_last_settings下のパラメータをいじっていきます。今回はデフォルトのままにしました。

設定が完了しましたら、prepare ebsynthを押します。すると、ebsynthで利用するための素材等がフォルダに生成されます。

Ebsynthでの変換

Ebsynthを起動します。

最初に用意した、0フォルダ内のframesフォルダをVideoにドラッグ&ドロップします。

次に、0フォルダ内のkeysフォルダをkeyframesにドラッグ&ドロップします。

画面下部あたりにある、RunAllをクリックすると、適用が開始されます。

SDWebUIでEbsynthの変換後ファイルを統合

Ebsynthで変換が完了しましたら、先ほどのTemporal-KitタブのEbsynth Processタブでrecombine ebsynthというボタンがあったと思います。それをクリックすると、ebsynthで変換された画像たちを統合して動画を生成してくれます。

生成された動画は0フォルダの中のcrossfade.mp4がそうなります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です