☁️BizyAir VITMatte Predict
Turn a trimap into a real alpha matte
- image
- trimap
- vitmatte_model
- vitmatte_predictor
- image
- mask
This is where the actual matting happens - the loader node just fetches the model, this one does the work. Give it an image, a trimap, and the model/predictor pair from BizyAir Load VITMatte Model, and it hands back a refined image and a proper alpha mask, with fractional transparency where segmentation models would've forced a hard edge.
What it does, and why you'd reach for it over a plain segmentation node
Segmentation gives you in/out. Matting gives you how much - a wisp of hair can come out 30% opaque instead of getting rounded to fully-in or fully-out, which is exactly the case that makes ordinary background-removal cutouts look chewed up around fine detail. ViTMatte earns its keep specifically on hair, fur, fabric mesh, smoke, and anything genuinely semi-transparent. If your subject has a clean, high-contrast edge against its background, you probably don't need this - a plain segmentation model is faster and good enough. Save it for the cases that actually need it.
Inputs and outputs that matter
image- the source image.trimap- aMASK, and this is the part people trip on. It's not just any rough mask; it needs three zones (definite foreground, definite background, unknown boundary). Build one by taking a coarse segmentation mask, eroding a hard copy for foreground-certain, dilating a hard copy for background-certain, and letting the gap between them stand as unknown.vitmatte_model/vitmatte_predictor- both come straight from the loader node. Non-negotiable inputs; there's no default.black_point(default 0.15) - the low-end alpha cutoff. If your output has faint gray noise where you expected clean transparency, raise this a bit so weak alpha values get pushed to fully transparent instead of lingering as a haze.white_point(default 0.99) - the high-end cutoff. If solid parts of your subject aren't reading as fully opaque, lower this slightly so near-max alpha gets pushed the rest of the way to 1.0.max_megapixels(default 2, range 1–999) - caps the resolution the matting network actually processes. Two megapixels is roughly 1400x1400 - feed it something noticeably bigger and it'll get downscaled internally before matting runs, which is a real, easy-to-miss cause of an output looking softer than your source. Raise this if you're working with high-resolution images and want the network to actually see them at full size.
Outputs are image (the matted result) and mask (the alpha channel on its own, useful if you want to composite manually downstream).
How to install it
- ComfyUI Manager - search "BizyAir", install, restart.
- Manual -
cd ComfyUI/custom_nodes && git clone https://github.com/siliconflow/BizyAir.git, restart. - Comfy CLI -
comfy node install bizyair.
Set your API key before running anything - the in-app login flow, or an account at bizyair.siliconflow.cn ahead of time.
Common issues & troubleshooting
Output looks softer than expected at high resolution. Check max_megapixels first - the default of 2 will quietly downscale a larger input before matting, and you won't get an error telling you that happened.
Fuzzy gray haze where the background should be transparent. Raise black_point.
Edges of your subject look slightly translucent where they shouldn't. Lower white_point so near-opaque values get pulled the rest of the way to fully solid.
Bad results overall, not just at the edges. Almost always the trimap, not this node. A trimap that's too tight (barely any "unknown" zone) gives ViTMatte nothing to solve; one that's too loose (huge unknown zone) gives it too little certainty to anchor on. Widen or narrow the erode/dilate step feeding your trimap before assuming the matting model itself is at fault.
The pack showed up uninvited in your install. An older ComfyUI Manager bug occasionally auto-resolved missing nodes onto BizyAir, which is why "is this safe" threads exist about it. It's a legitimate SiliconFlow pack, safe to keep or remove via the Manager as you prefer.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| trimap | MASK | — | |
| vitmatte_model | VitMatte_MODEL | — | |
| vitmatte_predictor | VitMatte_predictor | — | |
| black_point | FLOAT | 0.150.01–0.98 | — |
| white_point | FLOAT | 0.990.02–0.99 | — |
| max_megapixels | FLOAT | 2.01–999 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| mask | MASK | — |