Ultralytics YOLO27:
Get Started

Panoramica dei dataset di segmentazione semantica#

La segmentazione semantica assegna un'etichetta di classe a ogni pixel di un'immagine. A differenza della segmentazione delle istanze, la segmentazione semantica non separa i singoli oggetti appartenenti alla stessa classe. L'obiettivo dell'addestramento è una mappa densa delle classi, in cui ogni pixel contiene un ID di classe.

Questa guida illustra il formato dei dataset usato dai modelli Ultralytics YOLO per la segmentazione semantica ed elenca le configurazioni di dataset integrate disponibili per l'addestramento e la convalida.

Formati di dataset supportati#

Sono supportati due formati di etichette. Il caricatore del dataset seleziona le maschere PNG se il file YAML del dataset definisce una chiave masks_dir oppure se nella radice del dataset è già presente una cartella masks/ accanto alle immagini; altrimenti usa le etichette poligonali YOLO.

Formato delle maschere PNG#

I dataset di segmentazione semantica usano 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 indica l'indice di classe del pixel corrispondente nell'immagine.

  • I valori di pixel 0, 1, 2, ... rappresentano gli ID di classe definiti nella mappatura names del dataset.
  • Il valore di pixel 255 viene trattato come etichetta da ignorare ed è escluso dal calcolo della loss e delle metriche.
  • I file delle maschere devono avere lo stesso nome base del file immagine corrispondente, ad esempio frankfurt_000000_000294.png.
  • Per impostazione predefinita, le maschere vengono individuate come .png; se non è disponibile, vengono accettate anche altre estensioni di immagine supportate. Usa formati senza perdita, come .png o .tiff, perché la compressione con perdita (ad esempio .jpg) altera i valori dei pixel degli ID di classe.

La struttura predefinita mantiene immagini e maschere in cartelle parallele. Il valore masks_dir del file YAML del dataset sostituisce il componente di percorso images per individuare le maschere.

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

Ad esempio, all'immagine images/train/aachen_000000_000019.png corrisponde la maschera masks/train/aachen_000000_000019.png quando masks_dir: masks.

Formato delle etichette poligonali YOLO#

Se il tuo dataset contiene già etichette poligonali Ultralytics YOLO (un .txt per immagine con righe <class-index> <x1> <y1> <x2> <y2> ...), puoi addestrare direttamente la segmentazione semantica senza convertire le maschere PNG. Consulta il formato dei dataset per la segmentazione delle istanze per la struttura delle righe.

Questo percorso viene selezionato automaticamente quando il file YAML del dataset non include masks_dir e nella radice del dataset non è presente una cartella masks/ accanto alle immagini: rimuovi o rinomina qualsiasi cartella masks/ residua, altrimenti il caricatore passa alla modalità con maschere PNG e cerca le maschere in quella posizione. Funzionamento:

  • I poligoni vengono convertiti in una maschera semantica per immagine al momento del caricamento e ordinati per area, così gli oggetti più piccoli prevalgono su quelli più grandi nelle aree di sovrapposizione.
  • Più classi (N > 1 in names): dopo le classi dichiarate viene aggiunta una classe background aggiuntiva per i pixel non coperti da alcun poligono. Il modello viene creato con N + 1 canali di output e l'ultimo canale rappresenta lo sfondo.
  • Classe singola (N == 1 in names): l'addestramento avviene comunque con 1 classe. La maschera è binaria: la classe dichiarata è rappresentata da 1 e i pixel non coperti da alcun poligono da 0. Non viene aggiunta alcuna classe di sfondo aggiuntiva a names.
  • I pixel aggiunti dal padding dell'augmentation (ad esempio, da un ritaglio casuale) continuano a usare 255 come etichetta da ignorare.

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

Formato YAML del dataset#

I dataset di segmentazione semantica si configurano con file YAML. I campi principali sono:

ChiaveDescrizione
pathDirectory radice del dataset.
trainPercorso delle immagini di addestramento relativo a path oppure percorso assoluto.
valPercorso delle immagini di convalida relativo a path oppure percorso assoluto.
testPercorso facoltativo delle immagini di test.
masks_dirNome della directory usata per le maschere semantiche. Ometti questa chiave (se nella radice del dataset non è presente la cartella masks/) per passare al formato di etichette poligonali YOLO.
namesMappatura dagli ID di classe ai nomi delle classi.
label_mappingMappatura facoltativa 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 delle maschere sorgente non corrispondono già a ID di classe contigui per l'addestramento. Cityscapes e ADE20K includono mappature che convertono gli ID delle etichette originali negli ID di addestramento YOLO per la segmentazione semantica e ignorano le etichette non utilizzate.

