Cityscapes-Datensatz#
Das Cityscapes Dataset ist ein großer semantic segmentation Benchmark urbaner Straßenszenen aus 50 europäischen Städten mit 2.975 fein annotierten Trainingsbildern und 500 Validierungsbildern in 19 Klassen. Es ist eines der am häufigsten verwendeten Datasets für die Erforschung des autonomen Fahrens und das Verstehen urbaner Szenen mit Ultralytics YOLO Modellen.
Hauptfunktionen#
- Cityscapes feine Annotationen umfassen 2.975 Trainingsbilder und 500 Validierungsbilder in 19 Klassen; das Archiv enthält außerdem 1.525 Testbilder, aber deren veröffentlichte Masken kennzeichnen nur das ego-Fahrzeug und den Bildrand — echte Klassenannotationen sind nicht enthalten, und offizielle Test-Set-Scores erfordern das Einreichen von Vorhersagen beim Cityscapes evaluation server.
- Das Dataset deckt 19 Evaluationsklassen ab, die sich über die Kategorien flach, Mensch, Fahrzeug, Konstruktion, Objekt, Natur und Himmel erstrecken.
- Cityscapes bietet standardisierte Evaluierungsmetriken wie mean Intersection over Union (mIoU) für die semantische Segmentierung, die einen effektiven Vergleich der Modellleistung ermöglichen.
- Bevor du dich auf den manuellen Download von ~11 GB einlässt, teste deine Trainingspipeline anhand des 8-teiligen Cityscapes8 Subsets.
Datensatzstruktur#
Die Ultralytics-Konfiguration erwartet nach der Vorbereitung das folgende Layout:
cityscapes/
├── images/
│ ├── train/
│ ├── val/
│ └── test/
└── masks/
├── train/
├── val/
└── test/Cityscapes bietet keinen automatischen Archiv-Download. Erstelle ein Konto auf der Cityscapes website und lade dann die Archive leftImg8bit_trainvaltest.zip und gtFine_trainvaltest.zip herunter (insgesamt ~11 GB) und entpacke beide in das Dataset-Stammverzeichnis cityscapes. Ultralytics ordnet sie beim ersten Training automatisch in das Layout images/ und masks/ oben um.
Die semantischen Masken sind einspurige PNG-Dateien. Die ursprünglichen Cityscapes-Label-IDs werden über den Abschnitt label_mapping auf die standardmäßigen 19 Train-IDs abgebildet, und ignorierte oder ungültige Labels werden auf 255 abgebildet, sodass sie vom Training und der Evaluierung ausgeschlossen sind.
Die öffentlich veröffentlichten gtFine/test Masken kennzeichnen nur das Ego-Fahrzeug und die Bildrandbereiche – alle anderen Klassen sind ungültig. Berechne mIoU auf dem Split val für die lokale Evaluierung; offizielle Test-Set-Scores erfordern das Einreichen von Vorhersagen beim Cityscapes evaluation server.
Anwendungen#
Cityscapes wird häufig zum Trainieren und Evaluieren von deep learning Modellen bei der semantischen Segmentierung verwendet, insbesondere für autonomous driving, fortschrittliche Fahrerassistenzsysteme (ADAS) und urbane Robotik.
Seine hochauflösenden Bilder und detaillierten Annotationen machen es auch wertvoll für die Forschung zum Echtzeit-Szenenparsing, zum Verständnis von Fahrspuren und Hindernissen sowie für jede Aufgabe, die ein dichtes pixelbasiertes Verständnis komplexer urbaner Umgebungen erfordert. Vortrainierte YOLO26 Semantische Segmentierungsmodelle erreichen bis zu 83,6 mIoU auf dem Cityscapes-Validierungssatz – siehe die Seite semantic segmentation models für die vollständige Benchmark-Tabelle. Du kannst Cityscapes-Daten während des gesamten Modellentwicklungsworkflows mit der Ultralytics Platform organisieren, visualisieren und verwalten.
Datensatz-YAML#
Eine Dataset-YAML-Datei definiert die Cityscapes-Pfade, -Klassen, das Maskenverzeichnis und das Label-Mapping. Die Datei cityscapes.yaml wird unter https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/cityscapes.yaml gepflegt.
# 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)Verwendung#
Um ein YOLO26n-sem Modell für 100 epochs auf dem Cityscapes-Dataset mit einer Bildgröße von 1024 zu trainieren, kannst du die folgenden Code-Snippets verwenden. Eine umfassende Liste der verfügbaren Argumente findest du auf der Modellseite 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)Zitate, Lizenz und Danksagungen#
Cityscapes wird unter einer custom non-commercial license veröffentlicht – kostenlos für akademische Forschung und Evaluierung, aber kommerzielle Nutzung, Lizenzierung oder Weiterverbreitung der Daten erfordert eine separate Genehmigung des Cityscapes-Teams.
Wenn du den Cityscapes-Datensatz in deiner Forschungs- oder Entwicklungsarbeit verwendest, zitiere bitte das folgende Paper:
@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}
}Wir möchten dem Cityscapes-Team für die Erstellung und Pflege dieser wertvollen Ressource für die Gemeinschaften für autonomes Fahren und Computer Vision danken. Weitere Informationen über das Cityscapes-Dataset und seine Ersteller findest du auf der Cityscapes dataset website.
FAQ#
Das Cityscapes Dataset ist ein großer semantic segmentation Benchmark urbaner Straßenszenen in 50 europäischen Städten, der weithin als Standardreferenz für die Erforschung des autonomen Fahrens und von ADAS verwendet wird. Seine 19 fein annotierten Evaluierungsklassen, hochauflösende Bilder und die standardisierte Metrik mean Intersection over Union (mIoU) machen es zu einem der am häufigsten zitierten Benchmarks für Modelle zum dichten Szenenverständnis.
Um ein YOLO26n-sem Modell auf dem Cityscapes Dataset für 100 Epochen mit einer Bildgröße von 1024 zu trainieren, kannst du die folgenden Code-Snippets verwenden. Eine detaillierte Liste der verfügbaren Argumente findest du auf der Modellseite Training.
Trainingsbeispielfrom 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)Nach der Vorbereitung ist das Dataset in die Verzeichnisse
images/{train,val,test}/undmasks/{train,val,test}/gegliedert, wobei jedes Bild mit einer einkanaligen PNG-Maske gepaart ist. Die Ultralytics YAML-Datei paart jedes Bild mit seiner Maske über das Feldmasks_dir: masksund verwendetlabel_mapping, um ursprüngliche Cityscapes-Label-IDs in die standardmäßigen 19 zusammenhängenden Train-IDs zu konvertieren, wobei ignorierte und ungültige Labels auf255abgebildet werden. Die Masken des Splitstestkennzeichnen nur das Ego-Fahrzeug und die Randbereiche, verwende dahervalfür lokale mIoU-Prüfungen.Ja. Erstelle ein Konto auf der Cityscapes website und lade die Archive
leftImg8bit_trainvaltest.zipundgtFine_trainvaltest.zipherunter (insgesamt ~11 GB). Entpacke beide in das Dataset-Stammverzeichniscityscapes– Ultralytics ordnet sie beim ersten Training automatisch in das erwartete Layoutimages/undmasks/um.Cityscapes Quellmasken speichern ursprüngliche Label-IDs, die sich von den 19 Train-IDs unterscheiden, die für die Evaluierung verwendet werden. Der Abschnitt
label_mappingkonvertiert gültige Labels in zusammenhängende Klassen-IDs0–18und weist255ignorierten und ungültigen Labels zu, sodass sie während des Trainings und der Validierung vom Verlust und den Metriken ausgeschlossen sind.Nein. Cityscapes wird unter einer non-commercial license veröffentlicht, die akademische Forschung, Lehre und Evaluierung erlaubt, aber die kommerzielle Nutzung, Lizenzierung oder den Verkauf des Datasets oder abgeleiteter Werke verbietet. Wende dich für kommerzielle Lizenzierungsoptionen direkt an das Cityscapes-Team.