YOLO Vision 2026:

Übersicht über semantische Segmentierungsdatensätze#

Semantic Segmentation weist jedem Pixel in einem Bild ein Klassenlabel zu. Im Gegensatz zur Instanzsegmentierung trennt die semantische Segmentierung keine einzelnen Objekte derselben Klasse. Das Trainingsziel ist eine dichte Klassenkarte, in der jedes Pixel eine Klassen-ID speichert.

Dieser Leitfaden erklärt das Datensatzformat, das von Ultralytics YOLO Modellen für semantische Segmentierung verwendet wird, und listet die integrierten Datensatzkonfigurationen auf, die für das Training und die Validierung verfügbar sind.

Unterstützte Datensatzformate#

Es werden zwei Label-Formate unterstützt. Der Dataset-Loader wählt PNG-Masken aus, wenn das Dataset-YAML einen masks_dir-Schlüssel definiert oder wenn im Stammverzeichnis des Datasets neben den Bildern bereits ein masks/-Ordner existiert; andernfalls greift er auf YOLO-Polygon-Labels zurück.

PNG-Maskenformat#

Datensätze für semantische Segmentierung verwenden eine Bilddatei und eine Maskendatei pro Stichprobe. Die Maske ist ein einkanaliges Bild, meist PNG, bei dem jeder Pixelwert der Klassenindex für das entsprechende Bildpixel ist.

  • Pixelwerte 0, 1, 2, ... repräsentieren Klassen-IDs aus der names-Zuordnung des Datasets.
  • Der Pixelwert 255 wird als Ignorier-Label behandelt und von der Verlust- und Metrikberechnung ausgeschlossen.
  • Maskendateien sollten denselben Dateinamenstamm wie die dazugehörige Bilddatei verwenden, zum Beispiel frankfurt_000000_000294.png.
  • Masken werden standardmäßig als .png aufgelöst; falls diese fehlen, werden auch andere unterstützte Bildformate akzeptiert. Verwende verlustfreie Formate wie .png oder .tiff, da verlustbehaftete Komprimierung (z. B. .jpg) die Pixelwerte der Klassen-ID beschädigt.

Das Standard-Layout speichert Bilder und Masken in parallelen Ordnern. Der masks_dir-Wert aus dem Dataset-YAML ersetzt die Pfadkomponente images, um Masken zu finden.

dataset/
├── images/
│   ├── train/
│   └── val/
└── masks/
    ├── train/
    └── val/

Ein Bild unter images/train/aachen_000000_000019.png wird beispielsweise mit einer Maske unter masks/train/aachen_000000_000019.png gepaart, wenn masks_dir: masks.

YOLO Polygon-Labelformat#

Wenn dein Dataset bereits Ultralytics YOLO-Polygon-Labels enthält (eine .txt pro Bild mit <class-index> <x1> <y1> <x2> <y2> ...-Zeilen), kannst du die semantische Segmentierung direkt damit trainieren – es ist keine PNG-Maskenkonvertierung erforderlich. Im Dataset-Format für die Instanzsegmentierung findest du Informationen zum zeilenbasierten Layout.

Dieser Pfad wird automatisch ausgewählt, wenn das Dataset-YAML masks_dir weghlässt und im Stammverzeichnis des Datasets neben deinen Bildern kein masks/-Ordner existiert – entferne oder benenne übrig gebliebene masks/-Ordner um, da der Loader sonst in den PNG-Masken-Modus wechselt und dort nach Masken sucht. Verhalten:

  • Polygone werden beim Laden in eine semantische Maske pro Bild umgewandelt und nach Fläche sortiert, sodass kleinere Objekte in Überlappungsbereichen die größeren überschreiben.
  • Mehrklassen (N > 1 in names): Eine zusätzliche background-Klasse wird nach deinen deklarierten Klassen für Pixel angehängt, die von keinem Polygon abgedeckt werden. Das Modell wird mit N + 1-Ausgabekanälen erstellt und der letzte Kanal ist der Hintergrund.
  • Einzelklasse (N == 1 in names): Wird weiterhin als 1 Klasse trainiert. Die Maske ist binär, wobei deine deklarierte Klasse als 1 angezeigt wird und Pixel, die von keinem Polygon abgedeckt werden, als 0. Es wird keine zusätzliche Hintergrundklasse zu names hinzugefügt.
  • Pixel, die durch Augmentierungs-Padding (z. B. zufälliges Zuschneiden) hinzugefügt wurden, verwenden weiterhin 255 als Ignorier-Label.

