DeepLabv3
Un réseau de segmentation sémantique qui agrège les caractéristiques à plusieurs taux de dilatation en parallèle (atrous spatial pyramid pooling) avant de classer chaque pixel. LibreYOLO le fournit uniquement pour la segmentation sémantique.
- Tâches
- semantic
- Tailles
- 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 BSD-3-Clause, poids BSD-3-Clause. Usage commercial
Installation
DeepLabv3 ne demande aucun extra optionnel. Tout ce qu'il importe fait partie de l'installation de base.
pip install libreyoloPrédire
Les poids sont téléchargés depuis Hugging Face au premier usage, puis mis en
cache localement. Le suffixe -sem dans le nom de fichier est obligatoire pour
cette famille.
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreDeepLabv3r50-sem.pt")result = model(SAMPLE_IMAGE, save=True) mask = result.semantic_maskprint(mask.data.shape) # (H, W) ids de classeprint(mask.classes) # ids de classe présents dans l'image, triéslibreyolo predict model=LibreDeepLabv3r50-sem.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=TrueLa segmentation sémantique renvoie un id de classe par pixel, pas des bounding
boxes, si bien que result.semantic_mask porte un tableau (H, W) sur .data
et la liste des ids de classe présents dans l'image sur .classes. conf,
iou et max_det sont acceptés par parité d'API mais n'ont aucun effet : le
modèle attribue une classe à chaque pixel par argmax, sans seuil de confiance ni
étape de NMS. Voir la prédiction pour les sources, le streaming
et le traitement des résultats.
Variantes
Trois backbones : ResNet-50 dilaté, ResNet-101 dilaté et MobileNetV3-Large dilaté. Il s'agit de DeepLabv3, pas de DeepLabv3+, donc il n'y a ni étape de decoder ni raffinement par CRF, ce qui suit l'implémentation de torchvision plutôt que le code de référence du papier lui-même.
LibreYOLO n'entraîne pas DeepLabv3 : train() lève NotImplementedError pour
cette famille, ce que le niveau de support ci-dessus signale
comme inférence seule. Les trois checkpoints publiés sont les poids torchvision
entraînés sur COCO avec les étiquettes de VOC, convertis pour le chargeur de
LibreYOLO.
Valider
val() renvoie metrics/mIoU et metrics/pixel_accuracy, mesurés sur
n'importe quel dataset au format sur lequel vous avez entraîné.
from libreyolo import LibreYOLO model = LibreYOLO("LibreDeepLabv3r50-sem.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mIoU"])print(metrics["metrics/pixel_accuracy"])libreyolo val model=LibreDeepLabv3r50-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 : non 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 : non pris en charge | semantic to TFLite : non pris en charge | semantic to CoreML : non pris en charge | semantic to Core AI : non pris en charge |
Un artefact exporté se recharge via LibreYOLO() selon son extension de
fichier, si bien qu'un fichier .onnx ou .engine se comporte comme un
checkpoint et renvoie le même Results. L'export liste les
arguments que chaque format accepte.
from libreyolo import LibreYOLO model = LibreYOLO("LibreDeepLabv3r50-sem.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)libreyolo export model=LibreDeepLabv3r50-sem.pt format=onnxlibreyolo export model=LibreDeepLabv3r50-sem.pt format=tensorrt half=Truefrom libreyolo import LibreYOLO, SAMPLE_IMAGE # La factory s'appuie sur l'extension du fichier, donc un artefact# exporté se charge comme un checkpoint et renvoie le même Results.model = LibreYOLO("LibreDeepLabv3r50-sem.onnx")result = model(SAMPLE_IMAGE) print(result.semantic_mask.data.shape)Checkpoints
Tous les fichiers de poids publiés de cette famille.
| Fichier | Entrée (px) | Licence des poids |
|---|---|---|
| semantic | ||
| LibreDeepLabv3r50-sem.pt | bsd-3-clause | |
| LibreDeepLabv3r101-sem.pt | bsd-3-clause | |
| LibreDeepLabv3mv3-sem.pt | bsd-3-clause | |
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
- DeepLabv3, PyTorch
- Licence du projet d'origine
- BSD-3-Clause
- Source du projet d'origine
- github.com/pytorch/vision
- Code de LibreYOLO
- MIT
- Poids
- BSD-3-Clause, republiés sur huggingface.co/LibreYOLO
- Interprétation
- BSD-3-Clause is a permissive license, so this code and these weights can be used in commercial and closed-source products. It asks you to keep the copyright notice, license text and a non-endorsement clause with any copy you redistribute. LibreYOLO's inference graph is torchvision's ASPP head over its ResNet-50, ResNet-101 and MobileNetV3-Large backbones; it is DeepLabv3, not DeepLabv3+, so there is no decoder or CRF, and the paper's training-only auxiliary FCN classifier is excluded. The three published checkpoints are torchvision's official COCO-with-VOC-label weights; their separate LibreYOLO Hugging Face mirrors carry BSD-3-Clause on an implied basis disclosed by torchvision rather than an explicit checkpoint-specific grant, and torchvision's own documentation notes that pretrained-model terms can depend on the training data, leaving that determination to the user.