ComfyUI Node

CCSR

CCSR — the detail-restoring upscaler, without the 12GB+ VRAM tax

By Runware·Created 2 years ago·Updated about a month ago· 140
CCSR
  • image
  • image
upscaleFactor(default)
settings.CFGScalefalse
settings.CFGScale_value0.00
settings.controlNetWeight1.00
settings.negativePrompt
settings.positivePrompt
settings.seedfalse
settings.seed_value0
settings.stepsfalse
settings.steps_value20
ttlfalse
ttl_value60
outputFormatJPG
outputQuality95

CCSR (Conditioning with Contrastive supervision for image Super-Resolution) is the 2023-era diffusion upscaler that everybody respected and almost nobody ran, because it was a VRAM monster. Where Real-ESRGAN is a pixel upscaler that adds resolution, CCSR is a generative restorer: it reconstructs plausible high-frequency detail - texture, sharp edges, recovered detail that was never really in the source. That's a different job, and it's the one people usually actually mean when they say "make this image look better." The historical problem was that local CCSR wanted a serious card (12GB+ and slow), which is exactly the kind of thing that ends up serving a niche. This node puts it in the cloud: feed it an image, get a restored, upscaled IMAGE back.

The key mental model, straight from the upscaling essay: this is a detail tool, not a pixels tool. Use it on soft or damaged images where you want the model to invent plausible detail. Use Real-ESRGAN (also in this pack) when the source is already sharp and you just want it bigger. And know that, like every generative restorer, it will rewrite fine features - don't point it at a face you need to recognize and expect identity to survive.

How it works

Another upscale-classified node in the pack: it sends the image to Runware, the API runs CCSR's multi-scale diffusion restoration, and the result comes back as a native IMAGE tensor. What makes this node different from the Real-ESRGAN node is the controls - CCSR exposes diffusion-style settings because it's fundamentally a diffusion process:

  • image (required) - the input tensor.
  • upscaleFactor - (default) or 2. Note there's no 4× here; CCSR's default restoration scale is around 2×, and pushing a diffusion restorer past its comfortable factor is how you get artifacts.
  • settings.CFGScale - an off-by-default gate with CFGScale_value. Higher = output sticks closer to the prompt; for pure restoration you usually want it low. Leave the gate off and let the model default unless you know why you're changing it.
  • settings.controlNetWeight - −4 to 4, default 1. This is how hard the ControlNet-style conditioning (the "keep the source structure" constraint) is applied. Lower it to let the model stray further toward its reconstruction; negative values steer away from the guide. At 0 it's pure generation from the prompt.
  • settings.positivePrompt / settings.negativePrompt - yes, an upscaler with prompts. CCSR conditions on a text description of what the result should look like. Empty positive prompt means "restore this faithfully"; a prompt like "highly detailed, sharp, clean" can push texture quality. The negative prompt is ignored when guidance is disabled (CFG ≤ 1), per the tooltip.
  • settings.steps - off-by-default gate; steps_value 20–60 (default 20). More steps = slower but more thorough restoration.
  • settings.seed - gate + seed_value for reproducible runs.
  • outputFormat / outputQuality - JPG/PNG/WEBP and compression quality.

The output is image → Preview or Save.

Installing

cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt

Or ComfyUI Manager → search Runware → install → restart. API key via Settings, RUNWARE_API_KEY, or runware auth login. No local weights - the VRAM tax is gone, which is the entire appeal of the cloud version.

Where people get burned

Two classic mistakes. First, treating it like a pixel upscaler and being disappointed that it "changed" the image - it's supposed to; it's reconstructing detail, and that's the point. Second, running it on already-clean images, where restoration adds unwanted texture and detail noise (the exact complaint the KB logs against SUPIR for the same category). If the source is clean and sharp, Real-ESRGAN is the right node. CCSR is for the soft, damaged, compressed stuff - and now you can actually afford to run it.

CategoryRunware/Image/runware

Inputs (15)

NameTypeDefaultDescription
imageIMAGE
upscaleFactoroptCOMBO(default)Factor by which to upscale the generated image. A value of 2 doubles width and height.
settings.CFGScaleoptBOOLEANfalseEnable to set settings.CFGScale. Off uses the model's default.
settings.CFGScale_valueoptFLOAT0.00Guidance scale representing how closely the output will resemble the prompt. Higher values produce results more aligned with the prompt.
settings.controlNetWeightoptFLOAT1.00-4–4Strength of the ControlNet influence. A value of 0 means no influence. Higher values increase the influence, and negative values can be used to steer away from the guide image.
settings.negativePromptoptSTRINGPrompt to guide what to exclude from generation. Ignored when guidance is disabled (CFGScale ≤ 1).
settings.positivePromptoptSTRINGText prompt describing elements to include in the generated output.
settings.seedoptBOOLEANfalseEnable to set settings.seed. Off uses the model's default.
settings.seed_valueoptINT00–9223372036854776000Random seed for reproducible generation. When not provided, a random seed is generated in the unsigned 32-bit range.
settings.stepsoptBOOLEANfalseEnable to set settings.steps. Off uses the model's default.
settings.steps_valueoptINT2020–60Total number of denoising steps. Higher values generally produce more detailed results but take longer.
ttloptBOOLEANfalseEnable to set ttl. Off uses the model's default.
ttl_valueoptINT60Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`.
outputFormatoptCOMBOJPGFile format for the generated image.
outputQualityoptINT9520–99Compression quality of the output. Higher values preserve quality but increase file size.

Outputs (1)

NameTypeDescription
imageIMAGE