Nutze diesen Pfad, wenn deine Daten bereits als Instanz-Polygone gelabelt sind und du ein Modell für semantische Segmentierung aus denselben Dateien erstellen möchtest.

Datensatz-YAML-Format#

Datensätze für semantische Segmentierung werden mit YAML-Dateien konfiguriert. Die Hauptfelder sind:

SchlüsselBeschreibung
pathStammverzeichnis des Datensatzes.
trainPfad des Trainingsbildes relativ zu path oder ein absoluter Pfad.
valPfad des Validierungsbildes relativ zu path oder ein absoluter Pfad.
testOptionaler Pfad zu Testbildern.
masks_dirVerzeichnisname für semantische Masken. Lass diesen Schlüssel weg (ohne einen masks/-Ordner im Stammverzeichnis des Datasets), um zum YOLO-Polygon-Label-Format zu wechseln.
namesZuordnung von Klassen-ID zu Klassennamen.
label_mappingOptionale Zuordnung von Quelldataset-IDs zu Trainings-IDs oder ignore_label.
ultralytics/cfg/datasets/cityscapes8.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# Cityscapes semantic segmentation dataset (19 classes)
# Documentation: https://docs.ultralytics.com/datasets/semantic/cityscapes8
# Example usage: yolo semantic train data=cityscapes8.yaml model=yolo26n-sem.pt
# parent
# ├── ultralytics
# └── datasets
#     └── cityscapes8 ← downloads here (small subset)
#         └── images
#         └── masks

# Dataset root directory
path: cityscapes8 # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 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

# Download URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/cityscapes8.zip

Verwende label_mapping, wenn die Quell-Masken-IDs nicht bereits mit zusammenhängenden Trainingsklassen-IDs übereinstimmen. Cityscapes und ADE20K enthalten Zuordnungen, die ursprüngliche Label-IDs in YOLO-Trainings-IDs für die semantische Segmentierung konvertieren und nicht verwendete Labels ignorieren.

Verwendung#

Trainiere ein YOLO26 Modell für semantische Segmentierung mit Python oder CLI:

Beispiel
from ultralytics import YOLO

# Load a pretrained semantic segmentation model
model = YOLO("yolo26n-sem.pt")

# Train on the Cityscapes8 semantic segmentation dataset
results = model.train(data="cityscapes8.yaml", epochs=100, imgsz=1024)

Unterstützte Datensätze#

Ultralytics stellt Dataset-YAML-Dateien für die semantische Segmentierung für diese Datasets bereit. Auf der Task-Seite zur semantischen Segmentierung findest du die vollständige Benchmark-Tabelle für vortrainierte Modelle.

  • Cityscapes: Datensatz zur semantischen Segmentierung von städtischen Straßenszenen mit 19 Trainingsklassen.
  • Cityscapes8: Ein Cityscapes-Subset mit 8 Bildern für schnelle Tests und CI-Prüfungen.
  • ADE20K: Szenen-Parsing-Datensatz mit 150 semantischen Klassen.

Hinzufügen deines eigenen Datensatzes#

Option A – PNG-Masken#

  1. Speichere deine Bilder in Split-Ordnern wie images/train und images/val.
  2. Speichere pro Bild eine einkanalige Maske in den gespiegelten Maskenordnern, wie masks/train und masks/val.
  3. Stelle sicher, dass die Pixelwerte der Masken Klassen-IDs sind. Verwende 255 für Pixel, die ignoriert werden sollen.
  4. Erstelle ein Dataset-YAML mit path, train, val, masks_dir und names.
  5. Füge label_mapping nur hinzu, wenn deine Masken-IDs in zusammenhängende Trainings-IDs konvertiert werden müssen.
path: path/to/my-semantic-dataset
train: images/train
val: images/val
masks_dir: masks

names:
    0: background
    1: road
    2: building

