Files
DemonGatanjieu-Anomalous_Mo…/api/blocks/refine_other_model.json
T
DemonGatanjieuandClaude Opus 5.5 8ecc261949 Let ready-made blocks say what they hand the next one, and build them as a chain
Every block in api/blocks names what it gives a block after it ("gives": its sampler and its
output node; {} for one that changes the step it is put on) and its own model loader
("own_model"). api/block_chain.py builds a list of steps on a new tab: the picture first, each
next block anchored to what the step before gave, by near_node_id and a new page-only
save_node_id (canvas_roles.js findRoles pins the output node), so a canvas with several
samplers and outputs is no guess. add_nodes' answer names the block it built.

Redraw with another model and face/hand detailing now take the step before's picture
("$save.images") instead of the sampler's decode, which after an enlargement is the older
picture. The two-model routes are built as two-step chains; routes.json no longer names the
loaders.

Checked through the real page on the test ComfyUI: the Tile route on two Anima models (base on
Harem 1.5, Tile redraw on Kirazuri v4, from the base's picture and prompts), then face and hand
detailing after it took the Tile step's colour-matched picture.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-09 00:42:56 +08:00

206 lines
5.4 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"job": "refine",
"rank": 6,
"short": "other model",
"title": {
"zh": "换模型精修",
"en": "Refine with another model"
},
"about": {
"zh": "换另一个模型把整张图轻轻重画一遍,另存一张(单文件模型和 Anima 都行)。",
"en": "Another model lightly redraws the whole picture, saved beside it (a single-file checkpoint or an Anima model)."
},
"source": {
"zh": "参考工作流的「Refiner 管线」:精修时可以换一个底模加载器,配一套独立的 LoRA 堆",
"en": "The reference workflow's refiner: a base model loader of its own for refining, with a separate LoRA stack"
},
"packs": {},
"nodes": {
"second_model": {
"class_type": "CheckpointLoaderSimple",
"like": "$loader",
"inputs": {}
},
"second_positive": {
"class_type": "CLIPTextEncode",
"like": "$sampler.positive",
"inputs": {
"clip": [
"second_model",
1
]
}
},
"second_negative": {
"class_type": "CLIPTextEncode",
"like": "$sampler.negative",
"inputs": {
"clip": [
"second_model",
1
]
}
},
"encode": {
"class_type": "VAEEncode",
"inputs": {
"pixels": [
"$save.images",
"*"
],
"vae": [
"second_model",
2
]
}
},
"redraw": {
"class_type": "KSampler",
"like": "$sampler",
"inputs": {
"model": [
"second_model",
0
],
"positive": [
"second_positive",
0
],
"negative": [
"second_negative",
0
],
"latent_image": [
"encode",
0
],
"denoise": 0.4
}
},
"decode": {
"class_type": "VAEDecode",
"inputs": {
"samples": [
"redraw",
0
],
"vae": [
"second_model",
2
]
}
},
"save": {
"class_type": "SaveImage",
"inputs": {
"images": [
"decode",
0
],
"filename_prefix": "refined"
}
}
},
"after": "The refine's loader (second_model) starts as the same checkpoint: set_model it to the one the user wants (ask_user, search_models), add_lora its own LoRAs onto it, and write its prompts (second_positive, second_negative, copied from the first) in that model's style. Another family may want other steps, cfg and sampler on redraw. Then run_workflow; the refined one is saved beside it (prefix refined). Denoise 0.4: lower keeps more of the first, higher takes more of the second.",
"gives": {
"sampler": "redraw",
"save": "save"
},
"own_model": {
"nodes": [
"second_model"
],
"copies_loras": false
},
"notes": "The source keeps a separate loader and LoRA stack for refining. Its own CLIP and VAE, so a checkpoint of another family works. On an Anima model (UNET, text encoder and VAE in separate files) its variant loads only another UNET and reuses the canvas's text encoder and VAE: another Anima model.",
"models": [],
"tested": {
"gpu": "RTX 4050 Laptop",
"vram_gb": 6,
"date": "2026-11-02",
"runs": [
{
"model": "SDXL (Illustrious) → NoobAI",
"size": "832×1216",
"seconds": 66
},
{
"model": "Anima (Kirazuri → Realskin 1.3, denoise 0.4, with the base)",
"size": "1216×832",
"seconds": 148
}
]
},
"variants": {
"anima": {
"nodes": {
"second_model": {
"class_type": "UNETLoader",
"like": "$loader",
"inputs": {}
},
"encode": {
"class_type": "VAEEncode",
"inputs": {
"pixels": [
"$save.images",
"*"
],
"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.4
}
},
"decode": {
"class_type": "VAEDecode",
"inputs": {
"samples": [
"redraw",
0
],
"vae": [
"$decode.vae",
"*"
]
}
},
"save": {
"class_type": "SaveImage",
"inputs": {
"images": [
"decode",
0
],
"filename_prefix": "refined"
}
}
},
"after": "On this Anima model the refine's loader (second_model) is a UNET loader that starts as the canvas's model; it reuses the canvas's text encoder, VAE and prompts. set_model it to the other Anima model the user wants (ask_user, search_models); a LoRA on the first model is not on it: add_lora it onto second_model when the user wants that look kept. Then run_workflow; the refined one is saved beside it (prefix refined). Denoise 0.4: lower keeps more of the first, higher takes more of the second."
}
}
}