SUPIR Upscale (Replicate)
SUPIR without the 16GB VRAM bill — but the faces still get rewritten
- image
- image
SUPIR is a generative upscaler with a split personality. Run it locally and it needs 10–12GB of VRAM minimum, 16GB+ to be comfortable, which puts it out of reach of a whole tier of machines. This node runs the same cjwbw/supir model on Replicate's hardware, so you get the restoration power without the VRAM. That's a genuinely good trade for the machine-poor.
But know what you're buying. SUPIR doesn't just upscale - it restores. It captions your image with LLaVA and regenerates toward what that caption describes, which is how it fixes compression artifacts, heavy noise, and blur in a single pass that nothing else quite matches. The same mechanism is why it rewrites faces: it invents a plausible one rather than preserving the person you know. That's design, not a settings problem, and it was true on day one. Keep faces out of the SUPIR pass and handle them separately if identity matters.
Also worth saying: for mid-2026, the community has quietly moved most "upscale the detail" work to SeedVR2 (faster, Apache 2.0, free, and it doesn't rewrite faces the way SUPIR does). SUPIR's surviving niche is genuinely damaged sources - old scans, heavy JPEG, noisy phone photos. That niche is real, and it's the honest reason to reach for this node.
How it works
Pack standard: the node uploads your image as PNG, calls replicate.run("cjwbw/supir", ...), downloads the result, returns an IMAGE tensor. The difference from the local version is that you've rented the 16GB of VRAM per call instead of owning it - which is exactly the trade a no-local-GPU setup makes.
The inputs that matter (don't touch the rest)
This schema has nineteen inputs, and most of them are SUPIR's research knobs you should leave alone. The ones you actually set:
- image (required) - the low-quality input.
- model_name -
SUPIR-v0Q(default, the paper's training settings) orSUPIR-v0F(higher generalization, better image quality in most cases). For real-world damage, v0F is the one most people end up preferring. - upscale - the ratio. Default
1- note it's a plain integer, so "2" for 2x. - edm_steps - 50 default. More steps = slower = marginal gains past ~50.
- use_llava - LLaVA captioning on by default. It's what drives the restoration direction; turning it off makes the model lean on
a_promptinstead. - a_prompt / n_prompt - the additive positive and negative prompts, and yes, the defaults are comically long ("Cinematic, High Contrast... 32k... skin pore detailing"). They work. Leave them until you know why you're changing them.
- color_fix_type -
Wavelet(default) is the safe choice for color shifts;AdaInif Wavelet overcorrects. - seed - set it for reproducibility.
Everything from s_stage1 down through spt_linear_s_stage2 is EDM sampler plumbing. You can ignore it completely and still get the results people talk about.
Output: image, an IMAGE tensor.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Pharma-Lobby/ComfyUI-Replicate-Select
Or ComfyUI Manager → "Replicate Select", restart. Only dependency: replicate>=1.0.7. Token via environment variable:
export REPLICATE_API_TOKEN=r8_...
Where people get burned
- Faces change. Restoring an old family photo with SUPIR will hand you back a stranger. Inpaint faces separately or use a non-generative upscaler for portraits.
- Clean images get worse. Feed SUPIR an already-clean render and it adds unwanted texture; it's a restoration tool, not a "sharpen my good image" tool.
- Licensing. If this is for anything commercial, note SUPIR's weights are non-commercial without written permission from the author - the node doesn't change that, it just runs the model.
Inputs (19)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | Low quality input image. | |
| model_nameopt | COMBO | SUPIR-v0Q | Choose a model. SUPIR-v0Q is the default training settings with paper. SUPIR-v0F is high generalization and high image quality in most cases. Training with light degradation settings. Stage1 encoder o |
| upscaleopt | INT | 1-2147483648–2147483647 | Upsampling ratio of given inputs. |
| min_sizeopt | FLOAT | 1024.00-1000000000–1000000000 | Minimum resolution of output images. |
| edm_stepsopt | INT | 501–500 | Number of steps for EDM Sampling Schedule. |
| use_llavaopt | BOOLEAN | true | Use LLaVA model to get captions. |
| a_promptopt | STRING | Cinematic, High Contrast, highly detailed, taken using a Canon EOS R camera, hyper detailed photo - realistic maximum detail, 32k, Color Grading, ultra HD, extreme meticulous detailing, skin pore detailing, hyper sharpness, perfect without deformations. | Additive positive prompt for the inputs. |
| n_promptopt | STRING | painting, oil painting, illustration, drawing, art, sketch, oil painting, cartoon, CG Style, 3D render, unreal engine, blurring, dirty, messy, worst quality, low quality, frames, watermark, signature, jpeg artifacts, deformed, lowres, over-smooth | Negative prompt for the inputs. |
| color_fix_typeopt | COMBO | Wavelet | Color Fixing Type.. |
| s_stage1opt | INT | -1-2147483648–2147483647 | Control Strength of Stage1 (negative means invalid). |
| s_churnopt | FLOAT | 5.00-1000000000–1000000000 | Original churn hy-param of EDM. |
| s_noiseopt | FLOAT | 1.00-1000000000–1000000000 | Original noise hy-param of EDM. |
| s_cfgopt | FLOAT | 7.501–20 | Classifier-free guidance scale for prompts. |
| s_stage2opt | FLOAT | 1.00-1000000000–1000000000 | Control Strength of Stage2. |
| linear_CFGopt | BOOLEAN | false | Linearly (with sigma) increase CFG from 'spt_linear_CFG' to s_cfg. |
| linear_s_stage2opt | BOOLEAN | false | Linearly (with sigma) increase s_stage2 from 'spt_linear_s_stage2' to s_stage2. |
| spt_linear_CFGopt | FLOAT | 1.00-1000000000–1000000000 | Start point of linearly increasing CFG. |
| spt_linear_s_stage2opt | FLOAT | 0.00-1000000000–1000000000 | Start point of linearly increasing s_stage2. |
| seedopt | INT | 0-2147483648–2147483647 | Random seed. Leave blank to randomize the seed |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |