Stable Video Infinity 本地化运行指南:从一张图持续生成视频
【免费下载链接】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)解决的就是这个问题:它能在你自己的 GPU 上,从一张图片加一条文字提示流,持续生成长达几分钟且风格不漂移的长视频,训练、推理脚本和全部 LoRA 权重都已开源。SVI 不需要从头训练大模型,它只是在 Wan 2.1 I2V 14B 底座上微调了一组 LoRA 适配器,这也是它能被普通开发者本地化运行的原因。
快速上手:环境要求与最小运行路径
SVI 的计算主力是一张 NVIDIA GPU——官方环境在 A100 80G、CUDA 12.0、torch 2.5.0 上验证,小显存显卡也能跑,代价是速度变慢。最低软件要求如下:
- Python 3.10(conda 环境)
- torch==2.5.0 与 flash_attn==2.8.0.post2
- conda 安装的 ffmpeg、librosa、libiconv
最短路径是先按 README 完成环境准备,把 Wan2.1-I2V-14B-480P 底座权重和对应的 SVI LoRA(如 svi-shot.safetensors)分别放进weights/Wan2.1-I2V-14B-480P/与weights/Stable-Video-Infinity/。随后直接运行仓库自带的测试脚本即可:
bash scripts/test/svi_shot.sh脚本内部用仓库里的示例图(data/toy_test/shot/frame.jpg)和提示词调用 test_svi.py:
生成的 mp4 按时间戳输出到videos/下的子目录,每 81 帧为一个片段,边生成边写出,方便中途查看效果。如果不想写命令行,也可以用bash gradio_demo.sh启动网页界面,在浏览器里切换 Shot / Film 两种模式。
核心机制:错误回收与逐片段自回归
长视频漂移的根源是训练与推理的假设不一致——训练时模型只看干净数据,推理时却要反复以"自己带误差的输出"为条件。SVI 的 Error Recycling 训练把 DiT 自产的历史误差重新注入训练输入,让它主动学会识别并修正自己的错误,推理阶段不增加任何额外开销。
生成时它按"片段"推进:每个片段内部是双向注意力,片段之间则因果衔接——上一段最后几帧(motion frames)作为下一段的条件输入。这和导演反复看片、再顺着时间轴拼片的流程一致,也是它区别于逐帧因果(Self-Forcing 类)方案的地方。
仓库把不同任务做成可插拔的 LoRA,换任务只需切换--extra_module_root指向的权重:
- SVI-Shot:单场景长视频,1 帧运动参考,20 分钟测试无漂移(见 scripts/test/svi_shot.sh)
- SVI-Film / 2.0:多场景剧情流,5 帧运动参考衔接转场,每 5 秒换一条提示词(见 scripts/test/svi_film.sh、scripts/test/svi_2.0.sh)
- SVI-Talk:音频驱动的口播长视频(另需下载 wav2vec2 与 MultiTalk 权重)
- SVI-Dance:骨骼序列驱动的舞蹈视频
关键配置参数:显存、分辨率与提示词控制
影响体验最大的不是算力,而是下面这几组参数(完整定义见 test_svi.py):
--num_persistent_param_in_dit 6000000000 # 显存吃紧时调小 --max_width 832 --cfg_scale_text 5.0--max_width:输出宽度的上限。模型在 480×832 上训练,输入图过大(比如 2150×1204 会被拉到 1472×832)会造成与训练分布的落差,表现为动作变少,推理也更慢。保持 832 左右最稳。--cfg_scale_text:文字引导强度,默认 5.0。提示词跟不上、出现重影时提到 7 左右;测试风格与训练差异越大越需要调高。--num_persistent_param_in_dit:常驻显存的 DiT 参数量,默认 60 亿。调小后更多权重被 vram_management/layers.py 的机制放到 CPU,显存需求明显下降、速度变慢;在 test_svi.py 中把加载 dtype 改为torch.float8_e4m3fn还能进一步省显存。--num_clips/--num_motion_frames:片段数与跨片段参考帧数。运动帧数必须与训练对齐(Film 用 5、Shot/Talk 用 1),不建议自行改动。--prompt_repeat_times:每条提示词重复使用的片段数,控制"一句提示拍多久"。--num_steps:采样步数,默认 50,降低会牺牲质量。
常见坑与排查方向
- 现象:CUDA out of memory。先确认显存是否被占满;排查方向是把
--num_persistent_param_in_dit调小、改用 FP8 加载。14B 底座本身就占数十 GB,显存不足是新手最常遇到的问题。 - 现象:生成很久后色调偏移、主体被"遗忘"。两个常见来源:VAE 反复编解码在静态画面下累积像素误差,以及测试内容偏离训练分布。排查方向是控制分辨率与
--cfg_scale_text,最根本的办法是用少量目标风格视频微调 LoRA。 - 现象:动作幅度小、转场不出现。多半是输入图被放到了远超 480p 的尺寸,或者提示词太短。先看终端打印的 "Video dimensions",再尝试更完整、LLM 风格的长提示词。
- 现象:在 ComfyUI 里跑官方工作流却闪烁、劣化明显。SVI LoRA 不能直接套 Wan 2.1 的原生工作流,它依赖修改过的 padding 设置,且不同工作流对运动帧数要求不同(Film 是 5 帧、Shot 是 1 帧)。务必使用仓库内的官方工作流,并给每个片段设置不同的 seed——重复使用相同噪声会让瑕疵累积。
更细的问题可以查 docs/FAQ.md,里面还解释了为何选择按片段因果而非逐帧因果。
小结
SVI 目前最适合的本地场景,是把一张图加一段故事线变成几分钟、不漂移的连续视频——短片、动画、口播、舞蹈各有对应 LoRA。它对硬件的要求集中在一张显存充足的 NVIDIA GPU,其余部分(逐片段生成、边生成边写出、CPU 卸载)都为长时运行做了工程上的照顾。项目 TODO 里列着 Wan 2.2 适配、720p 与 Animate 版本,方向是让"无限长"覆盖到更高分辨率与人物动画。
【免费下载链接】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),仅供参考