Link to this sectionSemantische Segmentierung#
Semantische Segmentierung weist jedem Pixel in einem Bild ein Klassen-Label zu und erzeugt so eine dichte Klassenkarte, die die gesamte Szene abdeckt. Im Gegensatz zur Instanzsegmentierung, bei der einzelne Objekte getrennt werden, gruppiert die semantische Segmentierung alle Pixel derselben Klasse, unabhängig davon, wie viele verschiedene Objekte vorhanden sind.
Die Ausgabe eines semantischen Segmentierungsmodells ist eine einzelne, nach Höhe und Breite bemessene Klassenkarte, bei der jeder Pixelwert einer vorhergesagten Klassen-ID entspricht. Dies macht die semantische Segmentierung ideal für Szenenanalysen wie autonomes Fahren, medizinische Bildgebung und Landnutzungskartierung.
Verwende task=semantic oder die yolo semantic CLI-Aufgabe für die semantische Segmentierung. YOLO26-Modell-Dateien für die semantische Segmentierung verwenden das Suffix -sem, wie z. B. yolo26n-sem.pt.
Link to this sectionModelle#
Die auf dem Cityscapes-Datensatz vortrainierten YOLO26-Modelle für die semantische Segmentierung sind unten aufgeführt.
Modelle werden bei der ersten Verwendung automatisch vom neuesten Ultralytics-Release heruntergeladen.
| Modell | Größe (Pixel) | mIoUval | Geschwindigkeit RTX3090 PyTorch (ms) | Parameter (M) | FLOPs (B) |
|---|---|---|---|---|---|
| YOLO26n-sem | 1024 × 2048 | 78.3 | 4.4 ± 0.0 | 1.6 | 22.7 |
| YOLO26s-sem | 1024 × 2048 | 80.8 | 8.4 ± 0.0 | 6.5 | 88.8 |
| YOLO26m-sem | 1024 × 2048 | 82.0 | 19.9 ± 0.1 | 14.3 | 304.5 |
| YOLO26l-sem | 1024 × 2048 | 82.9 | 26.5 ± 0.1 | 17.9 | 384.7 |
| YOLO26x-sem | 1024 × 2048 | 83.6 | 48.9 ± 0.2 | 40.2 | 861.7 |
- mIoUval-Werte gelten für Einzelmodelle in Einzelskalierung auf dem Validierungsset von Cityscapes.
Reproduziere dies mityolo semantic val data=cityscapes.yaml device=0 imgsz=2048 - Geschwindigkeitsmetriken werden über die Bilder des Cityscapes-Validierungssets auf einer RTX3090-Instanz gemittelt.
Reproduziere dies mityolo semantic val data=cityscapes.yaml batch=1 device=0|cpu imgsz=2048 - Params und FLOPs-Werte beziehen sich auf das fusionierte Modell nach
model.fuse(), das Conv- und BatchNorm-Schichten zusammenführt. Vortrainierte Checkpoints behalten die vollständige Trainingsarchitektur bei und können höhere Anzahlen aufweisen.
Link to this sectionTrainieren#
Trainiere YOLO26n-sem auf dem Cityscapes8-Datensatz für 100 Epochen bei einer Bildgröße von 1024. Eine vollständige Liste der verfügbaren Argumente findest du auf der Seite Konfiguration.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-sem.yaml") # build a new model from YAML
model = YOLO("yolo26n-sem.pt") # load a pretrained model (recommended for training)
model = YOLO("yolo26n-sem.yaml").load("yolo26n-sem.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="cityscapes8.yaml", epochs=100, imgsz=1024)Details zum train-Modus findest du auf der Trainieren-Seite.
Link to this sectionDatensatzformat#
Datensätze zur semantischen Segmentierung verwenden einkanalige Maskenbilder, typischerweise als PNG, wobei jeder Pixelwert eine Klassen-ID repräsentiert. Pixel mit dem Wert 255 werden als "ignorieren" behandelt und von der Verlustberechnung ausgeschlossen. Das YAML des Datensatzes sollte Pfade zu Bildern und deren zugehörigen Maskenverzeichnissen angeben. Einzelheiten zum Format findest du im Leitfaden für Datensätze zur semantischen Segmentierung. Unterstützte Datensätze sind u. a. Cityscapes und ADE20K.
Link to this sectionValidierung#
Validiere die Genauigkeit des trainierten YOLO26n-sem-Modells auf einem Datensatz zur semantischen Segmentierung. Übergebe data explizit, damit die Validierung das beabsichtigte Datensatz-YAML verwendet.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-sem.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Validate the model
metrics = model.val(data="cityscapes.yaml")
metrics.miou # mean Intersection over Union
metrics.pixel_accuracy # overall pixel accuracyLink to this sectionVorhersage#
Verwende ein trainiertes YOLO26n-sem-Modell, um Vorhersagen auf Bildern durchzuführen.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-sem.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Predict with the model
results = model("https://ultralytics.com/images/bus.jpg") # predict on an image
# Access the results
for result in results:
semantic_mask = result.semantic_mask.data # class map, shape (H,W), integer dtype selected by class countSiehe vollständige predict Modus-Details auf der Predict Seite.
Link to this sectionErgebnisausgabe#
Die semantische Segmentierung mit YOLO liefert ein Results-Objekt pro Bild. Jedes Ergebnis speichert eine dichte Klassenkarte für das gesamte Bild anstelle einer Liste von Objektmasken. Pixel mit der gleichen vorhergesagten Klasse teilen sich die gleiche Klassen-ID, selbst wenn sie zu unterschiedlichen Objekten gehören.
| Attribut | Typ | Form | Beschreibung |
|---|---|---|---|
result.semantic_mask | SemanticMask | (H,W) | Dichte Klassenkarte. |
result.semantic_mask.data | torch.uint8torch.int16torch.int32 | (H,W) | Klassen-IDs; der Datentyp wird nach Klassenanzahl ausgewählt. |
result.masks | - | - | Keine Instanzmasken. |
result.boxes | - | - | Keine Instanz-Boxen/Konfidenzwerte. |
result.masks.xy | - | - | Keine Standard-Polygone. |
Für aufgabenspezifische Results Felder über alle Aufgaben hinweg, siehe den Abschnitt Predict Ergebnisse nach Aufgabe.
Link to this sectionInstanz- vs. semantische Segmentierung#
| Aspekt | Instanzsegmentierung (task="segment") | Semantische Segmentierung (task="semantic") |
|---|---|---|
| Vorhersageziel | Segmentierung jedes erkannten Objekts separat | Zuweisung einer Klassen-ID für jeden Pixel |
| Ausgabefeld | result.masks | result.semantic_mask |
| Hauptdaten | result.masks.data | result.semantic_mask.data |
| Form | (N,H,W) | (H,W) |
| Pixelwerte | Binäre Maskenwerte: 0 oder 1 | Klassen-IDs: 0, 1, 2, ... |
| Datentyp | torch.uint8 | torch.uint8torch.int16torch.int32 |
| Objekte der gleichen Klasse | Werden als separate Instanzen beibehalten | Werden in derselben Klassenregion zusammengeführt |
| Polygone | Ja, durch result.masks.xy und result.masks.xyn | Standardmäßig keine Polygonausgabe |
| Boxen und Konfidenz | Ja, durch result.boxes | Keine instanzbasierten Boxen oder Konfidenzwerte |
| Typische Verwendung | Zählen, Tracking, Zuschneiden, objektbezogene Messung | Dichte Szenenkennzeichnung, befahrbare Fläche, Landnutzung, medizinische Regionen |
Link to this sectionExportieren#
Exportiere ein YOLO26n-sem-Modell in ein anderes Format wie ONNX, CoreML usw.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-sem.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Export the model
model.export(format="onnx")Die verfügbaren Exportformate für YOLO26 zur semantischen Segmentierung sind in der Tabelle unten aufgeführt. Du kannst in jedes Format unter Verwendung des format-Arguments exportieren, z. B. format='onnx' oder format='engine'. Du kannst direkt mit den exportierten Modellen vorhersagen oder validieren, z. B. yolo predict model=yolo26n-sem.onnx. Anwendungsbeispiele werden für dein Modell nach Abschluss des Exports angezeigt.
| Format | format Argument | Modell | Metadaten | Argumente |
|---|---|---|---|---|
| PyTorch | - | yolo26n-sem.pt | ✅ | - |
| TorchScript | torchscript | yolo26n-sem.torchscript | ✅ | imgsz, half, dynamic, optimize, nms, batch, device |
| ONNX | onnx | yolo26n-sem.onnx | ✅ | imgsz, half, int8, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n-sem_openvino_model/ | ✅ | imgsz, half, dynamic, int8, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n-sem.engine | ✅ | imgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n-sem.mlpackage | ✅ | imgsz, dynamic, half, int8, nms, batch, device |
| TF SavedModel | saved_model | yolo26n-sem_saved_model/ | ✅ | imgsz, keras, int8, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n-sem.pb | ❌ | imgsz, batch, device |
| TF Lite | tflite | yolo26n-sem.tflite | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| TF Edge TPU | edgetpu | yolo26n-sem_edgetpu.tflite | ✅ | imgsz, int8, data, fraction, device |
| TF.js | tfjs | yolo26n-sem_web_model/ | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-sem_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n-sem.mnn | ✅ | imgsz, batch, int8, half, device |
| NCNN | ncnn | yolo26n-sem_ncnn_model/ | ✅ | imgsz, half, batch, device |
| IMX500 | imx | yolo26n-sem_imx_model/ | ✅ | imgsz, int8, data, fraction, nms, device |
| RKNN | rknn | yolo26n-sem_rknn_model/ | ✅ | imgsz, batch, name, int8, data, fraction, device |
| ExecuTorch | executorch | yolo26n-sem_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n-sem_axelera_model/ | ✅ | imgsz, batch, int8, data, fraction, device |
| DEEPX | deepx | yolo26n-sem_deepx_model/ | ✅ | imgsz, int8, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n-sem_qnn_model/ | ✅ | imgsz, batch, name, int8, data, fraction, device |
Siehe vollständige export-Details auf der Export Seite.
Link to this sectionFAQ#
Link to this sectionWie trainiere ich ein YOLO26-Modell für die semantische Segmentierung auf einem benutzerdefinierten Datensatz?#
Um ein YOLO26 semantisches Segmentierungsmodell auf einem benutzerdefinierten Datensatz zu trainieren, musst du PNG-Maskenbilder vorbereiten, bei denen jeder Pixelwert für eine Klassen-ID (0, 1, 2, ...) steht und Pixel mit dem Wert 255 während des Trainings ignoriert werden. Erstelle eine Dataset-YAML-Datei, die auf deine Bild- und Maskenverzeichnisse verweist, und trainiere dann das Modell:
from ultralytics import YOLO
# Load a pretrained YOLO26 semantic segmentation model
model = YOLO("yolo26n-sem.pt")
# Train the model
results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=512)Prüfe die Konfigurationsseite für weitere verfügbare Argumente.
Link to this sectionWas ist der Unterschied zwischen Instanzsegmentierung und semantischer Segmentierung?#
Instanzsegmentierung und semantische Segmentierung sind beides Aufgaben auf Pixelebene, unterscheiden sich jedoch grundlegend:
- Semantische Segmentierung weist jedem Pixel ein Klassen-Label zu, unterscheidet aber nicht zwischen einzelnen Objekten derselben Klasse. Zum Beispiel teilen sich alle Autos in einer Szene dasselbe Klassen-Label.
- Instanzsegmentierung identifiziert jedes einzelne Objekt separat und erstellt für jedes Objekt unterschiedliche Masken, selbst wenn sie zur selben Klasse gehören.
Semantische Segmentierung eignet sich am besten für Aufgaben zum Szenenverständnis wie autonomes Fahren und Landnutzungskartierung, während Instanzsegmentierung bevorzugt wird, wenn es darauf ankommt, einzelne Objekte zu zählen oder zu verfolgen.
Link to this sectionKann ich Daten zur Instanzsegmentierung verwenden, um semantische Segmentierung zu trainieren?#
Ja. Wenn dein Datensatz Ultralytics YOLO Polygon-Labels verwendet (ein .txt pro Bild), lasse masks_dir in der Dataset-YAML weg, und der Loader wandelt Polygone im laufenden Betrieb in semantische Masken pro Bild um. Für Datensätze mit mehreren Klassen (N > 1) wird automatisch eine zusätzliche background-Klasse an names angehängt. Für Datensätze mit nur einer Klasse (N == 1) bleibt das Training bei 1 Klasse — deine definierte Klasse wird zu 1 in der Maske und nicht abgedeckte Pixel werden zu 0. Details findest du im Leitfaden für Datensätze zur semantischen Segmentierung.
Link to this sectionWelche Datensätze werden für semantische Segmentierung unterstützt?#
Ultralytics YOLO26 bietet integrierte Konfigurationen für mehrere Datensätze zur semantischen Segmentierung:
- Cityscapes: Städtische Straßenszenen mit 19 Klassen, weit verbreitet in der Forschung zum autonomen Fahren.
- ADE20K: Ein groß angelegter Datensatz zur Szenenanalyse mit 150 Klassen.
Du kannst auch jeden benutzerdefinierten Datensatz verwenden, der PNG-Masken-Annotationen bereitstellt, bei denen Pixelwerte den Klassen-IDs entsprechen.
Link to this sectionWie validiere ich ein vortrainiertes YOLO26 semantisches Segmentierungsmodell?#
Validiere ein vortrainiertes YOLO26 semantisches Segmentierungsmodell mit der für die Evaluierung verwendeten Dataset-YAML:
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n-sem.pt")
# Validate the model
metrics = model.val(data="cityscapes.yaml")
print("Mean IoU:", metrics.miou)
print("Pixel Accuracy:", metrics.pixel_accuracy)Diese Schritte liefern dir Validierungsmetriken wie die mittlere Intersection over Union (mIoU) und die Pixelgenauigkeit, welche Standardmaße für die Bewertung der Leistung bei der semantischen Segmentierung sind.
Link to this sectionWie kann ich ein YOLO26 semantisches Segmentierungsmodell in das ONNX-Format exportieren?#
Exportiere ein YOLO26 semantisches Segmentierungsmodell mit Python- oder CLI-Befehlen in das ONNX-Format:
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n-sem.pt")
# Export the model to ONNX format
model.export(format="onnx")Weitere Details zum Export in verschiedene Formate findest du auf der Seite Export.