YOLO Vision 2026:

Panoramica dei dataset di segmentazione semantica#

Semantic segmentation assegna un'etichetta di classe a ogni pixel di un'immagine. A differenza della instance segmentation, la segmentazione semantica non separa i singoli oggetti della stessa classe. L'obiettivo di addestramento è una mappa di classi densa in cui ogni pixel memorizza un ID di classe.

Questa guida spiega il formato del dataset utilizzato dai modelli di segmentazione semantica Ultralytics YOLO ed elenca le configurazioni di dataset integrate disponibili per l'addestramento e la validazione.

Formati di dataset supportati#

Sono supportati due formati di etichette. Il caricatore del dataset seleziona le maschere PNG quando il file YAML del dataset definisce una chiave masks_dir, o quando esiste già una cartella masks/ accanto alle tue immagini nella root del dataset; altrimenti, torna alle etichette poligonali YOLO.

Formato maschera PNG#

I dataset di segmentazione semantica utilizzano un file immagine e un file maschera per ogni campione. La maschera è un'immagine a canale singolo, solitamente PNG, in cui ogni valore di pixel è l'indice di classe per il corrispondente pixel dell'immagine.

  • I valori dei pixel 0, 1, 2, ... rappresentano gli ID delle classe dalla mappatura del dataset names.
  • Il valore del pixel 255 viene trattato come etichetta di ignoraggio ed è escluso dal calcolo della perdita e delle metriche.
  • I file delle maschere dovrebbero utilizzare lo stesso nome di base (stem) del file immagine corrispondente, ad esempio frankfurt_000000_000294.png.
  • Le maschere vengono risolte come .png per impostazione predefinita; se mancanti, vengono accettate anche altre estensioni di immagine supportate. Usa formati lossless come .png o .tiff, poiché la compressione lossy (ad esempio .jpg) corrompe i valori dei pixel dell'ID di classe.

Il layout predefinita mantiene immagini e maschere in cartelle parallele. Il valore masks_dir dal file YAML del dataset sostituisce il componente del percorso images per trovare le maschere.

dataset/
├── images/
│   ├── train/
│   └── val/
└── masks/
    ├── train/
    └── val/

Ad esempio, un'immagine in images/train/aachen_000000_000019.png viene associata a una maschera in masks/train/aachen_000000_000019.png quando masks_dir: masks.

Formato etichetta poligono YOLO#

Se il tuo dataset ha già etichette poligonali Ultralytics YOLO (un .txt per immagine con righe <class-index> <x1> <y1> <x2> <y2> ...), puoi addestrare la segmentazione semantica direttamente da esse, senza bisogno di alcuna conversione di maschera PNG. Consulta il formato del dataset di segmentazione d'istanza per il layout a livello di riga.

Questo percorso viene selezionato automaticamente quando il file YAML del dataset omette masks_dir e non esiste alcuna cartella masks/ accanto alle tue immagini nella root del dataset; rimuovi o rinomina qualsiasi cartella masks/ rimasta, altrimenti il caricatore passerà alla modalità maschera PNG cercando le maschere lì. Comportamento:

  • I poligoni vengono convertiti in una maschera semantica per immagine al momento del caricamento, ordinati per area in modo che gli oggetti più piccoli sovrascrivano quelli più grandi nelle regioni di sovrapposizione.
  • Multi-classe (N > 1 in names): un'ulteriore classe background viene aggiunta dopo le classi dichiarate per i pixel non coperti da alcun poligono. Il modello viene costruito con canali di output N + 1 e l'ultimo canale è lo sfondo.
  • Classe singola (N == 1 in names): viene comunque addestrato come 1 classe. La maschera è binaria, con la classe dichiarata mostrata come 1 e i pixel non coperti da alcun poligono come 0. Nessuna classe di sfondo extra viene aggiunta a names.
  • I pixel aggiunti dal padding di augmentazione (es. ritaglio casuale) utilizzano comunque 255 come etichetta da ignorare.

