- The Ways panel lists the ways that can run here as short rows that open, then the skills, and folds the ways lacking a pack or a model at the bottom. - The staged_picture skill keeps the judgment only: the ways of its uses come from each block's "when", listed with the skill for what can run here. Its answer had passed the 3,800 bytes an AI app shows in the chat (3,991); a test keeps every skill under it. - An Anima LLLite made for 28-block (2B) models stops a run on a 40-block (2.9B) one: lllite_fit counts both from the files' headers, the AI's run is refused with the nodes to change, and an example with a Tile opens on a model it fits. The warning written into four ways and two examples is removed. - What holds for a model family is written once: the profile's notes go with each Anima example for an AI, the examples window says it once for the user; a pack two nodes come from is named once. - The Tile upscale is want="tile", no longer the name of another use. Co-Authored-By: Claude <noreply@anthropic.com>
352 lines
9.2 KiB
JSON
352 lines
9.2 KiB
JSON
{
|
||
"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
|
||
}
|
||
]
|
||
}
|
||
}
|