Meet YOLO26: next-gen vision AI.

Link to this sectionSemantische Segmentierung#

Semantic segmentation examples

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.

Tipp

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.

ModellGröße
(Pixel)
mIoUvalGeschwindigkeit
RTX3090 PyTorch
(ms)
Parameter
(M)
FLOPs
(B)
YOLO26n-sem1024 × 204878.34.4 ± 0.01.622.7
YOLO26s-sem1024 × 204880.88.4 ± 0.06.588.8
YOLO26m-sem1024 × 204882.019.9 ± 0.114.3304.5
YOLO26l-sem1024 × 204882.926.5 ± 0.117.9384.7
YOLO26x-sem1024 × 204883.648.9 ± 0.240.2861.7
  • mIoUval-Werte gelten für Einzelmodelle in Einzelskalierung auf dem Validierungsset von Cityscapes.
    Reproduziere dies mit yolo semantic val data=cityscapes.yaml device=0 imgsz=2048
  • Geschwindigkeitsmetriken werden über die Bilder des Cityscapes-Validierungssets auf einer RTX3090-Instanz gemittelt.
    Reproduziere dies mit yolo 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.

Beispiel
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.

Beispiel
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 accuracy

Link to this sectionVorhersage#

Verwende ein trainiertes YOLO26n-sem-Modell, um Vorhersagen auf Bildern durchzuführen.

Beispiel
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 count

Siehe 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.

AttributTypFormBeschreibung
result.semantic_maskSemanticMask(H,W)Dichte Klassenkarte.
result.semantic_mask.datatorch.uint8
torch.int16
torch.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#

AspektInstanzsegmentierung (task="segment")Semantische Segmentierung (task="semantic")
VorhersagezielSegmentierung jedes erkannten Objekts separatZuweisung einer Klassen-ID für jeden Pixel
Ausgabefeldresult.masksresult.semantic_mask
Hauptdatenresult.masks.dataresult.semantic_mask.data
Form(N,H,W)(H,W)
PixelwerteBinäre Maskenwerte: 0 oder 1Klassen-IDs: 0, 1, 2, ...
Datentyptorch.uint8torch.uint8
torch.int16
torch.int32
Objekte der gleichen KlasseWerden als separate Instanzen beibehaltenWerden in derselben Klassenregion zusammengeführt
PolygoneJa, durch result.masks.xy und result.masks.xynStandardmäßig keine Polygonausgabe
Boxen und KonfidenzJa, durch result.boxesKeine instanzbasierten Boxen oder Konfidenzwerte
Typische VerwendungZählen, Tracking, Zuschneiden, objektbezogene MessungDichte Szenenkennzeichnung, befahrbare Fläche, Landnutzung, medizinische Regionen

Link to this sectionExportieren#

Exportiere ein YOLO26n-sem-Modell in ein anderes Format wie ONNX, CoreML usw.

Beispiel
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.

Formatformat ArgumentModellMetadatenArgumente
PyTorch-yolo26n-sem.pt-
TorchScripttorchscriptyolo26n-sem.torchscriptimgsz, half, dynamic, optimize, nms, batch, device
ONNXonnxyolo26n-sem.onnximgsz, half, int8, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-sem_openvino_model/imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRTengineyolo26n-sem.engineimgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-sem.mlpackageimgsz, dynamic, half, int8, nms, batch, device
TF SavedModelsaved_modelyolo26n-sem_saved_model/imgsz, keras, int8, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-sem.pbimgsz, batch, device
TF Litetfliteyolo26n-sem.tfliteimgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo26n-sem_edgetpu.tfliteimgsz, int8, data, fraction, device
TF.jstfjsyolo26n-sem_web_model/imgsz, half, int8, nms, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-sem_paddle_model/imgsz, batch, device
MNNmnnyolo26n-sem.mnnimgsz, batch, int8, half, device
NCNNncnnyolo26n-sem_ncnn_model/imgsz, half, batch, device
IMX500imxyolo26n-sem_imx_model/imgsz, int8, data, fraction, nms, device
RKNNrknnyolo26n-sem_rknn_model/imgsz, batch, name, int8, data, fraction, device
ExecuTorchexecutorchyolo26n-sem_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-sem_axelera_model/imgsz, batch, int8, data, fraction, device
DEEPXdeepxyolo26n-sem_deepx_model/imgsz, int8, data, optimize, device
Qualcomm QNNqnnyolo26n-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:

Beispiel
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:

Beispiel
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:

Beispiel
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.

Kommentare