Wan2.1 I2Vで動画がブレる原因と改善設定|CFG・解像度を見直す

※本記事にはプロモーション(広告・アフィリエイトリンク)を含みます。
Wan2.1 I2Vで生成した動画が入力画像と比べてぼやけたり、フレームがガタついて見える場合、多くはパラメータの設定値で改善できます。この記事ではブレの原因を症状別に整理し、guidance_scale・解像度・noise_aug_strengthの3点を中心に、ComfyUIとDiffusers(Python)それぞれで調整できる具体的な設定値を手順とともに説明します。
ブレの症状と原因を対応づける
Wan2.1 I2Vで発生するブレは、症状によって対応する設定が異なります。まず自分の動画がどの症状に近いかを確認してから設定を変えると、原因を効率よく特定できます。
| 症状 | 主な原因 | 最初に触る設定 |
|---|---|---|
| フレームがちらつく・ガタつく | guidance_scaleが高すぎる | guidance_scaleを下げる |
| 後半フレームで被写体が崩れる | フレーム数が多すぎる | num_framesを減らす |
| 全体が歪む・入力画像と似ていない | 解像度・アスペクト比のミスマッチ | 入力解像度を合わせる |
| 被写体が溶けるようにぼける | noise_aug_strengthが大きい | noise_aug_strengthを0に |
| 全体的にノイジー・未完成に見える | ステップ数が少なすぎる | num_inference_stepsを増やす |
1つの動画でこれらが複合して出ることもあります。設定を1つだけ変えて生成し直すという手順を守ると、どれが効いているかが分かりやすくなります。
guidance_scale(CFG)を下げる
guidance_scaleは「プロンプトにどれだけ強く従わせるか」を制御するパラメータです。Wan-AIが公開しているモデルのデフォルト値は 5.0 です(公式ドキュメントより)。
この値を7.0以上に上げると、プロンプトへの追従度は増しますが、フレーム間の整合性が崩れてちらつきやガタつきが出やすくなります。動画はフレームをまたいで整合性を保つコストが画像生成より高く、高いCFG値はブレとして表れやすいと考えられます。
guidance_scaleとブレの傾向(目安):
| guidance_scale | 傾向 |
|---------------|
| 3.0〜4.0 | 安定しやすい。プロンプトへの追従が弱くなる |
| 4.5〜5.5 | デフォルト付近。バランスが良い |
| 7.0以上 | ちらつき・ガタつきが出やすくなる |
ComfyUIではサンプラーノードの cfg フィールドで指定します。Diffusersでは guidance_scale 引数で渡します。
# Diffusers の例
output = pipe(
image=image,
prompt="gentle breeze, leaves swaying",
guidance_scale=5.0, # まずデフォルト値に戻す
...
)
まずデフォルト(5.0)に戻してブレが解消するか確認し、それでも残る場合は3.5〜4.0まで段階的に下げてみてください。
入力解像度をモデルの期待値に合わせる
Wan2.1 I2Vには480Pモデルと720Pモデルがあり、それぞれ設計上の推奨解像度があります(公式ドキュメントより)。
| モデル | 推奨解像度(横位置) | 推奨解像度(縦位置) |
|---|---|---|
| Wan2.1-I2V-14B-480P | 832 × 480 | 480 × 832 |
| Wan2.1-I2V-14B-720P | 1280 × 720 | 720 × 1280 |
この解像度・アスペクト比から大きく外れた画像を入力すると、モデル内部での処理に影響が出ると考えられ、特に周辺部でブレや歪みが発生しやすくなります。正方形(1:1)の画像をそのまま入力するとアスペクト比が大きくずれるため注意が必要です。
Pillowで事前にリサイズ・センタークロップする手順:
from PIL import Image
img = Image.open("input.jpg")
target_w, target_h = 832, 480 # 480Pモデル横位置の場合
img_ratio = img.width / img.height
target_ratio = target_w / target_h
if img_ratio > target_ratio:
# 横が余る → 横をセンタークロップ
new_w = int(img.height * target_ratio)
left = (img.width - new_w) // 2
img = img.crop((left, 0, left + new_w, img.height))
else:
# 縦が余る → 縦をセンタークロップ
new_h = int(img.width / target_ratio)
top = (img.height - new_h) // 2
img = img.crop((0, top, img.width, top + new_h))
img = img.resize((target_w, target_h), Image.LANCZOS)
img.save("input_resized.jpg")
ComfyUIを使っている場合は、ワークフローの入力ノード直後に ImageResize+(ComfyUI-Managerで追加できるカスタムノード)または標準の Upscale Image ノードを挿入し、832×480 にリサイズしてから次のノードに渡します。
Diffusersで height=480, width=832 を指定した場合も、入力画像のアスペクト比が大きくずれていると内部リサイズで情報が劣化するため、事前に合わせておくほうが確実です。
noise_aug_strengthを0に近づける
noise_aug_strength(ノイズ強度)は、入力画像にノイズを付加してから条件付け信号として使う強さを制御するパラメータです。Diffusersの実装におけるデフォルト値は 0.0 です。
この値を上げると動きの多様性が増す反面、入力画像への忠実性が下がります。コミュニティのカスタムワークフローを使っている場合、この値が 0.05〜0.1 に設定されていることがあり、意図せずブレの原因になっている場合があります。
noise_aug_strength = 0.0 # 入力画像に最も近い。最も安定
noise_aug_strength = 0.02 # ごくわずかな揺れを許容する程度
noise_aug_strength = 0.05以上 # ブレが顕著になる可能性が高い
入力画像に忠実な動画を生成したい場合は 0.0 を維持するのが安全です。ComfyUIのワークフロー構成によってはこのパラメータが直接露出していないことがあります。その場合はguidance_scaleの調整を優先してください。
フレーム数とステップ数を確認する
フレーム数(num_frames)
Wan2.1 I2Vのデフォルトは 81フレーム(16fpsで約5秒)です(公式ドキュメントより)。フレーム数を増やすほど後半フレームで整合性が崩れやすくなります。
フレーム数は 奇数値 を指定する必要があります(17・25・33・41・81など。公式ドキュメントより)。81を超えるフレーム数を設定した場合は環境によって動作が不安定になる可能性があります。後半で崩れが出る場合は、まず41フレームに下げて確認するのが効率的です。
ステップ数(num_inference_steps)
| ステップ数 | 傾向 |
|-----------|
| 20未満 | ノイズが残りやすく、全体的にぼやける |
| 30〜50 | バランスが良い(公式の例示値は40) |
| 50超 | 品質向上は小さく、生成時間だけ伸びる傾向 |
設定をまとめて確認する例(Diffusers):
import torch
# シードを固定すると設定変更の比較がしやすくなる
generator = torch.Generator("cpu").manual_seed(42)
output = pipe(
image=image,
prompt="gentle breeze, leaves rustling, cinematic",
negative_prompt="blur, shake, distortion, low quality",
height=480,
width=832,
num_frames=81, # デフォルト値
guidance_scale=5.0, # まずデフォルトで確認
num_inference_steps=40, # 公式例示値
generator=generator,
)
シードを固定しておくと、設定を1つ変えるたびに同じランダム性で比較できるため、どの設定がブレに影響しているかを絞り込みやすくなります。
まとめ
Wan2.1 I2Vの動画ブレは、guidance_scale の上げすぎ・入力解像度のミスマッチ・noise_aug_strength の設定ミスが主な原因です。症状を先に確認し、設定を1つずつ変えて検証するのが最も効率的な手順です。
次に取る行動: まず入力画像の解像度を832×480(480Pモデル横位置)に揃え、guidance_scale=5.0・num_inference_steps=40・num_frames=81 というデフォルト値で生成してみてください。それでもブレが残る場合は guidance_scale を 4.0 → 3.5 と段階的に下げるのが次の手です。
よくある質問
Wan2.1 I2V を動かすために必要な VRAM はどのくらいですか?
14Bモデルでは480Pで16〜24GB以上が目安とされています。量子化版(BF16やFP8)では消費量を抑えられますが、必要VRAMは環境や設定によって異なります。公式ページで要件を確認することをおすすめします。
num_frames は何フレームまで増やせますか?
デフォルトは81フレーム(16fps換算で約5秒)で、奇数値が必要です。81を超えると後半フレームで崩れが出やすくなり、公式の動作確認はデフォルトの81フレームが前提です。上限は環境によって異なります。
プロンプトにブレを抑える書き方はありますか?
ネガティブプロンプトに「blur, shake, distortion, jitter, low quality」を加えるのが一般的です。ただし根本的な解決にはguidance_scaleや解像度などパラメータ調整のほうが効果的と考えられます。