Link to this sectionSemantische Segmentierung#
Semantische Segmentierung weist jedem Pixel in einem Bild ein Klassenlabel zu und erzeugt eine dichte Klassenkarte, die die gesamte Szene abdeckt. Im Gegensatz zur Instanzsegmentierung, die einzelne Objekte voneinander trennt, gruppiert die semantische Segmentierung alle Pixel derselben Klasse zusammen, unabhängig davon, wie viele verschiedene Objekte vorhanden sind.
Watch: How to Train Ultralytics YOLO26 Semantic Segmentation Model on Custom Dataset | Ultralytics Platform
Die Ausgabe eines semantischen Segmentierungsmodells ist eine einzelne Klassenkarte mit der Größe Höhe mal Breite, bei der jeder Pixelwert einer vorhergesagten Klassen-ID entspricht. Dies macht die semantische Segmentierung ideal für Szenenanalyse-Aufgaben wie autonomes Fahren, medizinische Bildgebung und Landbedeckungskartierung.
Verwende task=semantic oder die yolo semantic CLI-Aufgabe für semantische Segmentierung. YOLO26-Modell-Dateien für die semantische Segmentierung verwenden das Suffix -sem, wie zum Beispiel 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 beziehen sich auf ein Einzelmodell mit einer einzigen Skalierung auf dem Cityscapes-Validierungsset.
Reproduziere dies mityolo semantic val data=cityscapes.yaml device=0 imgsz=2048 - Geschwindigkeits-Metriken sind über Cityscapes-Validierungsbilder unter Verwendung einer RTX3090-Instanz gemittelt.
Reproduziere dies mityolo semantic val data=cityscapes.yaml batch=1 device=0|cpu imgsz=2048 - Params und FLOPs-Werte gelten für das gefuste Modell nach
model.fuse(), welches Conv- und BatchNorm-Layer zusammenführt. Vortrainierte Checkpoints behalten die vollständige Trainingsarchitektur bei und können höhere Anzahlen aufweisen.
Die auf dem ADE20K-Datensatz vortrainierten YOLO26-Modelle für 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-ade20k | 640 | 38,8 | 3,9 ± 0,2 | 1.6 | 4,4 |
| YOLO26s-sem-ade20k | 640 | 45.6 | 4,2 ± 0,3 | 6.5 | 17,4 |
| YOLO26m-sem-ade20k | 640 | 47,4 | 4,7 ± 0,3 | 14.3 | 59,5 |
| YOLO26l-sem-ade20k | 640 | 49.7 | 8,3 ± 0,2 | 17.9 | 75,0 |
| YOLO26x-sem-ade20k | 640 | 51.5 | 9,9 ± 0,3 | 40.2 | 168,1 |
- Die mIoUval-Werte beziehen sich auf ein Einzelmodell mit Einzelskalierung auf dem ADE20K-Validierungsdatensatz.
Reproduziere sie mityolo semantic val model=yolo26n-sem-ade20k.pt data=ade20k.yaml device=0 imgsz=640, wobeiyolo26n-sem-ade20k.ptdurch den gewünschtenyolo26*-sem-ade20k.pt-Checkpoint ersetzt wird. - Geschwindigkeitsmetriken wurden über die ADE20K-Validierungsbilder mit einer RTX3090-Instanz gemittelt.
Reproduziere sie mityolo semantic val model=yolo26n-sem-ade20k.pt data=ade20k.yaml batch=1 device=0|cpu imgsz=640, wobeiyolo26n-sem-ade20k.ptdurch den gewünschtenyolo26*-sem-ade20k.pt-Checkpoint ersetzt wird. - Params und FLOPs-Werte gelten für das gefuste Modell nach
model.fuse(), welches Conv- und BatchNorm-Layer 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 Konfigurationsseite.
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 Train-Seite.
Link to this sectionDatensatzformat#
Datensätze für semantische Segmentierung verwenden einkanalige Maskenbilder, typischerweise als PNG, bei denen jeder Pixelwert eine Klassen-ID darstellt. Pixel mit dem Wert 255 werden als "ignorieren" behandelt und von der Verlustberechnung ausgeschlossen. Die Dataset-YAML sollte Pfade zu den Bildern und den zugehörigen Maskenverzeichnissen angeben. Siehe den Leitfaden für Datensätze zur semantischen Segmentierung für Formatdetails. Unterstützte Datensätze umfassen Cityscapes und ADE20K.
Link to this sectionValidieren#
Validiere die Genauigkeit des trainierten YOLO26n-sem-Modells auf einem Dataset für semantische Segmentierung. Übergib data explizit, damit die Validierung das beabsichtigte Dataset-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 sectionVorhersagen#
Verwende ein trainiertes YOLO26n-sem-Modell, um Vorhersagen auf Bildern auszufü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 Details zum predict-Modus auf der Predict-Seite.
Link to this sectionErgebnisausgabe#
Die YOLO-semantische Segmentierung gibt ein Results-Objekt pro Bild zurück. Jedes Ergebnis speichert eine dichte Klassenkarte für das gesamte Bild anstelle einer Liste von Objektmasken. Pixel mit derselben vorhergesagten Klasse teilen sich die gleiche Klassen-ID, auch 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 dtype wird nach Klassenanzahl ausgewählt. |
result.masks | - | - | Keine Instanzmasken. |
result.boxes | - | - | Keine Instanzboxen/Konfidenzen. |
result.masks.xy | - | - | Keine Standard-Polygone. |
Für aufgaben-spezifische Results-Felder für jede Aufgabe siehe den Abschnitt Vorhersageergebnisse nach Aufgabe.
Link to this sectionInstanz- vs. semantische Segmentierung#
| Aspekt | Instanzsegmentierung (task="segment") | Semantische Segmentierung (task="semantic") |
|---|---|---|
| Vorhersageziel | Jedes erkannte Objekt separat segmentieren | Jedem Pixel eine Klassen-ID zuweisen |
| 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, ... |
| Dtype | torch.uint8 | torch.uint8torch.int16torch.int32 |
| Objekte derselben 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 Polygon-Ausgabe |
| Boxen und Konfidenz | Ja, durch result.boxes | Keine instanzbasierten Boxen oder Konfidenz-Scores |
| Typische Verwendung | Zählen, Tracking, Zuschneiden, objektbasierte Messung | Dichte Szenenkennzeichnung, befahrbare Fläche, Landbedeckung, medizinische Regionen |
Link to this sectionExportieren#
Exportiere ein YOLO26n-sem-Modell in ein anderes Format wie ONNX, CoreML, etc.
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")Verfügbare Exportformate für die YOLO26-semantische Segmentierung findest du in der Tabelle unten. Du kannst in jedes Format exportieren, indem du das format-Argument verwendest, z. B. format='onnx' oder format='engine'. Du kannst direkt auf exportierten Modellen vorhersagen oder validieren, z. B. yolo predict model=yolo26n-sem.onnx. Nutzungsbeispiele für dein Modell werden nach Abschluss des Exports angezeigt.
| Format | format-Argument | Modell | Metadaten | Argumente |
|---|---|---|---|---|
| PyTorch | - | yolo26n-sem.pt | ✅ | - |
| TorchScript | torchscript | yolo26n-sem.torchscript | ✅ | imgsz, quantize, dynamic, optimize, nms, batch, device |
| ONNX | onnx | yolo26n-sem.onnx | ✅ | imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n-sem_openvino_model/ | ✅ | imgsz, quantize, dynamic, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n-sem.engine | ✅ | imgsz, quantize, dynamic, simplify, workspace, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n-sem.mlpackage | ✅ | imgsz, dynamic, quantize, nms, batch, device |
| TF SavedModel | saved_model | yolo26n-sem_saved_model/ | ✅ | imgsz, keras, quantize, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n-sem.pb | ❌ | imgsz, batch, device |
| TF Lite | tflite | yolo26n-sem.tflite | ✅ | imgsz, quantize, nms, batch, data, fraction, device |
| TF Edge TPU | edgetpu | yolo26n-sem_edgetpu.tflite | ✅ | imgsz, quantize, data, fraction, device |
| TF.js | tfjs | yolo26n-sem_web_model/ | ✅ | imgsz, quantize, nms, batch, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-sem_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n-sem.mnn | ✅ | imgsz, batch, quantize, device |
| NCNN | ncnn | yolo26n-sem_ncnn_model/ | ✅ | imgsz, quantize, batch, device |
| IMX500 | imx | yolo26n-sem_imx_model/ | ✅ | imgsz, quantize, data, fraction, nms, device |
| RKNN | rknn | yolo26n-sem_rknn_model/ | ✅ | imgsz, batch, name, quantize, data, fraction, device |
| ExecuTorch | executorch | yolo26n-sem_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n-sem_axelera_model/ | ✅ | imgsz, batch, quantize, data, fraction, device |
| DEEPX | deepx | yolo26n-sem_deepx_model/ | ✅ | imgsz, quantize, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n-sem_qnn.onnx | ✅ | imgsz, batch, name, quantize, 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 semantische Segmentierung auf einem benutzerdefinierten Dataset?#
Um ein YOLO26-Modell für semantische Segmentierung auf einem benutzerdefinierten Dataset zu trainieren, musst du PNG-Maskenbilder vorbereiten, bei denen jeder Pixelwert eine Klassen-ID (0, 1, 2, ...) darstellt 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)Besuche die Konfigurations Seite für weitere verfügbare Argumente.
Link to this sectionWas ist der Unterschied zwischen Instanzsegmentierung und semantischer Segmentierung?#
Instanzsegmentierung und semantische Segmentierung sind beides pixelbasierte Aufgaben, unterscheiden sich aber in einem entscheidenden Punkt:
- Semantische Segmentierung weist jedem Pixel ein Klassenlabel zu, unterscheidet aber nicht zwischen einzelnen Objekten derselben Klasse. Zum Beispiel teilen sich alle Autos in einer Szene dasselbe Klassenlabel.
- Instanzsegmentierung identifiziert jedes einzelne Objekt separat und erzeugt für jedes Objekt unterschiedliche Masken, selbst wenn sie zur selben Klasse gehören.
Semantische Segmentierung eignet sich am besten für Aufgaben des Szenenverständnisses wie autonomes Fahren und Landbedeckungskartierung, während Instanzsegmentierung bevorzugt wird, wenn das Zählen oder Verfolgen einzelner Objekte wichtig ist.
Link to this sectionKann ich Instanzsegmentierungsdaten 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 konvertiert Polygone während der Laufzeit in semantische Masken pro Bild. Bei Datensätzen mit mehreren Klassen (N > 1) wird automatisch eine zusätzliche background-Klasse an die names angehängt. Bei Datensätzen mit einer einzelnen Klasse (N == 1) bleibt das Training bei 1 Klasse — deine deklarierte Klasse wird zu 1 in der Maske und unbedeckte Pixel werden zu 0. Details findest du im Leitfaden für Datensätze zur semantischen Segmentierung.
Link to this sectionWelche Datasets werden für semantische Segmentierung unterstützt?#
Ultralytics YOLO26 bietet integrierte Konfigurationen für mehrere Datasets für semantische Segmentierung:
- Cityscapes: Städtische Straßenszenen mit 19 Klassen, die weit verbreitet in der Forschung zum autonomen Fahren eingesetzt werden.
- ADE20K: Ein umfangreicher Datensatz zur Szenenanalyse mit 150 Klassen.
Du kannst auch jedes benutzerdefinierte Dataset verwenden, das PNG-Maskenannotationen bereitstellt, bei denen Pixelwerte den Klassen-IDs entsprechen.
Link to this sectionWie validiere ich ein vortrainiertes YOLO26-Modell für semantische Segmentierung?#
Validiere ein vortrainiertes YOLO26-Modell für semantische Segmentierung mit dem Dataset-YAML, das für die Evaluierung verwendet wurde:
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 den Mean Intersection over Union (mIoU) und die Pixelgenauigkeit, welche Standardmaße zur Bewertung der Leistung der semantischen Segmentierung sind.
Link to this sectionWie kann ich ein YOLO26-Modell für semantische Segmentierung in das ONNX-Format exportieren?#
Exportiere ein YOLO26-Modell für semantische Segmentierung 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 Exportieren in verschiedene Formate findest du auf der Export Seite.