Dataset Cityscapes#
Il dataset Cityscapes è un benchmark su larga scala di segmentazione semantica di scene stradali urbane riprese in 50 città europee, con 2.975 immagini di addestramento annotate dettagliatamente e 500 immagini di convalida suddivise in 19 classi. È uno dei dataset più utilizzati nella ricerca sulla guida autonoma e sulla comprensione delle scene urbane con i modelli Ultralytics YOLO.
Funzionalità principali#
- Le annotazioni dettagliate di Cityscapes includono 2.975 immagini di addestramento e 500 immagini di convalida suddivise in 19 classi; l'archivio include anche 1.525 immagini di test, ma le maschere rilasciate etichettano solo il veicolo ego e i bordi dell'immagine: le annotazioni delle classi effettive sono riservate e per ottenere i punteggi ufficiali sul set di test è necessario inviare le predizioni al server di valutazione Cityscapes.
- Il dataset comprende 19 classi di valutazione appartenenti alle categorie superfici piane, persone, veicoli, costruzioni, oggetti, natura e cielo.
- Cityscapes fornisce metriche di valutazione standardizzate come l'intersezione media sull'unione (mIoU) per la segmentazione semantica, consentendo un confronto efficace delle prestazioni dei modelli.
- Prima di procedere con il download manuale di ~11 GB, verifica il funzionamento della pipeline di addestramento con il sottoinsieme di 8 immagini Cityscapes8.
Struttura del dataset#
Dopo la preparazione, la configurazione Ultralytics prevede la seguente struttura:
cityscapes/
├── images/
│ ├── train/
│ ├── val/
│ └── test/
└── masks/
├── train/
├── val/
└── test/Cityscapes non dispone di un download automatico degli archivi. Crea un account sul sito web di Cityscapes, quindi scarica gli archivi leftImg8bit_trainvaltest.zip e gtFine_trainvaltest.zip (~11 GB in totale) ed estraili entrambi nella radice del dataset cityscapes. La prima volta che avvii l'addestramento, Ultralytics li riorganizza automaticamente nella struttura images/ e masks/ indicata sopra.
Le maschere semantiche sono file PNG a canale singolo. Gli ID originali delle etichette Cityscapes vengono mappati ai 19 ID di addestramento standard tramite la sezione label_mapping, mentre le etichette ignorate o vuote vengono mappate a 255, così da escluderle dall'addestramento e dalla valutazione.
Le maschere gtFine/test rilasciate pubblicamente etichettano solo il veicolo ego e le regioni del bordo dell'immagine: tutte le altre classi sono vuote. Calcola mIoU sulla suddivisione val per la valutazione locale; per ottenere i punteggi ufficiali sul set di test è necessario inviare le predizioni al server di valutazione Cityscapes.
Applicazioni#
Cityscapes è ampiamente utilizzato per addestrare e valutare modelli di deep learning per la segmentazione semantica, in particolare per la guida autonoma, i sistemi avanzati di assistenza alla guida (ADAS) e la robotica urbana.
Le immagini ad alta risoluzione e le annotazioni dettagliate lo rendono utile anche per la ricerca sul parsing delle scene in tempo reale, sulla comprensione di corsie e ostacoli e su qualsiasi attività che richieda una comprensione densa, a livello di pixel, di ambienti urbani complessi. I modelli YOLO26 preaddestrati per la segmentazione semantica raggiungono fino a 83.6 mIoU sul set di convalida Cityscapes: consulta la pagina dei modelli di segmentazione semantica per la tabella completa dei benchmark. Puoi organizzare, visualizzare e gestire i dati Cityscapes durante tutto il flusso di sviluppo del modello con Ultralytics Platform.
YAML del dataset#
Un file YAML del dataset definisce i percorsi, le classi, la directory delle maschere e la mappatura delle etichette di Cityscapes. Il file cityscapes.yaml è mantenuto in 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 dataset Cityscapes per 100 epoche con una dimensione dell'immagine di 1024, puoi usare i seguenti frammenti di codice. Per un elenco completo degli argomenti disponibili, consulta la pagina Addestramento del modello.
from ultralytics import YOLO
# Carica un modello
model = YOLO("yolo26n-sem.pt") # carica un modello preaddestrato (consigliato per l'addestramento)
# Addestra il modello
results = model.train(data="cityscapes.yaml", epochs=100, imgsz=1024)Citazioni, licenza e ringraziamenti#
Cityscapes è distribuito con una licenza personalizzata non commerciale: è gratuito per la ricerca e la valutazione accademiche, ma l'uso commerciale, la concessione in licenza o la ridistribuzione dei dati richiedono un'autorizzazione separata dal team Cityscapes.
Se usi il dataset Cityscapes nella tua attività 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 Cityscapes per aver creato e mantenuto questa preziosa risorsa per le comunità della guida autonoma e della visione artificiale. Per maggiori informazioni sul dataset Cityscapes e sui suoi creatori, visita il sito web del dataset Cityscapes.
Domande frequenti#
Il dataset Cityscapes è un benchmark su larga scala di segmentazione semantica di scene stradali urbane riprese in 50 città europee, ampiamente utilizzato come riferimento standard per la guida autonoma e la ricerca ADAS. Le sue 19 classi di valutazione annotate dettagliatamente, le immagini ad alta risoluzione e la metrica standardizzata dell'intersezione media sull'unione (mIoU) lo rendono uno dei benchmark più citati per i modelli di comprensione densa delle scene.
Per addestrare un modello YOLO26n-sem sul dataset Cityscapes per 100 epoche con una dimensione dell'immagine di 1024, puoi usare i seguenti frammenti di codice. Per un elenco dettagliato degli argomenti disponibili, consulta la pagina Addestramento del modello.
Esempio di addestramentofrom ultralytics import YOLO # Carica un modello model = YOLO("yolo26n-sem.pt") # carica un modello preaddestrato (consigliato per l'addestramento) # Addestra il modello results = model.train(data="cityscapes.yaml", epochs=100, imgsz=1024)Dopo la preparazione, il dataset è organizzato nelle directory
images/{train,val,test}/emasks/{train,val,test}/, con una maschera PNG a canale singolo abbinata a ogni immagine. Il file YAML di Ultralytics abbina ogni immagine alla relativa maschera tramite il campomasks_dir: maskse usalabel_mappingper convertire gli ID originali delle etichette Cityscapes nei 19 ID di addestramento contigui standard, mappando le etichette ignorate e vuote a255. Le maschere della suddivisionetestetichettano solo il veicolo ego e le regioni del bordo: usa quindivalper i controlli locali di mIoU.Sì. Crea un account sul sito web di Cityscapes e scarica gli archivi
leftImg8bit_trainvaltest.zipegtFine_trainvaltest.zip(~11 GB in totale). Estraili entrambi nella radice del datasetcityscapes: la prima volta che avvii l'addestramento, Ultralytics li riorganizza automaticamente nella struttura previstaimages/emasks/.Le maschere sorgente di Cityscapes memorizzano ID di etichetta originali diversi dai 19 ID di addestramento usati per la valutazione. La sezione
label_mappingconverte le etichette valide in ID di classe contigui0–18e assegna255alle etichette ignorate e vuote, escludendole così dalla loss e dalle metriche durante l'addestramento e la convalida.No. Cityscapes è distribuito con una licenza non commerciale che consente la ricerca, l'insegnamento e la valutazione accademici, ma vieta l'uso commerciale, la concessione in licenza o la vendita del dataset o di opere derivate. Contatta direttamente il team Cityscapes per le opzioni di licenza commerciale.