Meet YOLO26: next-gen vision AI.

Link to this sectionCityscapes-Datensatz#

Das Cityscapes Dataset ist ein umfangreicher Benchmark für semantische Segmentierung, der sich auf urbane Straßenszenen aus 50 europäischen Städten konzentriert. Er bietet qualitativ hochwertige Annotationen auf Pixelebene und ist eines der am häufigsten verwendeten Datasets für die Forschung im Bereich autonomes Fahren und das Verständnis urbaner Szenen mit Ultralytics YOLO Modellen.

Link to this sectionHauptfunktionen#

  • Die feinen Annotationen von Cityscapes umfassen 2.975 Trainingsbilder, 500 Validierungsbilder und 1.525 Testbilder.
  • Der Datensatz deckt 19 Evaluationsklassen ab, die sich auf die Kategorien Straße, Fahrzeug, Mensch, Bauwerk, Objekt, Natur und Himmel verteilen.
  • Cityscapes bietet standardisierte Evaluationsmetriken wie die mean Intersection over Union (mIoU) für die semantische Segmentierung, was einen effektiven Vergleich der Modellleistung ermöglicht.

Link to this sectionDatensatzstruktur#

Die Ultralytics-Konfiguration erwartet nach der Vorbereitung das folgende Layout:

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

Die semantischen Masken sind einkanalige PNG-Dateien. Die ursprünglichen Cityscapes-Label-IDs werden über den label_mapping-Abschnitt auf die standardmäßigen 19 Train-IDs abgebildet, und ignorierte oder leere Labels werden auf 255 gesetzt, damit sie vom Training und der Evaluierung ausgeschlossen werden. Lade die offiziellen leftImg8bit- und gtFine-Archive von der Cityscapes-Website herunter und extrahiere sie in das Dataset-Root-Verzeichnis; der Vorbereitungsblock in cityscapes.yaml organisiert dann Bilder und Masken in diesem Layout.

Link to this sectionAnwendungen#

Cityscapes wird häufig zum Trainieren und Evaluieren von Deep Learning Modellen zur semantischen Segmentierung verwendet, insbesondere für autonomes Fahren, fortschrittliche Fahrerassistenzsysteme (ADAS) und urbane Robotik.

Seine hochauflösenden Bilder und detaillierten Annotationen machen ihn auch wertvoll für die Forschung an Echtzeit-Szenenanalyse, Spur- und Hinderniserkennung sowie jede Aufgabe, die ein dichtes Verständnis komplexer städtischer Umgebungen auf Pixelebene erfordert.

Link to this sectionDatensatz-YAML#

Eine YAML-Datei für Datensätze 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/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)

Link to this sectionVerwendung#

Um ein YOLO26n-sem Modell für 100 Epochen mit einer Bildgröße von 1024 auf dem Cityscapes-Datensatz zu trainieren, kannst du die folgenden Code-Schnipsel verwenden. Eine vollständige Liste der verfügbaren Argumente findest du auf der Seite zum Modell-Training.

Trainingsbeispiel
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)

Link to this sectionZitate und Danksagungen#

Wenn du den Cityscapes-Datensatz in deiner Forschungs- oder Entwicklungsarbeit verwendest, zitiere bitte das folgende Paper:

Zitat
@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 dafür danken, dass es diese wertvolle Ressource für die Communities des autonomen Fahrens und der Computer Vision erstellt und gepflegt hat. Weitere Informationen über den Cityscapes-Datensatz und seine Ersteller findest du auf der Cityscapes-Website.

Link to this sectionFAQ#

Link to this sectionWas ist der Cityscapes-Datensatz und warum ist er wichtig für Computer Vision?#

Der Cityscapes Datensatz ist ein groß angelegter semantischer Segmentierungs- Benchmark, der sich auf städtische Straßenszenen in 50 europäischen Städten konzentriert. Er enthält 5.000 fein annotierte Bilder in 19 Evaluationsklassen und ist damit eine grundlegende Ressource für die Forschung im Bereich autonomes Fahren und urbanes Szenenverständnis. Seine hochauflösenden Bilder, dichten Annotationen und die standardisierte Metrik mean Intersection over Union (mIoU) machen ihn ideal für das Benchmarking von Modellen zur dichten Vorhersage.

Link to this sectionWie kann ich ein YOLO-Modell mit dem Cityscapes-Datensatz trainieren?#

Um ein YOLO26n-sem Modell für 100 Epochen mit einer Bildgröße von 1024 auf dem Cityscapes-Datensatz zu trainieren, kannst du die folgenden Code-Schnipsel verwenden. Eine detaillierte Liste der verfügbaren Argumente findest du auf der Seite zum Modell-Training.

Trainingsbeispiel
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)

Link to this sectionWie ist der Cityscapes-Datensatz strukturiert?#

Nach der Vorbereitung ist der Datensatz in die Verzeichnisse images/{train,val,test}/ und masks/{train,val,test}/ unterteilt, wobei jedes Bild mit einer einkanaligen PNG-Maske gepaart ist. Die Ultralytics YAML-Datei ordnet jedes Bild über das Feld masks_dir: masks seiner Maske zu und verwendet label_mapping, um die ursprünglichen Cityscapes-Label-IDs in die standardmäßigen 19 aufeinanderfolgenden Train-IDs umzuwandeln, wobei ignorierte und leere Labels auf 255 abgebildet werden.

Link to this sectionMuss ich Cityscapes manuell herunterladen?#

Ja. Cityscapes erfordert die Akzeptanz der Datensatzbedingungen auf der offiziellen Website. Lade leftImg8bit und gtFine herunter, extrahiere sie in das cityscapes Dataset-Root-Verzeichnis und verwende dann den Vorbereitungsblock in cityscapes.yaml, um das erwartete images/- und masks/-Layout zu erstellen.

Link to this sectionWarum verwendet Cityscapes label_mapping?#

Die Quellmasken von Cityscapes enthalten ursprüngliche Label-IDs, die sich von den 19 Train-IDs unterscheiden, die für die Evaluierung verwendet werden. Der Abschnitt label_mapping konvertiert gültige Labels in fortlaufende Klassen-IDs von 0 bis 18 und weist ignorierte sowie leere Labels 255 zu, damit sie während des Trainings und der Validierung von der Verlustberechnung und den Metriken ausgeschlossen werden.

Kommentare