Mask R-CNN
Mask R-CNN ergänzt Faster R-CNN um einen Maskenzweig pro Region und sagt neben jeder erkannten Box eine Segmentierungsmaske vorher. LibreYOLO portiert die torchvision-Implementierung für Objekterkennung und Instanzsegmentierung.
- Aufgaben
- detection, instance segmentation
- Größen
- r50 at 800 px
- Installation
pip install libreyolo- Supportstufe
- Nur Inferenz, seit v. Nur Vorhersage, Validierung und Export. Trainingsfunktionen sind nicht verfügbar.
- Upstream
- Mask R-CNN von PyTorch, BSD-3-Clause. Publikation, Quelle
- Lizenzen
- Code BSD-3-Clause, Gewichte BSD-3-Clause. Kommerzielle Nutzung
Installation
Mask R-CNN benötigt kein optionales Zusatzpaket. Alle Importe sind in der Basisinstallation enthalten.
pip install libreyoloVorhersage
Die Gewichte werden bei der ersten Verwendung von Hugging Face heruntergeladen und lokal zwischengespeichert.
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" überspringt den Masken-Head und gibt Boxen aus demselben# Checkpoint zurück, ohne Masken im Ergebnis.model = LibreYOLO("LibreMaskRCNNr50.pt", task="detect")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)Das zurückgegebene Results-Objekt entspricht dem aller anderen Familien. Der
Wechsel zu einem anderen Detektor erfordert daher nur eine Änderung in einer
Zeile. Wenn du den Checkpoint ohne Argument task lädst, werden Instanzmasken
zurückgegeben, weil die Segmentierung die Standardaufgabe dieser Familie ist.
result.masks enthält sie neben den Boxen. Mit task="detect" werden dieselben
Gewichte ohne Masken-Head geladen und nur Boxen zurückgegeben. conf und iou
legen die Schwellenwerte für Confidence und NMS fest. Im Gegensatz zu einem
Query-basierten Detektor behält Mask R-CNN seinen Upstream-NMS-Schritt bei.
Unter Vorhersage findest du Quellen, Streaming und die
Verarbeitung von Ergebnissen.
Varianten
Es gibt ein Backbone: ResNet-50 mit einer Feature Pyramid, aufgebaut mit dem v2-Builder für Mask R-CNN von torchvision. Der veröffentlichte Checkpoint steht unter BSD-3-Clause und dient beiden Aufgaben dieser Familie. Es gibt daher keine Größen zur Auswahl.
Validierung
val() gibt ein Dictionary mit metrics/-Schlüsseln zurück. Bei der
standardmäßigen Segmentierungsaufgabe dieses Checkpoints enthält der einfache
Schlüssel metrics/mAP50-95 den Masken-Score. Derselbe Lauf meldet Boxen mit
dem Suffix (B), sodass beide in einem Durchlauf verfügbar sind.
from libreyolo import LibreYOLO model = LibreYOLO("LibreMaskRCNNr50.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95"]) # Maskenprint(metrics["metrics/mAP50-95(B)"]) # Boxenlibreyolo val model=LibreMaskRCNNr50.pt data=my-dataset.yamlExport
| Aufgabe | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Detection | Detection to ONNX: unterstützt | Detection to TorchScript: nicht unterstützt | Detection to ExecuTorch: nicht unterstützt | Detection to TensorRT: nicht unterstützt | Detection to OpenVINO: nicht unterstützt | Detection to Paddle: nicht unterstützt | Detection to MNN: nicht unterstützt | Detection to RKNN: nicht unterstützt | Detection to ncnn: nicht unterstützt | Detection to TFLite: nicht unterstützt | Detection to CoreML: nicht unterstützt | Detection to Core AI: nicht unterstützt |
| Instance segmentation | Instance segmentation to ONNX: unterstützt | Instance segmentation to TorchScript: nicht unterstützt | Instance segmentation to ExecuTorch: nicht unterstützt | Instance segmentation to TensorRT: nicht unterstützt | Instance segmentation to OpenVINO: nicht unterstützt | Instance segmentation to Paddle: nicht unterstützt | Instance segmentation to MNN: nicht unterstützt | Instance segmentation to RKNN: nicht unterstützt | Instance segmentation to ncnn: nicht unterstützt | Instance segmentation to TFLite: nicht unterstützt | Instance segmentation to CoreML: nicht unterstützt | Instance segmentation to Core AI: nicht unterstützt |
Mask R-CNN lässt sich nur nach ONNX und mit Batch-Größe 1 exportieren. Der
exportierte Graph enthält weiterhin die Upstream-Schritte für Größenänderung
und Einfügen der Masken. LibreYOLO erzwingt daher unabhängig vom übergebenen
Wert dynamic=True, damit der Graph für nicht quadratische Quellen gültig
bleibt. Eine exportierte .onnx-Datei wird anhand ihrer Endung wieder über
LibreYOLO() geladen und gibt dasselbe Results-Objekt zurück.
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 # Die Factory entscheidet anhand der Dateiendung, daher wird ein Exportartefakt# wie jeder Checkpoint geladen und gibt dasselbe Results-Objekt zurück.model = LibreYOLO("LibreMaskRCNNr50.onnx")result = model(SAMPLE_IMAGE) print(result.masks.data.shape)Checkpoints
Alle veröffentlichten Gewichtsdateien dieser Familie. Der folgende einzelne
Checkpoint wird unter Erkennung aufgeführt, aber dieselbe Datei kann auch für
die Segmentierung geladen werden. Übergib kein Argument task, damit sie
standardmäßig Masken zurückgibt.
| Datei | Eingabe (px) | Lizenz der Gewichte |
|---|---|---|
| Detection | ||
| LibreMaskRCNNr50.pt | 800 | bsd-3-clause |
Jede oben aufgeführte Datei ist heute in der LibreYOLO-Organisation verfügbar und wird bei der ersten Verwendung heruntergeladen.
Lizenzierung
Prüfe die Lizenz im Hugging-Face-Repository der konkreten Gewichte, die du herunterlädst. Jeder Checkpoint in der LibreYOLO-Organisation hat eine Lizenz, und sie ist innerhalb einer Familie nicht immer gleich. Dieses Repository ist die maßgebliche Quelle. Die Zusammenfassung unten beschreibt den Stand bei der letzten Verifizierung dieser Seite.
Dies ist eine Beschreibung der beteiligten Lizenzen und keine Rechtsberatung. Wenn die Antwort kommerziell relevant ist, lies die Lizenzen selbst und hole eigenen Rechtsrat ein.
- Originalarbeit
- Mask R-CNN, PyTorch
- Upstream-Lizenz
- BSD-3-Clause
- Upstream-Quelle
- github.com/pytorch/vision
- LibreYOLO-Code
- MIT
- Gewichte
- BSD-3-Clause, erneut unter huggingface.co/LibreYOLO veröffentlicht
- Einordnung
- 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 ist als Unterklasse des Faster-R-CNN-Wrappers von LibreYOLO implementiert. Es verwendet dieselbe torchvision-Quelle und BSD-3-Clause-Lizenz und ergänzt den Masken-Prädiktor und den Masken-RoI-Head aus demselben portierten Commit.