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.

bash
pip install libreyolo

Predykcja

Przy pierwszym użyciu wagi są pobierane z Hugging Face i zapisywane lokalnie w pamięci podręcznej.

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
Wycięcie
from 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.

Python
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

ZadanieONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
mattematte to ONNX: obsługiwanematte to TorchScript: obsługiwanematte to ExecuTorch: brak obsługimatte to TensorRT: brak obsługimatte to OpenVINO: brak obsługimatte to Paddle: brak obsługimatte to MNN: brak obsługimatte to RKNN: brak obsługimatte to ncnn: brak obsługimatte to TFLite: brak obsługimatte to CoreML: brak obsługimatte 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.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreBiRefNetl-matte.pt")model.export(format="onnx")
CLI
libreyolo export model=LibreBiRefNetl-matte.pt format=onnx
Użycie wyeksportowanego pliku
from 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.

PlikWejście (px)Licencja wag
matte
LibreBiRefNetl-matte.ptmit

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.

Zweryfikowano z LibreYOLO v1.5.0. Tabele obsługi, checkpointy i wyniki benchmarków na tej stronie są generowane na podstawie wydanej biblioteki i opublikowanych wag, a nie wpisywane ręcznie.