Mask R-CNN

Mask R-CNN dodaje do Faster R-CNN gałąź maski dla każdego regionu, przewidując maskę segmentacji obok każdej wykrytej ramki. LibreYOLO przenosi implementację torchvision do detekcji i segmentacji instancji.

Zadania
detection, instance segmentation
Rozmiary
r50 at 800 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
Mask R-CNN, autorzy: PyTorch, licencja: BSD-3-Clause. Publikacja, kod źródłowy
Licencje
Kod: BSD-3-Clause, wagi: BSD-3-Clause. Użycie komercyjne

Instalacja

Mask R-CNN nie wymaga żadnego opcjonalnego dodatku. Wszystkie importowane elementy znajdują się w instalacji podstawowej.

bash
pip install libreyolo

Predykcja

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

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
Tylko ramki
from libreyolo import LibreYOLO, SAMPLE_IMAGE # task="detect" pomija głowicę masek i zwraca ramki z tego samego# checkpointu, bez masek w wyniku.model = LibreYOLO("LibreMaskRCNNr50.pt", task="detect")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)

Zwracany obiekt Results jest taki sam dla każdej rodziny, więc zmiana detektora wymaga zmiany jednego wiersza. Wczytanie checkpointu bez argumentu task zwraca maski instancji, ponieważ segmentacja jest domyślnym zadaniem tej rodziny. result.masks zawiera je wtedy obok ramek. Przekazanie task="detect" wczytuje te same wagi bez głowicy masek i zwraca wyłącznie ramki. Argumenty conf i iou ustawiają progi pewności i NMS. Mask R-CNN zachowuje źródłowy etap NMS, w przeciwieństwie do detektora opartego na zapytaniach. Więcej informacji o źródłach, streamingu i obsłudze wyników zawiera strona predykcji.

Warianty

Dostępny jest jeden backbone, ResNet-50 z piramidą cech, korzystający z buildera Mask R-CNN v2 w torchvision. Opublikowany checkpoint podlega licencji BSD-3-Clause i obsługuje oba zadania tej rodziny, dlatego nie ma rozmiaru do wyboru.

Walidacja

val() zwraca słownik kluczy metrics/. Dla domyślnego zadania segmentacji tego checkpointu zwykły klucz metrics/mAP50-95 zawiera wynik maski, a ten sam przebieg zwraca wynik ramek pod sufiksem (B), dzięki czemu oba są dostępne jednocześnie.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreMaskRCNNr50.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95"])      # maskiprint(metrics["metrics/mAP50-95(B)"])   # ramki
CLI
libreyolo val model=LibreMaskRCNNr50.pt data=my-dataset.yaml

Eksport

ZadanieONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
DetectionDetection to ONNX: obsługiwaneDetection to TorchScript: brak obsługiDetection to ExecuTorch: brak obsługiDetection to TensorRT: brak obsługiDetection to OpenVINO: brak obsługiDetection to Paddle: brak obsługiDetection to MNN: brak obsługiDetection to RKNN: brak obsługiDetection to ncnn: brak obsługiDetection to TFLite: brak obsługiDetection to CoreML: brak obsługiDetection to Core AI: brak obsługi
Instance segmentationInstance segmentation to ONNX: obsługiwaneInstance segmentation to TorchScript: brak obsługiInstance segmentation to ExecuTorch: brak obsługiInstance segmentation to TensorRT: brak obsługiInstance segmentation to OpenVINO: brak obsługiInstance segmentation to Paddle: brak obsługiInstance segmentation to MNN: brak obsługiInstance segmentation to RKNN: brak obsługiInstance segmentation to ncnn: brak obsługiInstance segmentation to TFLite: brak obsługiInstance segmentation to CoreML: brak obsługiInstance segmentation to Core AI: brak obsługi

Mask R-CNN eksportuje wyłącznie do ONNX z rozmiarem batcha 1. Wyeksportowany graf zachowuje wewnątrz źródłowe etapy zmiany rozmiaru i wklejania maski, dlatego LibreYOLO wymusza dynamic=True niezależnie od przekazanej wartości, aby graf działał dla źródeł niebędących kwadratami. Wyeksportowany plik .onnx jest ponownie ładowany przez LibreYOLO() na podstawie rozszerzenia i zwraca ten sam obiekt 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
Użycie wyeksportowanego pliku
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Fabryka wybiera ścieżkę na podstawie rozszerzenia pliku, więc wyeksportowany artefakt# ładuje się jak każdy checkpoint i zwraca ten sam obiekt Results.model = LibreYOLO("LibreMaskRCNNr50.onnx")result = model(SAMPLE_IMAGE) print(result.masks.data.shape)

Checkpointy

Wszystkie opublikowane pliki wag dla tej rodziny. Poniższy pojedynczy checkpoint jest wymieniony pod detekcją, ale ten sam plik wczytuje się także do segmentacji. Bez argumentu task domyślnie zwraca maski.

PlikWejście (px)Licencja wag
Detection
LibreMaskRCNNr50.pt800bsd-3-clause

Każdy z powyższych plików jest obecnie dostępny w organizacji LibreYOLO i pobierany przy pierwszym użyciu.

Licencja

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
Mask R-CNN, PyTorch
Licencja projektu źródłowego
BSD-3-Clause
Kod źródłowy projektu
github.com/pytorch/vision
Kod LibreYOLO
MIT
Wagi
BSD-3-Clause, ponownie opublikowane w huggingface.co/LibreYOLO
Interpretacja
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 jest zbudowany jako podklasa wrappera Faster R-CNN w LibreYOLO. Współdzieli to samo źródło torchvision i licencję BSD-3-Clause oraz dodaje predyktor masek i głowicę RoI masek z tego samego przeniesionego commita.

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.