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.
pip install libreyoloPredykcja
Przy pierwszym użyciu wagi są pobierane z Hugging Face i zapisywane w lokalnej pamięci podręcznej.
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)libreyolo predict model=LibreMaskRCNNr50.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=Truefrom 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.
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)"]) # ramkilibreyolo val model=LibreMaskRCNNr50.pt data=my-dataset.yamlEksport
| Zadanie | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Detection | Detection to ONNX: obsługiwane | Detection to TorchScript: brak obsługi | Detection to ExecuTorch: brak obsługi | Detection to TensorRT: brak obsługi | Detection to OpenVINO: brak obsługi | Detection to Paddle: brak obsługi | Detection to MNN: brak obsługi | Detection to RKNN: brak obsługi | Detection to ncnn: brak obsługi | Detection to TFLite: brak obsługi | Detection to CoreML: brak obsługi | Detection to Core AI: brak obsługi |
| Instance segmentation | Instance segmentation to ONNX: obsługiwane | Instance segmentation to TorchScript: brak obsługi | Instance segmentation to ExecuTorch: brak obsługi | Instance segmentation to TensorRT: brak obsługi | Instance segmentation to OpenVINO: brak obsługi | Instance segmentation to Paddle: brak obsługi | Instance segmentation to MNN: brak obsługi | Instance segmentation to RKNN: brak obsługi | Instance segmentation to ncnn: brak obsługi | Instance segmentation to TFLite: brak obsługi | Instance segmentation to CoreML: brak obsługi | Instance 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.
from libreyolo import LibreYOLO model = LibreYOLO("LibreMaskRCNNr50.pt")model.export(format="onnx", imgsz=800)libreyolo export model=LibreMaskRCNNr50.pt format=onnx imgsz=800from 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.
| Plik | Wejście (px) | Licencja wag |
|---|---|---|
| Detection | ||
| LibreMaskRCNNr50.pt | 800 | bsd-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.