Nodes/Shima/Shima Sliced Upscaler
ComfyUI Node

Shima Sliced Upscaler

Upscale giant images on a small GPU by doing it in strips

By KDB-USJP·Created 6 months ago·Updated 6 months ago· 2
Shima Sliced Upscaler
  • image
  • upscale_model
  • sliced_commons
  • shima.commonparams
  • image
  • slices
orientationVertical
slices4
overlap64
feather_size32
featheringtrue
save_piecesfalse
use_commonparamstrue
activetrue
output_dirshima_upscale_slices

Upscaling a 4096×4096 image with an ESRGAN-style model is a VRAM brick wall on an 8GB card - the model wants the whole image in memory at once. The classic escape is tiling: cut it up, process pieces, stitch. Shima Sliced Upscaler is that idea applied with a model-driven upscaler: it splits the image into overlapping strips, runs the UPSCALE_MODEL on each strip one at a time, then merges the results with feathered alpha-blending.

Two outputs come back: image (the fully merged, upscaled result - this is what you save) and slices (the batch of individual processed strips, for when you want to inspect or further process them).

The inputs that matter

  • image - what you're upscaling. Single image in, strips out.
  • upscale_model - the UPSCALE_MODEL (e.g. an ESRGAN .pth). Leave it unconnected and the node becomes a pure slicer/combiner at 1× - it still splits and stitches, just without any scaling. That's the documented "1x mode."
  • orientation - Vertical (strips along X) or Horizontal (rows along Y).
  • slices - 2–10, default 4. More slices = smaller per-slice VRAM footprint but more seams to hide.
  • overlap (default 64) and feather_size (default 32) - the overlap gives neighboring strips shared pixels, and the feather blends them so the join disappears.
  • feathering - master toggle; off forces overlap and feather to zero for hard edges.
  • save_pieces / output_dir - optionally save the raw strips to disk (default folder shima_upscale_slices under ComfyUI's output dir). Handy for debugging seams.
  • active - a bypass; when false the node passes the image straight through untouched. This lets you keep the node in a workflow and toggle it off without rewiring.
  • sliced_commons / shima.commonparams / use_commonparams - the sync bundle overrides widgets; the commonparams dict can redirect the output dir into a project structure.

How it works

The clever part is model scale detection: it runs the upscaler on an 8×8 probe crop to learn the model's actual scale factor (2×, 4×…), then upscales each overlap-padded strip, and assembles a weight-averaged canvas so overlapping regions blend instead of doubling up. Padding extends each crop by the overlap on both sides, which keeps context at the seam - the same reason tile upscalers pad crops.

Installing it

Part of KDB-USJP/shima_wf:

cd ComfyUI/custom_nodes
git clone https://github.com/KDB-USJP/shima_wf

Restart ComfyUI. It uses core ComfyUI's ImageUpscaleWithModel, so no pack dependencies - just a UPSCALE_MODEL of your choosing.

The honest take

This is a lighter-weight cousin of Ultimate SD Upscale: it slices, upscales with a plain model, and merges - no diffusion pass, no ControlNet-tile conditioning. That means it's fast and predictable, but it only adds pixels, not generative detail. If "more detail" is what you want, a tiled-diffusion or SeedVR-style upscaler is the bigger hammer. Where this shines is the big-but-clean source image on a modest GPU. Set slices high enough that the largest strip fits comfortably in VRAM, keep overlap ≥ your feather, and the seams mostly vanish. If they don't, check that every slice went through the same sliced_commons orientation - mismatched geometry is the #1 cause of stitch artifacts.

CategoryShima/Image

Inputs (13)

NameTypeDefaultDescription
imageIMAGE
orientationCOMBOVertical2 options: Vertical, Horizontal
slicesINT42–10
overlapINT640–1024
feather_sizeINT320–512
upscale_modeloptUPSCALE_MODEL
featheringoptBOOLEANtrue
save_piecesoptBOOLEANfalse
sliced_commonsoptSLICED_COMMONS
shima.commonparamsoptDICT
use_commonparamsoptBOOLEANtrue
activeoptBOOLEANtrue
output_diroptSTRINGshima_upscale_slices

Outputs (2)

NameTypeDescription
imageIMAGE
slicesIMAGE