Dataset Cityscapes

Il dataset Cityscapes è un benchmark di semantic segmentation su larga scala focalizzato su scene stradali urbane riprese in 50 città europee. Fornisce annotazioni di alta qualità a livello di pixel ed è uno dei dataset più utilizzati per la ricerca sulla guida autonoma e la comprensione di scene urbane con i modelli Ultralytics YOLO.

Caratteristiche principali

  • Le annotazioni di dettaglio di Cityscapes includono 2.975 immagini di addestramento, 500 immagini di validazione e 1.525 immagini di test.
  • Il dataset copre 19 classi di valutazione che spaziano tra le categorie strada, veicolo, umano, costruzione, oggetto, natura e cielo.
  • Cityscapes fornisce metriche di valutazione standardizzate come la mean Intersection over Union (mIoU) per la semantic segmentation, consentendo un confronto efficace delle prestazioni dei modelli.

Struttura del dataset

La configurazione di Ultralytics prevede il seguente layout dopo la preparazione:

cityscapes/
├── images/
│   ├── train/
│   ├── val/
│   └── test/
└── masks/
    ├── train/
    ├── val/
    └── test/

Le maschere semantiche sono file PNG a canale singolo. Gli ID etichetta originali di Cityscapes vengono mappati sui 19 ID standard di training tramite la sezione label_mapping, mentre le etichette ignorate o void vengono mappate su 255 in modo da essere escluse dall'addestramento e dalla valutazione. Scarica gli archivi ufficiali leftImg8bit e gtFine dal sito web di Cityscapes ed estraili nella directory principale del dataset; il blocco di preparazione in cityscapes.yaml organizza quindi immagini e maschere in questo layout.

Applicazioni

Cityscapes è ampiamente utilizzato per addestrare e valutare modelli di deep learning nella semantic segmentation, 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 prezioso anche per la ricerca sul scene parsing in tempo reale, la comprensione di corsie e ostacoli, e qualsiasi attività che richieda una comprensione densa a livello di pixel di ambienti urbani complessi.

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 all'indirizzo https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/cityscapes.yaml.

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 epochs con una dimensione dell'immagine di 1024, puoi utilizzare i seguenti frammenti di codice. Per un elenco completo degli argomenti disponibili, fai riferimento alla pagina Training del modello.

Esempio di training
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 e riconoscimenti

Se utilizzi il dataset Cityscapes nel tuo lavoro di ricerca o sviluppo, ti preghiamo di citare il seguente articolo:

Citazione
@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 dataset Cityscapes e sui suoi creatori, visita il sito web del dataset Cityscapes.

FAQ

Cos'è il dataset Cityscapes e perché è importante per la computer vision?

Il dataset Cityscapes è un benchmark di semantic segmentation su larga scala focalizzato su scene stradali urbane riprese in 50 città europee. Contiene 5.000 immagini finemente annotate suddivise in 19 classi di valutazione, rendendolo una risorsa fondamentale per la ricerca sulla guida autonoma e la comprensione di scene urbane. Le sue immagini ad alta risoluzione, le annotazioni dense e la metrica standardizzata mean Intersection over Union (mIoU) lo rendono ideale per il benchmarking di modelli di dense prediction.

Come posso addestrare un modello YOLO utilizzando il dataset Cityscapes?

Per addestrare un modello YOLO26n-sem sul dataset Cityscapes per 100 epoch con una dimensione dell'immagine di 1024, puoi utilizzare i seguenti frammenti di codice. Per un elenco dettagliato degli argomenti disponibili, fai riferimento alla pagina Training del modello.

Esempio di training
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)

Come è strutturato il dataset Cityscapes?

Dopo la preparazione, il dataset è organizzato nelle directory images/{train,val,test}/ e masks/{train,val,test}/, in cui ogni immagine è associata a una maschera PNG a canale singolo. Il file YAML di Ultralytics associa ogni immagine alla sua maschera tramite il campo masks_dir: masks e utilizza label_mapping per convertire gli ID etichetta originali di Cityscapes nei 19 ID di training contigui standard, mappando le etichette ignorate e void su 255.

Devo scaricare Cityscapes manualmente?

Sì. Cityscapes richiede l'accettazione dei termini del dataset sul sito ufficiale. Scarica ed estrai leftImg8bit e gtFine nella root del dataset cityscapes prima di utilizzare il blocco di preparazione in cityscapes.yaml per creare il layout atteso images/ e masks/.

Perché Cityscapes utilizza label_mapping?

Le maschere sorgente di Cityscapes memorizzano ID etichetta originali che differiscono dai 19 ID di training utilizzati per la valutazione. La sezione label_mapping converte le etichette valide in ID classe contigui da 0 a 18 e assegna 255 alle etichette ignorate e void, in modo che vengano escluse dalla loss e dalle metriche durante l'addestramento e la validazione.

Commenti