Utilizza questo percorso quando i tuoi dati sono già etichettati come poligoni di istanza e desideri ottenere un modello di segmentazione semantica dagli stessi file.

Formato YAML del dataset#

I dataset di segmentazione semantica sono configurati tramite file YAML. I campi principali sono:

ChiaveDescrizione
pathDirectory radice del dataset.
trainPercorso dell'immagine di addestramento relativo a path, o percorso assoluto.
valPercorso dell'immagine di validazione relativo a path, o percorso assoluto.
testPercorso opzionale delle immagini di test.
masks_dirNome della directory utilizzata per le maschere semantiche. Ometti questa chiave (senza cartella masks/ nella root del dataset) per passare al formato di etichetta poligonale YOLO.
namesMappatura da ID classe a nome della classe.
label_mappingMappatura opzionale dagli ID del dataset di origine agli ID di addestramento o a ignore_label.
ultralytics/cfg/datasets/cityscapes8.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# Cityscapes semantic segmentation dataset (19 classes)
# Documentation: https://docs.ultralytics.com/datasets/semantic/cityscapes8
# Example usage: yolo semantic train data=cityscapes8.yaml model=yolo26n-sem.pt
# parent
# ├── ultralytics
# └── datasets
#     └── cityscapes8 ← downloads here (small subset)
#         └── images
#         └── masks

# Dataset root directory
path: cityscapes8 # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images

masks_dir: masks # semantic mask directory

# Cityscapes 19-class labels
names:
  0: road
  1: sidewalk
  2: building
  3: wall
  4: fence
  5: pole
  6: traffic light
  7: traffic sign
  8: vegetation
  9: terrain
  10: sky
  11: person
  12: rider
  13: car
  14: truck
  15: bus
  16: train
  17: motorcycle
  18: bicycle

# Map source label IDs to train IDs; ignore_label is converted to 255.
label_mapping:
  -1: ignore_label
  0: ignore_label
  1: ignore_label
  2: ignore_label
  3: ignore_label
  4: ignore_label
  5: ignore_label
  6: ignore_label
  7: 0
  8: 1
  9: ignore_label
  10: ignore_label
  11: 2
  12: 3
  13: 4
  14: ignore_label
  15: ignore_label
  16: ignore_label
  17: 5
  18: ignore_label
  19: 6
  20: 7
  21: 8
  22: 9
  23: 10
  24: 11
  25: 12
  26: 13
  27: 14
  28: 15
  29: ignore_label
  30: ignore_label
  31: 16
  32: 17
  33: 18

# Download URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/cityscapes8.zip

Usa label_mapping quando gli ID della maschera di origine non corrispondono già agli ID di classe di addestramento contigui. Cityscapes e ADE20K includono mappature che convertono gli ID delle etichette originali in ID di addestramento per la segmentazione semantica YOLO e ignorano le etichette non utilizzate.

Utilizzo#

Addestra un modello di segmentazione semantica YOLO26 con Python o CLI:

Esempio
from ultralytics import YOLO

# Load a pretrained semantic segmentation model
model = YOLO("yolo26n-sem.pt")

# Train on the Cityscapes8 semantic segmentation dataset
results = model.train(data="cityscapes8.yaml", epochs=100, imgsz=1024)

Dataset supportati#

Ultralytics fornisce file YAML di dataset di segmentazione semantica per questi dataset. Consulta la pagina delle attività di segmentazione semantica per la tabella completa dei benchmark dei modelli pre-addestrati.

  • Cityscapes: Dataset di segmentazione semantica per scene stradali urbane con 19 classi di training.
  • Cityscapes8: Un sottoinsieme di Cityscapes di 8 immagini per test rapidi e controlli CI.
  • ADE20K: Dataset di parsing di scene con 150 classi semantiche.

Aggiungere il proprio dataset#

