IAMCCS H3 Image · Optional Same-Size Detail
A Detail Pass That Refuses to Make Your Image Bigger
- image
- image
- report
The name is the spec. "Same-size" isn't modest hedging, it's a hard constraint: this node injects micro-texture into an image and hands it back at exactly the resolution it arrived at. It is the optional second half of IAMCCS's R42 still-image branch for MiniMax H3 - after H3 produces an exact-size reference still, you can optionally run a trained detail model over it, and the canvas does not move.
Where it sits in the detailer family
"Detailer" means two things in ComfyUI and people mix them up. There's the generative loop - detect, mask, crop, re-render, paste - the ADetailer → Impact Pack lineage, which reruns the diffusion model on a region and is great at faces and dangerous for turning a crowd into clones. And there's the ESRGAN-style pass: a small trained network, no sampler, no mask, nothing semantic invented.
This is squarely the second kind. It can't rescue a mangled face or add a prop that wasn't there. What it does is put fine skin and fabric texture back into a still that a video model's single-frame pass smoothed over, without touching your pixel dimensions.
How it works
Three steps, and the second one is the whole trick.
It loads the named model from ComfyUI/models/upscale_models with core ComfyUI's UpscaleModelLoader, runs it through ImageUpscaleWithModel, then immediately downsamples the result back to the input's exact width and height with a Lanczos common_upscale. Then it blends: torch.lerp(original, detailed, strength).
So the output is the model's texture at the original size, blended over your original pixels. Two consequences, both of which surprise people:
- A 4x upscale model buys you nothing here - the result is resized straight back down, and you paid full compute for it. On a 3840×2160 still that's the network running over roughly 66 megapixels of activations; core tiles it, so it won't evaporate your VRAM, but it's slow. 1x detail models are the right tool, and Settings PRO defaults to
1x-ITF-SkinDiffDetail-Lite-v1.pthwhen it finds that file. - There is no mask. The blend is uniform across the frame, so background and skin get identical treatment. This is a global texture pass, not a face detailer.
When it's off - enabled false, model_name of None, or strength at or below zero - it returns your input untouched and loads no model, reporting "native Sato pixels preserved." Safe to leave parked in the graph, and off is the deliberate default: the native still is the reference, detail is a choice.
The inputs and outputs that matter
- image - from the H3 still generator in the R42 branch.
- enabled (BOOLEAN), model_name (STRING), strength (FLOAT) - all three are forced inputs, meaning they arrive as wires rather than widgets you type into. In the R42 graph they come from
IAMCCS_R42ReferenceImagePromptBridge'sdetail_enabled,detail_modelanddetail_strengthoutputs, which in turn come from Settings PRO's H3 IMAGE · OPTIONAL SKIN / MICRO DETAIL group. You set it there, not here. - Outputs: image (the blended result) and report - a one-liner along the lines of
H3 same-size detail · <model> · strength=0.60 · canvas=3840x2160. Read the report before you blame the model; it prints the strength and canvas that were actually applied.
Strength is the only dial you'll touch, and the default is 0.60. Stronger is not better - this is a texture blend with no edge awareness, so pushing it up gives you crunchy skin and haloing around high-contrast edges. If the frame already looks good, 0.3–0.4 is the honest setting.
Installing it and its model
The node ships with the pack - Manager, search IAMCCS Nodes, or:
cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes
Restart and hard-refresh the browser; a duplicated copy of the pack in custom_nodes causes stale definitions and phantom UI bugs. No Python dependencies to add - this node leans entirely on the comfy_extras upscale nodes in ComfyUI.
What you do need is a file in ComfyUI/models/upscale_models/. Nothing is downloaded for you by design, so refresh ComfyUI after dropping it in so the folder scan sees it.
Where people get burned
If the detail-model dropdown in Settings PRO shows nothing but None, your upscale_models folder is empty or the file landed elsewhere - that list comes from a folder scan, not from the pack. If the model won't load, the report shows the name it tried, which is usually a path problem rather than a corrupt weight.
And the most common non-bug: the image comes out identical. Check the report first - nine times out of ten enabled is false in Settings PRO, or the model is still None.
And the mistake the node's own name is trying to prevent: this will never give you a bigger image. More pixels is a canvas setting in Settings PRO; genuinely more detail at a larger size is a real upscaler, not a same-size texture pass.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| enabled | BOOLEAN | — | |
| model_name | STRING | — | |
| strength | FLOAT | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| report | STRING | — |