🧹BRIA_RMBG Model Loader
The boring half of a two-node background remover — and the model file it won't fetch for you
- rmbgmodel
If you've got this pack, you've got two nodes: a loader and a remover. The loader is the boring one, and it's also the one that trips up more beginners than the actual background remover, because it quietly expects a model file that it will not download for you. Which is unusual for this author, by the way.
What this node is
BRIA_RMBG_ModelLoader_Zho has no inputs at all. Open it, and it finds a file called model.pth inside the pack's own RMBG-1.4 folder, loads it into a background-segmentation network, pushes it to your GPU (or falls back to CPU), and hands you the result as a single output, rmbgmodel. That output is what feeds the other node in the pack, 🧹BRIA RMBG.
This is the standard ComfyUI "load a model once, run it many times" pattern, the same shape as a checkpoint loader. The wrinkle is the RMBGMODEL type: it's private to this pack, so the loader output only plugs into this pack's remover node. You can't borrow it for another background-removal pack. That self-contained, one-off-node type is a recurring ZHO-ZHO-ZHO signature.
How it works
Under the hood it builds a BriaRMBG network - a U2Net-style encoder/decoder with six nested stages (RSU blocks) that emit six side outputs at different scales. The loader restores the downloaded model.pth state dict into that network, calls .eval(), and moves it to whichever device is active. Nothing runs yet; inference happens in the remover node. If you want to know where it landed, watch your console when the loader executes - cuda if a GPU is available, cpu otherwise.
There is genuinely nothing to configure here. No strength, no resolution, no dtype switch. Its entire job is "get the model in memory and hand it over."
The part that gets everyone: the model file
The node does not fetch the model. If ComfyUI/custom_nodes/ComfyUI-BRIA_AI-RMBG/RMBG-1.4/model.pth doesn't exist, the loader dies with a file-not-found error the first time your workflow runs, usually before you've seen a single pixel. ComfyUI Manager won't fetch it either - Manager installs the code, not the weights.
cd ComfyUI/custom_nodes
git clone https://github.com/ZHO-ZHO-ZHO/ComfyUI-BRIA_AI-RMBG.git
# or: ComfyUI Manager → Install Custom Nodes → search "BRIA RMBG"
# then restart ComfyUI
Then download the model from briaai/RMBG-1.4 on HuggingFace and drop model.pth into the pack's RMBG-1.4 folder - there's a put model here.txt placeholder reminding you. Keep the filename exactly model.pth. The code looks for that literal name and will not pick up the .safetensors the repo also ships.
No requirements.txt exists, so there's no pip install step: the pack only imports torch, torchvision, numpy and PIL, all of which ComfyUI already bundles.
Anything else worth knowing
The RMBG-1.4 model is BRIA's, under a custom non-commercial license - the pack README says so in so many words, and HuggingFace tags it license: other. Fine for personal use; read the license before building a product on it. And the author context helps: ZHO-ZHO-ZHO is one of the most prolific ComfyUI node writers around (PuLID, InstantID, VideoMatting), and the standing community complaint is that his packs are one-off wrappers that auto-download model dumps on first run. This one is the exception - no auto-download. Convenient for control, annoying exactly once, when you hit that missing-file error.
Troubleshooting
- FileNotFoundError / missing model: the
model.pthisn't in theRMBG-1.4folder. Download it, name itmodel.pth, restart ComfyUI, re-run. - That's basically it: the loader has no settings to misconfigure. If your workflow runs, this node worked.
When it works, you just see a node silently hand a model to the remover. Not exciting - that's the point. The excitement, such as it is, lives in the other node.
Inputs (0)
No inputs
Outputs (1)
| Name | Type | Description |
|---|---|---|
| rmbgmodel | RMBGMODEL | — |