☁️BizyAir UniFormer Segmentor
ComfyUI Node Guide
- image
- IMAGE
Semantic segmentation conditioning tells a model what goes where without saying anything about how it should look - every pixel gets labeled by category (sky, building, person, grass) and the model fills in appearance on its own. UniFormer is one of the standard preprocessors that produces this kind of map, alongside OneFormer, and it's been a fixture of the ControlNet ecosystem since the SD 1.5 and SDXL eras.
Worth setting expectations honestly before you build a workflow around it: segmentation conditioning is one of the ControlNet conditions that didn't make the jump to the current generation of base models. The unions that shipped for Flux, Qwen-Image, and Z-Image all cover canny, depth, and pose reliably - segmentation and normal maps simply aren't in any of them. As things stand, SDXL's union (xinsir's, which covers twelve conditions including segmentation) remains the practical home for this kind of conditioning. If your workflow is on a modern base and you need layout control, describing the layout to an instruction-editing model in a sentence is currently the more realistic path.
Inputs and outputs
Just image is required. One optional control:
resolution- 64 to 1024 in steps of 64, default 512, the working resolution the segmentation pass runs at.
Output is a single IMAGE - the segmentation map, color-coded by category, ready to feed into a ControlNet Apply node running a segmentation-capable model.
Installing BizyAir
Through ComfyUI Manager: search "BizyAir," install. Or clone it directly:
cd ComfyUI/custom_nodes && git clone https://github.com/siliconflow/BizyAir.git
Restart ComfyUI, or run comfy node install bizyair via Comfy-CLI. Set your API key on first use - the README's "click to login" step is required before this node, or any other in the pack, will actually produce output. The segmentation model runs on SiliconFlow's cloud rather than on your local GPU.
Common issues
If the map comes back looking blocky or missing fine boundaries between adjacent objects, try raising resolution - semantic segmentation is sensitive to input scale, and 512 is a conservative default that can lose small objects or thin boundaries in a busy scene.
The bigger thing to check before troubleshooting the preprocessor itself: confirm your base model's ControlNet union actually supports segmentation as a condition. This is the single most common reason a segmentation ControlNet workflow "does nothing" - the map is fine, but nothing downstream was trained to interpret it. If you're on a Flux, Qwen-Image, or Z-Image base, that's very likely the situation; move to an SDXL union if segmentation conditioning specifically is what your workflow needs.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| resolutionopt | INT | 51264–1024 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |