Mask R-CNN

Mask R-CNN thêm nhánh mặt nạ theo vùng vào Faster R-CNN, dự đoán mặt nạ phân đoạn cùng với mỗi box được phát hiện. LibreYOLO port cách triển khai torchvision cho phát hiện và phân đoạn thực thể.

Tác vụ
detection, instance segmentation
Kích thước
r50 at 800 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.
Thượng nguồn
Mask R-CNN của PyTorch, BSD-3-Clause. Bài báo, mã nguồn
Giấy phép
Mã nguồn BSD-3-Clause, trọng số BSD-3-Clause. Sử dụng thương mại

Cài đặt

Mask R-CNN không cần extra tùy chọn. Mọi thành phần mà mô hình import đều có trong bản cài đặt cơ sở.

bash
pip install libreyolo

Dự đoán

Trọng số được tải về từ Hugging Face trong lần sử dụng đầu tiên và được lưu vào bộ nhớ đệm cục bộ.

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreMaskRCNNr50.pt")result = model(SAMPLE_IMAGE, save=True) print(result.masks.data.shape)for box in result.boxes:    print(box.cls, box.conf, box.xyxy)
CLI
libreyolo predict model=LibreMaskRCNNr50.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True
Chỉ box
from libreyolo import LibreYOLO, SAMPLE_IMAGE # task="detect" bỏ qua mask head và trả về box từ cùng checkpoint,# không có mặt nạ trong kết quả.model = LibreYOLO("LibreMaskRCNNr50.pt", task="detect")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)

Đối tượng Results trả về cũng là đối tượng mà mọi họ mô hình đều trả về, vì vậy việc chuyển sang detector khác chỉ cần thay đổi một dòng. Tải checkpoint mà không có đối số task sẽ trả về mặt nạ thực thể vì phân đoạn là tác vụ mặc định của họ này; khi đó result.masks chứa mặt nạ cùng các box. Truyền task="detect" tải cùng trọng số mà không có mask head và chỉ trả về box. confiou thiết lập ngưỡng độ tin cậy và NMS; Mask R-CNN giữ bước NMS upstream, khác với detector dựa trên query. Xem dự đoán để biết về nguồn, xử lý luồng và kết quả.

Biến thể

Có một backbone: ResNet-50 với feature pyramid, dùng builder Mask R-CNN v2 của torchvision. Checkpoint đã phát hành dùng giấy phép BSD-3-Clause và phục vụ cả hai tác vụ trong họ này, vì vậy không có kích thước để lựa chọn.

Xác thực

val() trả về dictionary gồm các key metrics/. Với tác vụ phân đoạn mặc định của checkpoint này, key thuần túy metrics/mAP50-95 chứa điểm mặt nạ, còn cùng lượt chạy báo cáo box dưới hậu tố (B), vì vậy cả hai có sẵn từ một lượt.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreMaskRCNNr50.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95"])      # mặt nạprint(metrics["metrics/mAP50-95(B)"])   # box
CLI
libreyolo val model=LibreMaskRCNNr50.pt data=my-dataset.yaml

Xuất

Tác vụONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
DetectionDetection to ONNX: được hỗ trợDetection to TorchScript: không được hỗ trợDetection to ExecuTorch: không được hỗ trợDetection to TensorRT: không được hỗ trợDetection to OpenVINO: không được hỗ trợDetection to Paddle: không được hỗ trợDetection to MNN: không được hỗ trợDetection to RKNN: không được hỗ trợDetection to ncnn: không được hỗ trợDetection to TFLite: không được hỗ trợDetection to CoreML: không được hỗ trợDetection to Core AI: không được hỗ trợ
Instance segmentationInstance segmentation to ONNX: được hỗ trợInstance segmentation to TorchScript: không được hỗ trợInstance segmentation to ExecuTorch: không được hỗ trợInstance segmentation to TensorRT: không được hỗ trợInstance segmentation to OpenVINO: không được hỗ trợInstance segmentation to Paddle: không được hỗ trợInstance segmentation to MNN: không được hỗ trợInstance segmentation to RKNN: không được hỗ trợInstance segmentation to ncnn: không được hỗ trợInstance segmentation to TFLite: không được hỗ trợInstance segmentation to CoreML: không được hỗ trợInstance segmentation to Core AI: không được hỗ trợ

Mask R-CNN chỉ xuất sang ONNX với kích thước batch 1. Graph đã xuất giữ bước đổi kích thước và dán mặt nạ upstream bên trong, vì vậy LibreYOLO buộc dynamic=True bất kể giá trị được truyền để graph vẫn hợp lệ với nguồn không vuông. Tệp .onnx đã xuất được tải lại qua LibreYOLO() dựa trên hậu tố tệp và trả về cùng đối tượng Results.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreMaskRCNNr50.pt")model.export(format="onnx", imgsz=800)
CLI
libreyolo export model=LibreMaskRCNNr50.pt format=onnx imgsz=800
Dùng tệp đã xuất
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Factory định tuyến dựa trên hậu tố tệp, vì vậy artifact đã xuất tải# như mọi checkpoint và trả về cùng đối tượng Results.model = LibreYOLO("LibreMaskRCNNr50.onnx")result = model(SAMPLE_IMAGE) print(result.masks.data.shape)

Checkpoint

Mọi tệp trọng số đã phát hành cho họ mô hình này. Checkpoint duy nhất bên dưới được liệt kê trong tác vụ phát hiện, nhưng cùng tệp cũng tải cho phân đoạn: không truyền đối số task và theo mặc định mô hình trả về mặt nạ.

TệpĐầu vào (px)Giấy phép trọng số
Detection
LibreMaskRCNNr50.pt800bsd-3-clause

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
Mask R-CNN, PyTorch
Giấy phép thượng nguồn
BSD-3-Clause
Nguồn thượng nguồn
github.com/pytorch/vision
Mã nguồn LibreYOLO
MIT
Trọng số
BSD-3-Clause, được phát hành lại tại huggingface.co/LibreYOLO
Diễn giải
BSD-3-Clause is a permissive license, so this code can be used in commercial and closed-source products with no obligation on your own application code. It asks only that you keep the copyright notice and disclaimer with any copy you redistribute, and it carries no patent grant. The published checkpoint used for parity testing is not distributed in the LibreYOLO source tree: torchvision's own documentation notes that a pretrained model's terms may depend on its training data, so the Hugging Face mirror ships the BSD text on that implied basis and repeats the caveat rather than issuing an explicit checkpoint-specific grant.

Mask R-CNN được xây dựng dưới dạng lớp con của wrapper Faster R-CNN trong LibreYOLO: mô hình dùng chung nguồn torchvision và giấy phép BSD-3-Clause, đồng thời thêm mask predictor và mask RoI head từ cùng commit được port.

Đã kiểm chứng với LibreYOLO v1.5.0. Các bảng hỗ trợ, checkpoint và số liệu benchmark trên trang này được tạo từ thư viện đã phát hành và trọng số đã công bố, không phải viết thủ công.