Image Background Remover
Cloud BiRefNet in one node — but for a single image, local is free and just as good
- image
- api_config
- image
- request_id
- urls
BiRefNet is the segmentation network that replaced rembg's u2net as the default cutout model in this ecosystem - the one that finally handles flyaway hair and fur instead of chewing them into a halo. This node runs that model on BizyAir's cloud. Drop an image in, get a clean cutout back, no local weights, no VRAM spent.
But here's the honest take you came here for: for a single image, this is the worst value in the pack. ComfyUI has shipped BiRefNet in core since May 2026 - a local Image Background Remover-style node costs you nothing to run, is instant, and is MIT-licensed so there's no licensing tension about using it commercially. Paying cloud credits for one cutout is like hailing a taxi to walk a block. The cloud version earns its keep when you're already in a BizyAir workflow, when you're on a machine with no GPU at all, or when you need the HR-tier quality without the 2048-resolution weights and the VRAM that goes with them.
Inputs and outputs
- image - required, and capped at 10 MB. This is where people get burned: paste a screenshot and it's fine, but a big 4K PNG with alpha already pushed past the cap will be rejected. Downscale first.
- outputmask - optional boolean. Leave it off and you get the cutout (subject composited on transparency, ready to drop onto a new background). Flip it on and you get the mask instead - useful if you want to feed the selection into something else, like an inpaint or a background swap.
Outputs are the standard BizyAir API triplet: image (the result), request_id (a string you can use to look up the run), and urls (a JSON string listing the output file URLs, handy if you want to fetch the file directly).
How it works
Same as every BizyTRD_*_API node: the pack serializes your input, submits it to the hosted endpoint (birefnet-background-remover/image-to-image), and polls until the job finishes, then downloads the result back into your graph. It's synchronous from your seat - the node blocks until the cutout is done - so don't expect it to be snappy. The key always comes from BizyAirPlus settings or BIZYAIR_API_KEY, unless you override it with a BizyAir OpenAPI Settings node.
Troubleshooting
- "Image size up to 10 MB" errors: resize or re-encode (PNG → JPEG for photos) before wiring it in.
- Weird edges on hair: BiRefNet's strength is precisely this, but the hosted 1024 model will downscale internally for very large inputs - the KB's rule applies here too: feed it a resolution the model can actually see. For truly huge images, local BiRefNet HR at 2048 native is the better answer, which loops back to "local is better for this job."
- The node returns a red placeholder image with error text burned in: that's the pack's
skip_errorbehavior. If a run failed and you set skip_error on, you get the placeholder instead of a crash - theurlsoutput will still carry the original output URLs if any were produced.
Install
It's part of the BizyAirPlus pack, so:
cd /path/to/ComfyUI/custom_nodes
git clone https://github.com/siliconflow/BizyAirPlus.git
cd BizyAirPlus
python -m pip install -r requirements.txt
Restart ComfyUI, make sure BizyAirPlus is ON and keyed. Then use it where it's actually worth it - batched product shots on a weak machine, or as a drop-in in a workflow that's already cloud-bound. For the odd single cutout, your local copy of BiRefNet is right there and it's free.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | Image size up to 10 MB | |
| outputmaskopt | BOOLEAN | false | Whether to output the mask |
| api_configopt | BIZYAIR_OPENAPI_CONFIG | 单次请求覆盖base_url和api_key | |
| skip_erroropt | BOOLEAN | false | 开启后遇到错误不中断工作流,输出对应类型的错误占位符 |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| request_id | STRING | — |
| urls | STRING | — |