Stable Video Infinity 实战指南:3步生成不漂移的长视频
【免费下载链接】Stable-Video-Infinity[ICLR 26 Oral] Stable Video Infinity: Infinite-Length Video Generation with Error Recycling项目地址: https://gitcode.com/GitHub_Trending/st/Stable-Video-Infinity
Stable Video Infinity(SVI)是 EPFL VITA 实验室推出的无限长度视频生成框架,基于 Wan 2.1 I2V 底座,通过 Error Recycling(误差回收)微调让模型学会"自我纠错"。本文面向有 GPU、想在本地跑起视频生成的开发者:先 3 步跑通,再讲透 4 个真正影响出片效果的参数,最后附一张踩坑速查表。
为什么视频播到一分钟就"崩"了?
大多数 i2v 模型一次只能生成几秒。你想把它续长,只能把上一段生成的尾帧喂回去当条件,结果就是:色彩慢慢偏移、主体逐渐变形,十几个片段之后没法看。
根源在于训练时模型只见过干净数据,推理时却要基于自己带误差的输出继续生成,两头对不上,误差滚雪球。SVI 的办法很直白:训练时把模型自己犯过的历史误差注入输入,让它主动学会识别并修正这些误差。微调完成后,推理成本与普通 i2v 相同,视频可以从 5 秒一路续到 10 分钟以上。
官方按任务拆了一组 LoRA:SVI-Shot(单场景)、SVI-Film(多场景叙事)、SVI-Talk(音频驱动说话)、SVI-Dance(骨骼驱动舞蹈)、SVI-Tom(卡通)。它们共用同一个底座,切换 LoRA 就能换任务。
🚀 3步跑通 SVI
官方测试环境为 A100 80G + CUDA 12,底座是 14B 模型,需要一张显存充足的高端 GPU。
第 1 步:准备环境
git clone https://gitcode.com/GitHub_Trending/st/Stable-Video-Infinity conda create -n svi python=3.10 && conda activate svi pip install -e . && pip install flash_attn==2.8.0.post2 conda install -c conda-forge ffmpeg librosa libiconv第 2 步:下载模型(Wan 底座 + SVI LoRA 全家桶)
huggingface-cli download Wan-AI/Wan2.1-I2V-14B-480P --local-dir ./weights/Wan2.1-I2V-14B-480P huggingface-cli download vita-video-gen/svi-model --local-dir ./weights/Stable-Video-Infinity --include "version-1.0/*"第 3 步:跑推理
bash scripts/test/svi_shot.sh # 或者启动 Web 界面,支持 Film / Shot 两种模式切换 bash gradio_demo.sh脚本默认用data/toy_test/shot/frame.jpg做输入,结果输出到videos/目录。
30秒看懂原理:凭什么续不漂?
一句话:SVI 是"逐片段自回归 + 片段内双向注意力"的混合结构。每个片段 81 帧,片段内部可以看全所有帧(相当于"重拍"的机会),片段之间再沿时间轴因果衔接。这模仿的是导演的工作流:先反复打磨一个镜头,再把它剪进整条时间线。
这套设计瞄准的是叙事类内容创作。如果你的目标是逐帧实时交互(比如游戏),Self-Forcing 一系会更合适,SVI 官方 FAQ 里也明确说了两者的分工。
⚙️ 决定出片效果的 4 个参数
python test_svi.py \ --ref_image_path data/toy_test/shot/frame.jpg \ --prompt_path data/toy_test/shot/prompt.txt \ --num_clips 20 --cfg_scale_text 5.0 \ --max_width 832 --ref_pad_num -1--num_clips:生成多少个片段,每个片段 81 帧(约 5 秒)。默认 10 个约 50 秒;SVI-2.0 的官方脚本直接写 999,相当于"续到提示流耗尽"。--cfg_scale_text:文本指令强度,默认 5.0。主体不听提示词、画面出现残影时,优先调到 7。--max_width:模型在 480p(宽 832)上训练。输入图过大虽会被等比缩放,但与训练分辨率的差距会导致动作变少、推理变慢,保持 832 附近最稳。--ref_pad_num:-1用随机帧填充参考图,把单场景任务变成"修复"问题,几乎不会漂(Shot / Talk / Dance 推荐);0为零填充,放宽单场景约束,适合 Film。
另外--num_persistent_param_in_dit(默认 6e9)控制常驻显存的参数量,显存紧张时调小它是最直接的降压手段。
❓ 出问题了:排错速查
| 现象 | 可能原因 | 处理办法 |
|---|---|---|
| 色彩随时间漂移、画质下降 | VAE 反复编解码累积误差;输入风格远离训练分布 | 用少量同风格视频微调 LoRA,官方认为这是最有效方案 |
| 画面动作少、主体发僵 | 输入分辨率远超 480p 训练分辨率 | 调小--max_width,看终端日志确认为 832 附近 |
| 残影、文本指令不生效 | CFG 偏低 | 调大--cfg_scale_text至 7 |
| 显存不足 | 常驻显存的参数过多 | 调小--num_persistent_param_in_dit;可加--tiled分块编码 |
| ComfyUI 出片明显差 | SVI LoRA 不能直接套原版 Wan 工作流(padding 设置不同) | 用官方工作流,且每个片段换不同 seed |
接下来做什么
跑通后建议先用 Web 界面的 Film 模式试多场景叙事,感受 5 秒一条提示流的节奏;满意之后可以照着data/toy_train/的数据格式,用自己的少量视频微调专属 LoRA,官方强调这一步数据量要求很小。更多问题看 docs/FAQ.md 和 docs/DevLog.md,各任务的完整推理脚本都在 scripts/test/ 里,按需改路径即可。
【免费下载链接】Stable-Video-Infinity[ICLR 26 Oral] Stable Video Infinity: Infinite-Length Video Generation with Error Recycling项目地址: https://gitcode.com/GitHub_Trending/st/Stable-Video-Infinity
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考