BiRefNet
Một mạng bilateral-reference dự đoán alpha matte mềm để tách chủ thể khỏi nền. LibreYOLO cung cấp suy luận (inference) và kiểm định cho tác vụ matte của BiRefNet.
- Tác vụ
- matte
- Kích thước
- t, l at 1024 px
- Cài đặt
pip install libreyolo- Bậc hỗ trợ
- Chỉ suy luận, từ v. Chỉ dự đoán, kiểm định và xuất. Không áp dụng các tính năng huấn luyện.
- Giấy phép
- Mã nguồn MIT, trọng số MIT. Sử dụng thương mại
Cài đặt
BiRefNet không cần extra tùy chọn nào. Mọi thứ nó import đều nằm trong bản cài đặt cơ bản.
pip install libreyoloDự đoán
Trọng số được tải về từ Hugging Face ở lần chạy đầu tiên và được lưu cache cục bộ.
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 của ảnh gốc cộng thêm matte làm kênh alphargba = result.cutout()result.save("subject.png")Kết quả matte không mang theo box nào; result.matte là một mảng float32 dày
đặc dạng (H, W) với giá trị trong [0, 1], 1 là hoàn toàn foreground và 0 là
hoàn toàn background. Khác với mặt nạ (mask) nhị phân, matte mềm giữ được chi
tiết viền đã khử răng cưa như tóc và lông. result.cutout() ghép ảnh gốc với
kênh alpha đó thành một mảng RGBA, còn result.save(path) (hoặc save=True
trong lời gọi predict) ghi thẳng ra một tệp PNG nền trong suốt. Mô hình chạy
trên canvas gốc cố định 1024x1024; độ phân giải khác không được hỗ trợ, vì các
bảng vị trí tương đối của backbone Swin gắn chặt với kích thước đó, và khi
không khớp thì chúng bị nội suy sai lệch thay vì báo lỗi. Xem
dự đoán để biết về nguồn đầu vào, streaming và cách xử lý kết
quả.
Các biến thể
Một checkpoint được công bố, l, là mô hình BiRefNet-general ở tier Swin-L và
cũng là mặc định thiên về chất lượng ở upstream. Mã nguồn của family này cũng
hỗ trợ tier lite Swin-T, t, nhưng chưa có bản chuyển đổi LibreYOLO nào cho nó
được công bố.
Kiểm định
val() báo cáo hai chỉ số trên một thư mục chứa các cặp ảnh/matte, cả hai đều
nằm trong [0, 1] và không phụ thuộc độ phân giải: MAE, là mean absolute error
so với alpha ground truth (càng thấp càng tốt), và S-measure (Fan và cộng sự,
ICCV 2017), một độ tương đồng cấu trúc ghi nhận việc giữ được hình dáng và các
lỗ thủng của chủ thể, thứ mà chỉ riêng MAE theo pixel bỏ sót (càng cao càng
tốt). Quá trình kiểm định chạy chính predict của mô hình, nên nó dùng đúng
phần tiền xử lý của family.
from libreyolo import LibreYOLO model = LibreYOLO("LibreBiRefNetl-matte.pt") # Một thư mục chứa images/ và một thư mục matte được tự động phát hiện# (mattes/, matte/, gt/, masks/, mask/ hoặc alpha/) cũng dùng được thay# cho một YAML datasetmetrics = model.val(data="my-matte-dataset/") print(metrics["metrics/MAE"])print(metrics["metrics/Smeasure"])Kiểm định chỉ thực hiện inference; tinh chỉnh (fine-tuning) là hướng tiếp theo đã được ghi lại chứ chưa phải một tính năng có sẵn (xem Dự đoán để biết ràng buộc độ phân giải chính xác mà bất kỳ trainer nào trong tương lai cũng sẽ kế thừa).
Xuất mô hình
| Tác vụ | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| matte | matte to ONNX: được hỗ trợ | matte to TorchScript: được hỗ trợ | matte to ExecuTorch: không được hỗ trợ | matte to TensorRT: không được hỗ trợ | matte to OpenVINO: không được hỗ trợ | matte to Paddle: không được hỗ trợ | matte to MNN: không được hỗ trợ | matte to RKNN: không được hỗ trợ | matte to ncnn: không được hỗ trợ | matte to TFLite: không được hỗ trợ | matte to CoreML: không được hỗ trợ | matte to Core AI: không được hỗ trợ |
Một artifact đã xuất được nạp lại qua LibreYOLO() dựa trên phần mở rộng tệp,
nên một tệp .onnx hoạt động như một checkpoint và trả về cùng Results.
TorchScript là đường đi đã được kiểm chứng; chuyển đổi ONNX chạy được nhưng
chưa đạt cùng mức chuẩn về parity. Xuất mô hình liệt kê các
tham số mà mọi format đều nhận và những tham số bổ sung mà một vài format thêm
vào.
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 # Factory định tuyến theo phần mở rộng tệp, nên một artifact đã xuất# được nạp như mọi checkpoint và trả về cùng một đối tượng Resultsmodel = LibreYOLO("LibreBiRefNetl-matte.onnx")result = model(SAMPLE_IMAGE) print(result.matte.array.shape)Checkpoint
Mọi tệp trọng số đã công bố cho family này.
| Tệp | Đầu vào (px) | Giấy phép trọng số |
|---|---|---|
| matte | ||
| LibreBiRefNetl-matte.pt | mit | |
Mọi tệp ở trên hiện đều có trong tổ chức LibreYOLO và được tải xuống trong lần sử dụng đầu tiên.
Giấy phép
Hãy kiểm tra giấy phép trong repo Hugging Face của trọng số cụ thể mà bạn tải xuống. Mỗi checkpoint trong tổ chức LibreYOLO đều có giấy phép riêng và giấy phép có thể khác nhau trong cùng một họ. Repo đó là nguồn có thẩm quyền; phần tóm tắt dưới đây mô tả các điều khoản áp dụng khi trang này được kiểm chứng lần gần nhất.
Đây là phần mô tả các giấy phép liên quan, không phải tư vấn pháp lý. Nếu câu trả lời có ý nghĩa về mặt thương mại, hãy tự đọc các giấy phép và tham khảo cố vấn của riêng bạn.
- Công trình gốc
- BiRefNet, Nankai University
- Giấy phép thượng nguồn
- MIT
- Nguồn thượng nguồn
- github.com/ZhengPeng7/BiRefNet
- Mã nguồn LibreYOLO
- MIT
- Trọng số
- MIT, được phát hành lại tại huggingface.co/LibreYOLO
- Diễn giải
- 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.
Trích dẫn
@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}
}Được sao chép từ khối trích dẫn của tác giả tại github.com/ZhengPeng7/BiRefNet#citation.