{ "job": "upscale", "want": "tile", "rank": 2, "short": "held by Tile, own model", "when": "enlarge with a lock: Tile holds the picture under a strong redraw, for much more detail; its own model copy can be a second model of the same family.", "title": { "zh": "Tile 锁图放大", "en": "Upscale held by Tile" }, "about": { "zh": "放大时用 Tile 钉住画面,重画得更狠、细节更多。放大这一段有自己的一份模型(默认和底图同一个,LoRA 一起带上),想换第二个模型只要换这一格;Anima 上用 Anima 的 Tile LLLite。", "en": "A Tile holds the picture while it is enlarged and redrawn, so the redraw can go stronger: more detail. The redraw has its own copy of the model (the base's, its LoRAs too); a second model is one swap of that loader. On Anima, Anima's Tile LLLite holds it." }, "source": { "zh": "参考工作流的「通用放大」组(平铺控制网 0.6,到 80% 的步数)和它的放大加载器;Anima 是你验证过的两段放大卡(潜空间 1.22 倍 + Tile LLLite,降噪 0.85)", "en": "The reference workflow's general upscale (tile ControlNet 0.6, to 80% of the steps) and its upscale loader; on Anima the user's tested two-pass card (latent 1.22x, Tile LLLite, denoise 0.85)" }, "packs": {}, "upscaler": true, "upscale_by": 1.25, "control": "tile", "extras": { "ColorMatch": "ComfyUI-KJNodes" }, "nodes": { "own": { "class_type": "CheckpointLoaderSimple", "copy_of": "$sampler.model", "_meta": { "title": "Upscale model" }, "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" } }, "controlnet": { "class_type": "ControlNetLoader", "inputs": { "control_net_name": "$controlnet" } }, "hold": { "class_type": "ControlNetApplyAdvanced", "inputs": { "positive": [ "$sampler.positive", "*" ], "negative": [ "$sampler.negative", "*" ], "control_net": [ "controlnet", 0 ], "image": [ "fit", 0 ], "vae": [ "$decode.vae", "*" ], "strength": 0.6, "start_percent": 0.0, "end_percent": 0.8 } }, "encode": { "class_type": "VAEEncode", "inputs": { "pixels": [ "fit", 0 ], "vae": [ "$decode.vae", "*" ] } }, "redraw": { "class_type": "KSampler", "like": "$sampler", "inputs": { "model": [ "own", 0 ], "positive": [ "hold", 0 ], "negative": [ "hold", 1 ], "latent_image": [ "encode", 0 ], "denoise": 0.5 } }, "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" } } }, "variants": { "anima": { "packs": { "AnimaLLLiteApply_sdscripts": "ComfyUI-Anima-LLLite" }, "upscaler": false, "control": null, "lllite": "tile", "nodes": { "own": { "class_type": "UNETLoader", "copy_of": "$sampler.model", "_meta": { "title": "Upscale model" }, "inputs": {} }, "encode": { "class_type": "VAEEncodeTiled", "inputs": { "pixels": [ "$save.images", "*" ], "vae": [ "$decode.vae", "*" ], "tile_size": 512, "overlap": 64, "temporal_size": 64, "temporal_overlap": 8 } }, "enlarge": { "class_type": "LatentUpscaleBy", "inputs": { "samples": [ "encode", 0 ], "upscale_method": "bislerp", "scale_by": 1.22 } }, "tile": { "class_type": "AnimaLLLiteApply_sdscripts", "inputs": { "model": [ "own", 0 ], "lllite_name": "$lllite", "image": [ "$save.images", "*" ], "strength": 0.7, "start_percent": 0.0, "end_percent": 0.8, "preserve_wrapper": true } }, "redraw": { "class_type": "KSampler", "like": "$sampler", "inputs": { "model": [ "tile", 0 ], "positive": [ "$sampler.positive", "*" ], "negative": [ "$sampler.negative", "*" ], "latent_image": [ "enlarge", 0 ], "steps": 30, "cfg": 4.4, "sampler_name": "dpmpp_2m_sde_gpu", "scheduler": "sgm_uniform", "denoise": 0.85 } }, "decode": { "class_type": "VAEDecodeTiled", "inputs": { "samples": [ "redraw", 0 ], "vae": [ "$decode.vae", "*" ], "tile_size": 512, "overlap": 64, "temporal_size": 64, "temporal_overlap": 8 } }, "match": { "class_type": "ColorMatch", "optional": true, "inputs": { "image_ref": [ "$save.images", "*" ], "image_target": [ "decode", 0 ], "method": "mkl", "strength": 1.0, "multithread": true } }, "save": { "class_type": "SaveImage", "inputs": { "images": [ "match|decode", 0 ], "filename_prefix": "upscaled" } } }, "after": "On this Anima model the picture is enlarged 1.22x in latent space and redrawn at denoise 0.85, held by Anima's Tile LLLite (0.7, to 80% of the steps), with its own copy of the canvas's model and LoRAs (the loader titled Upscale model). For a second model (steadier, other skin or texture), set_model that loader to another Anima model; the LoRAs stay. Then run_workflow; the larger one is saved beside it (prefix upscaled). Compare face, hands and clothes with the base: Tile guides, it does not guarantee." } }, "after": "run_workflow saves the picture as before and the 1.25x one beside it (prefix upscaled): a tile ControlNet holds it (strength 0.6, to 80% of the steps) while it is redrawn at denoise 0.5 with its own copy of the canvas's model and LoRAs (the loader titled Upscale model). For a second model (steadier, another look), set_model that loader to one of the same family (it reuses the first model's prompts); the LoRAs stay. Lower the denoise if it changes too much, raise the strength to hold it closer.", "gives": { "sampler": "redraw", "save": "save" }, "own_model": { "nodes": [ "own_1", "own" ], "copies_loras": true }, "notes": "The source's tile values; denoise 0.5 because the tile holds the picture. The redraw's own model line replaced the separate second-model way (2026-11-04): same model by default, one swap for another. On Anima the user's tested route: Harem 1.5 base, Realskin 1.3 for the Tile upscale, its style LoRA on both, 832x1216 to 1016x1480, 116 s for the upscale on 6 GB.", "models": [ "union_promax_sdxl", "noob_tile", "anima_tile_repair", "2x_animesharp_v4", "4x_ultrasharp" ], "tested": { "gpu": "RTX 4050 Laptop", "vram_gb": 6, "date": "2026-11-02", "runs": [ { "model": "SDXL (Illustrious)", "size": "832×1216 → 1.25×", "seconds": 77 }, { "model": "Anima (Kirazuri → Realskin 1.3, Tile)", "size": "1216×832 → 1.22×", "seconds": 127 } ] } }