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 in 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 in cui ogni valore di pixel corrisponde a un ID di classe previsto. Questo rende la segmentazione semantica ideale per attività di analisi della scena come la guida autonoma, l'imaging medico e la mappatura della copertura del suolo.

Suggerimento

Usa task=semantic o l'attività 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)
params
(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 modelli singoli a 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 Cityscapes usando un'istanza RTX3090.
    Riproduci con yolo semantic val data=cityscapes.yaml batch=1 device=0|cpu imgsz=2048
  • I valori Params e FLOPs si riferiscono al modello fuso dopo model.fuse(), che unisce i livelli Conv e BatchNorm. I checkpoint preaddestrati mantengono l'architettura di training completa e potrebbero mostrare conteggi più elevati.

Link to this sectionAddestramento#

Addestra YOLO26n-sem sul dataset Cityscapes8 per 100 epoche con una dimensione immagine di 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 Train.

Link to this sectionFormato del dataset#

I dataset di segmentazione semantica utilizzano immagini con maschera a canale singolo, tipicamente PNG, in cui ogni valore di pixel rappresenta un ID di classe. I pixel con valore 255 sono trattati come "ignore" (ignora) ed esclusi dal calcolo della perdita. Il YAML del dataset dovrebbe specificare i percorsi per le 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 sectionValutazione#

Valida l' accuratezza del modello YOLO26n-sem addestrato su un dataset di segmentazione semantica. Passa data esplicitamente in modo che 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 sectionPrevisione#

Usa un modello YOLO26n-sem addestrato per eseguire predizioni 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 archivia una mappa di classe densa per l'intera immagine invece di un elenco di maschere di oggetti. I pixel con la stessa classe prevista condividono lo stesso ID di classe, anche quando appartengono a oggetti separati.

AttributoTipoFormaDescrizione
result.semantic_maskSemanticMask(H,W)Mappa delle classi 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 per ogni attività, vedi la sezione Predizioni dei Risultati per Attività.

Link to this sectionSegmentazione di istanze vs semantica#

AspettoSegmentazione di istanze (task="segment")Segmentazione semantica (task="semantic")
Obiettivo della predizioneSegmenta 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 della 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 di poligoni 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 predire o validare direttamente sui modelli esportati, ad esempio yolo predict model=yolo26n-sem.onnx. Esempi di utilizzo sono mostrati per il tuo modello una volta completata l'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, half, 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.onnximgsz, batch, name, int8, data, fraction, device

Vedi i dettagli completi dell'export nella pagina Export.

Link to this sectionFAQ#

Link to this sectionCome addestro 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 con maschera 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 punta alle directory delle immagini e delle 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 istanze e segmentazione semantica?#

La segmentazione di istanze e la segmentazione semantica sono entrambe attività a livello di pixel ma differiscono in un aspetto chiave:

  • 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.
  • Segmentazione di istanze 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 istanze è preferibile quando conta il conteggio o il tracciamento dei singoli oggetti.

Link to this sectionPosso usare dati di segmentazione di istanze per addestrare la segmentazione semantica?#

Sì. Se il tuo dataset utilizza etichette poligonali Ultralytics YOLO (un file .txt per immagine), ometti masks_dir dal YAML del dataset e il caricatore convertirà i poligoni in maschere semantiche per immagine al volo. Per dataset multi-classe (N > 1), una classe background extra viene aggiunta automaticamente a names. Per dataset a classe singola (N == 1), l'addestramento rimane a 1 classe: la tua classe dichiarata diventa 1 nella maschera e i pixel non coperti diventano 0. Vedi la Guida ai 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 di scene su larga scala con 150 classi.

Puoi anche utilizzare qualsiasi dataset personalizzato che fornisca annotazioni di maschera PNG dove i valori dei pixel corrispondono agli ID di classe.

Link to this sectionCome convalido un modello di segmentazione semantica YOLO26 preaddestrato?#

Valida un modello di segmentazione semantica YOLO26 preaddestrato con il YAML del dataset 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 validazione come la media dell'intersezione sull'unione (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 comandi Python o 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 Export.

Commenti