PIDNet
Un réseau de segmentation sémantique à trois branches qui ajoute une branche dédiée aux contours à une conception inspirée d'un correcteur proportionnel-intégral-dérivé, avec l'inférence en temps réel comme objectif. LibreYOLO le fournit uniquement pour la segmentation sémantique.
- Tâches
- semantic
- Tailles
- s, m, l at 1024 px
- Installer
pip install libreyolo- Niveau de support
- Inférence uniquement, depuis v. Prédiction, validation et export uniquement. Les fonctionnalités d'entraînement ne s'appliquent pas.
- Licences
- Code MIT, poids MIT. Usage commercial
Installer
PIDNet ne nécessite aucun extra facultatif. Tous ses imports figurent dans l'installation de base.
pip install libreyoloPrédire
Les poids sont téléchargés depuis Hugging Face à la première utilisation et mis
en cache localement. Le suffixe de nom de fichier -sem est obligatoire pour
cette famille.
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibrePIDNets-sem.pt")result = model(SAMPLE_IMAGE, save=True) mask = result.semantic_maskprint(mask.data.shape) # identifiants de classe (H, W)print(mask.classes) # identifiants triés présents dans l'imagelibreyolo predict model=LibrePIDNets-sem.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=TrueLa segmentation sémantique renvoie un identifiant de classe par pixel, et non
des boîtes. result.semantic_mask contient donc un tableau (H, W) dans
.data et la liste des identifiants de classe présents dans l'image dans
.classes. conf, iou et max_det sont acceptés pour la parité de l'API,
mais n'ont aucun effet : le modèle affecte une classe à chaque pixel par argmax,
sans seuil de confiance ni étape NMS. Consultez la
prédiction pour les sources, le streaming et le traitement des
résultats.
Variantes
Trois tailles sont proposées, toutes avec une entrée fixe de 1024 px. Les checkpoints publiés sont des conversions des poids PIDNet Cityscapes officiels, avec 19 classes.
LibreYOLO n'entraîne pas PIDNet : train() lève NotImplementedError pour cette
famille, que le niveau de prise en charge ci-dessus indique comme
réservée à l'inférence.
Valider
val() renvoie metrics/mIoU et metrics/pixel_accuracy, mesurés sur tout
dataset dans le format utilisé pour l'entraînement.
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.yamlExporter
| Tâche | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| semantic | semantic to ONNX : pris en charge | semantic to TorchScript : pris en charge | semantic to ExecuTorch : pris en charge | semantic to TensorRT : pris en charge | semantic to OpenVINO : pris en charge | semantic to Paddle : non pris en charge | semantic to MNN : non pris en charge | semantic to RKNN : non pris en charge | semantic to ncnn : pris en charge | semantic to TFLite : pris en charge | semantic to CoreML : non pris en charge | semantic to Core AI : pris en charge |
Un artefact exporté se recharge par LibreYOLO() à partir de son suffixe de
fichier. Un fichier .onnx ou .engine se comporte donc comme un checkpoint et
renvoie le même objet Results. La page Export répertorie les
arguments acceptés par chaque format.
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 utilise le suffixe du fichier : un artefact exporté se charge# comme tout checkpoint et renvoie le même objet Results.model = LibreYOLO("LibrePIDNets-sem.onnx")result = model(SAMPLE_IMAGE) print(result.semantic_mask.data.shape)Checkpoints
Tous les fichiers de poids publiés pour cette famille.
| Fichier | Entrée (px) | Licence des poids |
|---|---|---|
| semantic | ||
| LibrePIDNets-sem.pt | 1024 | mit |
| LibrePIDNetm-sem.pt | 1024 | mit |
| LibrePIDNetl-sem.pt | 1024 | mit |
Tous les fichiers ci-dessus sont actuellement disponibles dans l<link>organisation LibreYOLO</link> et sont téléchargés à la première utilisation.
Licence
Vérifiez la licence dans le dépôt Hugging Face des poids précis que vous téléchargez. Chaque checkpoint de l<link>organisation LibreYOLO</link> en possède une, et elles ne sont pas toujours identiques au sein dune même famille. Ce dépôt fait autorité ; le résumé ci-dessous décrit les conditions applicables lors de la dernière vérification de cette page.
Ceci décrit les licences concernées et ne constitue pas un conseil juridique. Si la réponse a une importance commerciale, lisez vous-même les licences et consultez votre propre avocat.
- Travail d'origine
- PIDNet, Jiacong Xu
- Licence du projet d'origine
- MIT
- Source du projet d'origine
- github.com/XuJiacong/PIDNet
- Code de LibreYOLO
- MIT
- Poids
- MIT, republiés sur huggingface.co/LibreYOLO
- Interprétation
- 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.
Citation
@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}
}Copié depuis le bloc de citation des auteurs sur github.com/XuJiacong/PIDNet#bibtex-citation.