BiRefNet
Sieć z dwustronnymi odniesieniami, która przewiduje miękką matę alfa oddzielającą obiekt od tła. LibreYOLO udostępnia inferencję i walidację dla zadania matting modelu BiRefNet.
- Zadania
- matte
- Rozmiary
- t, l at 1024 px
- Instalacja
pip install libreyolo- Poziom obsługi
- Tylko inferencja, od wersji v. Tylko predykcja, walidacja i eksport. Funkcje trenowania nie mają zastosowania.
- Projekt źródłowy
- BiRefNet, autorzy: Nankai University, licencja: MIT. Publikacja, kod źródłowy
- Licencje
- Kod: MIT, wagi: MIT. Użycie komercyjne
Instalacja
BiRefNet nie wymaga opcjonalnego dodatku. Wszystkie importowane elementy znajdują się w instalacji bazowej.
pip install libreyoloPredykcja
Przy pierwszym użyciu wagi są pobierane z Hugging Face i zapisywane lokalnie w pamięci podręcznej.
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: źródłowe RGB oraz mata jako kanał alfa.rgba = result.cutout()result.save("subject.png")Wynik matting nie zawiera ramek. result.matte to gęsta tablica float32
o kształcie (H, W) i wartościach w zakresie [0, 1], gdzie 1 oznacza
w pełni pierwszy plan, a 0 w pełni tło. W przeciwieństwie do maski binarnej
miękka mata zachowuje wygładzone szczegóły krawędzi, na przykład włosy i sierść.
Metoda result.cutout() łączy obraz źródłowy z tym kanałem alfa w tablicę RGBA,
a result.save(path) (lub save=True w wywołaniu predykcji) zapisuje ją
bezpośrednio jako plik PNG z przezroczystym tłem. Model działa na stałym,
natywnym obszarze 1024x1024. Inna rozdzielczość nie jest obsługiwana, ponieważ
tabele pozycji względnych w backbone Swin są z nią związane, a przy niezgodności
zostają nieprawidłowo interpolowane zamiast zgłoszenia błędu. Zobacz stronę
predykcji, aby poznać źródła, streaming i obsługę wyników.
Warianty
Opublikowano jeden checkpoint l: model BiRefNet-general z warstwą Swin-L,
który jest domyślnym wariantem upstream zapewniającym najwyższą jakość. Kod
rodziny obsługuje też lekki wariant Swin-T oznaczony jako t, ale jego konwersja
do LibreYOLO nie została jeszcze opublikowana.
Walidacja
Metoda val() raportuje dwie metryki dla sparowanego folderu obrazów i mat.
Obie mieszczą się w zakresie [0, 1] i są niezależne od rozdzielczości: MAE,
czyli średni błąd bezwzględny względem referencyjnego kanału alfa (niższa wartość
jest lepsza), oraz S-measure (Fan i in., ICCV 2017), czyli podobieństwo
strukturalne uwzględniające zachowanie kształtu obiektu i otworów, których nie
obejmuje sam pikselowy błąd MAE (wyższa wartość jest lepsza). Walidacja korzysta
z własnej metody predict modelu, dlatego stosuje dokładnie jego przetwarzanie
wstępne.
from libreyolo import LibreYOLO model = LibreYOLO("LibreBiRefNetl-matte.pt") # Zamiast pliku YAML zbioru danych można też podać katalog zawierający# images/ oraz automatycznie wykrywany katalog z matami# (mattes/, matte/, gt/, masks/, mask/ lub alpha/).metrics = model.val(data="my-matte-dataset/") print(metrics["metrics/MAE"])print(metrics["metrics/Smeasure"])Walidacja obejmuje tylko inferencję. Dostrajanie jest udokumentowanym planem rozwoju, a nie dostępną funkcją. Dokładne ograniczenie rozdzielczości, które odziedziczyłby przyszły moduł trenowania, opisano w sekcji Predykcja.
Eksport
| Zadanie | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| matte | matte to ONNX: obsługiwane | matte to TorchScript: obsługiwane | matte to ExecuTorch: brak obsługi | matte to TensorRT: brak obsługi | matte to OpenVINO: brak obsługi | matte to Paddle: brak obsługi | matte to MNN: brak obsługi | matte to RKNN: brak obsługi | matte to ncnn: brak obsługi | matte to TFLite: brak obsługi | matte to CoreML: brak obsługi | matte to Core AI: brak obsługi |
Wyeksportowany artefakt jest ponownie wczytywany przez LibreYOLO() na
podstawie sufiksu pliku, dlatego plik .onnx zachowuje się jak checkpoint
i zwraca ten sam obiekt Results. Zweryfikowaną ścieżką jest TorchScript.
Konwersja ONNX działa, lecz nie spełniła jeszcze takiego samego kryterium
zgodności. Strona Eksport zawiera argumenty obsługiwane przez
każdy format oraz dodatki wymagane przez niektóre z nich.
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 # Fabryka wybiera ścieżkę na podstawie sufiksu pliku, więc wyeksportowany# artefakt wczytuje się jak każdy checkpoint i zwraca ten sam obiekt Results.model = LibreYOLO("LibreBiRefNetl-matte.onnx")result = model(SAMPLE_IMAGE) print(result.matte.array.shape)Checkpointy
Wszystkie opublikowane pliki wag dla tej rodziny.
| Plik | Wejście (px) | Licencja wag |
|---|---|---|
| matte | ||
| LibreBiRefNetl-matte.pt | mit | |
Każdy z powyższych plików jest obecnie dostępny w organizacji LibreYOLO i pobierany przy pierwszym użyciu.
Licencjonowanie
Sprawdź licencję w repozytorium konkretnych pobieranych wag na Hugging Face. Każdy checkpoint w organizacji LibreYOLO ma licencję, która nie zawsze jest taka sama w całej rodzinie. To repozytorium jest źródłem rozstrzygającym, a poniższe podsumowanie opisuje stan z chwili ostatniej weryfikacji tej strony.
To opis obowiązujących licencji, a nie porada prawna. Jeśli odpowiedź ma znaczenie komercyjne, przeczytaj licencje i zasięgnij własnej porady prawnej.
- Oryginalna praca
- BiRefNet, Nankai University
- Licencja projektu źródłowego
- MIT
- Kod źródłowy projektu
- github.com/ZhengPeng7/BiRefNet
- Kod LibreYOLO
- MIT
- Wagi
- MIT, ponownie opublikowane w huggingface.co/LibreYOLO
- Interpretacja
- 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.
Cytowanie
@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}
}Skopiowano z bloku cytowania autorów w github.com/ZhengPeng7/BiRefNet#citation.