BiRefNet
Una rete a riferimento bilaterale che predice un alpha matte morbido, capace di separare il soggetto dallo sfondo. LibreYOLO include inferenza e validazione per il task matte di BiRefNet.
- Task
- matte
- Dimensioni
- t, l at 1024 px
- Installa
pip install libreyolo- Livello di supporto
- Solo inferenza, dalla v. Solo predizione, validazione ed esportazione. Le funzionalità di addestramento non si applicano.
- Licenze
- Codice MIT, pesi MIT. Uso commerciale
Installazione
BiRefNet non richiede nessun extra opzionale. Tutto quello che importa è nell'installazione base.
pip install libreyoloPredizione
I pesi vengono scaricati da Hugging Face al primo utilizzo e restano nella cache locale.
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)libreyolo predict model=LibreBiRefNetl-matte.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=Truefrom libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreBiRefNetl-matte.pt")result = model(SAMPLE_IMAGE) # RGBA (H, W, 4) uint8: l'RGB di origine più il matte come canale alfa.rgba = result.cutout()result.save("subject.png")Un risultato di tipo matte non porta box; result.matte è un array denso
(H, W) float32 in [0, 1], dove 1 è primo piano pieno e 0 sfondo pieno. A
differenza di una maschera binaria, il matte morbido conserva il dettaglio dei
bordi con antialiasing, come capelli e pelo. result.cutout() compone
l'immagine di origine con quel canale alfa in un array RGBA, e
result.save(path) (oppure save=True nella chiamata di predizione) lo scrive
direttamente in un PNG con sfondo trasparente. Il modello lavora su un canvas
nativo fisso di 1024x1024; un'altra risoluzione non è supportata, perché le
tabelle di posizione relativa del backbone Swin sono legate a quella
dimensione, e una discrepanza le interpola male invece di sollevare un errore.
Vedi predizione per sorgenti, streaming e gestione dei
risultati.
Varianti
Un solo checkpoint pubblicato, l, il modello BiRefNet-general del livello
Swin-L e la scelta predefinita per la qualità nel progetto originale. Il codice
della famiglia supporta anche un livello lite Swin-T, t, ma non è ancora
pubblicata nessuna sua conversione per LibreYOLO.
Validazione
val() riporta due metriche su una cartella accoppiata di immagini e matte,
entrambe in [0, 1] e indipendenti dalla risoluzione: MAE, l'errore assoluto
medio rispetto all'alfa del ground truth (più basso è meglio), e S-measure
(Fan et al., ICCV 2017), una similarità strutturale che premia la
conservazione della forma e dei buchi del soggetto, cosa che il MAE per pixel
da solo si perde (più alto è meglio). La validazione passa per il predict
del modello stesso, quindi usa esattamente il preprocessing della famiglia.
from libreyolo import LibreYOLO model = LibreYOLO("LibreBiRefNetl-matte.pt") # Anche una cartella che contiene images/ e una cartella di matte# rilevata automaticamente (mattes/, matte/, gt/, masks/, mask/ o# alpha/) va bene al posto di un YAML del dataset.metrics = model.val(data="my-matte-dataset/") print(metrics["metrics/MAE"])print(metrics["metrics/Smeasure"])La validazione è solo inferenza; il fine-tuning è un seguito documentato, non una funzionalità già inclusa (vedi Predizione per il vincolo esatto di risoluzione che qualsiasi trainer futuro erediterebbe).
Esportazione
| Task | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| matte | matte to ONNX: supportato | matte to TorchScript: supportato | matte to ExecuTorch: non supportato | matte to TensorRT: non supportato | matte to OpenVINO: non supportato | matte to Paddle: non supportato | matte to MNN: non supportato | matte to RKNN: non supportato | matte to ncnn: non supportato | matte to TFLite: non supportato | matte to CoreML: non supportato | matte to Core AI: non supportato |
Un artefatto esportato si ricarica con LibreYOLO() in base all'estensione del
file, quindi un file .onnx si comporta come un checkpoint e restituisce lo
stesso Results. TorchScript è il percorso validato; la conversione in ONNX
funziona, ma non ha superato la stessa asticella di parità.
Esportazione elenca gli argomenti che ogni formato accetta e
gli extra che qualcuno di essi aggiunge.
from libreyolo import LibreYOLO model = LibreYOLO("LibreBiRefNetl-matte.pt")model.export(format="onnx")libreyolo export model=LibreBiRefNetl-matte.pt format=onnxfrom libreyolo import LibreYOLO, SAMPLE_IMAGE # La factory instrada in base all'estensione del file, quindi un# artefatto esportato si carica come qualsiasi checkpoint e# restituisce lo stesso oggetto Results.model = LibreYOLO("LibreBiRefNetl-matte.onnx")result = model(SAMPLE_IMAGE) print(result.matte.array.shape)Checkpoint
Tutti i file di pesi pubblicati per questa famiglia.
| File | Ingresso (px) | Licenza dei pesi |
|---|---|---|
| matte | ||
| LibreBiRefNetl-matte.pt | mit | |
Oggi tutti i file elencati sopra sono presenti nell<link>organizzazione LibreYOLO</link> e vengono scaricati al primo utilizzo.
Licenza
Controlla la licenza nel repository Hugging Face degli specifici pesi che scarichi. Ogni checkpoint nell<link>organizzazione LibreYOLO</link> ne include una e non è sempre la stessa per tutta la famiglia. Quel repository è la fonte autorevole; il riepilogo seguente descrive le condizioni applicabili al momento dellultima verifica di questa pagina.
Questa è una descrizione delle licenze coinvolte, non una consulenza legale. Se la risposta è importante a fini commerciali, leggi personalmente le licenze e chiedi una consulenza indipendente.
- Lavoro originale
- BiRefNet, Nankai University
- Licenza upstream
- MIT
- Sorgente upstream
- github.com/ZhengPeng7/BiRefNet
- Codice LibreYOLO
- MIT
- Pesi
- MIT, ripubblicati su huggingface.co/LibreYOLO
- Interpretazione
- 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.
Citazione
@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}
}Copiato dal blocco di citazione degli autori disponibile su github.com/ZhengPeng7/BiRefNet#citation.