
Stable Diffusionは主に画像生成AIとして利用されますが、AI動画も作れるのをご存じでしょうか?
AI動画生成用の拡張機能が複数存在し、それを利用すれば簡単にAI動画を作れます。
今回は比較的精度の高い「EBsynth」というツールを使ったAI動画の作り方をご紹介します。
なるべく余計な説明を省き、記事と同じ手順で操作をすればAI動画が作れるようになっているので、ぜひ参考にしてみてください。
なお、本記事はこちらの動画の情報を参考に執筆しています。
Stable DiffusionとEBsynthで作るAI動画とは?
先に今回作成するAI動画がどのようなものかご紹介します。
左が元動画、右がAIで生成した動画です。
・お借りしたフリー素材
仕組みを簡単に説明すると、まず素材となる動画をフレームごとに画像として分割し、そこからキーフレーム(特定の時間点で重要な画像)を抽出します。
抽出したキーフレームをimg2imgで再生成し、それをEBsynthで他のフレームに適応させます。
EBsynthは、キーフレームの画像を他のフレームに適応できるツールです。
最後に適応させたフレームをFFmpegで結合すると、AI動画が作れるという流れになっています。
なお、上記の動画はクオリティ重視で生成したためそこまで大きなチラつきなどは起きていませんが、髪型や服装などが元動画と違えば違うほどチラつきが多くなります。
最後に髪型・髪色を変化させた場合の動画も紹介しているので、参考にしてみてください。
Stable DiffusionとEBsynthでAI動画を作るために必要なもの
まずAI動画生成に必要なものを準備します。
必要なものは以下5つです。
- EBsynth
- FFmpeg
- Stable Diffusion Web UI(AUTOMATIC1111)
- Ebsynth Utility
- ControlNet
EBsynth
EBsynthは、抽出したキーフレームの画像を他のフレームに適応できるツールです。
AUTOMATIC1111の拡張機能ではなく独立したツールのため、別途ダウンロードが必要です。
以下のサイトから「Download」をクリックします。


メールアドレスの登録を求められますが、「No thanks, just start the download.」をクリックすればダウンロードが始まります。

「EbSynth-Beta-Win」というzipファイルが保存されるので、任意の場所に解凍して保管しておいてください。
FFmpeg
FFmpegは、映像や音声などに対してさまざまな操作が行えるソフトウェアです。
画像を結合、または音声を切り離す処理などにFFmpegが必要となります。
下記URLから「ffmpeg-master-latest-win64-gpl.zip 」というファイルをダウンロードしてください。
解凍するとbinというフォルダがあり、その中にFFmpegのアプリーケーションが入っています。
なお、FFmpegを使えるようにするために、このbinフォルダをPathに設定する必要があります。
Windowsのスタートメニューから以下の順で進んでいき、環境変数を開いてください。
- コントロールパネル
- システムとセキュリティ
- システム
- システムの詳細設定
- 環境変数
過去に環境変数を開いたことがある方は、Windowsの検索で環境変数と入力すると「環境変数を編集」で開くことができます。

環境変数の設定画面が開けたら、ユーザー環境変数の「Path」を選択した状態で編集をクリックします。

右上にある「新規」をクリックします。

パスを入力できるようになるので、FFmpegのファイルが入っているbinフォルダのパスを指定します。
Cドライブ直下にFFmpegを置いている場合は、以下のようになります。

C:\ffmpeg-master-latest-win64-gpl\bin
最後に下の「OK」ボタンをクリックすればパスの設定は完了です。
しっかりパスが設定できているか確認するには、コマンドプロンプトで以下のコードを実行してみてください。
ffmpeg -version
バージョンが表示されれば、しっかり設定はできています。

