Você está cansado de remover fundo na mão, pixel por pixel? Ou de pagar remove.bg, Photoroom, uma API, toda vez que um ícone precisa de PNG transparente?
Eu também. Então parei de discutir wrapper e MCP. Peguei os mesmos doze JPGs de clay (objeto lima, fundo roxo) e passei em sete checkpoints open source, no CPU, sem chave. Abaixo está o que cada lib é, o link, como instala, como usa, e o olho a olho.

rembg é o cano. O corte é o modelo.
rembg (Daniel Gatis, MIT) é a lib Python que carrega um ONNX e devolve PNG com alpha. CLI, código, servidor HTTP ou Docker. Python 3.11 a 3.13. PyPI.
Trocar o pacote e manter o mesmo -m não muda o recorte. u2net no cano A e u2net no cano B saem iguais. Qualidade mora no checkpoint.
Instalar
CPU, lib + comando:
pip install "rembg[cpu,cli]"
NVIDIA com CUDA ok:
pip install "rembg[gpu,cli]"
Se a GPU falhar, volta pro CPU. AMD/ROCm tem extra rembg[rocm,cli], depois do onnxruntime-rocm.
A primeira chamada baixa o peso pra ~/.u2net ou ~/.rembg/models. birefnet-massive passa de 1 GB. isnet-general-use fica na casa de 170 MB. Pra baixar antes de processar:
rembg d isnet-general-use
rembg d birefnet-massive
rembg d bria-rmbg
Usar
Um arquivo:
rembg i foto.jpg saida.png
rembg i -m isnet-general-use foto.jpg saida.png
rembg i -m birefnet-massive foto.jpg saida.png
rembg i -m bria-rmbg foto.jpg saida.png
Pasta inteira: rembg p entrada/ saida/. Servidor: rembg s --host 127.0.0.1 --port 7000.
-dc tira franja de cor na borda. Nos BiRefNet e no RMBG o alfa já vem mole. -a (alpha matting) ainda ajuda u2net. Reuse a sessão se for lote. Recriar new_session a cada foto recarrega o ONNX.
Python:
from rembg import new_session, remove
from PIL import Image
session = new_session("isnet-general-use")
cut = remove(Image.open("foto.jpg").convert("RGB"), session=session)
cut.save("saida.png")
As libs por trás do -m
U2-Net
xuebinqin/U-2-Net. O default antigo. Rápido, borda mais dura, halo em fundo colorido. No rembg: u2net, u2netp (menor), u2net_human_seg.
ISNet (DIS)
xuebinqin/DIS, Highly Accurate Dichotomous Image Segmentation. Generalista: isnet-general-use. Ilustração: isnet-anime. Apache-2.0 no pacote que o rembg expõe. Bom equilíbrio peso × corte em produto e clay.
BiRefNet
ZhengPeng7/BiRefNet, paper arXiv:2401.03407, MIT de verdade. Demo: HF Space. No rembg: birefnet-general, birefnet-general-lite, birefnet-portrait, birefnet-massive, birefnet-hrsod, birefnet-cod. Massive é o generalista pesado. Ganha em cabelo, vidro, tecido, raio de bike.
RMBG-2.0 (Bria)
briaai/RMBG-2.0 no Hugging Face. Arquitetura BiRefNet + dataset da Bria. No rembg o nome é bria-rmbg. Recorte local mais limpo neste teste. Licença não comercial sem acordo. Pesos gated. Se for vender o recorte, não use.
withoutBG
No rembg existe withoutbg, mas é API. Precisa de WITHOUTBG_API_KEY. Saí fora deste bake-off de propósito: aqui o critério era peso local, zero fatura.
O teste, no xadrez
Doze ícones 1:1. Quatro cabem aqui: moedas, mesa, palácio, carteira. Esquerda pra direita: original, u2net, isnet-anime, isnet-general-use, birefnet-massive, bria-rmbg. Xadrez é transparência.
Moedas
| original | u2net | isnet-anime | isnet-general-use | birefnet-massive | bria-rmbg |
|---|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Objeto grosso, fundo liso. Quase todo mundo acerta. Ícone fácil não escolhe modelo.
Reunião
| original | u2net | isnet-anime | isnet-general-use | birefnet-massive | bria-rmbg |
|---|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
A foto tinha um card arredondado atrás da mesa. O modelo trata o card como fundo e some com ele. u2net deixa halo roxo. isnet-anime come cadeira. isnet e massive deixam mesa e cadeiras. Tile de UI você devolve no CSS. Não peça isso de volta pro ONNX.
Palácio
| original | u2net | isnet-anime | isnet-general-use | birefnet-massive | bria-rmbg |
|---|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Base creme, torre, bandeira. Quase todos mantêm o volume. Diferença na grama e no mastro. Massive e Bria mordem menos o céu.
Carteira
| original | u2net | isnet-anime | isnet-general-use | birefnet-massive | bria-rmbg |
|---|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
isnet-anime apaga o objeto. Vira mancha. Esse peso existe pra ilustração. Clay 3D não é anime. Se o default do seu script for esse, o ícone some e você culpa a lib errada.
O que o olho decidiu neste set
- isnet-general-use. Default. Clay e produto “bom o bastante”. Peso leve.
- birefnet-massive. Quase empate. Melhor em borda fina. MIT, comercial ok.
- bria-rmbg. Recorte mais limpo. Só uso pessoal, sem acordo Bria.
u2net fica pra máquina fraca. isnet-anime só se a arte for anime. birefnet-general e portrait foram bem. Massive cobre o comercial, então não preciso dos três da família no dia a dia.
API paga ainda ganha no pior caso: cabelo contra fundo bagunçado, vidro, reflexo. Pra ícone clay em fundo liso, o teto local chega. E não entra fatura.
Regra prática
Pessoal, máxima qualidade local: rembg i -m bria-rmbg.
Produto que você vai vender: rembg i -m birefnet-massive.
Ícone, lote, máquina comum: rembg i -m isnet-general-use.
Não discuta wrapper. Abra o mesmo arquivo nos três. Checkerboard. O olho escolhe em um minuto.
Links de novo, pra não caçar:























