SeedVR2部署与实测报告-20260926.md

SeedVR2 部署与实测报告(2026-09-26)

目标:验证 SeedVR2(ICLR 2026,字节跳动,Apache-2.0,视频原生一步式扩散修复)能否超过现役逐帧方案 Real-ESRGAN,用于 BV1Ss411o7p3(320×240 / 15fps)的高清修复。 结论:能,但有很大限制 —— SeedVR2 在同等 2 倍档下锐度更高(518.5 vs 429.8),画面最自然;但本机 16GB 显存只跑得动 2 倍档,3 倍档 OOM,且速度只有 Real-ESRGAN 的 1/2.6。

一、下载(迅雷,技能已验证)

文件大小用途
seedvr2_3b_nvfp4.safetensors1.90 GB实际使用(Comfy-Org 官方量化档,最省显存)
seedvr2_3b_int8_convrot.safetensors3.46 GB官方模板默认档,16GB 卡加载即 OOM
ema_vae_fp16.safetensors0.50 GBVAE(Comfy-Org 与 numz 两版 sha256 完全相同)
seedvr2_ema_3b.pth(13.6GB)—❌ 下到一半发现不能用:官方 .pth 不含 ComfyUI 原生加载器必需的键,已删除
seedvr2_ema_3b_fp8_e4m3fn.safetensors(3.39GB)—❌ 同上(numz 版为第三方封装准备),已删除

迅雷实测速度:起步 2.7 MB/s,峰值约 30 MB/s(远快于 GPU 机直连 hf-mirror 的 ~0.4 MB/s)。三个必需文件(共 5.9GB)约 15 分钟内拿齐。

二、三个关键坑(都会导致"下了也用不了")

坑 1:官方 .pth / numz fp8 不被 ComfyUI 原生加载器接受

ComfyUI 的 SeedVR2 检测要求模型含 positive_conditioning + negative_conditioning 两个键(comfy/supported_models.py 的 required_keys):

教训:ComfyUI 原生支持(PR #14424)只认 Comfy-Org 转换版;第三方封装(numz/AInVFX)的权重是给它们自己的节点用的。

坑 2:ComfyUI 官方模板是 subgraph,不能直接 POST

utility_seedvr2_3b_int8_upscale_video.json 是前端工作流格式(subgraph 封装)。要转成 /prompt API 格式必须处理:

已写好脚本:build_seedvr_api.py(模板→API)+ fix_seedvr_api.py(绕开关、补参数、修引用)。

坑 3:16GB 显存只够 2 倍档

配置结果
int8_convrot (3.46GB) + 3x❌ 加载阶段 OOM(峰值 14884/16311 MiB)
nvfp4 (1.90GB) + 3x❌ OOM:已分配 14.10 GiB + 需 778 MiB > 15.49 GiB 上限
nvfp4 (1.90GB) + 2x✅ 成功,显存 9910 MiB,225 帧 105.66 s

官方文档本身也写明"3B 版本至少需要 18GB 显存"——与实测吻合。官方模板的默认值就是 scale_multiplier=2,正是为这点妥协的。

三、实测对比(同段 15s / 225 帧 / 同区域裁切)

方案锐度↑邻帧 PSNR↑速度输出尺寸
源 240p → 640×480(Lanczos)88.4*30.19——
Real-ESRGAN x4plus → 640×480429.826.595.53 fps2x
SeedVR2 3B nvfp4 → 640×480518.523.522.13 fps2x

(*源行来自加黑边输入的那次测试,仅作量级参考)

归一化到 960×720 后(SeedVR2 只能 2x 上采样再放大,Real-ESRGAN 原生 3x 输出):

方案锐度邻帧 PSNR
Real-ESRGAN → 960×720325.922.56
SeedVR2 → 960×720254.423.19

解读:

四、结论与建议

用途推荐
出 960×720 成品继续用 Real-ESRGAN x4plus(3x 直出,锐度更高、无显存问题)
追求最自然的观感 / 240p 原尺寸修复SeedVR2 2x(细节最真实,适合作为"高质量 2 倍档"或局部重制)
快速试看RTX VSR(44 fps)

SeedVR2 要真正超过 Real-ESRGAN 需要:更大显存(≥24GB 跑 3~4 倍档)、或等官方 BlockSwap 进原生实现、或接受"分段 2x + 再插值"的两段式。当前 16GB 卡上它的定位是"2 倍档最自然",而不是"更高分辨率的替代品"。

五、复现(GPU 机)

# 权重位置
# ~/ComfyUI/models/diffusion_models/seedvr2_3b_nvfp4.safetensors
# ~/ComfyUI/models/vae/ema_vae_fp16.safetensors
# 模板 → API → 修正 → 提交
python3 /tmp/build_seedvr_api.py <官方模板.json> /tmp/seedvr_api.json \
    --unet seedvr2_3b_nvfp4.safetensors --vae ema_vae_fp16.safetensors
python3 /tmp/fix_seedvr_api.py /tmp/seedvr_api.json /tmp/seedvr_run.json \
    --video 输入.mp4 --scale 2 --prefix video/seedvr2_out
# 再把 UNETLoader.unet_name 改成 seedvr2_3b_nvfp4.safetensors(或改用 int8,前提显存≥18GB)
curl -s -X POST http://127.0.0.1:8189/prompt -H 'Content-Type: application/json' \
     -d "{\"prompt\": $(cat /tmp/seedvr_run.json)}"

六、全片 2x 成品(2026-09-27 完成)

成品(成品/ 目录)

文件规格体积
朋友法语版-SeedVR2-2x-640x480-30fps.mp4640×480 / 30fps / 7885 帧 / 1.39 Mbps45.5 MB
朋友法语版-SeedVR2-2x-640x480-15fps.mp4640×480 / 15fps / 3944 帧 / 0.89 Mbps29.4 MB

时长 263.08 s(与原片一致),音轨用源音轨重编 AAC 192k。

全片必须分块,块大小有硬上限

单块帧数越多显存越高(一次 forward 处理整块):

单块时长帧数结果
15 s225✅ 峰值 9910 MiB
20 s300✅ 峰值 7990 MiB
53 s795❌ OOM(已分配 14.44 GiB + 需 1.14 GiB > 15.49 GiB)

→ 采用 20 秒/块 × 14 块,每块约 150 秒,全片约 35 分钟。

流水线

seedvr2_fullrun.py(自动切块→上传→提交→轮询→收集)+ post_seedvr2.sh(合并→配回音轨→插帧 30fps):

  1. ffmpeg 按 20 s 切块(H.264 CRF14,无声);
  2. 逐块提交 ComfyUI /prompt(SeedVR2 2x,nvfp4,fps=15,无音频);
  3. 收集 14 块 → concat 合并(3944 帧);
  4. 配回源音轨 → 15fps 版;
  5. minterpolate 15→30fps → 30fps 版(7885 帧)。

接缝验收(关键风险点,已实测无问题)

20 秒切 14 块、逐块独立推理,理论上接缝会跳变。实测接缝两侧 PSNR 17.3–34.7 dB,与普通相邻帧(16.4–26.1 dB)同一量级 → 无接缝跳变,观感连续。

全片对比图

对比图-全片-原片vsRealESRGAN-vs-SeedVR2.png(同帧 t=120s,均归一化到 640×480):

提示:如需更高分辨率(960×720),仍需用 Real-ESRGAN 版;SeedVR2 版的价值在"2 倍档最自然"。

下载此文件