Utilizzo#

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

Esempio
from ultralytics import YOLO

# Carica un modello di segmentazione semantica preaddestrato
model = YOLO("yolo26n-sem.pt")

# Addestra sul dataset di segmentazione semantica Cityscapes8
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 dell'attività di segmentazione semantica per la tabella completa dei benchmark dei modelli preaddestrati.

  • Cityscapes: Un dataset per la segmentazione semantica di scene stradali urbane, con 19 classi di addestramento.
  • Cityscapes8: un sottoinsieme Cityscapes di 8 immagini per test rapidi e controlli CI.
  • ADE20K: Un dataset per l'analisi delle scene con 150 classi semantiche.

Aggiungere il proprio dataset#

Opzione A — Maschere PNG#

  1. Salva le immagini in cartelle di suddivisione come images/train e images/val.
  2. Salva una maschera a canale singolo per immagine nelle cartelle delle maschere corrispondenti, ad esempio masks/train e masks/val.
  3. Assicurati che i valori dei pixel delle maschere siano ID di classe. Usa 255 per i pixel da ignorare.
  4. Crea un file YAML del dataset con path, train, val, masks_dir e names.
  5. Aggiungi label_mapping solo quando gli ID delle maschere devono essere convertiti 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 poligonali#

  1. Organizza le immagini e i file poligonali .txt esattamente come per la segmentazione delle istanze.
  2. Crea un file YAML del dataset con path, train, val e names — ometti masks_dir.
  3. Assicurati che nella radice del dataset non esista alcuna cartella masks/ accanto alle immagini: la sua sola presenza attiva la modalità maschere PNG del caricatore, anche senza masks_dir nel file YAML.
  4. Non aggiungere una voce "background" a names. Per i dataset multiclasse il caricatore ne aggiunge automaticamente una; per i dataset a classe singola l'addestramento rimane a 1 classe: la 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 offre 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 risultante con etichette poligonali, senza dover configurare manualmente questa struttura.

Domande frequenti#

  • Le maschere di segmentazione semantica sono mappe dense di pixel. Ogni pixel memorizza un ID di classe e a ogni immagine di addestramento corrisponde una maschera. Le etichette di segmentazione delle istanze in Ultralytics YOLO usano file di testo con coordinate poligonali, una riga per ogni istanza di oggetto.

  • Il valore dei pixel 255 viene usato come etichetta da ignorare. Questi pixel vengono esclusi dal calcolo della loss e delle metriche, utile per regioni vuote, pixel non etichettati o classi esterne all'insieme di etichette di addestramento.

  • Sì. Ogni maschera semantica deve avere lo stesso nome di base del file dell'immagine corrispondente. Il caricatore del dataset sostituisce il componente di directory images con masks_dir e cerca i file di maschera corrispondenti, ricorrendo ad altre estensioni di immagine supportate (.jpg, .tiff ecc.) se non trova una maschera .png; tuttavia, sono consigliati solo formati senza perdita, perché il ripiego non lo impone.

  • Sì, se corrispondono già agli ID di classe names. Se il dataset sorgente usa ID non contigui o include etichette da ignorare, aggiungi una sezione label_mapping per convertire i valori dei pixel sorgente in ID di addestramento.

  • Sì. I dataset di segmentazione delle istanze usano le etichette poligonali Ultralytics YOLO (un .txt per immagine con righe <class-index> <x1> <y1> <x2> <y2> ...) e gli stessi file si possono riutilizzare per la segmentazione semantica: basta omettere masks_dir dal file YAML del dataset e assicurarsi che nella radice del dataset non esista alcuna cartella masks/ accanto alle immagini (la sua sola presenza attiva la modalità maschere PNG, anche senza impostare masks_dir). Il caricatore converte quindi i poligoni in maschere per immagine al volo. Per i dataset multiclasse (N > 1) viene aggiunta una classe background aggiuntiva e il modello viene creato con N + 1 canali di output. Per i dataset a classe singola (N == 1) l'addestramento rimane a 1 classe: la maschera mostra la 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 leggero sottoinsieme Cityscapes8 per testare le pipeline e ADE20K (150 classi di parsing delle scene). Ogni pagina documenta l'elenco esatto delle classi, le istruzioni per il download e un esempio di addestramento verificato.

Commenti