PIDNet
Una rete di segmentazione semantica a tre rami che aggiunge un ramo dedicato ai contorni a un'architettura ispirata al controllo proporzionale-integrale-derivativo, pensata per l'inferenza in tempo reale. LibreYOLO la distribuisce solo per la segmentazione semantica.
- Task
- semantic
- Dimensioni
- s, m, l at 1024 px
- Installa
pip install libreyolo- Livello di supporto
- Solo inferenza, dalla v. Solo predizione, validazione ed esportazione. Le funzionalità di addestramento non si applicano.
- Licenze
- Codice MIT, pesi MIT. Uso commerciale
Installazione
PIDNet non richiede nessun extra opzionale. Tutto ciò che importa è già nell'installazione di base.
pip install libreyoloPredizione
I pesi vengono scaricati da Hugging Face al primo utilizzo e restano nella
cache locale. Il suffisso -sem nel nome del file è obbligatorio per questa
famiglia.
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) id delle classiprint(mask.classes) # id delle classi presenti nell'immagine, ordinatilibreyolo predict model=LibrePIDNets-sem.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=TrueLa segmentazione semantica restituisce un id di classe per pixel, non dei
bounding box, quindi result.semantic_mask porta un array (H, W) in .data
e la lista degli id di classe presenti nell'immagine in .classes. conf,
iou e max_det sono accettati per parità di API ma non hanno alcun effetto:
il modello assegna una classe a ogni pixel per argmax, senza soglia di
confidenza né passo di NMS. Vedi predizione per sorgenti,
streaming e gestione dei risultati.
Varianti
Tre dimensioni, tutte con input fisso a 1024 px. I checkpoint pubblicati sono conversioni dei pesi ufficiali di PIDNet per Cityscapes, 19 classi.
LibreYOLO non addestra PIDNet: train() solleva NotImplementedError per
questa famiglia, cosa che il livello di supporto qui sopra
segnala come solo inferenza.
Validazione
val() restituisce metrics/mIoU e metrics/pixel_accuracy, misurati su
qualsiasi dataset nel formato con cui hai addestrato.
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.yamlEsportazione
| Task | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| semantic | semantic to ONNX: supportato | semantic to TorchScript: supportato | semantic to ExecuTorch: supportato | semantic to TensorRT: supportato | semantic to OpenVINO: supportato | semantic to Paddle: non supportato | semantic to MNN: non supportato | semantic to RKNN: non supportato | semantic to ncnn: supportato | semantic to TFLite: supportato | semantic to CoreML: non supportato | semantic to Core AI: supportato |
Un artefatto esportato si ricarica con LibreYOLO() in base al suffisso del
file, quindi un file .onnx o .engine si comporta come un checkpoint e
restituisce lo stesso Results. Esportazione elenca gli
argomenti accettati da ogni formato.
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 # La factory smista in base al suffisso del file, quindi un artefatto# esportato si carica come qualsiasi checkpoint e restituisce lo stesso# oggetto Results.model = LibreYOLO("LibrePIDNets-sem.onnx")result = model(SAMPLE_IMAGE) print(result.semantic_mask.data.shape)Checkpoint
Tutti i file di pesi pubblicati per questa famiglia.
| File | Ingresso (px) | Licenza dei pesi |
|---|---|---|
| semantic | ||
| LibrePIDNets-sem.pt | 1024 | mit |
| LibrePIDNetm-sem.pt | 1024 | mit |
| LibrePIDNetl-sem.pt | 1024 | mit |
Oggi tutti i file elencati sopra sono presenti nell<link>organizzazione LibreYOLO</link> e vengono scaricati al primo utilizzo.
Licenze
Controlla la licenza nel repository Hugging Face degli specifici pesi che scarichi. Ogni checkpoint nell<link>organizzazione LibreYOLO</link> ne include una e non è sempre la stessa per tutta la famiglia. Quel repository è la fonte autorevole; il riepilogo seguente descrive le condizioni applicabili al momento dellultima verifica di questa pagina.
Questa è una descrizione delle licenze coinvolte, non una consulenza legale. Se la risposta è importante a fini commerciali, leggi personalmente le licenze e chiedi una consulenza indipendente.
- Lavoro originale
- PIDNet, Jiacong Xu
- Licenza upstream
- MIT
- Sorgente upstream
- github.com/XuJiacong/PIDNet
- Codice LibreYOLO
- MIT
- Pesi
- MIT, ripubblicati su huggingface.co/LibreYOLO
- Interpretazione
- 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.
Citazione
@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}
}Copiato dal blocco di citazione degli autori disponibile su github.com/XuJiacong/PIDNet#bibtex-citation.