Stable Diffusion WebUI Forge 图像序列生成:批量帧 + 种子递增 + ControlNet,合成 12fps 短视频
2026/9/13 7:33:07 网站建设 项目流程

Stable Diffusion WebUI Forge 图像序列生成:批量帧 + 种子递增 + ControlNet,合成 12fps 短视频

【免费下载链接】stable-diffusion-webui-forge项目地址: https://gitcode.com/GitHub_Trending/st/stable-diffusion-webui-forge

想在 Stable Diffusion WebUI Forge 里做出一段"猫慢慢变成狗"或"人物轻轻挥手"的动画吗?不需要装任何视频插件:用 txt2img 标签页一次性批量出一组连续静帧,再用一条 ffmpeg 命令把它们拼成 mp4。照下面的 5 步走,10 分钟内你能拿到第一段 1 秒的短视频。

整个做法只依赖三样东西:批量生成、种子递增、姿态控制。目标也拆成三个可单独验证的小点——① 一键出一批连续帧;② 控制相邻帧之间的变化量;③ 锁住主体姿态不让画面崩掉。跑完每个小点都有一个明确的"做对了"标志。

实际体验大概是这样:种子填 42,Batch count 填 12,点生成,outputs/txt2img-images/目录里立刻多出 12 张种子为 42~53 的图,按 12fps 播放就是 1 秒的"呼吸感"短片。

先懂原理:为什么"相邻种子 = 相邻帧"

每张图由"提示词 + 噪声种子"共同决定。种子只差 1,就像把一副牌只换了一小张——画面只会微微变化。批量生成时 Forge 会自动给每张图分配递增的种子(逻辑在 modules/processing.py),所以 12 张批量图天然就是 12 个连续种子,天然是一组"帧"。

想要更明显的变化,有两条路:提示词调度语法[a:b:0.5]会在采样进行到一半时把 a 换成 b(解析实现在 modules/prompt_parser.py);ControlNet 则用一张骨架图给每一帧"定轨"。另外噪声源可以固定到 CPU,这样同一颗种子在不同显卡上出完全一样的图(见 modules/rng.py)。

动手实操

第 1 步:5 分钟把环境跑起来

git clone https://gitcode.com/GitHub_Trending/st/stable-diffusion-webui-forge cd stable-diffusion-webui-forge && bash webui.sh

Windows 用户把最后一行换成webui.bat。把你的 checkpoint 放进models/Stable-diffusion/目录。

成功标志:浏览器自动打开 WebUI,模型下拉框里能选到你的模型。

第 2 步:一键批量出帧

在 txt2img 标签页操作(界面由 modules/ui.py 定义):

  • 提示词写一个静态画面描述,比如 "a cat sitting by a window, soft light"
  • Seed 固定为一个数字,如 42
  • Batch count 拉到 12,分辨率 512x512

点 Generate。

成功标志outputs/txt2img-images/里多出 12 张图,文件名里种子依次是 42、43……53。相邻两张对比,主体一致,只有背景细节、光影在动。

第 3 步:跨帧形变,用提示词调度语法

把提示词写成[cat:dog:0.5]:采样进行到 50% 时从 cat 切换到 dog,成图以后者为主、前者为辅。注意这个 0.5 是采样步数的进度,不是帧序号。

生成 5 次,每次只改尾部的数字:0.2、0.4、0.6、0.8、1.0。

成功标志:0.2 那张基本是猫,0.8 那张基本是狗,中间帧两种元素混在一起——这就是一条 5 帧的形变序列。

第 4 步:ControlNet 锁住姿态,防画面崩

仓库内置了 ControlNet 扩展(extensions-builtin/sd_forge_controlnet/)。把 OpenPose 模型放进models/ControlNet/目录,在 txt2img 右侧展开 ControlNet 面板:

  • 模型选 openpose,上传一张骨架图
  • 权重(weight)设 0.7

成功标志:12 帧里主体姿势几乎不动,只有细节在变。权重越大越"听话",超过 1 画面会发死。

第 5 步:ffmpeg 合成视频

把 12 张图按顺序重命名为frame_001.pngframe_012.png,然后:

ffmpeg -framerate 12 -i frame_%03d.png -c:v libx264 -pix_fmt yuv420p frames.mp4

成功标志:frames.mp4 时长 1 秒、12fps,播放时画面连续不跳帧。

效果进阶

技巧 1:把"帧间变化量"调到合适 🔧

  • 细微动效:种子递增已是最小变化量。想要更"呼吸感",把分辨率降到 512、步数降到 20。
  • 明显形变:改用 img2img,上一帧作为输入图,重绘幅度(Denoising strength)设 0.2~0.35 逐帧生成,每帧继承前一帧,变化更连贯。
  • 不适用:只靠种子递增做大幅度位移,结果会是闪烁而不是运动——位移必须靠 ControlNet 轨迹。

技巧 2:换台电脑也能复现同一组帧

设置页把 RNG source 改为 CPU(对应 modules/shared_options.py 里的randn_source选项)。

  • 适用:和朋友协作、换机器续做同一批帧。
  • 不适用:单人开发且只认本机结果,保持 GPU 即可,速度略快。

技巧 3:批量时稳住显存

Forge 在 torch 2 下会自动启用 cudaMallocAsync 后端(modules_forge/cuda_malloc.py),终端打出Using cudaMallocAsync backend.就说明生效,批量连出时显存尖峰会被削平。如果仍然 OOM,把 Batch count 降到 4~6,或换更小的模型。

排错速查

现象原因处理
批量帧几乎全一样帧内种子未递增,噪声相同确认设置里 "enable_batch_seeds" 为开(默认开),种子不要用 -1
画面闪烁得没法看种子独立随机,帧间变化过大改用 img2img 以上一帧为输入,重绘幅度 0.25
同一颗种子,两台机器出图不同默认 RNG 源 GPU 依赖显卡设置 → RNG source 改为 CPU
批量生成时显存溢出单批帧数或分辨率过高Batch count 降到 4~6,分辨率降到 512

验证标准:frames.mp4 播放时 12 帧连续、主体不跳变、总时长 1 秒——做到即成功。想再进一步,试试[a|b]交替语法做频闪效果,或叠两层 ControlNet 让两个人物同时动。

【免费下载链接】stable-diffusion-webui-forge项目地址: https://gitcode.com/GitHub_Trending/st/stable-diffusion-webui-forge

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询