Meet YOLO26: next-gen vision AI.

Link to this sectionCityscapes-Datensatz#

Der Cityscapes-Datensatz ist ein groß angelegter Benchmark für semantische Segmentierung, der sich auf urbane Straßenszenen in 50 europäischen Städten konzentriert. Er bietet hochwertige Annotationen auf Pixelebene und ist einer der am häufigsten verwendeten Datensätze für die Forschung zum autonomen Fahren und zum Verständnis urbaner Szenen mit Ultralytics YOLO-Modellen.

Link to this sectionHauptmerkmale#

  • Die feinen Annotationen von Cityscapes umfassen 2.975 Trainingsbilder, 500 Validierungsbilder und 1.525 Testbilder.
  • Der Datensatz deckt 19 Evaluationsklassen ab, die sich auf Kategorien wie Straße, Fahrzeug, Mensch, Bauwerk, Objekt, Natur und Himmel erstrecken.
  • Cityscapes bietet standardisierte Evaluationsmetriken wie die mean Intersection over Union (mIoU) für 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 Trainings-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 entpacke sie in das Datensatz-Stammverzeichnis; 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, Spurerkennung, Hindernisverständnis und jede Aufgabe, die ein dichtes Verständnis komplexer urbaner Umgebungen auf Pixelebene erfordert.

Link to this sectionDatensatz-YAML#

Eine Datensatz-YAML-Datei definiert die Cityscapes-Pfade, Klassen, das Maskenverzeichnis und die Label-Zuordnung. 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 sectionNutzung#

Um ein YOLO26n-sem-Modell auf dem Cityscapes-Datensatz für 100 Epochen 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 Seite Training für Modelle.

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 für die Erstellung und Pflege dieser wertvollen Ressource für die Communities des autonomen Fahrens und der Computer Vision danken. Weitere Informationen über den Cityscapes-Datensatz und seine Ersteller findest du auf der Cityscapes-Datensatz-Website.

Link to this sectionFAQ#

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

Der Cityscapes-Datensatz ist ein groß angelegter Benchmark für semantische Segmentierung, der sich auf urbane 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 des autonomen Fahrens und des Verständnisses urbaner Szenen. 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 auf dem Cityscapes-Datensatz 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 Seite Training für Modelle.

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 den Verzeichnissen images/{train,val,test}/ und masks/{train,val,test}/ organisiert, wobei jedes Bild mit einer einkanaligen PNG-Maske gepaart ist. Die Ultralytics-YAML-Datei verknüpft jedes Bild über das Feld masks_dir: masks mit seiner Maske und verwendet label_mapping, um die ursprünglichen Cityscapes-Label-IDs in die standardmäßigen 19 zusammenhängenden Trainings-IDs umzuwandeln, wobei ignorierte und leere Labels auf 255 abgebildet werden.

Link to this sectionMuss ich Cityscapes manuell herunterladen?#

Ja. Cityscapes erfordert die Zustimmung zu den Datensatzbedingungen auf der offiziellen Website. Lade leftImg8bit und gtFine herunter und entpacke sie in das cityscapes-Datensatz-Stammverzeichnis, bevor du den Vorbereitungsblock in cityscapes.yaml verwendest, um das erwartete images/- und masks/-Layout zu erstellen.

Link to this sectionWarum verwendet Cityscapes label_mapping?#

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

Kommentare