{ "job": "upscale", "rank": 3, "short": "second model", "title": { "zh": "双模型放大", "en": "Upscale with a second model" }, "about": { "zh": "和「放大」一样,但重画换一个模型:底模放大时不稳(眼睛走样、多出肚脐)就换一个更稳的。新加的模型加载器先是同一个模型,由 AI 按你的意思换。 装了 KJNodes 时,还会把颜色对齐到原图,防止放大后颜色跑偏。", "en": "Like Upscale, but the redraw uses a second model, for a base model that goes wrong when enlarged. The new loader starts as the same model; the AI changes it as you say. With KJNodes, its colours are matched to the original, so they don't drift." }, "source": { "zh": "参考工作流的「Refiner/放大」加载器和作者的说明", "en": "The reference workflow's upscale loader and its author's note" }, "packs": {}, "upscaler": true, "after": "The redraw's model comes from a new loader (second_model), for now the same checkpoint as the first: set_model it to the steadier one the user wants (ask_user, search_models), of the same family (SDXL with SDXL: it reuses the first model's prompts). Then run_workflow; the larger one is saved beside it (prefix upscaled).", "notes": "The source keeps a second loader for upscaling; its author: switch to it when the base model goes wrong enlarged. ColorMatch mkl after the redraw is the source's, optional (KJNodes).", "upscale_by": 1.25, "nodes": { "second_model": { "class_type": "CheckpointLoaderSimple", "like": "$loader", "inputs": {} }, "upscaler": { "class_type": "UpscaleModelLoader", "inputs": { "model_name": "$upscaler" } }, "enlarge": { "class_type": "ImageUpscaleWithModel", "inputs": { "upscale_model": [ "upscaler", 0 ], "image": [ "$save.images", "*" ] } }, "fit": { "class_type": "ImageScaleBy", "inputs": { "image": [ "enlarge", 0 ], "upscale_method": "lanczos", "scale_by": "$fit" } }, "encode": { "class_type": "VAEEncode", "inputs": { "pixels": [ "fit", 0 ], "vae": [ "$decode.vae", "*" ] } }, "redraw": { "class_type": "KSampler", "like": "$sampler", "inputs": { "model": [ "second_model", 0 ], "positive": [ "$sampler.positive", "*" ], "negative": [ "$sampler.negative", "*" ], "latent_image": [ "encode", 0 ], "denoise": 0.35 } }, "decode": { "class_type": "VAEDecode", "inputs": { "samples": [ "redraw", 0 ], "vae": [ "$decode.vae", "*" ] } }, "match": { "class_type": "ColorMatch", "optional": true, "inputs": { "image_ref": [ "fit", 0 ], "image_target": [ "decode", 0 ], "method": "mkl", "strength": 1.0, "multithread": true } }, "save": { "class_type": "SaveImage", "inputs": { "images": [ "match|decode", 0 ], "filename_prefix": "upscaled" } } }, "extras": { "ColorMatch": "ComfyUI-KJNodes" }, "models": [ "2x_animesharp_v4", "4x_ultrasharp" ], "tested": { "gpu": "RTX 4050 Laptop", "vram_gb": 6, "date": "2026-10-27", "runs": [ { "model": "SDXL (Illustrious)", "size": "832×1216 → 1.25×", "seconds": 44 } ] } }