Option B – Polygon-Label#

  1. Ordne Bilder und .txt-Polygondateien genau wie bei der Instanzsegmentierung an.
  2. Erstelle ein Dataset-YAML mit path, train, val und nameslass masks_dir weg.
  3. Stelle sicher, dass im Stammverzeichnis deines Datasets neben deinen Bildern kein masks/-Ordner existiert – allein seine Anwesenheit schaltet den Loader in den PNG-Masken-Modus, selbst ohne masks_dir im YAML.
  4. Füge names keinen „Hintergrund“-Eintrag hinzu. Bei Mehrklassen-Datasets hängt der Loader automatisch einen an; bei Einheitsklassen-Datasets bleibt das Training bei 1 Klasse – deine deklarierte Klasse wird zu 1 in der Maske und nicht abgedeckte Pixel werden zu 0.
path: path/to/my-polygon-dataset
train: images/train
val: images/val

names:
    0: person
    1: car

Die Ultralytics Platform bietet ein Polygon-Annotationstool für semantische Aufgaben sowie SAM-gestützte Smart-Annotation – annotiere direkt im Browser und exportiere oder trainiere mit dem resultierenden Dataset mit Polygon-Labels, ohne dieses Layout manuell einrichten zu müssen.

FAQ#

  • Semantische Segmentierungsmasken sind dichte Pixel-Maps. Jedes Pixel speichert eine Klassen-ID, und es gibt eine Maskenbilddatei pro Trainingsbild. Instanzsegmentierungs-Labels in Ultralytics YOLO verwenden Textdateien mit Polygon-Koordinaten, eine Zeile pro Objektinstanz.

  • Der Pixelwert 255 wird als Ignorier-Label verwendet. Diese Pixel werden während der Verlust- und Metrikberechnung übersprungen, was für leere Regionen, unannotierte Pixel oder Klassen außerhalb des Trainings-Label-Sets nützlich ist.

  • Ja. Jede semantische Maske sollte denselben Dateinamenstamm wie das entsprechende Bild haben. Der Dataset-Loader ersetzt die Verzeichniskomponente images durch masks_dir und sucht nach passenden Maskendateien. Dabei greift er auf andere unterstützte Bildformate zurück (.jpg, .tiff usw.), falls keine .png-Maske gefunden wird – allerdings werden nur verlustfreie Formate empfohlen, da der Fallback dies nicht erzwingt.

  • Ja, wenn sie bereits mit deinen names-Klassen-IDs übereinstimmen. Wenn das Quelldataset nicht zusammenhängende IDs verwendet oder Labels enthält, die ignoriert werden sollen, füge einen label_mapping-Abschnitt hinzu, um Quellpixelwerte in Trainings-IDs zu konvertieren.

  • Ja. Instanzsegmentierungs-Datasets verwenden Ultralytics YOLO-Polygon-Labels (eine .txt pro Bild mit <class-index> <x1> <y1> <x2> <y2> ...-Zeilen), und dieselben Dateien können für die semantische Segmentierung wiederverwendet werden – lasse dazu einfach masks_dir aus dem Dataset-YAML weg und stelle sicher, dass im Stammverzeichnis deines Datasets neben den Bildern kein masks/-Ordner existiert (allein seine Anwesenheit löst den PNG-Masken-Modus aus, selbst wenn masks_dir nicht gesetzt ist). Der Loader konvertiert Polygone dann im Flug in Pro-Bild-Masken. Für Mehrklassen-Datasets (N > 1) wird eine zusätzliche background-Klasse angehängt und das Modell mit N + 1-Ausgabekanälen erstellt. Für Einheitsklassen-Datasets (N == 1) bleibt das Training bei 1 Klasse – die Maske zeigt deine deklarierte Klasse als 1 und nicht abgedeckte Pixel als 0.

  • Ultralytics enthält einsatzbereite Dataset-YAML-Dateien für Cityscapes (19 Klassen städtischer Szenen), das leichtgewichtige Cityscapes8-Subset für Pipeline-Tests und ADE20K (150 Szenenanalyse-Klassen). Jede Seite dokumentiert die genaue Klassenliste, die Download-Schritte und ein verifiziertes Trainingsbeispiel.

Kommentare