PIDNet

Ein dreizweigiges Netzwerk für semantische Segmentierung, das einem von Proportional-, Integral- und Differentialanteilen inspirierten Design einen eigenen Grenzzweig hinzufügt und auf Echtzeitinferenz zielt. LibreYOLO bietet es ausschließlich für semantische Segmentierung an.

Aufgaben
semantic
Größen
s, m, l at 1024 px
Installation
pip install libreyolo
Supportstufe
Nur Inferenz, seit v. Nur Vorhersage, Validierung und Export. Trainingsfunktionen sind nicht verfügbar.
Upstream
PIDNet von Jiacong Xu, MIT. Publikation, Quelle
Lizenzen
Code MIT, Gewichte MIT. Kommerzielle Nutzung

Installation

PIDNet 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. Das Dateinamenssuffix -sem ist für diese Familie erforderlich.

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibrePIDNets-sem.pt")result = model(SAMPLE_IMAGE, save=True) mask = result.semantic_maskprint(mask.data.shape)   # (H, W) Klassen-IDsprint(mask.classes)      # sortierte Klassen-IDs im Bild
CLI
libreyolo predict model=LibrePIDNets-sem.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True

Die semantische Segmentierung gibt eine Klassen-ID pro Pixel und keine Boxen zurück. result.semantic_mask enthält daher ein Array der Form (H, W) in .data und die Liste der im Bild vorkommenden Klassen-IDs in .classes. conf, iou und max_det werden aus Gründen der API-Parität akzeptiert, haben aber keine Wirkung: Das Modell weist jedem Pixel per Argmax eine Klasse zu, ohne Confidence-Schwellenwert oder NMS-Schritt. Unter Vorhersage findest du Quellen, Streaming und die Verarbeitung von Ergebnissen.

Varianten

Es gibt drei Größen, alle mit einer festen Eingabe von 1024 px. Die veröffentlichten Checkpoints sind Konvertierungen der offiziellen, auf Cityscapes mit 19 Klassen trainierten PIDNet-Gewichte.

LibreYOLO trainiert PIDNet nicht: train() löst für diese Familie den Fehler NotImplementedError aus. Der oben verlinkte Support-Tier kennzeichnet sie daher als reine Inferenzfamilie.

Validierung

val() gibt metrics/mIoU und metrics/pixel_accuracy zurück. Diese werden auf einem beliebigen Datensatz in dem Format gemessen, das du für das Training verwendet hast.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibrePIDNets-sem.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mIoU"])print(metrics["metrics/pixel_accuracy"])
CLI
libreyolo val model=LibrePIDNets-sem.pt data=my-dataset.yaml

Export

AufgabeONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
semanticsemantic to ONNX: unterstütztsemantic to TorchScript: unterstütztsemantic to ExecuTorch: unterstütztsemantic to TensorRT: unterstütztsemantic to OpenVINO: unterstütztsemantic to Paddle: nicht unterstütztsemantic to MNN: nicht unterstütztsemantic to RKNN: nicht unterstütztsemantic to ncnn: unterstütztsemantic to TFLite: unterstütztsemantic to CoreML: nicht unterstütztsemantic to Core AI: unterstützt

Ein exportiertes Artefakt wird anhand seiner Dateiendung wieder über LibreYOLO() geladen. Eine .onnx- oder .engine-Datei verhält sich daher wie ein Checkpoint und gibt dasselbe Results-Objekt zurück. Export führt die Argumente auf, die von den einzelnen Formaten akzeptiert werden.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibrePIDNets-sem.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)
CLI
libreyolo export model=LibrePIDNets-sem.pt format=onnxlibreyolo export model=LibrePIDNets-sem.pt format=tensorrt half=True
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("LibrePIDNets-sem.onnx")result = model(SAMPLE_IMAGE) print(result.semantic_mask.data.shape)

Checkpoints

Alle veröffentlichten Gewichtsdateien dieser Familie.

DateiEingabe (px)Lizenz der Gewichte
semantic
LibrePIDNets-sem.pt1024mit
LibrePIDNetm-sem.pt1024mit
LibrePIDNetl-sem.pt1024mit

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
PIDNet, Jiacong Xu
Upstream-Lizenz
MIT
LibreYOLO-Code
MIT
Gewichte
MIT, erneut unter huggingface.co/LibreYOLO veröffentlicht
Einordnung
MIT is a permissive license, so this code and these weights can be used in commercial and closed-source products. It asks only that you keep the copyright and license notice with any copy you redistribute. LibreYOLO's checkpoints are conversions of the official PIDNet Cityscapes weights, which upstream licenses as MIT. The Cityscapes dataset itself carries separate research-oriented terms and is not redistributed by LibreYOLO.

Zitieren

@misc{xu2022pidnet,
      title={PIDNet: A Real-time Semantic Segmentation Network Inspired from PID Controller}, 
      author={Jiacong Xu and Zixiang Xiong and Shankar P. Bhattacharyya},
      year={2022},
      eprint={2206.02066},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

Aus dem Zitierblock der Autoren unter github.com/XuJiacong/PIDNet#bibtex-citation kopiert.

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.