ComfyUI Node

Upscale Image GPU (using Model)

A one-node ESRGAN upscale that only tiles when it has to

By Ltamann·Created about a year ago·Updated a day ago· 148
Upscale Image GPU (using Model)
  • image
  • image
upscale_model
Color_MatchTBG Detail-Preserving Color Stabilizer
Color_Match_Str1.00

What this node is

The TBG ETUR pack is famous for its heavy tiled refiner machinery - neuro-generative tile fusion, per-tile prompts, PiD upscaling, the whole 100MP pipeline. This node is the opposite: a single-trick utility that does the boring, dependable rung of upscaling. You hand it an image and an ESRGAN-style model, it hands back a bigger image. No Patreon key, no tile grid to configure, no generative rewrite.

Worth being clear about what it does not do. This is a pixel upscaler - the "more pixels" category, not "more detail." An ESRGAN model like RealESRGAN or 4x-UltraSharp interpolates and cleans; it won't invent pores, lashes, or fabric weave the way a generative restorer (SeedVR2, or ETUR's own refiner path) will. If the source is already sharp and you just want it bigger, this is the right tool and it's nearly instant. If the source is soft or damaged and you want it better, you want a generative pass instead. Choose your job before you reach for the node.

How it works

The "GPU" in the name is the whole design. It loads the model from your models/upscale_models folder, estimates the VRAM the job needs, and runs the model directly on the GPU, one batch at a time. Only when that would blow up your card does it fall back to tiling - roughly: 4× scale on a ≥1MP input, a ≥16MP output, any side ≥2048px, or an actual out-of-memory error. In fallback mode it upscales each tile and color-matches them before compositing, which is what the Color_Match dropdown is for: it's applied per-tile only when tiling happens. The direct GPU pass ignores it entirely.

The inputs (all three of them)

  • upscale_model - a dropdown populated from your ComfyUI/models/upscale_models folder. RealESRGAN_x4plus, 4x-UltraSharp, Remacri, NMKD-Siax all work.
  • image - what you're scaling.
  • Color_Match / Color_Match_Str - tile color correction for the fallback path. The default, "TBG Detail-Preserving Color Stabilizer" at strength 1.0, is usually fine to leave alone.

Output: a single image. One thing in, one thing out - which is refreshing in a pack where every other node has twelve sockets.

Installing it

Whole-pack install again:

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

or ComfyUI Manager → search "TBG" → install TBG Enhanced Upscaler and Refiner, then restart. You also need an upscale model on disk - the README links RealESRGAN_x4plus, 4x-UltraSharp, 4x_NMKD-Siax and friends; they go in ComfyUI/models/upscale_models/.

One honest caveat: if this is the only node you want from the pack, the requirements (opencv, timm, kornia, bitsandbytes, optimum...) are a lot of machinery for a simple ESRGAN wrapper, and ComfyUI's native upscale nodes might serve you as well. This one earns its keep when you're already in the TBG ecosystem and want a color-consistent tiled fallback without building one by hand.

Troubleshooting

  • It's slow on big images - that's the tiled fallback doing per-tile color matching. Not a bug; the alternative was an out-of-memory crash.
  • Model missing from the dropdown → it's not in upscale_models/. The node reads that folder at startup.
  • Expecting detail the image never had → wrong tool. This just makes it bigger; pair it with a low-denoise generative refine if you want both more pixels and more detail.
  • Pack won't load → update ComfyUI. The pack is migrated to the v3 node API and needs a current build.
CategoryTBG/ETUR Tiled Upscaler and Refiner

Inputs (4)

NameTypeDefaultDescription
upscale_modelCOMBO0 options:
imageIMAGE
Color_MatchCOMBOTBG Detail-Preserving Color StabilizerApplied per upscaled tile before stitch/composite when the GPU node falls back to tiled processing.
Color_Match_StrFLOAT1.000–2

Outputs (1)

NameTypeDescription
imageIMAGE