CMK SEGS Preview
So what did the detector actually find? A preview that answers that
- segs
- fallback_image_opt
- IMAGE
The most common detailing failure isn't bad output - it's no output, because the detector didn't find anything and nobody noticed. CMK SEGS Preview shows you the crops. Feed it SEGS, get one image containing every detected region as a tile, up to 256×256 each, batched top to bottom.
What it does with a segment
For each segment in the collection it takes the cropped_image and, when alpha_mode is on (default), multiplies it by that segment's cropped_mask - clamped to a floor of min_alpha (0.2) so masked-out areas go dark rather than vanishing entirely. That clamp is the thoughtful bit: you can see the crop's outline and roughly where the real mask is, instead of looking at a crop with half of it missing and guessing whether the mask or the detection was wrong.
Each tile is then resized to 256×256 and the tiles are concatenated into a single batch. So a detector that found three faces gives you a 3-image batch you can preview in one node.
Inputs: segs (required), fallback_image_opt, alpha_mode (true), min_alpha (0.2). Output: IMAGE - and it's an output node, so it saves through ComfyUI's preview path, which is what makes the result show up on the node itself.
The fallbacks are the useful part
If there are no crops at all, it uses fallback_image_opt. If that's not wired either, you get a 64×64 black image. That's deliberately a visible non-answer rather than an empty output: a small black square means "the detector found nothing", which is exactly the diagnosis you needed. Wire your source image into fallback_image_opt and you get something even more useful - the untouched input appearing where you expected crops tells you the detection stage, not the detailing stage, is the problem.
This is the check to put between your detector and your detailer while you're tuning bbox_threshold. Turn alpha_mode off and you see the raw crops; leave it on and you see what the sampler will actually be masking. That's a real difference and it's the fastest way to explain output that looks like nothing happened - you'll see a crop that's 90% transparent.
It exists so you don't need Impact Pack
The node lives in CMK/Internal and its docstring says it plainly: it renders CMK SEGS crops without requiring Impact Pack's preview node. Since CMK's whole detection and detailing stack is built to avoid a dependency on another node pack, that includes the boring bits - you get a preview node, a pasteback engine and detectors without installing anything else. Impact Pack's SEGS work here without modification, so you can also use this on somebody else's detector output.
Installing
Manager: search CMK Flow → install the CMKFlow entry → restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/CMKFlow/cmk_nodes.git cmk_nodes
python3 cmk_nodes/scripts/install_cmk_requirements.py
The install is chunky - ultralytics, insightface, onnxruntime, nudenet, segment-anything - because CMK runs its own detection and face engines rather than borrowing them. None of that is needed for a preview node, but it's the price of the pack. Enable Vue Nodes / Nodes 2.0 while you're in settings; CMK's dynamic nodes assume it.
One caveat
It only understands the standard SEGS shape: a two-tuple whose second element is a list of segments carrying cropped_image. Anything else gets skipped silently and you'll see the fallback instead of an error - so if you're staring at a black square wondering whether detection failed or whether the input format is wrong, check the SEGS you're feeding it. Segments without a crop image are skipped one by one, which means a partial result is a genuine possibility rather than a sign of corruption.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| segs | SEGS | — | |
| fallback_image_optopt | IMAGE | — | |
| alpha_modeopt | BOOLEAN | true | — |
| min_alphaopt | FLOAT | 0.200–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |