LDSR Upscale
Same engine, extra socket
- upscale_model
- images
- images
Same engine as the pack's all-in-one node, one extra socket. LDSR Upscale takes a UPSCALE_MODEL input instead of a model filename, so it works in the ComfyUI load-once-run-many pattern: wire the output of Load LDSR Model into this, and you've split "load the checkpoint" from "run the upscale" into two graph nodes.
Why the split exists
The practical benefit is twofold, and it's honest about being modest. First, the loader reads the checkpoint from disk once and parks it on the CPU; each LDSR Upscale run then pushes that already-loaded model onto the GPU rather than re-reading the file. If you're running several upscale passes in one workflow, that saves you the reload churn. Second, the model becomes a first-class socket - you can feed one loaded model into multiple upscale nodes, or swap the model without touching the rest of the graph.
The catch is that the loaded model still gets parked back on the CPU after every run, so "load once" saves disk reads, not VRAM. If you're doing a single one-off upscale, the all-in-one node is fewer clicks and you won't notice the difference.
Inputs and outputs
Everything else is identical to the all-in-one - same settings, same defaults:
upscale_model(UPSCALE_MODEL) - the output of the loader node.images(IMAGE) - whatever you're upscaling.steps- DDIM steps, default 100 (25 / 50 / 100 / 250 / 500 / 1000). More steps, more detail, more waiting.pre_downscale-None/1/2/1/4; shrinking the input first runs faster and often looks better.post_downscale-None/Original Size/1/2/1/4;Original Sizegets you the detail without the bigger canvas.downsample_method- Lanczos (default) vs Nearest; only matters whenpost_downscaleshrinks.
Output is images (IMAGE), which feeds a Save Image / Preview node or a second-pass img2img step.
Mechanism
It calls the exact same code path as the all-in-one - LDSR.superResolution - so it's the same latent-diffusion process: encode, iterative DDIM denoising at fixed eta = 1.0, decode back to 4x. Same padding to a multiple of 64, same 128px tiling for big images, same CPU parking after each image. If you've read the all-in-one article, you know everything this does.
Installing it
Same pack, same install, same model file as the loader: ComfyUI Manager (search "LDSR"), or clone flowtyone/ComfyUI-Flowty-LDSR into custom_nodes and pip install -r requirements.txt, then drop the LDSR checkpoint from the README's HeiBox link into ComfyUI/models/upscale_models and restart.
The honest take
This is a variant node for people who like the loader/worker split or want the model as a swappable socket - there's nothing here that the all-in-one doesn't do. Use it when you're building a reusable workflow; use the all-in-one for everything else. Either way, you're committing to a 2022 diffusion upscaler: slow, occasionally artifacty on hair and tricky textures, and utterly unmaintained since early 2024 - but still capable of detail that plain pixel upscalers can't touch.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| upscale_model | UPSCALE_MODEL | — | |
| images | IMAGE | — | |
| steps | COMBO | 100 | 6 options: 25, 50, 100, 250, 500, 1000 |
| pre_downscale | COMBO | None | 3 options: None, 1/2, 1/4 |
| post_downscale | COMBO | None | 4 options: None, Original Size, 1/2, 1/4 |
| downsample_method | COMBO | Lanczos | 2 options: Nearest, Lanczos |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |