Dataset Cityscapes#
Il set di dati Cityscapes è un benchmark di semantic segmentation su larga scala di scene di strade urbane catturate in 50 città europee, con 2.975 immagini di training finemente annotate e 500 immagini di validazione suddivise in 19 classi. È uno dei set di dati più ampiamente utilizzati per la ricerca sulla guida autonoma e la comprensione di scene urbane con i modelli Ultralytics YOLO.
Caratteristiche principali#
- Le annotazioni dettagliate di Cityscapes includono 2.975 immagini di training e 500 immagini di validazione in 19 classi; l'archivio include anche 1.525 immagini di test, ma le loro maschere rilasciate etichettano solo il veicolo ego e il bordo dell'immagine — le vere annotazioni delle classi sono trattenute e i punteggi ufficiali del set di test richiedono l'invio delle predizioni al Cityscapes evaluation server.
- Il dataset copre 19 classi di valutazione che spaziano tra categorie come piano stradale, umano, veicolo, costruzione, oggetto, natura e cielo.
- Cityscapes fornisce metriche di valutazione standardizzate come il mean Intersection over Union (mIoU) per la segmentazione semantica, consentendo un confronto efficace delle prestazioni del modello.
- Prima di procedere con il download manuale di ~11 GB, verifica la correttezza della tua pipeline di training rispetto al sottoinsieme Cityscapes8 di 8 immagini.
Struttura del dataset#
La configurazione di Ultralytics prevede il seguente layout dopo la preparazione:
cityscapes/
├── images/
│ ├── train/
│ ├── val/
│ └── test/
└── masks/
├── train/
├── val/
└── test/Cityscapes non prevede il download automatico dell'archivio. Crea un account sul Cityscapes website, quindi scarica gli archivi leftImg8bit_trainvaltest.zip e gtFine_trainvaltest.zip (~11 GB in totale) ed estraili entrambi nella radice del set di dati cityscapes. Ultralytics li riorganizza automaticamente nel layout images/ e masks/ sopra la prima volta che esegui il training.
Le maschere semantiche sono file PNG a canale singolo. Gli ID delle etichette originali di Cityscapes vengono mappati ai 19 ID di training standard tramite la sezione label_mapping, mentre le etichette ignorate o nulle vengono mappate a 255 in modo che siano escluse dal training e dalla valutazione.
Le maschere gtFine/test rilasciate pubblicamente etichettano solo le regioni del veicolo ego e del bordo dell'immagine — tutte le altre classi sono nulle. Calcola il mIoU sullo split val per la valutazione locale; i punteggi ufficiali del set di test richiedono l'invio delle predizioni al Cityscapes evaluation server.
Applicazioni#
Cityscapes è ampiamente utilizzato per il training e la valutazione di modelli di deep learning nella segmentazione semantica, in particolare per la autonomous driving, i sistemi avanzati di assistenza alla guida (ADAS) e la robotica urbana.
Le sue immagini ad alta risoluzione e le annotazioni dettagliate lo rendono anche prezioso per la ricerca sul parsing di scene in tempo reale, sulla comprensione di corsie e ostacoli e per qualsiasi attività che richieda una comprensione densa a livello di pixel di ambienti urbani complessi. I modelli di segmentazione semantica YOLO26 preaddestrati raggiungono fino a 83.6 mIoU sul set di validazione di Cityscapes — consulta la pagina dei semantic segmentation models per la tabella completa dei benchmark. Puoi organizzare, visualizzare e gestire i dati di Cityscapes durante tutto il flusso di lavoro di sviluppo del modello con Ultralytics Platform.
Dataset YAML#
Un file YAML del set di dati definisce i percorsi, le classi, la directory delle maschere e la mappatura delle etichette di Cityscapes. Il file cityscapes.yaml è gestito su https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/cityscapes.yaml.
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# Cityscapes semantic segmentation dataset (19 classes)
# Documentation: https://docs.ultralytics.com/datasets/semantic/cityscapes
# Example usage: yolo semantic train data=cityscapes.yaml model=yolo26n-sem.pt
# parent
# ├── ultralytics
# └── datasets
# └── cityscapes ← downloads here (11 GB)
# └── images
# └── masks
# Dataset root directory
path: cityscapes # dataset root dir
train: images/train # train images (relative to 'path') 2975 images
val: images/val # val images (relative to 'path') 500 images
test: images/test # test images (relative to 'path') 1525 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
# Preparation script (requires manual Cityscapes download)
download: |
from pathlib import Path
from shutil import copy2
cityscapes_dir = Path(yaml["path"]) # dataset root dir
# Download and extract the official Cityscapes leftImg8bit and gtFine archives into cityscapes_dir first.
leftimg8bit_dir = cityscapes_dir / "leftImg8bit"
gtfine_dir = cityscapes_dir / "gtFine"
for split in ("train", "val", "test"):
print(f"Processing {split} set")
src_image_dir = leftimg8bit_dir / split
dst_image_dir = cityscapes_dir / "images" / split
dst_mask_dir = cityscapes_dir / "masks" / split
dst_image_dir.mkdir(parents=True, exist_ok=True)
dst_mask_dir.mkdir(parents=True, exist_ok=True)
image_paths = sorted(src_image_dir.rglob("*_leftImg8bit.png"))
for image_path in image_paths:
relative_path = image_path.relative_to(src_image_dir)
mask_path = gtfine_dir / split / relative_path.parent / image_path.name.replace(
"_leftImg8bit.png", "_gtFine_labelIds.png"
)
if not mask_path.exists():
raise FileNotFoundError(f"Mask not found for {image_path}: {mask_path}")
image_name = image_path.name.replace("_leftImg8bit", "")
mask_name = mask_path.name.replace("_gtFine_labelIds", "")
copy2(image_path, dst_image_dir / image_name)
copy2(mask_path, dst_mask_dir / mask_name)Utilizzo#
Per addestrare un modello YOLO26n-sem sul set di dati Cityscapes per 100 epochs con una dimensione dell'immagine di 1024, puoi utilizzare i seguenti snippet di codice. Per un elenco completo degli argomenti disponibili, fai riferimento alla pagina di Training del modello.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-sem.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="cityscapes.yaml", epochs=100, imgsz=1024)Citazioni, licenza e riconoscimenti#
Cityscapes è rilasciato con una custom non-commercial license — gratuito per la ricerca accademica e la valutazione, ma l'uso commerciale, la concessione di licenze o la ridistribuzione dei dati richiedono un'autorizzazione separata dal team di Cityscapes.
Se utilizzi il dataset Cityscapes nel tuo lavoro di ricerca o sviluppo, cita il seguente articolo:
@inproceedings{Cordts2016Cityscapes,
title={The Cityscapes Dataset for Semantic Urban Scene Understanding},
author={Cordts, Marius and Omran, Mohamed and Ramos, Sebastian and Rehfeld, Timo and Enzweiler, Markus and Benenson, Rodrigo and Franke, Uwe and Roth, Stefan and Schiele, Bernt},
booktitle={Proc. of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
year={2016}
}Desideriamo ringraziare il team di Cityscapes per aver creato e mantenuto questa preziosa risorsa per le comunità della guida autonoma e della computer vision. Per ulteriori informazioni sul set di dati Cityscapes e sui suoi creatori, visita il Cityscapes dataset website.
FAQ#
Il set di dati Cityscapes è un benchmark di semantic segmentation su larga scala di scene di strade urbane in 50 città europee, ampiamente utilizzato come riferimento standard per la ricerca sulla guida autonoma e sugli ADAS. Le sue 19 classi di valutazione finemente annotate, le immagini ad alta risoluzione e la metrica standardizzata mean Intersection over Union (mIoU) lo rendono uno dei benchmark più citati per i modelli di comprensione densa delle scene.
Per addestrare un modello YOLO26n-sem sul set di dati Cityscapes per 100 epoche con una dimensione dell'immagine di 1024, puoi utilizzare i seguenti snippet di codice. Per un elenco dettagliato degli argomenti disponibili, fai riferimento alla pagina di Training del modello.
Esempio di Addestramentofrom ultralytics import YOLO # Load a model model = YOLO("yolo26n-sem.pt") # load a pretrained model (recommended for training) # Train the model results = model.train(data="cityscapes.yaml", epochs=100, imgsz=1024)Dopo la preparazione, il set di dati è organizzato nelle directory
images/{train,val,test}/emasks/{train,val,test}/, con ogni immagine abbinata a una maschera PNG a canale singolo. Il file YAML di Ultralytics abbina ciascuna immagine alla sua maschera tramite il campomasks_dir: maskse utilizzalabel_mappingper convertire gli ID delle etichette originali di Cityscapes nei 19 ID di training contigui standard, mappando le etichette ignorate e nulle su255. Le maschere dello splittestetichettano solo il veicolo ego e le regioni di bordo, quindi usavalper i controlli mIoU locali.Sì. Crea un account sul Cityscapes website e scarica gli archivi
leftImg8bit_trainvaltest.zipegtFine_trainvaltest.zip(~11 GB in totale). Estraili entrambi nella radice del set di daticityscapes— Ultralytics li riorganizza automaticamente nel layoutimages/emasks/previsto la prima volta che esegui il training.Le maschere di origine di Cityscapes memorizzano gli ID delle etichette originali che differiscono dai 19 ID di training utilizzati per la valutazione. La sezione
label_mappingconverte le etichette valide in ID di classe contigui0–18e assegna255alle etichette ignorate e nulle in modo che siano escluse dalla loss e dalle metriche durante il training e la validazione.No. Cityscapes è rilasciato con una non-commercial license che consente la ricerca accademica, l'insegnamento e la valutazione, ma vieta l'uso commerciale, la concessione di licenze o la vendita del set di dati o di opere derivate. Contatta direttamente il team di Cityscapes per le opzioni di licenza commerciale.