Stable Diffusion Web UI(AUTOMATIC1111)
AUTOMATIC1111は、ローカルでStable Diffusionを動かせるWeb UIです。
こちらを導入すれば、プロンプトなどから画像生成を行うことができます。
AUTOMATIC1111については別途解説している記事があるので、こちらを参考にしてみてください。
Ebsynth Utility
Ebsynth Utilityは、AUTOMATIC1111で使用できる拡張機能です。
AI動画生成の手順を確認したり、EBsynth用のファイルを作成したりできます。
AUTOMATIC1111を起動して「Extensions」開き、「Install from URL」に下記URLを入力して「Install」を実行してください。
https://github.com/s9roll7/ebsynth_utility.git

Installedのタブに「Ebsynth Utility」が表示されていれば無事インストールできています。
UIをリスタート、または再起動してください。

ControlNet
ControlNetもAUTOMATIC1111の拡張機能です。
こちらは拡張機能と、それぞれ対応するモデルをダウンロードする必要があります。
ControlNetも別途解説している記事があるので、こちらを参考にしてみてください。
Stable DiffusionでAI動画を作る方法
それでは実際の操作方法について解説します。
全体の流れは以下の通りです。
- AI動画用のフォルダを作成する
- stage 1:動画をフレームごとに分割する
- stage 2:キーフレームの画像を抽出
- stage 3:キーフレームの画像をimg2imgで生成
- stage 4:キーフレームの画像をアップスケールする(スキップ可)
- stage 5:Ebsynth用のファイルを作成
- stage 6:Ebsynthでキーフレームの画像を適応
- stage 7:画像を結合してAI動画完成
- stage 8:背景の変更(任意)
AI動画用のフォルダを作成する
Ebsynth用のファイルを作成するために、専用のフォルダが必要です。
パスの途中に日本語や記号が入っているとうまく動作しないことがあるため、Cドライブ直下などに英数字のファルダを作成してください。
私はCドライブ直下に「aimovie」というフォルダを作成しました。

このフォルダ内に元となる動画を入れておきます。
今回は冒頭で紹介した動画を例に手順を解説するので、同じ手順で進めたい方はこちらをダウンロードしてください。
なお、動画のファイル名もそのままだと動かせなかったので、「movie」に変更しています。

stage 1:動画をフレームごとに分割する
AUTOMATIC1111の「Ebsynth Utility」タブで、動画をフレームごとに分割します。
project settingにあるProject directoryに上記で作成したフォルダのパス、Original Movie Pathにフォルダ内の動画のパスを指定します。

次に「configuration」でFrame WidthとFrame Heightを指定します。
これはフレームごとに分割する画像の横幅・縦幅を指定するものです。
-1の場合は元動画と同じサイズで保存され、値を指定するとそのサイズにリサイズできます。
動画が1080×1920と少し大きいので、今回は720×1280にリサイズしました。

右側の画面のProcess Stageがstage1になっているのを確認して、下の方にある「Generate」をクリックします。


これで自動的に「video_frame」「video_mask」というフォルダが作成され、その中にフレームごとの画像が保存されていきます。
進行状況はターミナルで確認ができます。

ターミナル、Ebsynth Utilityの両方で「completed.」と表示されていれば完了です。

stage 2:キーフレームの画像を抽出
stage2ではキーフレームとなる画像を抽出します。
キーフレームは、そのままキー(重要)になるフレームのことです。
分割したフレーム内で変化が大きい部分のことで、そこをimg2imgで生成します。
Ebsynth使用時にキーフレームの変化を他のフレームに適用できるため、全フレームをimg2imgで処理する必要はありません。
stage2のconfigurationは、抽出するフレーム数を調整できます。
ただし、フレーム数でクオリティはそこまで変化しないので、デフォルトで問題ありません。
もし抽出数を多くしたい方は「Minimum keyframe gap」の値を小さくすると、抽出される数が多くなります。

右側のProcess Stageもstage2を選択し、下にある「Generate」をクリックします。

そうすると分割したフレームの中から、自動的にキーフレームを抽出してくれます。