Opzione A — Maschere PNG#

  1. Salva le tue immagini in cartelle di split come images/train e images/val.
  2. Salva una maschera a canale singolo per immagine nelle cartelle di maschere speculari, come masks/train e masks/val.
  3. Assicurati che i valori dei pixel della maschera siano ID di classe. Usa 255 per i pixel che devono essere ignorati.
  4. Crea un file YAML per il dataset con path, train, val, masks_dir e names.
  5. Aggiungi label_mapping solo quando gli ID delle tue maschere richiedono la conversione in ID di addestramento contigui.
path: path/to/my-semantic-dataset
train: images/train
val: images/val
masks_dir: masks

names:
    0: background
    1: road
    2: building

Opzione B — Etichette poligono#

  1. Disponi le immagini e i file di poligoni .txt esattamente come per la instance segmentation.
  2. Crea un file YAML per il dataset con path, train, val e namesometti masks_dir.
  3. Assicurati che non esista alcuna cartella masks/ accanto alle tue immagini nella root del dataset: la sua sola presenza attiva la modalità maschera PNG del caricatore anche senza masks_dir nel file YAML.
  4. Non aggiungere una voce "background" a names. Per i dataset multi-classe, il caricatore ne aggiunge una automaticamente; per i dataset a classe singola, l'addestramento rimane a 1 classe: la tua classe dichiarata diventa 1 nella maschera e i pixel non coperti diventano 0.
path: path/to/my-polygon-dataset
train: images/train
val: images/val

names:
    0: person
    1: car

Ultralytics Platform fornisce uno strumento di annotazione poligonale per l'attività semantica, oltre all'annotazione intelligente assistita da SAM: annota direttamente nel browser ed esporta o addestra sul dataset con etichette poligonali risultante senza dover configurare questo layout a mano.

FAQ#

  • Le maschere di segmentazione semantica sono mappe densi di pixel. Ogni pixel memorizza un ID classe e c'è un'immagine maschera per ogni immagine di addestramento. Le etichette di segmentazione di istanze in Ultralytics YOLO utilizzano file di testo con coordinate poligonali, una riga per ogni istanza di oggetto.

  • Il valore del pixel 255 viene usato come etichetta da ignorare. Questi pixel vengono saltati durante il calcolo della perdita e delle metriche, il che è utile per regioni vuote, pixel non etichettati o classi esterne al set di etichette di addestramento.

  • Sì. Ogni maschera semantica dovrebbe avere lo stesso nome di file dell'immagine corrispondente. Il caricatore del dataset sostituisce il componente di directory images con masks_dir e cerca i file di maschera corrispondenti, passando ad altre estensioni di immagine supportate (.jpg, .tiff, ecc.) se non viene trovata una maschera .png, sebbene siano consigliati solo formati lossless, poiché il fallback non lo impone.

  • Sì, se corrispondono già ai tuoi ID di classe names. Se il dataset di origine utilizza ID non contigui o include etichette che dovrebbero essere ignorate, aggiungi una sezione label_mapping per convertire i valori dei pixel di origine in ID di addestramento.

  • Sì. I dataset di segmentazione d'istanza utilizzano le etichette poligonali Ultralytics YOLO (un .txt per immagine con righe <class-index> <x1> <y1> <x2> <y2> ...), e gli stessi file possono essere riutilizzati per la segmentazione semantica: basta omettere masks_dir dal file YAML del dataset e assicurarsi che non esista alcuna cartella masks/ accanto alle immagini nella root del dataset (la sua sola presenza attiva la modalità maschera PNG anche senza masks_dir impostato). Il caricatore converte quindi i poligoni in maschere per immagine al volo. Per i dataset multi-classe (N > 1) viene aggiunta una classe extra background, e il modello viene costruito con canali di output N + 1. Per i dataset a classe singola (N == 1) l'addestramento rimane a 1 classe: la maschera mostra la tua classe dichiarata come 1 e i pixel non coperti come 0.

  • Ultralytics include file YAML di dataset pronti all'uso per Cityscapes (19 classi di scene urbane), il sottoinsieme leggero Cityscapes8 per il test delle pipeline e ADE20K (150 classi di parsing di scene). Ciascuna pagina documenta l'elenco esatto delle classi, i passaggi di download e un esempio di addestramento verificato.

Commenti