BiRefNet

Uma rede de referência bilateral que prediz um alpha matte suave separando o sujeito do fundo. O LibreYOLO inclui inferência e validação para a tarefa de matte do BiRefNet.

Tarefas
matte
Tamanhos
t, l at 1024 px
Instalação
pip install libreyolo
Nível de suporte
Somente inferência, desde a v. Somente predição, validação e exportação. Os recursos de treinamento não se aplicam.
Origem
BiRefNet por Nankai University, MIT. Artigo, código-fonte
Licenças
Código MIT, pesos MIT. Uso comercial

Instalação

O BiRefNet não precisa de nenhum extra opcional. Tudo o que ele importa está na instalação base.

bash
pip install libreyolo

Predição

Os pesos são baixados do Hugging Face no primeiro uso e ficam em cache local.

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreBiRefNetl-matte.pt")result = model(SAMPLE_IMAGE, save=True) matte = result.matteprint(matte.array.shape, matte.array.dtype)
CLI
libreyolo predict model=LibreBiRefNetl-matte.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True
Recorte
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreBiRefNetl-matte.pt")result = model(SAMPLE_IMAGE) # RGBA (H, W, 4) uint8: o RGB de origem mais o matte como canal alfa.rgba = result.cutout()result.save("subject.png")

Um resultado de matte não carrega boxes; result.matte é um array denso (H, W) float32 em [0, 1], com 1 totalmente primeiro plano e 0 totalmente fundo. Diferente de uma máscara binária, o matte suave preserva o detalhe das bordas com antialiasing, como cabelo e pelo. result.cutout() compõe a imagem de origem com esse canal alfa em um array RGBA, e result.save(path) (ou save=True na chamada de predição) grava direto em um PNG de fundo transparente. O modelo roda em um canvas nativo fixo de 1024x1024; outra resolução não é suportada, porque as tabelas de posição relativa do backbone Swin estão atreladas a ela, e uma divergência as interpola mal em vez de gerar um erro. Veja predição para fontes, streaming e tratamento de resultados.

Variantes

Um único checkpoint publicado, l, o modelo BiRefNet-general do nível Swin-L e o padrão de qualidade no projeto original. O código da família também suporta um nível lite Swin-T, t, mas ainda não há nenhuma conversão dele para LibreYOLO publicada.

Validação

val() reporta duas métricas sobre uma pasta pareada de imagens e mattes, ambas em [0, 1] e independentes da resolução: MAE, o erro absoluto médio em relação ao alfa do ground truth (quanto menor, melhor), e S-measure (Fan et al., ICCV 2017), uma similaridade estrutural que valoriza preservar a forma e os buracos do sujeito, algo que o MAE por pixel sozinho não capta (quanto maior, melhor). A validação passa pelo próprio predict do modelo, então usa exatamente o pré-processamento da família.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreBiRefNetl-matte.pt") # Um diretório contendo images/ e um diretório de mattes detectado# automaticamente (mattes/, matte/, gt/, masks/, mask/ ou alpha/)# também funciona no lugar de um YAML de dataset.metrics = model.val(data="my-matte-dataset/") print(metrics["metrics/MAE"])print(metrics["metrics/Smeasure"])

A validação é somente inferência; o fine-tuning é um desdobramento documentado e não um recurso já incluído (veja Predição para a restrição exata de resolução que qualquer trainer futuro herdaria).

Exportação

TarefaONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
mattematte to ONNX: compatívelmatte to TorchScript: compatívelmatte to ExecuTorch: incompatívelmatte to TensorRT: incompatívelmatte to OpenVINO: incompatívelmatte to Paddle: incompatívelmatte to MNN: incompatívelmatte to RKNN: incompatívelmatte to ncnn: incompatívelmatte to TFLite: incompatívelmatte to CoreML: incompatívelmatte to Core AI: incompatível

Um artefato exportado é carregado de volta por LibreYOLO() pelo sufixo do arquivo, então um arquivo .onnx se comporta como um checkpoint e devolve o mesmo Results. TorchScript é o caminho validado; a conversão para ONNX roda, mas não passou pelo mesmo nível de paridade. Exportação lista os argumentos que todo formato aceita e os extras que alguns poucos adicionam.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreBiRefNetl-matte.pt")model.export(format="onnx")
CLI
libreyolo export model=LibreBiRefNetl-matte.pt format=onnx
Usar o arquivo exportado
from libreyolo import LibreYOLO, SAMPLE_IMAGE # A factory roteia pelo sufixo do arquivo, então um artefato exportado# carrega como qualquer checkpoint e devolve o mesmo objeto Results.model = LibreYOLO("LibreBiRefNetl-matte.onnx")result = model(SAMPLE_IMAGE) print(result.matte.array.shape)

Checkpoints

Todos os arquivos de pesos publicados desta família.

ArquivoEntrada (px)Licença dos pesos
matte
LibreBiRefNetl-matte.ptmit

Todos os arquivos acima existem hoje na organização LibreYOLO e são baixados no primeiro uso.

Licenciamento

Confira a licença no repositório do Hugging Face correspondente aos pesos que você baixar. Cada checkpoint na organização LibreYOLO tem uma licença, e ela nem sempre é a mesma em toda a família. Esse repositório é a fonte oficial. O resumo abaixo descreve o que se aplicava na última verificação desta página.

Esta é uma descrição das licenças envolvidas, não uma orientação jurídica. Se a resposta tiver importância comercial, leia as licenças e procure sua própria assessoria.

Trabalho original
BiRefNet, Nankai University
Licença original
MIT
Código-fonte original
github.com/ZhengPeng7/BiRefNet
Código do LibreYOLO
MIT
Pesos
MIT, republicado em huggingface.co/LibreYOLO
Interpretação
MIT is a permissive license, so these weights can be used in commercial and closed-source products. The one standing obligation is to keep the license text and copyright notice with any copy you redistribute. It places no condition on your own application code. LibreYOLO's checkpoint is a format conversion of the official pretrained BiRefNet-general weights (the Swin-L, quality-default tier), with the learned parameters unchanged; fine-tuning is not wired into this library in v1, so there is no LibreYOLO-trained variant to license separately.

Citação

@article{zheng2024birefnet,
  title={Bilateral Reference for High-Resolution Dichotomous Image Segmentation},
  author={Zheng, Peng and Gao, Dehong and Fan, Deng-Ping and Liu, Li and Laaksonen, Jorma and Ouyang, Wanli and Sebe, Nicu},
  journal={CAAI Artificial Intelligence Research},
  volume = {3},
  pages = {9150038},
  year={2024}
}

Copiado do bloco de citação dos autores em github.com/ZhengPeng7/BiRefNet#citation.

Verificado com o LibreYOLO v1.5.0. As tabelas de suporte, os checkpoints e os números de benchmark desta página são gerados a partir da biblioteca lançada e dos pesos publicados, não escritos à mão.