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.

bash
pip install libreyolo

Vorhersage

Die Gewichte werden bei der ersten Verwendung von Hugging Face heruntergeladen und lokal zwischengespeichert.

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
Nur Boxen
from 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.

Python
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)"])   # Boxen
CLI
libreyolo val model=LibreMaskRCNNr50.pt data=my-dataset.yaml

Export

AufgabeONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
DetectionDetection to ONNX: unterstütztDetection to TorchScript: nicht unterstütztDetection to ExecuTorch: nicht unterstütztDetection to TensorRT: nicht unterstütztDetection to OpenVINO: nicht unterstütztDetection to Paddle: nicht unterstütztDetection to MNN: nicht unterstütztDetection to RKNN: nicht unterstütztDetection to ncnn: nicht unterstütztDetection to TFLite: nicht unterstütztDetection to CoreML: nicht unterstütztDetection to Core AI: nicht unterstützt
Instance segmentationInstance segmentation to ONNX: unterstütztInstance segmentation to TorchScript: nicht unterstütztInstance segmentation to ExecuTorch: nicht unterstütztInstance segmentation to TensorRT: nicht unterstütztInstance segmentation to OpenVINO: nicht unterstütztInstance segmentation to Paddle: nicht unterstütztInstance segmentation to MNN: nicht unterstütztInstance segmentation to RKNN: nicht unterstütztInstance segmentation to ncnn: nicht unterstütztInstance segmentation to TFLite: nicht unterstütztInstance segmentation to CoreML: nicht unterstütztInstance 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.

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
Exportierte Datei verwenden
from 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.

DateiEingabe (px)Lizenz der Gewichte
Detection
LibreMaskRCNNr50.pt800bsd-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
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.

Mit LibreYOLO v1.5.0 verifiziert. Supporttabellen, Checkpoints und Benchmarkwerte auf dieser Seite werden aus der veröffentlichten Bibliothek und den publizierten Gewichten generiert und nicht von Hand geschrieben.