LDSR Upscale (all-in-one)
Slow, glorious, and still worth a run
- images
- images
This is the node to grab if you want LDSR at all. The all-in-one version of the pack folds the model load and the upscale into a single node: feed it an image, pick the checkpoint, pick your steps, and out comes a 4x image with detail that no pixel upscaler will give you. No loader node, no UPSCALE_MODEL socket to wire - just in, out, done.
How it actually works
LDSR is not an ESRGAN-style one-pass CNN. It's a latent diffusion model: it encodes your image into latent space, runs an iterative DDIM denoising pass that synthesizes detail as it goes, then decodes back to pixels at 4x (the upscale factor is hardcoded to 4 in the source). That's why it's slow, why the results vary with the input, and why the output has real texture instead of sharpened mush - it's the direct ancestor of today's generative upscalers like SUPIR and SeedVR2, just from 2022.
Under the hood the pack does a few things worth knowing. It pads your image to a multiple of 64 and ensures the shortest side is at least 128px, then splits big images into 128px patches with 64px overlap so it doesn't blow up VRAM. It runs the model with eta fixed at 1.0. And after every image it shoves the model back onto the CPU, so memory gets released as it goes rather than accumulating.
The settings that matter
There are six inputs on the node; a beginner actually touches three.
model- the checkpoint dropdown. Defaults tolast.ckpt, which is the file the README tells you to download.steps- DDIM sampling steps, default 100 (choices are 25–1000). This is the entire time-vs-detail tradeoff. Use 25–50 to test, 100+ for a real run.pre_downscale-None/1/2/1/4. Shrinking the input before the diffusion pass is the counterintuitive win here: the code's own comment says it "will often improve the final image and runs faster." It's the same trick the modern upscaling handbooks tell you to use.post_downscale-None/Original Size/1/2/1/4.Original Sizeupscales to 4x then shrinks back to your input dimensions - you get the extra detail without the bigger canvas. The author's own tip for "super resolution without changing size."downsample_method- Lanczos vs Nearest. Only bites whenpost_downscaleis doing a shrink; Lanczos is smoother, Nearest sharper but more pixelated. Default Lanczos is right for 95% of cases.
The single output, images (IMAGE), wires straight into a Save Image or Preview node, or into a second-pass img2img step.
Installing it
Same pack, same everything as Load LDSR Model - install via ComfyUI Manager (search "LDSR") or:
cd ComfyUI/custom_nodes
git clone https://github.com/flowtyone/ComfyUI-Flowty-LDSR.git
cd ComfyUI-Flowty-LDSR
pip install -r requirements.txt
Then download the LDSR checkpoint from the HeiBox link in the README into ComfyUI/models/upscale_models and restart. The requirements pull in pytorch-lightning and torchmetrics==0.11.4, and the classic failure - "No module named 'pytorch_lightning'" - means pip installed into the wrong Python (the portable Windows build especially). Install into ComfyUI's own environment.
What people actually hit
Be honest about the costs. The community's first impressions from the release thread still hold: it pulverises a plain hi-res fix, but it's slow ("probably a bit slow if you have a 2080", as one tester put it), it can artifact on hair and textures that confuse the model, and noisy sources can come out with a faint "glow". The README itself warns that results vary by input image - that's not a disclaimer, it's the truth.
The pack is also a museum piece: released January 2024, one maintenance commit in February 2024, and effectively unmaintained since. Nothing in it is broken; it's just old. LDSR discussion in the community has dropped to nearly zero - everybody who wanted a generative upscaler moved on to SeedVR2 and friends. But the quality argument the author made when he pitched the port still holds: for the right image, "nothing quite lives up to LDSR's standard." On a 4090 it's a delightful throwback. On a mid-range card, start at 25 steps and decide whether you can wait.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| model | COMBO | last.ckpt | 0 options: |
| 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 | — |