Saya Final Upscale · Preset + Model
Pick 4K from a menu, pick your upscaler, and know what '4K' means here
- upscale_model
- target_pixels
- preset_name
SayaUpscalePresetModelLoader is the settings hub for the final upscale stage of the author's pipeline, and its clever bit is the word "equivalent" in every preset. Look at the dropdown: 4K · MAX · 3840x2160 equivalent. That "equivalent" is doing real work - your image is almost never 16:9, so 3840×2160 is a pixel budget, not an instruction to squash everything into that exact rectangle. This node sets the budget and loads the model; a sibling calculator turns the budget into aspect-correct dimensions for your actual image.
Two inputs, both dropdowns:
- target_preset - four named rungs:
1080p · FAST(1920×1080 equivalent),2K · BALANCED(2560×1440),3K · HIGH(3200×1800), and4K · MAX(3840×2160), which is the default. "FAST / BALANCED / HIGH / MAX" reads like the author's own advice on how aggressive to be, so pick by how much headroom you want. - upscale_model - populated from everything sitting in your
ComfyUI/models/upscale_modelsfolder. If you haveRealESRGAN_x4plus_anime_6B.safetensorsinstalled, it's selected as the default - a solid, well-known choice for anime/illustration work, and worth knowing if you're wondering where the pipeline's taste in upscalers comes from.
What comes out:
- upscale_model (UPSCALE_MODEL) - the actually-loaded model object, ready to wire into an upscale-by-model node.
- target_pixels (INT) - the pixel budget as a number: 2,073,600 for 1080p, 8,294,400 for 4K. This is the value you feed the dynamic target calculator so it can derive aspect-correct dimensions.
- preset_name (STRING) - the label you picked, so downstream nodes or a manifest can record which rung was used.
So the division of labor across the Saya/Scaling nodes is: this one is "which final size class and which model," the dynamic target calculator is "given that budget, what are the actual width and height for my image," and a model upscale plus an exact final resize does the pixel work. That's also why there are two nodes instead of one blob.
Troubleshooting is almost entirely one thing: the loader errors out with a RuntimeError if it can't find any upscale model at all. If you install the pack and hit that, the fix isn't in the node - drop a .safetensors upscaler into ComfyUI/models/upscale_models (RealESRGAN x4plus anime 6B is the pack's own preference and freely available) and restart. There are no other hidden dependencies; the model loading itself just delegates to ComfyUI's standard upscale model loader.
Install as with everything in this pack: ComfyUI Manager, search saya-comfy-couple-plus, or
cd ComfyUI/custom_nodes
git clone https://github.com/alphaziod/saya-comfy-couple-plus
then restart. The pack adds only numpy/Pillow; PyTorch and your upscale models come from your existing setup. The README doesn't document these pipeline nodes (it's all Comfy Couple), so expect the author's work-in-progress caveats to apply - back up important workflows before updating.
For most people the honest takeaway: this node exists to make "final upscale to 4K" a decision you make from a menu rather than a pile of arithmetic - and to record that decision in the graph. If you only ever upscale one way, a plain UpscaleModelLoader plus a hard-coded number is simpler. If your final pass should be reproducible and configurable, this is the cleaner knob.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| target_preset | COMBO | 4K · MAX · 3840x2160 equivalent | 4 options: 1080p · FAST · 1920x1080 equivalent, 2K · BALANCED · 2560x1440 equivalent, 3K · HIGH · 3200x1800 equivalent, 4K · MAX · 3840x2160 equivalent |
| upscale_model | COMBO | 1 options: |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| upscale_model | UPSCALE_MODEL | — |
| target_pixels | INT | — |
| preset_name | STRING | — |