動画と画像から動画生成 VI2V チュートリアル - Zuntan03/EasyWanVideo GitHub Wiki

Wan Fun Control で動画と画像から動画を生成する VI2V のチュートリアルです。 参考動画はこちら

画像からの動画生成の I2V や、プロンプトからの動画生成の T2V と比べて、VI2V には次の利点があります。

  • 圧倒的に計算コストが低く、より高速に生成できます。
    • 他の手法では同等の計算量では動画の品質が低くなりますが、VI2V は元動画の動きと元画像の見た目を組み合わせるため、1.3B モデルでも一定の品質を得られます。
    • 動画生成としては生成時間がとても短く、高解像度での生成やガチャがはかどります。
  • I2V と同様にキャラやシチュエーションを強力に制御しつつ、LoRA がないと制御が難しかった動きを再現できます。
  • 元の動画の音声を、生成する動画で活用することもできます。

VI2V の欠点は 相性の良い元動画が必要 なことと、準備に手間が掛かることです。

NSFW などの元動画の動きや音声を活用しつつ、お好みのキャラやシチュに変更できます。

VI2V は動きが元動画に準ずるため、素材の準備に手間がかかります。
EasyWanVideo では追加の動画編集ソフトなどを用意しなくとも、VI2V で生成できる環境を用紙しています。

1. 元動画の用意

元動画を用意するには様々な方法があります。

  • 自分で撮影
  • インターネットからダウンロード
  • PC 画面をスクリーンキャプチャ
  • I2V や T2V の動画生成

元動画の要件は長辺のサイズが 512px~1024px 以上、フレームレートが秒間 16フレーム(16 FPS) 以上、長さが 5秒 以上で、動画の要件としては低スペックで問題ありません。
動画のサイズや長さや FPS が揃っていなくても、後で修正できます。

動画の注意事項

  • 動きの大きい・速い動画は 16FPS での差が大きくなるため、精度が低くなる傾向があります。
  • 顔の表示面積が小さい動画は、顔が崩れやすくなります。
  • イラスト・アニメ調の顔を再描画する際に、リアル調に寄りやすい性質があります。

自分で撮影

スマホなどで動画を撮影して、何らかの手段で PC に動画を転送してください。

インターネットからダウンロード

動画サイトからダウンロードしたり、誰かから共有された動画を入手したりです。
動画を手軽にダウンロードできるツールなんかもあります。

今回のチュートリアルでは、動画サイトの pexels で共有されいる 動画 を VI2V してみます。

PC 画面をスクリーンキャプチャ

Windows の標準機能では、Snipping Tool, Xbox Game Bar, Microsoft Clipchamp でスクリーンをキャプチャできます

  • Snipping ToolWin + Shift + R で動画キャプチャできます。
    • 画質は悪くなりますが、キャプチャ矩形を指定できるのが便利です。
  • Xbox Game BarWin + Alt + R で動画キャプチャ、Win + G でキャプチャ済み動画を確認できます。
    • 画質などは Windows 設定の 設定 - ゲーム - キャプチャ から設定できます。

ニコニコ動画など、スクリーンキャプチャを制限していない動画共有サイトもあります。

I2V や T2V の動画生成

I2V や T2V の動画生成でお気に入りの動画を生成できれば、それを元に他のキャラやシチュエーションのバリエーションを生成できます。

2. 元動画の用意

いずれかの手段で元動画を用意できたら、Wan Fun Control の VI2V 用に動画の前処理をします。

VI2V の元動画では 512px~1024px のサイズ、16FPS のフレームレート、81フレーム の長さといった制約を守ると、生成する動画の品質が高まります。

動画の編集には ComfyUI を利用しますが、ComfyUI は長い動画を編集するのに適していません。
ですので、まずは FFmpeg で長尺の動画から利用する部分を切り出します。

元動画の再生速度を変更

