BiRefNet
Мережа двостороннього зіставлення передбачає м'яке alpha matte, що відокремлює об'єкт від тла. LibreYOLO постачає інференс і валідацію завдання matte моделі BiRefNet.
- Задачі
- matte
- Розміри
- t, l at 1024 px
- Встановлення
pip install libreyolo- Рівень підтримки
- Лише інференс, починаючи з v. Лише передбачення, валідація та експорт. Функції навчання не застосовуються.
- Ліцензії
- Код: MIT, ваги: MIT. Комерційне використання
Встановлення
BiRefNet не потребує додаткових залежностей. Усе, що вона імпортує, входить до базового встановлення.
pip install libreyoloПередбачення
Під час першого використання ваги завантажуються з Hugging Face і кешуються локально.
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: RGB джерела та matte як альфа-канал.rgba = result.cutout()result.save("subject.png")Результат matte не містить рамок; result.matte є щільним масивом float32
(H, W) у діапазоні [0, 1], де 1 означає повністю передній план, а 0
повністю тло. На відміну від бінарної маски, м'яке matte зберігає згладжені
деталі країв, як-от волосся та хутро. result.cutout() об'єднує початкове
зображення з цим альфа-каналом у масив RGBA, а result.save(path) (або
save=True у виклику передбачення) записує його безпосередньо до PNG із
прозорим тлом. Модель працює на фіксованому початковому полотні 1024x1024;
інша роздільна здатність не підтримується, оскільки таблиці відносних позицій
бекбона Swin прив'язані до неї, а невідповідність спричиняє їх погану
інтерполяцію замість помилки. Типи джерел, потокове передбачення та обробку
результатів описано в розділі передбачення.
Варіанти
Опубліковано одну контрольну точку l, модель BiRefNet-general рівня Swin-L
і типовий варіант якості початкового проєкту. Код сімейства також підтримує
легкий рівень Swin-T t, але його перетворення LibreYOLO ще не опубліковано.
Валідація
val() повідомляє дві метрики для парної папки зображень і matte. Обидві
належать до діапазону [0, 1] і не залежать від роздільної здатності: MAE
є середньою абсолютною похибкою відносно еталонної альфи (менше значення є
кращим), а S-measure (Fan et al., ICCV 2017) є структурною подібністю, що
враховує збереження форми об'єкта й отворів, які не помічає сама попіксельна
MAE (більше значення є кращим). Валідація викликає власний метод predict
моделі, тому використовує точну попередню обробку сімейства.
from libreyolo import LibreYOLO model = LibreYOLO("LibreBiRefNetl-matte.pt") # Замість YAML датасету також працює каталог із images/ і автоматично# виявленим каталогом matte (mattes/, matte/, gt/, masks/, mask/ або alpha/).metrics = model.val(data="my-matte-dataset/") print(metrics["metrics/MAE"])print(metrics["metrics/Smeasure"])Валідація призначена лише для інференсу; донавчання є задокументованим наступним кроком, а не наявною функцією (точне обмеження роздільної здатності, яке успадкує будь-який майбутній тренер, див. у розділі «Передбачення»).
Експорт
| Задача | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| matte | matte to ONNX: підтримується | matte to TorchScript: підтримується | matte to ExecuTorch: не підтримується | matte to TensorRT: не підтримується | matte to OpenVINO: не підтримується | matte to Paddle: не підтримується | matte to MNN: не підтримується | matte to RKNN: не підтримується | matte to ncnn: не підтримується | matte to TFLite: не підтримується | matte to CoreML: не підтримується | matte to Core AI: не підтримується |
Експортований артефакт знову завантажується через LibreYOLO() відповідно до
суфікса файлу, тому файл .onnx поводиться як контрольна точка й повертає
той самий об'єкт Results. Перевіреним шляхом є TorchScript; перетворення
ONNX виконується, але ще не пройшло той самий рівень перевірки відповідності.
У розділі експорту наведено аргументи, які приймає кожен
формат, і додаткові параметри деяких форматів.
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 # Фабрика маршрутизує за суфіксом файлу, тому експортований артефакт# завантажується як будь-яка контрольна точка й повертає той самий об'єкт Results.model = LibreYOLO("LibreBiRefNetl-matte.onnx")result = model(SAMPLE_IMAGE) print(result.matte.array.shape)Контрольні точки
Усі опубліковані файли ваг цього сімейства.
| Файл | Вхід (пікс.) | Ліцензія ваг |
|---|---|---|
| matte | ||
| LibreBiRefNetl-matte.pt | mit | |
Кожен наведений вище файл уже доступний у організації LibreYOLO і завантажується під час першого використання.
Ліцензування
Перевіряйте ліцензію в репозиторії Hugging Face конкретних ваг, які завантажуєте. Кожна контрольна точка в організації LibreYOLO має ліцензію, і вона не завжди однакова для всього сімейства. Цей репозиторій є авторитетним джерелом, а наведене нижче резюме описує умови на момент останньої перевірки сторінки.
Це опис відповідних ліцензій, а не юридична консультація. Якщо відповідь має комерційне значення, самостійно прочитайте ліцензії та зверніться по юридичну консультацію.
- Оригінальна робота
- BiRefNet, Nankai University
- Ліцензія першоджерела
- MIT
- Джерело першоджерела
- github.com/ZhengPeng7/BiRefNet
- Код LibreYOLO
- MIT
- Ваги
- MIT, повторно опубліковано на huggingface.co/LibreYOLO
- Тлумачення
- 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.
Цитування
@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}
}Скопійовано з блоку цитування авторів на сторінці github.com/ZhengPeng7/BiRefNet#citation.