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.
pip install libreyoloVorhersage
Die Gewichte werden bei der ersten Verwendung von Hugging Face heruntergeladen
und lokal zwischengespeichert. Das Dateinamenssuffix -sem ist für diese
Familie erforderlich.
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 Bildlibreyolo predict model=LibrePIDNets-sem.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=TrueDie 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.
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"])libreyolo val model=LibrePIDNets-sem.pt data=my-dataset.yamlExport
| Aufgabe | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| semantic | semantic to ONNX: unterstützt | semantic to TorchScript: unterstützt | semantic to ExecuTorch: unterstützt | semantic to TensorRT: unterstützt | semantic to OpenVINO: unterstützt | semantic to Paddle: nicht unterstützt | semantic to MNN: nicht unterstützt | semantic to RKNN: nicht unterstützt | semantic to ncnn: unterstützt | semantic to TFLite: unterstützt | semantic to CoreML: nicht unterstützt | semantic 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.
from libreyolo import LibreYOLO model = LibreYOLO("LibrePIDNets-sem.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)libreyolo export model=LibrePIDNets-sem.pt format=onnxlibreyolo export model=LibrePIDNets-sem.pt format=tensorrt half=Truefrom 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.
| Datei | Eingabe (px) | Lizenz der Gewichte |
|---|---|---|
| semantic | ||
| LibrePIDNets-sem.pt | 1024 | mit |
| LibrePIDNetm-sem.pt | 1024 | mit |
| LibrePIDNetl-sem.pt | 1024 | mit |
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
- Upstream-Quelle
- github.com/XuJiacong/PIDNet
- 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.