Link to this sectionSegmentazione semantica#
La segmentazione semantica assegna un'etichetta di classe a ogni pixel di un'immagine, producendo una mappa di classe densa che copre l'intera scena. A differenza della segmentazione di istanze, che separa i singoli oggetti, la segmentazione semantica raggruppa tutti i pixel della stessa classe indipendentemente da quanti oggetti distinti siano presenti.
L'output di un modello di segmentazione semantica è una singola mappa di classe altezza-per-larghezza dove ogni valore di pixel corrisponde a un ID di classe predetto. Questo rende la segmentazione semantica ideale per compiti di analisi della scena come la guida autonoma, l'imaging medico e la mappatura della copertura del suolo.
Usa task=semantic o il task CLI yolo semantic per la segmentazione semantica. I file dei modelli di segmentazione semantica YOLO26 usano il suffisso -sem, come yolo26n-sem.pt.
Link to this sectionModelli#
I modelli di segmentazione semantica YOLO26 preaddestrati sul dataset Cityscapes sono mostrati di seguito.
I modelli vengono scaricati automaticamente dall'ultima release di Ultralytics al primo utilizzo.
| Modello | dimensione (pixel) | mIoUval | Velocità RTX3090 PyTorch (ms) | parametri (M) | FLOPs (B) |
|---|---|---|---|---|---|
| YOLO26n-sem | 1024 × 2048 | 78.3 | 4.4 ± 0.0 | 1.6 | 22.7 |
| YOLO26s-sem | 1024 × 2048 | 80.8 | 8.4 ± 0.0 | 6.5 | 88.8 |
| YOLO26m-sem | 1024 × 2048 | 82.0 | 19.9 ± 0.1 | 14.3 | 304.5 |
| YOLO26l-sem | 1024 × 2048 | 82.9 | 26.5 ± 0.1 | 17.9 | 384.7 |
| YOLO26x-sem | 1024 × 2048 | 83.6 | 48.9 ± 0.2 | 40.2 | 861.7 |
- I valori mIoUval si riferiscono a modello singolo e scala singola sul set di validazione Cityscapes.
Riproduci conyolo semantic val data=cityscapes.yaml device=0 imgsz=2048 - Le metriche di Velocità sono calcolate come media sulle immagini di validazione di Cityscapes usando un'istanza RTX3090.
Riproduci conyolo semantic val data=cityscapes.yaml batch=1 device=0|cpu imgsz=2048 - I valori di Parametri e FLOPs si riferiscono al modello fuso dopo
model.fuse(), che unisce i livelli Conv e BatchNorm. I checkpoint preaddestrati mantengono l'intera architettura di addestramento e potrebbero mostrare conteggi più elevati.
Link to this sectionAddestramento#
Addestra YOLO26n-sem sul dataset Cityscapes8 per 100 epoche con dimensione immagine 1024. Per un elenco completo degli argomenti disponibili, consulta la pagina Configurazione.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-sem.yaml") # build a new model from YAML
model = YOLO("yolo26n-sem.pt") # load a pretrained model (recommended for training)
model = YOLO("yolo26n-sem.yaml").load("yolo26n-sem.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="cityscapes8.yaml", epochs=100, imgsz=1024)Vedi i dettagli completi della modalità train nella pagina Addestramento.
Link to this sectionFormato dataset#
I dataset di segmentazione semantica usano immagini maschera a singolo canale, tipicamente PNG, dove ogni valore di pixel rappresenta un ID di classe. I pixel con valore 255 sono trattati come "ignora" ed esclusi dal calcolo della perdita. Il YAML del dataset dovrebbe specificare i percorsi delle immagini e le relative directory delle maschere. Vedi la Guida ai Dataset di Segmentazione Semantica per i dettagli sul formato. I dataset supportati includono Cityscapes e ADE20K.
Link to this sectionValidazione#
Valida l' accuratezza del modello YOLO26n-sem addestrato su un dataset di segmentazione semantica. Passa data esplicitamente affinché la validazione utilizzi il YAML del dataset previsto.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-sem.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Validate the model
metrics = model.val(data="cityscapes.yaml")
metrics.miou # mean Intersection over Union
metrics.pixel_accuracy # overall pixel accuracyLink to this sectionPredizione#
Usa un modello YOLO26n-sem addestrato per eseguire previsioni sulle immagini.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-sem.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Predict with the model
results = model("https://ultralytics.com/images/bus.jpg") # predict on an image
# Access the results
for result in results:
semantic_mask = result.semantic_mask.data # class map, shape (H,W), integer dtype selected by class countVedi tutti i dettagli della modalità predict nella pagina Predict.
Link to this sectionOutput dei risultati#
La segmentazione semantica YOLO restituisce un oggetto Results per immagine. Ogni risultato memorizza una mappa di classe densa per l'intera immagine invece di un elenco di maschere di oggetti. I pixel con la stessa classe predetta condividono lo stesso ID di classe, anche quando appartengono a oggetti separati.
| Attributo | Tipo | Forma | Descrizione |
|---|---|---|---|
result.semantic_mask | SemanticMask | (H,W) | Mappa di classe densa. |
result.semantic_mask.data | torch.uint8torch.int16torch.int32 | (H,W) | ID di classe; dtype selezionato in base al conteggio delle classi. |
result.masks | - | - | Nessuna maschera di istanza. |
result.boxes | - | - | Nessun box/confidenza di istanza. |
result.masks.xy | - | - | Nessun poligono predefinito. |
Per i campi Results specifici dell'attività per ogni operazione, consulta la sezione Previsioni Risultati per Attività.
Link to this sectionSegmentazione di Istanze vs Segmentazione Semantica#
| Aspetto | Segmentazione di Istanze (task="segment") | Segmentazione Semantica (task="semantic") |
|---|---|---|
| Obiettivo della previsione | Segmenta ogni oggetto rilevato separatamente | Assegna un ID di classe a ogni pixel |
| Campo di output | result.masks | result.semantic_mask |
| Dati principali | result.masks.data | result.semantic_mask.data |
| Forma | (N,H,W) | (H,W) |
| Valori dei pixel | Valori maschera binaria: 0 o 1 | ID di classe: 0, 1, 2, ... |
| Dtype | torch.uint8 | torch.uint8torch.int16torch.int32 |
| Oggetti della stessa classe | Mantenuti come istanze separate | Uniti nella stessa regione di classe |
| Poligoni | Sì, tramite result.masks.xy e result.masks.xyn | Nessun output poligono per impostazione predefinita |
| Box e confidenza | Sì, tramite result.boxes | Nessun box o punteggio di confidenza per istanza |
| Uso tipico | Conteggio, tracciamento, ritaglio, misurazione a livello di oggetto | Etichettatura densa della scena, area transitabile, copertura del suolo, regioni mediche |
Link to this sectionEsportazione#
Esporta un modello YOLO26n-sem in un formato diverso come ONNX, CoreML, ecc.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-sem.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Export the model
model.export(format="onnx")I formati di esportazione disponibili per la segmentazione semantica YOLO26 sono nella tabella sottostante. Puoi esportare in qualsiasi formato usando l'argomento format, ad esempio format='onnx' o format='engine'. Puoi prevedere o validare direttamente sui modelli esportati, ad esempio yolo predict model=yolo26n-sem.onnx. Gli esempi di utilizzo sono mostrati per il tuo modello dopo il completamento dell'esportazione.
| Formato | Argomento format | Modello | Metadati | Argomenti |
|---|---|---|---|---|
| PyTorch | - | yolo26n-sem.pt | ✅ | - |
| TorchScript | torchscript | yolo26n-sem.torchscript | ✅ | imgsz, half, dynamic, optimize, nms, batch, device |
| ONNX | onnx | yolo26n-sem.onnx | ✅ | imgsz, half, int8, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n-sem_openvino_model/ | ✅ | imgsz, half, dynamic, int8, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n-sem.engine | ✅ | imgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n-sem.mlpackage | ✅ | imgsz, dynamic, half, int8, nms, batch, device |
| TF SavedModel | saved_model | yolo26n-sem_saved_model/ | ✅ | imgsz, keras, int8, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n-sem.pb | ❌ | imgsz, batch, device |
| TF Lite | tflite | yolo26n-sem.tflite | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| TF Edge TPU | edgetpu | yolo26n-sem_edgetpu.tflite | ✅ | imgsz, int8, data, fraction, device |
| TF.js | tfjs | yolo26n-sem_web_model/ | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-sem_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n-sem.mnn | ✅ | imgsz, batch, int8, half, device |
| NCNN | ncnn | yolo26n-sem_ncnn_model/ | ✅ | imgsz, half, batch, device |
| IMX500 | imx | yolo26n-sem_imx_model/ | ✅ | imgsz, int8, data, fraction, nms, device |
| RKNN | rknn | yolo26n-sem_rknn_model/ | ✅ | imgsz, batch, name, int8, data, fraction, device |
| ExecuTorch | executorch | yolo26n-sem_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n-sem_axelera_model/ | ✅ | imgsz, batch, int8, data, fraction, device |
| DEEPX | deepx | yolo26n-sem_deepx_model/ | ✅ | imgsz, int8, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n-sem_qnn_model/ | ✅ | imgsz, batch, name, int8, data, fraction, device |
Vedi i dettagli completi sull'export nella pagina Export.
Link to this sectionFAQ#
Link to this sectionCome posso addestrare un modello di segmentazione semantica YOLO26 su un dataset personalizzato?#
Per addestrare un modello di segmentazione semantica YOLO26 su un dataset personalizzato, devi preparare immagini di maschere PNG in cui ogni valore di pixel rappresenta un ID di classe (0, 1, 2, ...) e i pixel con valore 255 vengono ignorati durante l'addestramento. Crea un file YAML del dataset che punti alle tue directory di immagini e maschere, quindi addestra il modello:
from ultralytics import YOLO
# Load a pretrained YOLO26 semantic segmentation model
model = YOLO("yolo26n-sem.pt")
# Train the model
results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=512)Controlla la pagina Configurazione per ulteriori argomenti disponibili.
Link to this sectionQual è la differenza tra segmentazione di istanza e segmentazione semantica?#
La segmentazione di istanza e la segmentazione semantica sono entrambe attività a livello di pixel, ma differiscono in un aspetto chiave:
- La segmentazione semantica assegna un'etichetta di classe a ogni pixel, ma non distingue tra singoli oggetti della stessa classe. Ad esempio, tutte le auto in una scena condividono la stessa etichetta di classe.
- La segmentazione di istanza identifica ogni singolo oggetto separatamente, producendo maschere distinte per ogni oggetto anche se appartengono alla stessa classe.
La segmentazione semantica è più adatta per attività di comprensione della scena come la guida autonoma e la mappatura della copertura del suolo, mentre la segmentazione di istanza è preferibile quando è importante contare o tracciare singoli oggetti.
Link to this sectionPosso usare i dati della segmentazione di istanza per addestrare la segmentazione semantica?#
Sì. Se il tuo dataset utilizza etichette poligonali Ultralytics YOLO (un .txt per immagine), ometti masks_dir dal YAML del dataset e il caricatore convertirà al volo i poligoni in maschere semantiche per immagine. Per dataset multi-classe (N > 1), viene aggiunta automaticamente una classe background extra ai names. Per dataset a classe singola (N == 1) l'addestramento rimane su 1 classe — la tua classe dichiarata diventa 1 nella maschera e i pixel non coperti diventano 0. Vedi la Guida al dataset di segmentazione semantica per i dettagli.
Link to this sectionQuali dataset sono supportati per la segmentazione semantica?#
Ultralytics YOLO26 fornisce configurazioni integrate per diversi dataset di segmentazione semantica:
- Cityscapes: Scene stradali urbane con 19 classi, ampiamente utilizzate per la ricerca sulla guida autonoma.
- ADE20K: Un dataset di analisi della scena su larga scala con 150 classi.
Puoi anche utilizzare qualsiasi dataset personalizzato che fornisca annotazioni di maschere PNG in cui i valori dei pixel corrispondono agli ID di classe.
Link to this sectionCome convalido un modello di segmentazione semantica YOLO26 preaddestrato?#
Convalida un modello di segmentazione semantica YOLO26 preaddestrato con il dataset YAML utilizzato per la valutazione:
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n-sem.pt")
# Validate the model
metrics = model.val(data="cityscapes.yaml")
print("Mean IoU:", metrics.miou)
print("Pixel Accuracy:", metrics.pixel_accuracy)Questi passaggi ti forniranno metriche di convalida come la media della Intersection over Union (mIoU) e l'accuratezza dei pixel, che sono misure standard per valutare le prestazioni della segmentazione semantica.
Link to this sectionCome posso esportare un modello di segmentazione semantica YOLO26 in formato ONNX?#
Esporta un modello di segmentazione semantica YOLO26 in formato ONNX con Python o comandi CLI:
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n-sem.pt")
# Export the model to ONNX format
model.export(format="onnx")Per ulteriori dettagli sull'esportazione in vari formati, consulta la pagina Esportazione.