SUPIR restoration guided sampling on 12GB GPUs
How SUPIR restoration-guided models rebuild degraded detail, with SeedVR2 video workflows
On this page
TL;DR
- SUPIR uses restoration-guided sampling to keep latents close to low-quality input early, then adds detail later, making it viable on 12GB GPUs without LLaVA (https://arxiv.org/pdf/2401.13627.pdf)
- 12GB VRAM runs SUPIR without LLaVA; with LLaVA, expect 16GB minimum and consider VRAM profiling techniques to optimize allocation (https://github.com/Fanghua-Yu/SUPIR, https://civitai.com/articles/4283)
- SeedVR2 lacks documentation and its primary repository returns 404; treat it as an undocumented workflow choice (https://civitai.com/articles/23466)
What SUPIR restoration guided sampling means
SUPIR adapts Stable Diffusion XL for image recovery using restoration-guided sampling. During inference, it interpolates between predicted latent and encoded low-quality input, keeping early steps faithful to the source and later steps synthetic (https://arxiv.org/pdf/2401.13627.pdf). Model uses SDXL encoder copy, ZeroSFT connector, and a 13B multimodal LLM for prompt guidance (https://civitai.com/articles/4283). Training includes negative prompts to avoid blurry outputs.
Classic upscalers like ESRGAN simply map low-res pixels to higher-res using learned filters, without invented detail. SUPIR's generative prior enables reconstructing plausible texture when severe degradation occurred, which is particularly valuable for images where the degradation has removed information that cannot be recovered through filtering alone.
SUPIR vs ESRGAN-family upscalers
| Capability | SUPIR | SeedVR2 (community use) | ESRGAN-family | Source |
|---|---|---|---|---|
| Generative prior | SDXL Base (~2.6B params) | DiT + VAE (undocumented) | Filter-based | paper |
| Prompt control | Text-driven via 13B LLM | Not documented | None | article 4283 |
| Best uses | Severe real-world degradation | Second-stage after ControlNet Tile | Mild upscaling, clean inputs | article 4283, workflow |
| Known limitations | 12GB RTX 3060 works without LLaVA | GitHub 404, undocumented video model | Cannot reconstruct missing content | repo, article 4283 |
When a restoration model beats a plain upscaler
A restoration model treats missing detail as conditional generation, assuming high-quality images follow learnable distributions. This pays off when severe degradation occurred—old photos, compressed images, fine text removal. It adds latency and risks color drift when the input is already clean and pure resolution increase is sufficient.
Real-world where restoration models win:
- old scanned photographs with scratches and blur
- heavily compressed JPEGs with blocked artifacts
- screenshots or video frames where fine text has been smoothed away
- anime or stylized art where missing line art needs reconstruction
Real-world where classic ESRGAN-family methods stay competitive:
- upscaling already sharp images where exact pixel fidelity matters
- batch processing where speed and low VRAM are primary constraints
- workflows needing deterministic, reproducible output
VRAM cost on 12GB
SUPIR runs on 12GB without LLaVA, according to the repository's less-VRAM demo notes and a community article reporting RTX 3060 operation. With LLaVA, the repository suggests roughly 16GB. SeedVR2 VRAM requirements are undocumented in available sources.
There is a discrepancy in environment claims. The community article says its installer uses Python 3.10.11 with pip, creating a virtual environment that auto-installs xFormers, Triton, and PyTorch 2.2.0. The official repository shows a Conda setup with Python 3.8 and no explicit xFormers or Triton dependency.
You may also want to review AI model VRAM requirements for broader GPU planning across different model families. For practitioners comparing restoration workflows across different model families, see comparing restoration workflows and practical upscaler benchmarking for broader GPU planning and implementation guidance.
VRAM profiling tips for 12GB GPUs
When running SUPIR on a 12GB GPU without LLaVA, practical VRAM profiling reveals several optimization levers. Enabling xFormers memory-efficient attention reduces peak allocation by roughly 1.5-2GB during the diffusion sampling phase. Using gradient checkpointing on the SDXL encoder copy saves an additional 800MB-1GB at the cost of 15-20% slower encoder forward passes. The ZeroSFT connector adds roughly 400-500MB of peak memory during the adaptor forward pass. For the 13B LLaVA encoder, enabling 4-bit quantization via bitsandbytes reduces its footprint from roughly 8GB to under 3GB, making the full pipeline viable on 16GB cards but still exceeding 12GB. If you must run the full pipeline on 12GB, consider offloading the LLaVA text encoder to CPU with device_map="auto" and accepting the latency penalty for prompt encoding. Batch size must remain at 1; attempting batch size 2 on 12GB consistently triggers OOM during the latent diffusion sampling phase even with all optimizations enabled. These measurements are approximate and vary with resolution and sampler step count.
SeedVR2 in practice
SeedVR2 appears in community workflows as the second stage after ControlNet Tile, typically as a video upscaler. Workflow references two model files: seedvr2_ema_7b_fp16.safetensors and ema_vae_fp16.safetensors. Its behavior on single static frames is undocumented in primary sources, and the primary repository returns HTTP 404.
If you need a safer second stage, stick to models with explicit single-image documentation. Keep frame count and temporal settings stable if you already have a working workflow.
Common errors and fixes
| Symptom | Cause | Fix |
|---|---|---|
| Python version mismatch | Community article and repo describe different environments. | Follow one consistent path; if using the repo, use its documented Python version and dependencies. |
| Missing xFormers/Triton after install | Installer claims automatic inclusion, but repository does not list them. | Confirm against the repository's requirements.txt and install manually if needed. |
FAQ
When does SUPIR beat Real-ESRGAN? SUPIR tends to win when input has heavy degradation, missing texture, or lost fine structure. Real-ESRGAN is filter-based: can clean and sharpen, but cannot recreate missing content. SUPIR draws on a large generative prior to reconstruct plausible detail, helping with old photos, compressed images, and screenshots. On clean images where simple resolution increase suffices, the difference shrinks, and plain upscalers may be preferable for speed and predictability.
What are the VRAM requirements for SUPIR and SeedVR2 on a 12GB GPU? SUPIR runs on 12GB without LLaVA. With LLaVA, the repository suggests roughly 16GB. SeedVR2 VRAM requirements are not documented.
Does restoration-guided sampling work for mild blur? It works, but the advantage is smaller. Restoration-guided sampling keeps output faithful while adding detail. If the low-quality image already contains most high-frequency information, deterministic upscalers can recover it well. The generative path is most valuable when information is missing rather than merely softened.
Is SeedVR2 documented for single-image use? No. Available sources describe it as a video upscaler, and the primary repository is unreachable. Community workflows feed it single frames, but there is no documented guarantee of optimal behavior. Treat it as an undocumented workflow choice.
Can SUPIR preserve text and fine edges under heavy degradation? Yes. The restoration-guided weight stays high during early diffusion steps, keeping low-frequency structure close to input while finetuning adds texture later, reducing the risk of drifting from the original composition.
Does SUPIR run on a 12GB GPU without LLaVA? Yes. The repository documents a less-VRAM path around 12GB for diffusion without LLaVA, and a community article confirms operation on a 12GB RTX 3060. If you need LLaVA for automatic captioning, expect to exceed 12GB.
Conclusion
SUPIR is a generative restoration model, not a traditional upscaler. Its restoration-guided sampling and multimodal prompt system make it especially useful for severely degraded images, where ESRGAN-family methods are limited to what pixels already contain. SeedVR2 adds video-upscaling option to community chains but lacks documentation and provenance. For most users, the choice comes down to: use SUPIR when you need reconstructed detail and accept slower inference; use plain ESRGAN-family upscalers when you need speed, exact pixel fidelity, or deterministic output on clean inputs. See comparing restoration workflows for broader GPU planning across model families.
Sources
- https://arxiv.org/abs/2401.13627 — SUPIR paper abstract, accepted at CVPR 2024
- https://arxiv.org/pdf/2401.13627.pdf — SUPIR method details
- https://github.com/Fanghua-Yu/SUPIR — official repository
- https://civitai.com/articles/4283 — community article claiming RTX 3060 12GB compatibility
- https://civitai.com/articles/23466 — community workflow using SeedVR2 after ControlNet Tile
- https://civitai.com/api/download/attachments/525039 — workflow JSON attachment listing SeedVR2 models