動画と画像から動画生成 VI2V チュートリアル - Zuntan03/EasyWanVideo GitHub Wiki
Wan Fun Control で動画と画像から動画を生成する VI2V のチュートリアルです。 参考動画はこちら。
画像からの動画生成の I2V や、プロンプトからの動画生成の T2V と比べて、VI2V には次の利点があります。
- 圧倒的に計算コストが低く、より高速に生成できます。
- 他の手法では同等の計算量では動画の品質が低くなりますが、VI2V は元動画の動きと元画像の見た目を組み合わせるため、1.3B モデルでも一定の品質を得られます。
- 動画生成としては生成時間がとても短く、高解像度での生成やガチャがはかどります。
- I2V と同様にキャラやシチュエーションを強力に制御しつつ、LoRA がないと制御が難しかった動きを再現できます。
- 元の動画の音声を、生成する動画で活用することもできます。
VI2V の欠点は 相性の良い元動画が必要 なことと、準備に手間が掛かることです。
NSFW などの元動画の動きや音声を活用しつつ、お好みのキャラやシチュに変更できます。
VI2V は動きが元動画に準ずるため、素材の準備に手間がかかります。
EasyWanVideo では追加の動画編集ソフトなどを用意しなくとも、VI2V で生成できる環境を用紙しています。
元動画を用意するには様々な方法があります。
- 自分で撮影
- インターネットからダウンロード
- PC 画面をスクリーンキャプチャ
- I2V や T2V の動画生成
元動画の要件は長辺のサイズが 512px~1024px
以上、フレームレートが秒間 16フレーム(16 FPS
) 以上、長さが 5秒
以上で、動画の要件としては低スペックで問題ありません。
動画のサイズや長さや FPS が揃っていなくても、後で修正できます。
- 動きの大きい・速い動画は 16FPS での差が大きくなるため、精度が低くなる傾向があります。
- 顔の表示面積が小さい動画は、顔が崩れやすくなります。
- イラスト・アニメ調の顔を再描画する際に、リアル調に寄りやすい性質があります。
スマホなどで動画を撮影して、何らかの手段で PC に動画を転送してください。
動画サイトからダウンロードしたり、誰かから共有された動画を入手したりです。
動画を手軽にダウンロードできるツールなんかもあります。
今回のチュートリアルでは、動画サイトの pexels で共有されいる 動画 を VI2V してみます。
Windows の標準機能では、Snipping Tool
, Xbox Game Bar
, Microsoft Clipchamp
でスクリーンをキャプチャできます 。
-
Snipping Tool
はWin + Shift + R
で動画キャプチャできます。- 画質は悪くなりますが、キャプチャ矩形を指定できるのが便利です。
-
Xbox Game Bar
はWin + Alt + R
で動画キャプチャ、Win + G
でキャプチャ済み動画を確認できます。- 画質などは Windows 設定の
設定 - ゲーム - キャプチャ
から設定できます。
- 画質などは Windows 設定の
ニコニコ動画など、スクリーンキャプチャを制限していない動画共有サイトもあります。
I2V や T2V の動画生成でお気に入りの動画を生成できれば、それを元に他のキャラやシチュエーションのバリエーションを生成できます。
いずれかの手段で元動画を用意できたら、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
ファイルに動画を直接ドラッグ&ドロップすることもできます。
元動画を 16FPS
の 81フレーム
または 49フレーム
で動画を切り出します。
-
VideoTool/
にあるCut_16FPS_81frames
かCut_16FPS_49frames
を実行して、コンソールウィンドウに動画をドラッグ&ドロップしてEnter
し、切り取り開始秒数を数値で入力するかhh:mm:ss
フォーマットで指定します。-
開始フレームを画像生成で参照しますので、扱いやすそうな普通の画像が開始フレームとなるように、切り取り開始秒数を微調整してください。
切り取った*.webp
のサムネイルが最初の画像になります。
-
開始フレームを画像生成で参照しますので、扱いやすそうな普通の画像が開始フレームとなるように、切り取り開始秒数を微調整してください。
- 同時に保存される音声の
*.wav
ファイルは、『5. 音声の用意』で使用します。
TIPS: *_Mirror.bat
では、合わせて左右反転もします。
元動画の幅と高さを調整して、開始画像も得る前処理です。
-
ComfyUi.bat
を起動してEasy/
にあるVi2vPreprecess
ワークフローを開き、*.webp
を読み込みます。- 実行すると
*.webp
を適切なサイズで保存しつつ、開始フレームの*.png
も保存します。- 開始フレームの
*.png
は次の『3. 元画像の用意』で使用します。
- 開始フレームの
- 下側にある
PointsEditor
にてCtrl + 左ドラッグ
で矩形指定すると、動画サイズの切り抜き範囲を指定できます。-
PointsEditor
の下部にあるNew canvas
ボタンで、矩形指定をリセットできます。
-
- 実行すると
以下は 動画 を 2.0
倍速にして、0
秒から 16FPS
の 81フレーム
で切り出し、サイズを長辺 1024px
で調整した動画と先頭フレーム画像です。
元動画, 1024x816, 16FPS, 81フレーム | 開始画像, 1024x816 |
---|---|
![]() |
![]() |
開始画像と同様の構図でキャラやシチュエーションや画風などを、お好みに書き換えた画像を 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 をそろそろ大規模更新したいので、後で書き換えるかもしれません。
VI2V 動画は Easy/
にある KijaiFun_Vi2v
ワークフローで生成します。
黄色いノードが『I2V Kijai 版チュートリアル』から変更のある主な操作ノードです。
SageAttention をインストールしていない環境では 高速化: コンパイル
の無効化と、sageattn
から spda
への変更が必要です。
-
プロンプト入力
左側の動きを指定する動画を読み込む
で元動画読み込み、その下の見た目を指定する画像を読み込む
で開始画像の改変画像を読み込みます。 -
プロンプト入力
でアニメーションについてのプロンプトを入力します。-
Multilingual prediction support.
らしいので、日本語プロンプトが通るかもしれません。
-
-
プロンプト入力
下側のコントロールネット関連のパラメータを設定して、実行
で生成します。
-
長辺
: 生成する動画の大きさを512~1024
ぐらいで指定します。- メモリ不足が発生する場合は、この値を下げてください。
-
開始画像の強度
: 開始画像の影響を強めたい場合に1.2~1.4
ぐらいを指定します。 -
動画コントロールネットの機能選択
: 元動画と開始画像の組み合わせによって、利用する動画コントロールネットが変わります。
複数の動画コントロールネットを組み合わせることで、特性を組み合わせることができます。-
保存済動画の読み込み
:コントロールネット動画も保存する
で保存した動画を下部のの保存済みコントロールネット動画を読み込む
でコントロールネット動画を再利用できます。- 時間の掛かる
ポーズ
の前処理などを省略できます。
- 時間の掛かる
-
デプス
: 奥行き情報からモノの形を再現します。
イラスト・アニメ顔の再現に優れています。-
デプスのスケール
でデプスの効き具合を調整できます。- デプスの影響が強くなりすぎる場合に、
0.4
ぐらいで指定します。
- デプスの影響が強くなりすぎる場合に、
-
デプスのみガウスぼかし
,ガウスぼかしの半径
で、デプスがディティールを再現しないようにできます。- 形状を変えたいが、大まかな動きをデプスから拾いたい場合に利用します。
-
-
キャニー
: 画面上の線を再現します。- 画面上の線が、良くも悪くもモノの形ではなく線としてのみ再現されます。
-
ポーズ
: 人のポーズのみを再現します。- カメラの動きなど、ポーズ以外の要素を拾えません。
- 人体パーツの識別精度もあまり高くありません。
-
-
動画コントロールネットの終了
: 動画コントロールネットの終了タイミングを指定します。0.3
程度でも十分な効果が得られることが多く、後の描画を開始画像とモデルに任せられます。- 動画コントロールネットが対象であり、開始画像には影響しません。
-
全体を二乗でメリハリ
: デプス利用時にディティールを潰しつつ、大まかな動きをしっかり取れるようになる、気がします。 -
全体をガウスぼかし
: 全体としてディティールを拾わないようにします。 -
キャニーのパラメータ
: キャニーのエッジ抽出用のパラメータです。-
CannyCheck
ワークフローで適切な値を探すことができます。
-
-
ポーズ+デプス
,デプスのスケール
:0.4
,デプスのみガウスぼかし
:8px
,コントロールネットの終了
:0.3
- ポーズのみだとカメラの動きが再現されないため、デプスをぼかしながら弱く適用しています。
- ポーズでは見切れている手の識別もできていません。
- デプスをぼかさずに強めると、ツインテールなどの形状違いが扱えなくなります。
- 動画の自由度を高めるため、動画コントロールネットの適用を
0.3
で止めています。
動画に合わせる音声を生成したり、元動画の音声を加工したりします。
Spaces for Audio / Voices
の T2S スペースなどが利用できます。
- TTS 例 1 2 3、
- BGM: Stable Audio
-
Easy/
のAudioSeparation
でVocal
を分離できます。 -
Spaces for Audio / Voices
の音声入力を受け付けるスペースなどで加工できます。 -
Easy/
のAudioCombine
で平均や加算で結合できます。-
AudioCombine
のExpected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu!
エラーは、素材をAudioSeparation
に通せばとりあえず回避できる。要修正。
-
『動画の仕上げチュートリアル』も参考にしてください。
- (スキップ可)
Mosaic
ワークフローでモザイクを付与できます。 - (スキップ可)
Upscale
ワークフローで 2倍サイズにアップスケールできます。- 動画が大きくなりすぎる場合は、アップスケール後に
Resize
ワークフローで縮小できます。- アップスケールしてから縮小することにより、アンチエイリアスのような微細な品質向上が見込めます。
- 動画が大きくなりすぎる場合は、アップスケール後に
- (スキップ可)
AddLabel
ワークフローで上部や下部に日本語での説明を付けられます。 - (推奨)
Interpolate
ワークフローで、フレーム補間と音声との結合ができます。