Files
DemonGatanjieu-Anomalous_Mo…/api/blocks/upscale_two_models.json
T
DemonGatanjieuandClaude Opus 5.5 0bed7973e0 Add a mid-way model switch way; the model-switch ways work on Anima
New way switch_midway (refine, want midway): the canvas's sampler becomes
two KSampler Advanced parts, the first on the canvas's model up to step
21, the second on a new loader from there, taking the old sampler's place
and links. On Anima it takes the tested sampling (35 steps,
dpmpp_2m_sde_gpu, beta): er_sde comes out grainy when split, even with
the same model in both parts, which the AI is told.

refine_other_model and upscale_two_models get Anima variants: a UNET
loader "like" the canvas's, reusing its text encoder, VAE and prompts; on
Anima the second-model upscale is the Tile route the user verified (1.22x
latent, LLLite 0.7, denoise 0.85, ColorMatch).

A node "like" or replacing a sampler now takes its seed as noise_seed on
KSampler Advanced and the other way round. The scene argument's
description is shorter to keep the tool list within its budget.

Ran on the isolated test ComfyUI on an Anima canvas: each way built
through add_nodes and made a picture (79 s, 148 s, 127 s on 6 GB).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 22:24:58 +08:00

296 lines
7.6 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": "upscale",
"want": "steady",
"rank": 3,
"short": "second model",
"title": {
"zh": "双模型放大",
"en": "Upscale with a second model"
},
"about": {
"zh": "放大后换一个模型重画(Anima 上用 Tile 锁图),原模型放大容易走样或想换画风时用。",
"en": "Redraws the enlarged picture with another model (held by Tile on Anima), when the first goes wrong enlarged or another look is wanted."
},
"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-11-02",
"runs": [
{
"model": "SDXL (Illustrious)",
"size": "832×1216 → 1.25×",
"seconds": 44
},
{
"model": "Anima (Kirazuri → Realskin 1.3, Tile)",
"size": "1216×832 → 1.22×",
"seconds": 127
}
]
},
"variants": {
"anima": {
"packs": {
"AnimaLLLiteApply_sdscripts": "ComfyUI-Anima-LLLite"
},
"upscaler": false,
"lllite": "tile",
"nodes": {
"second_model": {
"class_type": "UNETLoader",
"like": "$loader",
"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": [
"second_model",
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.22× in latent space and redrawn at denoise 0.85 by the redraw's own model (second_model, a new UNET loader that starts as the canvas's model), held by Anima's tile-repair LLLite (0.7, to 80% of the steps). set_model second_model to the other Anima model the user wants. A LoRA on the first model (a style) is not on it: add_lora it onto second_model too when the user wants that look kept (the tested route did). 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.",
"notes": "The user's tested route: Harem 1.5 base, Realskin 1.3 for the Tile upscale, its style LoRA on both, 832×1216 → 1016×1480, 116 s for the upscale on 6 GB. ColorMatch (KJNodes) is left out without the pack."
}
}
}