BiRefNet
Un réseau à référence bilatérale qui prédit un matte alpha doux séparant un sujet de son arrière-plan. LibreYOLO fournit l'inférence et la validation pour la tâche matte de BiRefNet.
- Tâches
- matte
- Tailles
- t, l at 1024 px
- Installer
pip install libreyolo- Niveau de support
- Inférence uniquement, depuis v. Prédiction, validation et export uniquement. Les fonctionnalités d'entraînement ne s'appliquent pas.
- Licences
- Code MIT, poids MIT. Usage commercial
Installation
BiRefNet ne demande aucun extra optionnel. Tout ce qu'il importe fait partie de l'installation de base.
pip install libreyoloPrédire
Les poids sont téléchargés depuis Hugging Face au premier usage, puis mis en cache localement.
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 : le RGB source plus le matte en canal alpha.rgba = result.cutout()result.save("subject.png")Un résultat de matte ne porte aucune bounding box ; result.matte est un
tableau dense (H, W) float32 dans [0, 1], 1 pour un premier plan complet
et 0 pour un arrière-plan complet. Contrairement à un masque binaire, le matte
doux conserve le détail des bords anticrénelés, cheveux et fourrure compris.
result.cutout() compose l'image source avec ce canal alpha dans un tableau
RGBA, et result.save(path) (ou save=True sur l'appel de prédiction)
l'écrit directement dans un PNG à fond transparent. Le modèle tourne sur un
canevas natif fixe de 1024x1024 ; une autre résolution n'est pas prise en
charge, parce que les tables de positions relatives du backbone Swin y sont
liées et qu'un écart les interpole mal au lieu de lever une erreur. Voir
la prédiction pour les sources, le streaming et le traitement
des résultats.
Variantes
Un seul checkpoint publié, l, le modèle BiRefNet-general de niveau Swin-L et
le modèle par défaut orienté qualité en amont. Le code de la famille prend
aussi en charge un niveau léger Swin-T, t, mais aucune conversion LibreYOLO
n'en est encore publiée.
Valider
val() renvoie deux métriques sur un dossier apparié image/matte, toutes deux
dans [0, 1] et indépendantes de la résolution : la MAE, l'erreur absolue
moyenne par rapport à l'alpha de vérité terrain (plus c'est bas, mieux c'est),
et la S-measure (Fan et al., ICCV 2017), une similarité structurelle qui
valorise la conservation de la forme du sujet et de ses trous, ce que la MAE
par pixel seule ignore (plus c'est haut, mieux c'est). La validation passe par
le predict du modèle lui-même, elle utilise donc exactement le prétraitement
de la famille.
from libreyolo import LibreYOLO model = LibreYOLO("LibreBiRefNetl-matte.pt") # Un répertoire contenant images/ et un dossier de mattes détecté# automatiquement (mattes/, matte/, gt/, masks/, mask/ ou alpha/)# marche aussi à la place d'un YAML de dataset.metrics = model.val(data="my-matte-dataset/") print(metrics["metrics/MAE"])print(metrics["metrics/Smeasure"])La validation se fait en inférence seule ; le fine-tuning est une suite documentée plutôt qu'une fonctionnalité livrée (voir Prédire pour la contrainte de résolution exacte dont hériterait tout futur entraîneur).
Exporter
| Tâche | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| matte | matte to ONNX : pris en charge | matte to TorchScript : pris en charge | matte to ExecuTorch : non pris en charge | matte to TensorRT : non pris en charge | matte to OpenVINO : non pris en charge | matte to Paddle : non pris en charge | matte to MNN : non pris en charge | matte to RKNN : non pris en charge | matte to ncnn : non pris en charge | matte to TFLite : non pris en charge | matte to CoreML : non pris en charge | matte to Core AI : non pris en charge |
Un artefact exporté se recharge via LibreYOLO() selon son extension de
fichier, si bien qu'un fichier .onnx se comporte comme un checkpoint et
renvoie le même Results. TorchScript est le chemin validé ; la conversion
ONNX fonctionne mais n'a pas passé la même barre de parité.
L'export liste les arguments que chaque format accepte, ainsi
que les extras que quelques-uns ajoutent.
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 s'appuie sur l'extension du fichier, donc un artefact# exporté se charge comme n'importe quel checkpoint et renvoie le# même objet Results.model = LibreYOLO("LibreBiRefNetl-matte.onnx")result = model(SAMPLE_IMAGE) print(result.matte.array.shape)Checkpoints
Tous les fichiers de poids publiés de cette famille.
| Fichier | Entrée (px) | Licence des poids |
|---|---|---|
| matte | ||
| LibreBiRefNetl-matte.pt | mit | |
Tous les fichiers ci-dessus sont actuellement disponibles dans l<link>organisation LibreYOLO</link> et sont téléchargés à la première utilisation.
Licence
Vérifiez la licence dans le dépôt Hugging Face des poids précis que vous téléchargez. Chaque checkpoint de l<link>organisation LibreYOLO</link> en possède une, et elles ne sont pas toujours identiques au sein dune même famille. Ce dépôt fait autorité ; le résumé ci-dessous décrit les conditions applicables lors de la dernière vérification de cette page.
Ceci décrit les licences concernées et ne constitue pas un conseil juridique. Si la réponse a une importance commerciale, lisez vous-même les licences et consultez votre propre avocat.
- Travail d'origine
- BiRefNet, Nankai University
- Licence du projet d'origine
- MIT
- Source du projet d'origine
- github.com/ZhengPeng7/BiRefNet
- Code de LibreYOLO
- MIT
- Poids
- MIT, republiés sur huggingface.co/LibreYOLO
- Interprétation
- 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.
Citation
@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}
}Copié depuis le bloc de citation des auteurs sur github.com/ZhengPeng7/BiRefNet#citation.