DeepLabv3
Una rete di segmentazione semantica che aggrega le feature a diversi tassi di dilatazione in parallelo (atrous spatial pyramid pooling) prima di classificare ogni pixel. LibreYOLO la distribuisce solo per la segmentazione semantica.
- Task
- semantic
- Dimensioni
- 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 BSD-3-Clause, pesi BSD-3-Clause. Uso commerciale
Installazione
DeepLabv3 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("LibreDeepLabv3r50-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=LibreDeepLabv3r50-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 backbone: ResNet-50 dilatata, ResNet-101 dilatata e MobileNetV3-Large dilatata. Questo è DeepLabv3, non DeepLabv3+, quindi non c'è nessuno stadio di decoder né raffinamento con CRF, in linea con l'implementazione di torchvision e non con il codice di riferimento del paper originale.
LibreYOLO non addestra DeepLabv3: train() solleva NotImplementedError per
questa famiglia, cosa che il livello di supporto qui sopra
segnala come solo inferenza. I tre checkpoint pubblicati sono i pesi di
torchvision addestrati su COCO con le etichette di VOC, convertiti per il
loader di LibreYOLO.
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("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.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: non 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: non supportato | semantic to TFLite: non supportato | semantic to CoreML: non supportato | semantic to Core AI: non 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("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 smista in base al suffisso del file, quindi un artefatto# esportato si carica come qualsiasi checkpoint e restituisce lo stesso# oggetto Results.model = LibreYOLO("LibreDeepLabv3r50-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 | ||
| LibreDeepLabv3r50-sem.pt | bsd-3-clause | |
| LibreDeepLabv3r101-sem.pt | bsd-3-clause | |
| LibreDeepLabv3mv3-sem.pt | bsd-3-clause | |
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
- DeepLabv3, PyTorch
- Licenza upstream
- BSD-3-Clause
- Sorgente upstream
- github.com/pytorch/vision
- Codice LibreYOLO
- MIT
- Pesi
- BSD-3-Clause, ripubblicati su huggingface.co/LibreYOLO
- Interpretazione
- 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.