Uma API REST poderosa para remoção automática de fundos de imagens usando inteligência artificial.
- 🤖 Remoção automática de fundo com IA de última geração (BiRefNet-matting)
- 📁 Múltiplos formatos suportados: WEBP, PNG, JPG, JPEG
- ⚡ Detecção automática de GPU (fallback para CPU quando necessário)
- 🚀 API REST simples e rápida com FastAPI
- 🎯 Alta qualidade com redimensionamento para 1024x1024
- 🔧 Fácil de usar com apenas um endpoint
- 🐳 Suporte ao Docker para deploy fácil
- 🔒 CORS habilitado para uso em aplicações web
- Python 3.10+
- CUDA (opcional, para aceleração GPU)
- Git (para clone do repositório)
- Clone e acesse o diretório:
git clone https://github.com/lusrodri/canva-copy-api.git
cd canva-copy-api- Crie e ative o ambiente virtual:
# Criar ambiente virtual
python -m venv env
# Ativar ambiente virtual (Windows)
.\env\Scripts\activate
# Para Linux/Mac
source env/bin/activate- Instale as dependências:
pip install -r requirements.txt- Execute a API:
fastapi run main.pyA API estará disponível em: http://localhost:8000
- Build da imagem:
docker build -t canva-copy-api .- Execute o container:
docker run -p 8000:8000 canva-copy-api- Modelo:
ZhengPeng7/BiRefNet-matting(carregado automaticamente do Hugging Face) - Qualidade: Estado da arte em remoção de fundos com matting refinado
- Tamanho: ~600MB (download automático na primeira execução)
- Tecnologia: BiRefNet com suporte a matting para bordas mais suaves
Health check - Verifica se a API está funcionando
Resposta:
{
"status": "ok",
"message": "I Hate Background API is running"
}Remove o fundo de uma imagem enviada
Parâmetros:
file: Arquivo de imagem (multipart/form-data)- Formatos aceitos: WEBP, PNG, JPG, JPEG
- Tamanho máximo: Limitado pela memória disponível
Resposta:
- Sucesso: Imagem PNG com fundo removido
- Erro 400: Arquivo não é uma imagem válida
- Erro 500: Erro no processamento
Exemplo com curl:
curl -X POST "http://localhost:8000/remove-background" \
-H "accept: image/png" \
-H "Content-Type: multipart/form-data" \
-F "file=@sua_imagem.jpg" \
--output resultado.pngExemplo com Python:
import requests
url = "http://localhost:8000/remove-background"
files = {"file": open("sua_imagem.jpg", "rb")}
response = requests.post(url, files=files)
if response.status_code == 200:
with open("resultado.png", "wb") as f:
f.write(response.content)
print("Fundo removido com sucesso!")Para testar a funcionalidade:
python test_bg_remover.pyO BackgroundRemover utiliza o modelo BiRefNet-matting e segue este fluxo:
-
📥 Pré-processamento:
- Redimensionamento para 1024x1024 pixels
- Normalização com valores ImageNet
- Conversão para tensor PyTorch
-
🧠 Predição:
- Processamento com modelo de segmentação BiRefNet
- Aplicação de função sigmoid na saída
- Detecção automática de dispositivo (GPU/CPU)
-
📤 Pós-processamento:
- Conversão da máscara para PIL Image
- Redimensionamento da máscara para tamanho original
- Aplicação como canal alpha (transparência)
- Preservação da qualidade e dimensões originais
-
🎯 Otimizações:
- Precisão float32 otimizada
- Cache do modelo carregado
- Processamento em lote eficiente
- Matting refinado para bordas mais suaves
❌ Erro de CUDA/GPU:
RuntimeError: CUDA out of memory
✅ Solução: A API automaticamente usa CPU como fallback
❌ Erro de autenticação HF:
HTTPError: 401 Client Error: Unauthorized
✅ Solução: O modelo BiRefNet não requer autenticação. Verifique se o modelo está sendo baixado corretamente.
❌ Erro de dependências:
ModuleNotFoundError: No module named 'torch'
✅ Solução: Reinstale as dependências: pip install -r requirements.txt
❌ Erro de memória:
RuntimeError: [enforce fail at alloc_cpu.cpp]
✅ Solução: Reduza o tamanho da imagem ou use uma máquina com mais RAM
❌ Erro de modelo não encontrado:
OSError: ZhengPeng7/BiRefNet-matting does not appear to be a repository
✅ Solução: Verifique sua conexão com a internet. O modelo será baixado automaticamente na primeira execução.
- RAM: Mínimo 4GB, recomendado 8GB+
- Espaço: ~2GB livres (modelo + dependências)
- GPU: Opcional (NVIDIA com CUDA 11.8+)
- Rede: Conexão para download inicial do modelo
- Python: Versão 3.10 ou superior
- FastAPI - Framework web moderno e rápido
- PyTorch - Deep learning framework
- Transformers - Biblioteca Hugging Face para modelos
- Pillow - Processamento de imagens
- BiRefNet - Modelo estado da arte para remoção de fundo
- Docker - Containerização para deploy
O projeto não requer variáveis de ambiente específicas, mas você pode configurar:
# Opcional: forçar uso de CPU
export CUDA_VISIBLE_DEVICES=""
# Opcional: definir cache do Hugging Face
export HF_HOME=/path/to/cache# Build
docker build -t canva-copy-api .
# Run em produção
docker run -d -p 8000:8000 --name bg-remover canva-copy-apiExecute os testes unitários:
python test_bg_remover.py- Tempo médio: 2-5 segundos por imagem (dependendo do hardware)
- GPU recomendada: RTX 3060 ou superior
- CPU fallback: Funcional, porém mais lento (10-30 segundos)
- Tamanho máximo recomendado: 4096x4096 pixels
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
- ZhengPeng7/BiRefNet - Modelo de segmentação de alta qualidade
- Hugging Face - Plataforma de modelos e transformers
- FastAPI - Framework web moderno para Python
Se você encontrar algum problema ou tiver sugestões:
- Verifique se o problema já foi reportado nas Issues
- Se não, crie uma nova issue com detalhes do problema
- Para dúvidas gerais, use as Discussions
⭐ Se este projeto foi útil para você, considere dar uma estrela no repositório!