Cansado de pagar pra tirar fundo? Testei os open source

Felipe Vieira 6 de setembro de 2026 🇧🇷 Português 6 min read

Mesmo ícone de moedas clay recortado por seis modelos open source

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.

Quatro ícones clay recortados com isnet-general-use sobre fundo xadrez

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

originalu2netisnet-animeisnet-general-usebirefnet-massivebria-rmbg
moedas, foto original moedas recortadas com u2net moedas recortadas com isnet-anime moedas recortadas com isnet-general-use moedas recortadas com birefnet-massive moedas recortadas com bria-rmbg

Objeto grosso, fundo liso. Quase todo mundo acerta. Ícone fácil não escolhe modelo.

Reunião

originalu2netisnet-animeisnet-general-usebirefnet-massivebria-rmbg
mesa de reunião, foto original mesa recortada com u2net mesa recortada com isnet-anime mesa recortada com isnet-general-use mesa recortada com birefnet-massive mesa recortada com 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

originalu2netisnet-animeisnet-general-usebirefnet-massivebria-rmbg
palácio, foto original palácio recortado com u2net palácio recortado com isnet-anime palácio recortado com isnet-general-use palácio recortado com birefnet-massive palácio recortado com 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

originalu2netisnet-animeisnet-general-usebirefnet-massivebria-rmbg
carteira, foto original carteira recortada com u2net carteira recortada com isnet-anime carteira recortada com isnet-general-use carteira recortada com birefnet-massive carteira recortada com 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

  1. isnet-general-use. Default. Clay e produto “bom o bastante”. Peso leve.
  2. birefnet-massive. Quase empate. Melhor em borda fina. MIT, comercial ok.
  3. 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: