Referência Bilateral para Segmentação de Imagens em Alta Resolução
Um espaço de trabalho voltado à pesquisa para máscaras nítidas, bordas difíceis e experimentos visuais reproduzíveis.
Este é o espaço de trabalho oficial do birefnet para Referência Bilateral para Segmentação Dicotômica de Imagens em Alta Resolução, adaptado aqui como um ponto de partida prático para extração de primeiro plano em alta resolução, composição e tarefas relacionadas de imagens binárias.
Observação
O trabalho em alta resolução se beneficia de hardware capaz. A família de modelos foi projetada para preservar a estrutura à medida que as imagens aumentam, enquanto o conjunto de ferramentas ao redor mantém os experimentos fáceis de reproduzir.
Novidades 📰
Sep 23, 2025: O caminho de atenção foi atualizado com uma implementação oficial de SDPA do PyTorch para reduzir a pressão sobre a memória durante o treinamento e a inferência.Jun 30, 2025: O refinamento do primeiro plano foi acelerado com um caminho de estimativa rápida assistido por GPU e um pré-processamento mais limpo de arrays.May 15, 2025: Foi lançado um tutorial gravado sobre o ajuste fino do birefnet em dados personalizados para quem prefere um passo a passo guiado.Mar 31, 2025: O caminho de modelo dinâmico foi ampliado para resoluções de256x256a2304x2304para uso geral mais robusto.Feb 12, 2025: Uma variante de matting em maior resolução foi adicionada para fluxos de trabalho que precisam de bordas mais suaves e transições mais naturais.Feb 1, 2025: O modelo de alta resolução para uso geral foi publicado com treinamento centralizado em2048x2048imagens.Jan 6, 2025: A inferência em FP16 foi validada com qualidade praticamente inalterada e menor uso de memória em GPUs compatíveis.Dec 5, 2024: Foram implementadas correções de compatibilidade para a compilação atual do PyTorch e o treinamento acelerado de precisão mista.Nov 28, 2024: Um projeto estudantil desenvolvido com birefnet recebeu reconhecimento em uma competição nacional de inovação.Oct 26, 2024: A documentação ganhou um guia dedicado ao fine-tuning de pesos existentes em conjuntos de dados personalizados.Oct 6, 2024: Pesos de matting sem trimap foram adicionados para fluxos de trabalho gerais de primeiro plano.Sep 24, 2024: Um modelo leve de 2K e um notebook de inferência de vídeo foram publicados para entradas de maior resolução.Aug 30, 2024: Notebooks de inferência local e conversão para ONNX foram adicionados à pasta de tutoriais.Aug 23, 2024: O trabalho de pesquisa foi publicado oficialmente online, junto com o lançamento público do projeto.Aug 19, 2024: Os arquivos de modelo ONNX para os pesos disponíveis foram reunidos com notas de conversão.Jul 28, 2024: Exemplos de segmentação orientada por caixas foram adicionados para uma seleção de objetos mais controlada.Jul 15, 2024: O carregamento do modelo em uma linha foi documentado para um primeiro experimento mais rápido.May 28, 2024: O zoológico de modelos foi ampliado com pesos para uso geral, matting, DIS, HRSOD e COD.May 7, 2024: Um notebook de inferência para múltiplas imagens foi publicado para experimentação em lote.Mar 7, 2024: O código de treinamento, os utilitários de avaliação e os pesos específicos de cada tarefa foram organizados no projeto público.Jan 7, 2024: O artigo original e a implementação inicial foram publicados.
🚀 Carregue o birefnet em UMA LINHA
from transformers import AutoModelForImageSegmentation birefnet = AutoModelForImageSegmentation.from_pretrained( "birefnet/model", trust_remote_code=True )
🛬 Parceiro de inferência:
Você pode acessar o fluxo de trabalho de inferência do birefnet por meio do espaço de trabalho do modelo ou use a opção de implantação para configurar seu próprio ambiente.
Nossos modelos birefnet foram projetados para tarefas exigentes de alta resolução
Experimente nossas demonstrações on-line para inferência:
- Inferência e avaliação dos pesos escolhidos: abra o fluxo de trabalho de avaliação
- Inferência on-line com interface gráfica e resoluções ajustáveis: abra o espaço de trabalho visual
- Inferência em várias imagens para um pequeno lote: abra o fluxo de trabalho em lote
Prêmios:
Alguns projetos de destaque de estudantes e da comunidade foram desenvolvidos com o birefnet.
Catálogo de modelos
Para ampliar o uso prático, a implementação da pesquisa original foi expandida em variantes do modelo para diferentes tamanhos de imagem, tarefas e restrições de implantação.
Os conjuntos de dados e os pesos dos modelos de base são organizados por tarefa para que os experimentos possam começar a partir de uma referência conhecida.
Os registros de desempenho e os mapas previstos são mantidos junto às configurações dos experimentos correspondentes.
Modelos do artigo original para comparação com benchmarks
| Tarefa | Conjuntos de treinamento | Backbone | Baixar |
|---|---|---|---|
| DIS | DIS5K-TR | swin_v1_large | arquivo do modelo |
| COD | COD10K-TR, CAMO-TR | swin_v1_large | arquivo do modelo |
| HRSOD | DUTS-TR | swin_v1_large | arquivo do modelo |
| HRSOD | DUTS-TR, HRSOD-TR | swin_v1_large | arquivo do modelo |
| HRSOD | DUTS-TR, UHRSD-TR | swin_v1_large | arquivo do modelo |
| HRSOD | DUTS-TR, HRSOD-TR, UHRSD-TR | swin_v1_large | arquivo do modelo |
Modelos treinados para uso geral e matting
| Tarefa | Conjuntos de treinamento | Arquitetura base | Conjunto de teste | Métrica | Baixar |
|---|---|---|---|---|---|
| uso geral, 2048x2048 | AIM-500, DIS, HIM2K, PPM-100 e conjuntos de pessoas em alta resolução | swin_v1_large | DIS-VD | 0.927, 0.894 | arquivo do modelo |
| uso geral | DIS5K, DIS-TEs, DUTS, HRSOD e UHRSD | swin_v1_large | DIS-VD | 0.911, 0.875 | arquivo do modelo |
| uso geral | DIS5K e DIS-TEs | swin_v1_tiny | DIS-VD | 0.882, 0.830 | arquivo do modelo |
| matting geral | P3M, conjuntos de pessoas, AIM-500, HIM2K e fundos sintetizados | swin_v1_large | TE-P3M | 0.979, 0.988 | arquivo do modelo |
| matting de retratos | conjuntos de imagens P3M e de pessoas | swin_v1_large | P3M-500-P | 0.983, 0.989 | arquivo do modelo |
Segmentação guiada por caixa
Eficiência do modelo
| Tempo de execução | FP32 | FP16 |
|---|---|---|
| A100 | 86.8ms | 69.4ms |
| 4090 | 95.8ms | 57.7ms |
| V100 | 384ms | 152ms |
Conversão para ONNX
Criações de terceiros
Várias aplicações da comunidade usam birefnet como backend ou nó. Os exemplos abaixo mantêm o mesmo espírito prático e focado em cliques do projeto original.
-
Aplicações
Removedor de fundo: um fluxo compacto no navegador para remover fundos de fotos com uma variante leve do birefnet.
Abrir fluxo de trabalho
Remoção no navegador: uma interface com prioridade para o processamento local mantém a imagem no dispositivo enquanto a máscara é calculada no navegador.
Abrir fluxo de trabalho
Fluxo de inferência flexível: um pipeline visual conecta a entrada de imagem, a configuração do modelo, o refinamento e a visualização da saída.
Abrir fluxo de trabalho
Integração com o ComfyUI: um painel baseado em nós disponibiliza a segmentação e a conversão de máscaras dentro de um fluxo de trabalho visual.
Abrir fluxo de trabalho
Serviço de recorte de vídeo: o birefnet pode servir como mecanismo de primeiro plano para fluxos de trabalho de remoção de fundo em vídeos curtos.
Abrir fluxo de trabalho
Nó no estilo Invoke: um primitivo simples de imagem alimenta um nó de remoção de fundo com refinamento opcional do primeiro plano.
Abrir fluxo de trabalho
Geração de assets 2D: a extração do primeiro plano se combina com ferramentas criativas para produzir assets recortados e limpos para design e pré-visualização.
Abrir fluxo de trabalho
Efeitos de texto atrás do sujeito: extrair o primeiro plano permite posicionar a tipografia entre o sujeito e a cena original.
Abrir fluxo de trabalho
Utilitário do Stable Diffusion: um painel de modelo adiciona a extração do primeiro plano a um fluxo de trabalho de geração de imagens, com visualizações da máscara e da saída transparente.
Abrir fluxo de trabalho
Playground de modelo online: uma interface focada em entrada e resultado oferece controles úteis sem exigir uma configuração local.
Abrir fluxo de trabalho
-
Extensões do modelo
Modelos de primeiro plano para anime: dados ajustados podem adaptar o birefnet a personagens ilustrados e obras de arte estilizadas, nas quais cabelos, fitas e bordas de fantasias são importantes.
Explorar extensão
Inferência leve: ambientes de execução alternativos e formatos compactos facilitam levar a segmentação para hardware de consumo.
image_data image = image_load("input.png"); backend_device device = backend_init(); birefnet_model model = birefnet_load_model("BiRefNet-F16", device); image_data mask = birefnet_compute(model, image);
Dados privados de maior qualidade: o treinamento específico para a tarefa pode melhorar as máscaras binárias de primeiro plano, especialmente em cenas variadas e limites difíceis de objetos.
Explorar extensão
-
Mais comparações visuais
Comparações lado a lado mostram como o birefnet se comporta em cenas de produtos, retratos e bordas detalhadas do primeiro plano.
Comparações em vídeo destacam a continuidade, a estabilidade da silhueta e a preservação de pequenos detalhes em movimento.
Uso
Configuração do ambiente
# PyTorch >= 2.5.0 is used for faster training with compilation.
conda create -n birefnet python=3.11 -y && conda activate birefnet
pip install -r requirements.txt
Preparação do conjunto de dados
Baixe os conjuntos combinados de treinamento e teste organizados para DIS, COD e HRSOD, ou use os conjuntos de dados oficiais na single_ones pasta. Mantenha as pastas de imagens e de dados de referência alinhadas em cada tarefa.
Preparação dos pesos
Baixe os pesos do backbone no espaço de trabalho do modelo ou nas páginas oficiais dos respectivos projetos antes de iniciar o treinamento ou a inferência local.
Executar
# Train & Test & Evaluation ./train_test.sh RUN_NAME GPU_NUMBERS_FOR_TRAINING GPU_NUMBERS_FOR_TEST # Example: ./train_test.sh tmp-proj 0,1,2,3 0 # See train.sh / test.sh for only training or evaluation. # After evaluation, use gen_best_ep.py to select the best checkpoint.
🖊️ Ajuste fino com dados personalizados
Um tutorial em vídeo explica o processo de ajuste fino do birefnet, da organização do conjunto de dados à seleção do checkpoint.
- Pré-requisitos: coloque os conjuntos de dados em
${data_root_dir}/TASK_NAME/DATASET_NAME, com as pastasimegtdentro de cada conjunto de dados. - Alterar uma tarefa existente: substitua o nome da tarefa existente em todo o projeto pelo nome da sua tarefa personalizada.
- Adaptar as configurações: atualize
sys_home_dir,testsets,training_sete os pesos da função de perda para a sua tarefa. - Usar pesos existentes: retome o treinamento a partir de um checkpoint e continue o intervalo de épocas a partir do número indicado no nome do arquivo.
- Validar o resultado: compare as máscaras no conjunto de validação antes de usar um checkpoint em um fluxo de trabalho de produção.
Pesos bem treinados:
Baixe os arquivos BiRefNet-{TASK}-{EPOCH}.pth do espaço de trabalho do modelo e da coleção de lançamentos. Os mapas previstos, os resumos de desempenho e os logs de treinamento ficam junto das configurações do experimento correspondente.
Os resultados podem variar ligeiramente conforme o hardware e a configuração de treinamento. Uma única GPU adequada pode ser suficiente para inferência em 1024x1024, enquanto o treinamento em resoluções mais altas se beneficia de mais memória.
Quando houver mais GPUs disponíveis, aumente o tamanho do lote e configure os IDs dos dispositivos em config.py para passar do treinamento com uma GPU para o treinamento com várias GPUs.
Algumas das minhas mensagens:
Este projeto começou como uma implementação do DIS e evoluiu para um toolkit mais amplo para segmentação de imagens binárias. Ele pode oferecer suporte a DIS, COD, SOD, imagens médicas e segmentação de anomalias quando a configuração da tarefa é adaptada cuidadosamente.
- O treinamento com várias GPUs pode ser ativado ou desativado com uma única configuração.
- As opções de backbone incluem variantes do Swin, variantes do PVT e redes convolucionais.
- As perdas ponderadas incluem BCE, IoU, SSIM, MAE e termos voltados para regressão.
- As técnicas de treinamento incluem supervisão em múltiplas escalas, congelamento do backbone e entradas em múltiplas escalas.
- O collator de dados pode combinar conjuntos de dados em memória para treinamento e testes coordenados.
- O objetivo é criar uma base reutilizável para novos trabalhos de segmentação visual.
Resultados quantitativos
Os resumos dos benchmarks comparam birefnet com métodos consolidados em conjuntos de dados de alta e baixa resolução.
| Conjunto de teste | Pontuação de estrutura | Pontuação F ponderada | MAE | HCE |
|---|---|---|---|---|
| DIS-TE1 | 0.860 | 0.819 | 0.037 | 106 |
| DIS-TE2 | 0.894 | 0.857 | 0.036 | 266 |
| DIS-TE3 | 0.925 | 0.893 | 0.028 | 569 |
| DIS-VD | 0.891 | 0.854 | 0.038 | 989 |
Resultados qualitativos
As comparações visuais concentram-se em estruturas estreitas, oclusão parcial, padrões repetidos e camuflagem.
Agradecimentos:
Muitos agradecimentos às empresas, instituições e colaboradores da comunidade que ajudam a tornar a pesquisa visual de alta resolução mais acessível.
Citação
@article{birefnet2024,
title={Bilateral Reference for High-Resolution Dichotomous Image Segmentation},
author={Birefnet Research Team},
journal={CAAI Artificial Intelligence Research},
volume={3},
pages={9150038},
year={2024}
}
Contato
Perguntas, discussões e notas de implementação podem ser compartilhadas no espaço de trabalho do projeto. Para um início guiado, use o fluxo de trabalho do birefnet e use sua própria imagem ou prompt.
Licença MIT
A documentação do projeto e a implementação principal são disponibilizadas sob a licença MIT. Consulte o arquivo de licença correspondente antes de usar quaisquer pesos de modelo ou extensões de terceiros.