stage 3:キーフレームの画像をimg2imgで生成
抽出したキーフレームの画像をimg2imgで自分好みに生成します。
最初に作成したフォルダ内に「video_key」というフォルダがあるので、その中から1枚選んでimg2imgに取り込んでください。
今回はファイル名が「00040」となっている画像を使用しました。

Resize toで元画像と同じサイズを指定します。

あとはプロンプトや設定を変えて、自分の好みの結果になるまで生成してみてください。
今回は以下のように設定しました。
・生成した画像

モデル | BracingEvoMix |
Resize by | 1.3 |
プロンプト | ((8k, RAW photo, highest quality, masterpiece), High detail RAW color photo professional photo, (realistic, photo realism:1. 37)), insanely photorealistic |
ネガティブプロンプト | EasyNegative, (worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, ((monochrome)), ((grayscale)), paintings, sketches, bad anatomy, facing away lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, blurry, bad feet,extra fingers, fused fingers, too many fingers, long neck, mutated hands, bad body, bad fingers, missing fingers |
サンプラー | DPM++ 2M Karras |
Sampling steps | 23 |
Denoising strength | 0.55 |
Seed | 3046033203 |
ControlNet | tile(Control Weight0.8) |
こちらは画質の設定だけして、可能な限り元画像を崩さないようにしています。
ControlnetのTileはリサンプルして高解像度化する機能ですが、こちらを使用すると元画像の構図をある程度維持できます。
ポーズや構図維持のため、Openposeを使用する方もいますが、Openposeは商用利用不可のため、使用には十分注意してください。
個人で使用するのであれば、Openposeの方が精度は高いと思います。
もし髪の色を変えたり、服装を変えたりしたい場合は、プロンプトでその要素を入力し、「Denoising strength」の値を高くしてみてください。
ただし、Denoising strengthの値が高いと画像が崩れやすくなり、元画像との変化が大きいと動画にしたときのチラつきが多くなります。
例としてショートカット・金髪・LoRAを入れた画像も生成してみました。
最後にこちらの画像で作った動画もご紹介します。

この辺りは目指すクオリティに対して調整するしかないので、いろいろ試行錯誤してみてください。
画像を生成する設定ができたら、下の方にあるScriptを「Ebsynth Utility」にして、Project directoryに最初に作成したフォルダのパスを指定します。

ControlNetを使用している場合は、下の方にある「ControlNet option」の値を「1」にしてください。

この状態で「Generate」を押せば、抽出したキーフレームの画像が全てimg2imgで処理されます。
stage 4:キーフレームの画像をアップスケールする(スキップ可)
stage3で生成したキーフレームの画像を、Upscalerで処理できます。
しかし、ここでリサイズするとEbsynthで取り込んだときにエラーが出てしまうため、フレーム分割したときのサイズのままUpscalerの処理をするということになります。
画質にそこまで変化が見られなかったため、不要であればスキップしても問題ありません。
説明文にも「You can skip this stage.」と書かれています。
一応使い方だけご紹介します。
まずWeb UIのSettingsタブを開き、Saving images/gridsの項目で「Use original name for output filename during batch process in extras tab」にチェックを入れます。

次にExtraのタブに行き、Batch from Directoryのパスを以下のように設定します。
Input directory | C:\aimovie\img2img_key |
Output directory | C:\aimovie\img2img_upscale_key |

Scale toタブで、フレーム分割時に設定したwidth・heightのサイズを指定します。

使用したいUpscalerやGFPGAN、CodeFormerの設定をします。

Upscalerを2つ使う場合は「Upscaler2」で使用するものを選択し、「Upscaler 2 visibility」で適用具合を調整できます。
なお、GFPGANやCodeFormerは低画質の顔画像を高画質化する技術です。
低画質でない画像に適応してもあまり意味がないため、顔がしっかり認識できている場合は使う必要はありません。
設定ができたら「Generate」をクリックすると処理が開始され、「img2img_upscale_key」に画像が保存されます。
stage 5:Ebsynth用ファイルの作成
Ebsynth Utilityのタブに戻り、stage 5を選択してGenerateをクリックします。

そうすると「.ebs」というEbsynthのプロジェクトファイルが作成されます。

これをEbsynthで取り込むことで、キーフレームの変化を他のフレームに適応ができます。
なお、stage4でアップスケール処理を行った場合は、「img2img_upscale_key」に入ってる画像でEbsynth用のファイルが作成されます。
stage 6:Ebsynthでキーフレームの画像を適応
Ebsynthを使用すると、キーフレームで再生成した画像の変化を他のフレームに適用できます。
最初の手順でダウンロードした「EbSynth-Beta-Win」というフォルダを開いて、中のEbsynthを起動してください。

UIが表示されるので、openをクリックしてstage 5で作成したファイルを読み込みます。


中央にあるAdvancedをクリックして、Synthesis Detailが「High」、Use GPUが「On」になっているのを確認してください。

この状態で一番下のRun Allをクリックすると、キーフレームの画像を他のフレームに適応する処理が始まります。

全ての処理が終わったら、次のファイルをopenから読み込み、Run Allをクリックします。
この手順をstage 5で作成したファイル分繰り返します。
これでstage 6は完了です。
stage 7:画像を結合してAI動画完成
Ebsynth Utilityのタブに戻り、configurationのタブでstage 7を選択します。
通常はデフォルトのままで問題ありませんが、画像間のトランジションを制御する値を変えたり、出力形式を変えたりできます。

右側のProcess Stageでstage 7を選択し、GenerateすればEbsynthで適応した画像が結合されます。

音声あり・なしの動画ファイルが出力されるので、これでAI動画の生成は完了です。

Crossfade blend rateによる違いを比較したかったので、それぞれ値を「1・0.5・0.1」で出力してみました。
ちなみにこちらがショートカット・金髪・LoRAで生成したAI動画です。
やはりチラつきが多くなり、服がはだけたり、腹部の辺りが一瞬手になったりもしています。
特定の要素を大きく変化させると、クオリティを維持するのは難しいかもしれません。
stage 8:背景の変更(任意)
生成したAI動画の背景を変更したい場合は、stage 8で処理できます。
まずはconfigurationタブでstage8を開き、背景に差し替えたいmp4ファイル、またはフォルダを指定します。
今回グリーンバック素材をGBというフォルダにいれ、そのフォルダを指定しました。


なお、動画素材は直接指定が可能ですが、グリーンバックのような画像ファイルを指定したい場合は、特定のフォルダ内に入れて、そのフォルダのパスを指定する必要があります。
この状態で右側のProcess Stageをstage8にして、Generateをクリックします。

そうすると「merge~」というファイルでAI動画が生成され、背景が指定した素材に変わります。
Stable DiffusionでAI動画生成時に発生したエラー
キーフレームの画像をimg2imgで処理するときに、以下のエラーが発生して動きませんでした。
TypeError: Script.run() missing 22 required positional arguments~
これはScript.run()という関数に22個の引数が不足しており、うまく動かせない状態のようです。
原因はmov2movという別の拡張機能が入っていたからでした。
もしmov2movを使用している方は、一時的にオフ、または削除すれば動かせるようになります。
Stable DiffusionとEBsynthでAI動画を作る方法まとめ
今回はStable DiffusionとEBsynthを使って、AI動画を作る方法をご紹介しました。
- Stable Diffusionで作るAI動画とは?
- Stable DiffusionとEBsynthでAI動画を作るために必要なもの
- Stable DiffusionでAI動画を作る方法
- Stable DiffusionでAI動画生成時に発生したエラー
AI動画はハードルが高いように感じて避けていたのですが、実際に触ってみたら意外とスムーズに導入できました。
他にもAI動画を生成するツールは存在しますが、動作やクオリティ、導入難易度などを総合的に見ると、EBsynthは比較的使いやすい方だと思います。
AI動画に興味がある方は、ぜひ挑戦してみてください。
コメント