Nodes/ComfyUI Impact Pack/Upscaler (SEGS)
ComfyUI Node Runs on cloud

Upscaler (SEGS)

Upscale an image region by region, at full detail, then stitch it back

By ltdrdata·Created 3 years ago·Updated 4 months ago· 3,248
Upscaler (SEGS)
  • image
  • segs
  • model
  • clip
  • vae
  • positive
  • negative
  • upscale_model_opt
  • upscaler_hook_opt
  • scheduler_func_opt
  • IMAGE
rescale_factor2.00
resampling_method
supersample
rounding_modulus8
seed0
steps20
cfg8.00
sampler_name
scheduler
denoise0.50
feather5
inpaint_modelfalse
noise_mask_feather20

Most upscalers treat the whole image as one job. Upscaler (SEGS) treats it as a set of regions. You give it an image plus a SEGS - the detected areas - and it upscales and re-samples each region with a full generation pass, then composites the results into a larger final image. In practice this is the engine behind SEGS-based tiled upscaling: chop the image into tiles with Make Tile SEGS, feed them here, and every tile gets its own detailing pass at high resolution while your VRAM only ever holds one tile at a time.

It's a more involved node than a plain ESRGAN pass because it isn't a plain upscale - it's upscale plus a diffusion pass per region, which means it can add invented detail, not just pixels. Decide which of those you want before reaching for it.

How it works

For each region in the SEGS, it scales the crop up (optionally through an ESRGAN-style upscale_model_opt first, then a resampling method to hit the exact target), runs a KSampler pass on it at the settings you give, and pastes it back into the enlarged canvas. Because it's a real sampling pass, it needs the full model stack - model, CLIP, VAE, and both conditionings - wired in directly, not through a pipe.

The inputs and outputs that matter

  • image + segs - the source image and the regions to upscale. With Make Tile SEGS upstream, the SEGS is a grid of tiles.
  • model / clip / vae / positive / negative - the generation stack. The positive prompt here is usually something generic like "high detail, sharp" since it applies to every region.
  • rescale_factor (default 2) - the multiplier. 2 doubles the output dimensions.
  • denoise (default 0.5) - how much each region gets rewritten during the pass. Lower (0.2–0.35) keeps it faithful and just sharpens; higher invents detail and risks changing content. This is the dial that decides whether you're doing a clean upscale or a creative one.
  • upscale_model_opt (optional, UPSCALE_MODEL) - plug in a 4x ESRGAN model to do the heavy lifting of adding pixels, so the diffusion pass only has to refine. Cheaper and often cleaner than making the sampler do all the enlarging.

The single output is the upscaled IMAGE.

How to install it

ComfyUI Manager: search ComfyUI Impact Pack, Install, restart.

Manual:

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

Run the pip in ComfyUI's Python environment, then restart. For the tiled-upscale use, you'll pair this with Make Tile SEGS (also in the pack) and, ideally, a 4x upscale model dropped into ComfyUI/models/upscale_models.

Common issues & troubleshooting

Faces changed identity in the upscale. Every generative pass can rewrite a face, and this is one. Keep the denoise low, and give recognisable faces their own dedicated detail pass rather than trusting a high-denoise region upscale. This is design, not a settings bug.

Visible seams between tiles. Raise feather and noise_mask_feather so adjacent regions blend, and make sure your tile SEGS overlap. Tiles that abut with no overlap and no feather will show grid lines.

It's slow / hungry. It runs a full sampling pass per region, so a fine tile grid means many passes. That's the trade for arbitrary output size on limited VRAM - fewer, bigger tiles are faster but need more memory each. If you only need more pixels on an already-sharp image and not invented detail, a plain ESRGAN upscale is faster and won't hallucinate.

Prefer an off-the-shelf detail upscaler for whole images. If you're not doing region- or tile-specific work, a dedicated model like SeedVR2 (Apache-2.0, and the community's standing answer for "add detail") is usually less fuss than assembling this node's full stack.

CategoryImpactPack/Upscale

Inputs (23)

NameTypeDefaultDescription
imageIMAGE
segsSEGS
modelMODEL
clipCLIP
vaeVAE
rescale_factorFLOAT2.000.01–100
resampling_methodCOMBO4 options: lanczos, nearest, bilinear, bicubic
supersampleCOMBO2 options: true, false
rounding_modulusINT88–1024
seedINT00–18446744073709550000
stepsINT201–10000
cfgFLOAT8.000–100
sampler_nameCOMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBO17 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +11
positiveCONDITIONING
negativeCONDITIONING
denoiseFLOAT0.500.0001–1
featherINT50–100
inpaint_modelBOOLEANfalse
noise_mask_featherINT200–100
upscale_model_optoptUPSCALE_MODEL
upscaler_hook_optoptUPSCALER_HOOK
scheduler_func_optoptSCHEDULER_FUNC

Outputs (1)

NameTypeDescription
IMAGEIMAGE