Files
stable-diffusion.cpp/docs/seedvr2.md
T

2.9 KiB

SeedVR2 image and video super-resolution

SeedVR2 upscales images and videos with -M vid_upscale. Support is experimental.

Weights

These ComfyUI safetensors weights load directly, without conversion or a separate text encoder:

Model --diffusion-model --vae
3B seedvr2_3b_int8_convrot.safetensors seedvr2_ema_vae_fp16.safetensors
7B Sharp seedvr2_7b_sharp_int8_convrot.safetensors seedvr2_ema_vae_fp16.safetensors

Use the matching SeedVR2 VAE for either model. The 7B model requires more memory.

Upscale an image

sd-cli -M vid_upscale \
  --diffusion-model models/diffusion_models/seedvr2_3b_int8_convrot.safetensors \
  --vae models/vae/seedvr2_ema_vae_fp16.safetensors \
  -i input.png --upscale-factor 2 -s 42 -o restored.png

-i / --init-img accepts a single image. Outputs can be PNG, JPEG, or WebP. No FPS or temporal chunk setting is needed for an image.

Upscale a video

Extract the video into numbered frames, then pass the frame directory:

mkdir frames
ffmpeg -i input.mp4 -fps_mode passthrough frames/%06d.png
sd-cli -M vid_upscale \
  --diffusion-model models/diffusion_models/seedvr2_3b_int8_convrot.safetensors \
  --vae models/vae/seedvr2_ema_vae_fp16.safetensors \
  --input-frames frames --upscale-factor 2 --fps 24 \
  --vsr-temporal-chunk-size 1 -s 42 -o restored.avi

Set --fps to the source video's frame rate; 24 is only the example above. Frames are read in filename order. Use either -i or --input-frames, not both.

Video outputs support AVI, WebM, and animated WebP. To save individual frames, use an output pattern such as -o restored/%06d.png.

Settings and limits

  • --upscale-factor is required and must be a positive integer. Output width and height are exactly the input dimensions multiplied by this value.
  • --vsr-temporal-chunk-size controls how many video frames are processed together. Valid values are 1, 5, 9, 13, and so on; the default is 5. A value of 1 processes each frame independently and uses less memory. Larger values use neighboring frames but require more memory. Chunk boundaries may be visible.
  • Frame count and order are preserved, including a shorter final chunk. Audio is not copied to the output.
  • If you run out of GPU memory, try --vsr-temporal-chunk-size 1. A five-frame chunk at 1728x960 output resolution exceeded 24 GB of GPU memory in testing.
  • --flash-attn auto and --conv-direct auto are enabled by default. See backend selection to choose a device or weight placement.
  • SeedVR2 does not use sampler, scheduler, or step settings. --vsr-window-size is a RelayVSR option and does not affect SeedVR2.

3B has been tested on CUDA and CPU; 7B has been tested on CUDA with small inputs. Other backends have not been tested with this integration.

Model reference: ByteDance-Seed/SeedVR.