π Universal NN Latent Upscale *DRE
Upscale your latents with a real neural network β SD1.5, SDXL, Flux, or Wan
- latent
- LATENT
The standard way to upscale in ComfyUI is: decode to pixels, run an image upscaler, re-encode. That's a full VAE round-trip - slow, and a VRAM spike right where you're already tight. UniversalNNLatentUpscale_DRE skips the round-trip: it runs a small neural network directly on the latent tensor to produce a higher-resolution latent, and then you keep sampling or decode once. This is the "latent upscale as the intermediate step" move from the hi-res-fix playbook, minus the pixel detour.
What it is, exactly
The node is the author's extended port of Ttl's ComfyUi_NNLatentUpscale - the same lineage as the pack's standalone WAN_NN_Latent_Upscale repo, with the *DRE suffix added so both can live in one ComfyUI install without node-ID collisions. The improvement over Ttl's original is breadth: instead of one model, it ships four bundled .pt resizer models covering SD 1.5, SDXL, Flux, and Wan2.2, and auto-loads the right one from the version you pick. The model files are inside the pack's models/ folder (sd15_resizer.pt, sdxl_resizer.pt, flux_resizer.pt, wan2.2_resizer_best.pt), so there's nothing to download separately - they come with the clone.
Inputs and outputs
latent(LATENT, required) - your KSampler output.version-SD 1.5,SDXL,Flux, orWan2.2. Pick the one matching your checkpoint. Flux and Wan2.2 use the 16-channel latent layout; SD 1.5/SDXL use 4-channel - the node handles that via per-version model config.upscale(FLOAT, 1.0β2.0, default 1.5) - the scale factor. This is a hard 2x ceiling, which is the honest limit of a latent resizer: it adds pixels, not new detail. For real detail you'd pair it with a second sampling pass.force_reload(BOOLEAN, default false) - re-load the model even if it's already cached. Only touch it if you swapped model files.
Output: LATENT, ready for more sampling or a single VAE decode.
How it behaves
The node loads the model into fp16 on your GPU (fp32 if you're not on a CUDA path), runs it under no_grad, and hands the result back. It's a real neural upscaler, not an interpolation, but here's the honest framing from the upscaling playbook: a latent NN upscaler is on the pixels rung of the ladder, not the detail rung. It makes your latents bigger so your next sampling pass can work at higher resolution - think hi-res fix's latent pass, not a SeedVR-style "invent new detail" restore. Use it exactly where a hi-res-fix latent step would go: upscale, then sample again at low denoise to let the model add the finer texture.
Install and caveats
Part of DenRakEiw_Nodes - ComfyUI Manager β search "DenRakEiw Nodes", or:
cd ComfyUI/custom_nodes
git clone https://github.com/DenRakEiw/DenRakEiw_Nodes
cd DenRakEiw_Nodes && pip install -r requirements.txt
then restart. The requirements note this node only needs torch/numpy/Pillow, which ComfyUI already provides - the .pt models ship in the pack.
Caveats: keep version in sync with your actual checkpoint or the upscale will look wrong (the latent layouts genuinely differ between 4ch and 16ch models). And while the models are bundled, they're the author's trained weights - treat them as "good enough to ship in a pack," not as tuned rivals to the dedicated upscale LoRAs people swear by. One-author pack, minimal support; the repo's issues page is your help desk.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| latent | LATENT | β | |
| version | COMBO | 4 options: SD 1.5, SDXL, Flux, Wan2.2 | |
| upscale | FLOAT | 1.501β2 | β |
| force_reloadopt | BOOLEAN | false | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| LATENT | LATENT | β |