元動画の再生速度を変更します。再生速度の変更が不要であれば、次に進んでください。

  • 動画の再生速度は VideoTool/ にある SetPlaySpeed.bat で変更できます。
    • SetPlaySpeed.bat を実行したらコンソールウィンドウに動画をドラッグ&ドロップして Enter し、再生速度を 0.5~2.0 の範囲で入力して Enter します。
    • 動画 ではスロー再生を解除するために 2.0 倍速で再生しました。

TIPS: VideoTool/*.bat ファイルに動画を直接ドラッグ&ドロップすることもできます。

元動画を切り出す

元動画を 16FPS81フレーム または 49フレーム で動画を切り出します。

  • VideoTool/ にある Cut_16FPS_81framesCut_16FPS_49frames を実行して、コンソールウィンドウに動画をドラッグ&ドロップして Enter し、切り取り開始秒数を数値で入力するか hh:mm:ss フォーマットで指定します。
    • 開始フレームを画像生成で参照しますので、扱いやすそうな普通の画像が開始フレームとなるように、切り取り開始秒数を微調整してください。
      切り取った *.webp のサムネイルが最初の画像になります。
  • 同時に保存される音声の *.wav ファイルは、『5. 音声の用意』で使用します。

TIPS: *_Mirror.bat では、合わせて左右反転もします。

元動画の前処理

元動画の幅と高さを調整して、開始画像も得る前処理です。

  • ComfyUi.bat を起動して Easy/ にある Vi2vPreprecess ワークフローを開き、*.webp を読み込みます。
    • 実行すると *.webp を適切なサイズで保存しつつ、開始フレームの *.png も保存します。
    • 下側にある PointsEditor にて Ctrl + 左ドラッグ で矩形指定すると、動画サイズの切り抜き範囲を指定できます。
      • PointsEditor の下部にある New canvas ボタンで、矩形指定をリセットできます。

以下は 動画2.0 倍速にして、0 秒から 16FPS81フレーム で切り出し、サイズを長辺 1024px で調整した動画と先頭フレーム画像です。

元動画, 1024x816, 16FPS, 81フレーム 開始画像, 1024x816

3. 元画像の用意

開始画像と同様の構図でキャラやシチュエーションや画風などを、お好みに書き換えた画像を EasyReforge などで用意します。

  • 手、足、顔、目、口といった、各パーツの位置が一致しているほど、VI2V 動画生成の精度が高まります。
  • img2img ではなく、txt2img と ControlNet で構図を寄せたほうが、書き換えの自由度が高まります。
  • 動きの激しい顔の書き換えでは、実写調や Uncanny valley のようなセミリアル調に寄せたほうが精度が高くなるようです。
  • 不要なモノが映り込んでいる場合は、EasyReforge 付属の LamaCleaner.bat での削除が便利です。

今回は ControlNet の Tile で強力に絵を寄せつつ、Tile 後も AnyTest で補助しながらガチャりました。
Starting/Ending Control Step は、お好みで調整してください。

Tile, 0 から 0.2~0.3 まで Anytest, Tile 後から 0.4~0.6 まで

TIPS: セミリアルモデルで生成した開始画像と動画を元にして、アニメモデルの開始画像と動画を生成することもできます。

開始画像 セミリアル調
Uncanny valley
開始画像 アニメ調
Libras

EasyReforge をそろそろ大規模更新したいので、後で書き換えるかもしれません。

4. VI2V 動画生成

VI2V 動画は Easy/ にある KijaiFun_Vi2v ワークフローで生成します。
黄色いノードが『I2V Kijai 版チュートリアル』から変更のある主な操作ノードです。

SageAttention をインストールしていない環境では 高速化: コンパイル の無効化と、sageattn から spda への変更が必要です。

生成手順

  1. プロンプト入力 左側の 動きを指定する動画を読み込む で元動画読み込み、その下の 見た目を指定する画像を読み込む で開始画像の改変画像を読み込みます。
  2. プロンプト入力 でアニメーションについてのプロンプトを入力します。
    • Multilingual prediction support. らしいので、日本語プロンプトが通るかもしれません。
  3. プロンプト入力 下側のコントロールネット関連のパラメータを設定して、実行 で生成します。

  • 長辺: 生成する動画の大きさを 512~1024 ぐらいで指定します。
    • メモリ不足が発生する場合は、この値を下げてください。
  • 開始画像の強度: 開始画像の影響を強めたい場合に 1.2~1.4 ぐらいを指定します。
  • 動画コントロールネットの機能選択: 元動画と開始画像の組み合わせによって、利用する動画コントロールネットが変わります。
    複数の動画コントロールネットを組み合わせることで、特性を組み合わせることができます。
    • 保存済動画の読み込み: コントロールネット動画も保存する で保存した動画を下部のの 保存済みコントロールネット動画を読み込む でコントロールネット動画を再利用できます。
      • 時間の掛かる ポーズ の前処理などを省略できます。
    • デプス: 奥行き情報からモノの形を再現します。
      イラスト・アニメ顔の再現に優れています。
      • デプスのスケール でデプスの効き具合を調整できます。
        • デプスの影響が強くなりすぎる場合に、0.4 ぐらいで指定します。
      • デプスのみガウスぼかし, ガウスぼかしの半径 で、デプスがディティールを再現しないようにできます。
        • 形状を変えたいが、大まかな動きをデプスから拾いたい場合に利用します。
    • キャニー: 画面上の線を再現します。
      • 画面上の線が、良くも悪くもモノの形ではなく線としてのみ再現されます。
    • ポーズ: 人のポーズのみを再現します。
      • カメラの動きなど、ポーズ以外の要素を拾えません。
      • 人体パーツの識別精度もあまり高くありません。
  • 動画コントロールネットの終了: 動画コントロールネットの終了タイミングを指定します。
    • 0.3 程度でも十分な効果が得られることが多く、後の描画を開始画像とモデルに任せられます。
    • 動画コントロールネットが対象であり、開始画像には影響しません。
  • 全体を二乗でメリハリ: デプス利用時にディティールを潰しつつ、大まかな動きをしっかり取れるようになる、気がします。
  • 全体をガウスぼかし: 全体としてディティールを拾わないようにします。
  • キャニーのパラメータ: キャニーのエッジ抽出用のパラメータです。
    • CannyCheck ワークフローで適切な値を探すことができます。

動画コントロールネットの組み合わせ例

  • ポーズ+デプス, デプスのスケール: 0.4, デプスのみガウスぼかし: 8px, コントロールネットの終了: 0.3
  • ポーズのみだとカメラの動きが再現されないため、デプスをぼかしながら弱く適用しています。
    • ポーズでは見切れている手の識別もできていません。
    • デプスをぼかさずに強めると、ツインテールなどの形状違いが扱えなくなります。
  • 動画の自由度を高めるため、動画コントロールネットの適用を 0.3 で止めています。

5. 音声の用意

動画に合わせる音声を生成したり、元動画の音声を加工したりします。

音声の生成

Spaces for Audio / Voices の T2S スペースなどが利用できます。

音声を加工

  1. Easy/AudioSeparationVocal を分離できます。
  2. Spaces for Audio / Voices の音声入力を受け付けるスペースなどで加工できます。
    • Audio Upload 例 1 2
  3. Easy/AudioCombine で平均や加算で結合できます。
    • AudioCombineExpected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu! エラーは、素材を AudioSeparation に通せばとりあえず回避できる。要修正。

6. 動画の仕上げ

動画の仕上げチュートリアル』も参考にしてください。

  1. (スキップ可)Mosaic ワークフローでモザイクを付与できます。
  2. (スキップ可)Upscale ワークフローで 2倍サイズにアップスケールできます。
    • 動画が大きくなりすぎる場合は、アップスケール後に Resize ワークフローで縮小できます。
      • アップスケールしてから縮小することにより、アンチエイリアスのような微細な品質向上が見込めます。
  3. (スキップ可)AddLabel ワークフローで上部や下部に日本語での説明を付けられます。
  4. (推奨)Interpolate ワークフローで、フレーム補間と音声との結合ができます。
⚠️ **GitHub.com Fallback** ⚠️