Meet YOLO26: next-gen vision AI.

Link to this sectionSegmentazione semantica#

Semantic segmentation examples

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.

Suggerimento

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.

Modellodimensione
(pixel)
mIoUvalVelocità
RTX3090 PyTorch
(ms)
parametri
(M)
FLOPs
(B)
YOLO26n-sem1024 × 204878.34.4 ± 0.01.622.7
YOLO26s-sem1024 × 204880.88.4 ± 0.06.588.8
YOLO26m-sem1024 × 204882.019.9 ± 0.114.3304.5
YOLO26l-sem1024 × 204882.926.5 ± 0.117.9384.7
YOLO26x-sem1024 × 204883.648.9 ± 0.240.2861.7
  • I valori mIoUval si riferiscono a modello singolo e scala singola sul set di validazione Cityscapes.
    Riproduci con yolo 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 con yolo 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.

Esempio
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.

Esempio
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 accuracy

Link to this sectionPredizione#

Usa un modello YOLO26n-sem addestrato per eseguire previsioni sulle immagini.

Esempio
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 count

Vedi 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.

AttributoTipoFormaDescrizione
result.semantic_maskSemanticMask(H,W)Mappa di classe densa.
result.semantic_mask.datatorch.uint8
torch.int16
torch.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#

AspettoSegmentazione di Istanze (task="segment")Segmentazione Semantica (task="semantic")
Obiettivo della previsioneSegmenta ogni oggetto rilevato separatamenteAssegna un ID di classe a ogni pixel
Campo di outputresult.masksresult.semantic_mask
Dati principaliresult.masks.dataresult.semantic_mask.data
Forma(N,H,W)(H,W)
Valori dei pixelValori maschera binaria: 0 o 1ID di classe: 0, 1, 2, ...
Dtypetorch.uint8torch.uint8
torch.int16
torch.int32
Oggetti della stessa classeMantenuti come istanze separateUniti nella stessa regione di classe
PoligoniSì, tramite result.masks.xy e result.masks.xynNessun output poligono per impostazione predefinita
Box e confidenzaSì, tramite result.boxesNessun box o punteggio di confidenza per istanza
Uso tipicoConteggio, tracciamento, ritaglio, misurazione a livello di oggettoEtichettatura 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.

Esempio
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.

FormatoArgomento formatModelloMetadatiArgomenti
PyTorch-yolo26n-sem.pt-
TorchScripttorchscriptyolo26n-sem.torchscriptimgsz, half, dynamic, optimize, nms, batch, device
ONNXonnxyolo26n-sem.onnximgsz, half, int8, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-sem_openvino_model/imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRTengineyolo26n-sem.engineimgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-sem.mlpackageimgsz, dynamic, half, int8, nms, batch, device
TF SavedModelsaved_modelyolo26n-sem_saved_model/imgsz, keras, int8, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-sem.pbimgsz, batch, device
TF Litetfliteyolo26n-sem.tfliteimgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo26n-sem_edgetpu.tfliteimgsz, int8, data, fraction, device
TF.jstfjsyolo26n-sem_web_model/imgsz, half, int8, nms, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-sem_paddle_model/imgsz, batch, device
MNNmnnyolo26n-sem.mnnimgsz, batch, int8, half, device
NCNNncnnyolo26n-sem_ncnn_model/imgsz, half, batch, device
IMX500imxyolo26n-sem_imx_model/imgsz, int8, data, fraction, nms, device
RKNNrknnyolo26n-sem_rknn_model/imgsz, batch, name, int8, data, fraction, device
ExecuTorchexecutorchyolo26n-sem_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-sem_axelera_model/imgsz, batch, int8, data, fraction, device
DEEPXdeepxyolo26n-sem_deepx_model/imgsz, int8, data, optimize, device
Qualcomm QNNqnnyolo26n-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:

Esempio
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:

Esempio
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:

Esempio
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.

Commenti