Instanzsegmentierung mit Ultralytics YOLO#
Instanzsegmentierung geht über die Objekterkennung hinaus: Dabei werden einzelne Objekte in einem Bild identifiziert und vom übrigen Bild abgegrenzt.
Die Ausgabe eines Instanzsegmentierungsmodells besteht aus Masken oder Konturen, die jedes Objekt im Bild umreißen, sowie den Klassenbezeichnungen und Konfidenzwerten für jedes Objekt. Die Instanzsegmentierung ist nützlich, wenn du nicht nur wissen musst, wo sich Objekte in einem Bild befinden, sondern auch, welche genaue Form sie haben.
Ansehen: Segmentierung mit einem vortrainierten Ultralytics-YOLO-Modell in Python ausführen.
YOLO26-Segmentmodelle verwenden das Suffix -seg, also yolo26n-seg.pt, und werden auf COCO vortrainiert.
Modelle#
Unten sind YOLO26-Segmentmodelle aufgeführt, die auf dem COCO-Datensatz vortrainiert wurden.
Modelle werden bei der ersten Verwendung automatisch aus der neuesten Ultralytics-Version heruntergeladen.
| Modell | Größe (Pixel) | mAPBox 50-95(e2e) | mAPMaske 50-95(e2e) | Geschwindigkeit CPU ONNX (ms) | Geschwindigkeit T4 TensorRT10 (ms) | Parameter (M) | FLOPs (B) |
|---|---|---|---|---|---|---|---|
| YOLO26n-seg | 640 | 39.6 | 33.9 | 53.3 ± 0.5 | 2.1 ± 0.0 | 2.7 | 9.3 |
| YOLO26s-seg | 640 | 47.3 | 40.0 | 118.4 ± 0.9 | 3.3 ± 0.0 | 10.4 | 34.5 |
| YOLO26m-seg | 640 | 52.5 | 44.1 | 328.2 ± 2.4 | 6.7 ± 0.1 | 23.6 | 121.7 |
| YOLO26l-seg | 640 | 54.4 | 45.5 | 387.0 ± 3.7 | 8.0 ± 0.1 | 28.0 | 140.1 |
| YOLO26x-seg | 640 | 56.5 | 47.0 | 787.0 ± 6.8 | 16.4 ± 0.1 | 62.8 | 314.0 |
- Die Werte mAPval gelten für ein einzelnes Modell mit einer einzelnen Skalierung auf dem Datensatz COCO val2017.
Reproduziere die Ergebnisse mityolo segment val data=coco.yaml device=0 nms=False - Geschwindigkeit: Durchschnitt über COCO-val-Bilder mit ONNX auf einer CPU und TensorRT10 auf einer NVIDIA-T4-GPU.
Mityolo segment val data=coco.yaml batch=1 device=0|cpu nms=Falsereproduzieren - Die Werte für Parameter und FLOPs gelten für zusammengeführte Modelle nach dem Zusammenführen von Conv/BatchNorm und dem Entfernen des ungenutzten Erkennungszweigs. Vortrainierte Prüfpunkte behalten die vollständige Trainingsarchitektur bei und können daher höhere Werte aufweisen.
Diese Checkpoints segmentieren die 80 COCO-Klassen. Informationen dazu, wie du Kategorien außerhalb dieser Liste ohne erneutes Training segmentieren kannst, findest du unter YOLOE. YOLOE akzeptiert die Klassen als Textprompt, visuelles Beispiel oder integriertes Vokabular.
Vorläufige Ergebnisse für COCO-Boxen und -Masken findest du in der unveröffentlichten YOLO27-Vorschau.
Trainieren#
Trainiere YOLO26n-seg 100 Epochen lang mit einer Bildgröße von 640 auf dem Datensatz COCO8-seg. Eine vollständige Liste der verfügbaren Argumente findest du auf der Seite Konfiguration.
from ultralytics import YOLO
# Ein Modell laden
model = YOLO("yolo26n-seg.yaml") # ein neues Modell aus YAML erstellen
model = YOLO("yolo26n-seg.pt") # ein vortrainiertes Modell laden (für das Training empfohlen)
model = YOLO("yolo26n-seg.yaml").load("yolo26n-seg.pt") # aus YAML erstellen und Gewichte übertragen
# Das Modell trainieren
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)Die vollständigen Details zum Modus train findest du auf der Seite Trainieren. Segmentierungsmodelle lassen sich auch mit dem Cloud-Training der Ultralytics Platform trainieren.
Datensatzformat#
Eine ausführliche Beschreibung des YOLO-Segmentierungsdatensatzformats findest du im Datensatzleitfaden. Um einen vorhandenen COCO-JSON-Datensatz in das YOLO-Format umzuwandeln, verwende die integrierte Funktion convert_coco mit use_segments=True, wie im Leitfaden zur Umwandlung von COCO in YOLO beschrieben. Mit der Annotation in der Ultralytics Platform kannst du mithilfe von Polygonwerkzeugen und SAM-gestützter intelligenter Annotation auch Segmentierungsmasken erstellen.
Validieren#
Validiere die Genauigkeit des trainierten Modells YOLO26n-seg. Argumente sind nicht erforderlich, da model die Trainings-data und Argumente als Modellattribute beibehält: path/to/best.pt aus dem Beispiel Trainieren validiert auf COCO8-seg. Offizielle Gewichte verweisen auf einen Trainingsdatensatzpfad, der auf deinem Rechner nicht existiert. Daher wird mit einer Warnung auf die standardmäßige Aufgabe coco8-seg.yaml zurückgegriffen. Gib data an, um einen anderen Datensatz zu validieren.
from ultralytics import YOLO
# Ein Modell laden
model = YOLO("yolo26n-seg.pt") # Ein offizielles Modell laden
model = YOLO("path/to/best.pt") # Ein benutzerdefiniertes Modell laden
# Das Modell validieren
metrics = model.val() # Keine Argumente erforderlich, Datensatz und Einstellungen werden gespeichert
metrics.box.map # map50-95(B)
metrics.box.map50 # map50(B)
metrics.box.map75 # map75(B)
metrics.box.maps # eine Liste mit mAP50-95(B)-Werten für jede Kategorie
metrics.box.image_metrics # Metrikwörterbuch pro Bild für det mit Präzision, Trefferquote, F1, TP, FP und FN
metrics.seg.map # map50-95(M)
metrics.seg.map50 # map50(M)
metrics.seg.map75 # map75(M)
metrics.seg.maps # eine Liste mit mAP50-95(M)-Werten für jede Kategorie
metrics.seg.image_metrics # Metrikwörterbuch pro Bild für seg mit Präzision, Trefferquote, F1, TP, FP und FNVorhersagen#
Verwende ein trainiertes YOLO26n-seg-Modell, um Vorhersagen für Bilder zu erstellen.
from ultralytics import YOLO
# Ein Modell laden
model = YOLO("yolo26n-seg.pt") # Ein offizielles Modell laden
model = YOLO("path/to/best.pt") # Ein benutzerdefiniertes Modell laden
# Mit dem Modell Vorhersagen erstellen
results = model("https://ultralytics.com/images/bus.jpg") # Eine Vorhersage für ein Bild erstellen
# Auf die Ergebnisse zugreifen
for result in results:
xy = result.masks.xy # Maskenpolygone in Pixelkoordinaten
xyn = result.masks.xyn # normalisierte Maskenpolygone
masks = result.masks.data # Binärmasken, Form (N,H,W), dtype torch.uint8Ausführliche Informationen zum Modus predict findest du auf der Seite Vorhersagen.
Ausgabe der Ergebnisse#
Die YOLO-Instanzsegmentierung gibt für jedes Bild ein Results-Objekt zurück. Jedes Ergebnis speichert Vorhersagen auf Objektebene. Jede erkannte Instanz hat dabei eine eigene Binärmaske, Klasse, Konfidenz und Box.
| Attribut | Typ | Form | Beschreibung |
|---|---|---|---|
result.masks | Masks | (N) | Instanzmasken. |
result.masks.data | torch.uint8 | (N,H,W) | Binärmasken mit den Werten 0 oder 1. |
result.masks.xy | np.float32 | list[(P,2)] | Pixelpolygone. |
result.masks.xyn | np.float32 | list[(P,2)] | Normalisierte Polygone. |
result.boxes | Boxes | (N) | Instanzrahmen/Klassen/Konfidenzwerte. |
result.boxes.cls | torch.float32 | (N,) | Klassen-IDs; wandle sie für die Namen in int um. |
Task-spezifische Results-Felder für alle Aufgaben findest du im Abschnitt Vorhersageergebnisse nach Aufgabe.
Instanz- und semantische Segmentierung#
Bei der Instanzsegmentierung erfolgt die Segmentierung auf Objektebene: Zwei Autos ergeben zwei Masken, zwei Boxen und zwei Konfidenzwerte. Die semantische Segmentierung ist eine Klassifizierung auf Pixelebene: Dieselben Autos werden zu Pixeln mit derselben Klassen-ID in einer klassengroßen Karte für das gesamte Bild, ohne Boxen oder Konfidenzwerte pro Objekt und ohne standardmäßige Polygonliste. Siehe den Vergleich Feld für Feld auf der Seite zur semantischen Segmentierung.
Exportieren#
Exportiere ein YOLO26n-seg-Modell in ein anderes Format wie ONNX, CoreML usw.
from ultralytics import YOLO
# Ein Modell laden
model = YOLO("yolo26n-seg.pt") # Ein offizielles Modell laden
model = YOLO("path/to/best.pt") # Ein benutzerdefiniertes Modell laden
# Modell exportieren
model.export(format="onnx")Die verfügbaren Exportformate für YOLO26-seg findest du in der Tabelle unten. Mit dem Argument format kannst du in jedes Format exportieren, also etwa format='onnx' oder format='engine'. Du kannst direkt mit exportierten Modellen Vorhersagen erstellen oder sie validieren, also yolo predict model=yolo26n-seg.onnx. Nach Abschluss des Exports werden Anwendungsbeispiele für dein Modell angezeigt.
CoreML unterstützt eingebettetes NMS (nms=True) für Erkennung, Instanzsegmentierung und Pose bei statischen Formen. Bei standardmäßigen Segmentierungsexporten (nms=None) bleibt NMS dem aufrufenden Programm überlassen.
| Format | Argument format | Modell | Metadaten | Argumente |
|---|---|---|---|---|
| PyTorch | - | yolo26n-seg.pt | ✅ | - |
| TorchScript | torchscript | yolo26n-seg.torchscript | ✅ | imgsz, quantize, dynamic, nms, batch, device |
| ONNX | onnx | yolo26n-seg.onnx | ✅ | imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n-seg_openvino_model/ | ✅ | imgsz, quantize, dynamic, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n-seg.engine | ✅ | imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n-seg.mlpackage | ✅ | imgsz, dynamic, quantize, nms, batch, device |
| Apple Core AI | coreai | yolo26n-seg.aimodel | ✅ | imgsz, batch, quantize |
| TF SavedModel | saved_model | yolo26n-seg_saved_model/ | ✅ | imgsz, quantize, opset, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n-seg.pb | ❌ | imgsz, opset, batch, device |
| TF Edge TPU | edgetpu | yolo26n-seg_edgetpu.tflite | ✅ | imgsz, quantize, opset, data, fraction, device |
| LiteRT | litert | yolo26n-seg.tflite | ✅ | imgsz, quantize, batch, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-seg_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n-seg.mnn | ✅ | imgsz, batch, dynamic, quantize, simplify, opset, nms, device |
| NCNN | ncnn | yolo26n-seg_ncnn_model/ | ✅ | imgsz, quantize, batch, device |
| IMX500 | imx | yolo26n-seg_imx_model/ | ✅ | imgsz, quantize, data, fraction, nms, device |
| RKNN | rknn | yolo26n-seg_rknn_model/ | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| ExecuTorch | executorch | yolo26n-seg_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n-seg_axelera_model/ | ✅ | imgsz, batch, quantize, data, fraction, device |
| DEEPX | deepx | yolo26n-seg_deepx_model/ | ✅ | imgsz, quantize, simplify, opset, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n-seg_qnn.onnx | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| Hailo | hailo | yolo26n-seg_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou, device |
| Huawei Ascend | ascend | yolo26n-seg_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms, device |
| AMD Xilinx | xilinx | yolo26n-seg_xilinx_model/ | ✅ | imgsz, name, quantize, data, fraction, opset, simplify, device |
nms=None gibt standardmäßig Rohdaten für die externe NMS aus. Lege nms=False fest, um einen verfügbaren Kopf ohne NMS auszuwählen; nicht unterstützte Formate greifen auf ihren nativen Ausgabepfad zurück. Die obigen Einträge nms kennzeichnen Formate, die NMS mit nms=True integrieren können.
Ausführliche Informationen zu export findest du auf der Seite Export.
Häufig gestellte Fragen#
Um ein YOLO26-Segmentierungsmodell mit einem benutzerdefinierten Datensatz zu trainieren, musst du den Datensatz zunächst im YOLO-Segmentierungsformat vorbereiten. Mit dem integrierten Hilfsprogramm
convert_cocokannst du COCO-JSON-Datensätze umwandeln. Sobald dein Datensatz bereit ist, kannst du das Modell mit Python- oder CLI-Befehlen trainieren:Beispielfrom ultralytics import YOLO # Lade ein vortrainiertes YOLO26-Segmentierungsmodell model = YOLO("yolo26n-seg.pt") # Das Modell trainieren results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)Auf der Seite Konfiguration findest du weitere verfügbare Argumente.
Die Objekterkennung identifiziert und lokalisiert Objekte in einem Bild, indem sie Begrenzungsrahmen um sie zeichnet. Die Instanzsegmentierung identifiziert nicht nur die Begrenzungsrahmen, sondern grenzt auch die genaue Form jedes Objekts ab. YOLO26-Instanzsegmentierungsmodelle liefern Masken oder Konturen, die jedes erkannte Objekt umreißen. Das ist besonders nützlich bei Aufgaben, für die die genaue Form von Objekten wichtig ist, etwa in der medizinischen Bildgebung oder beim autonomen Fahren.
Ultralytics YOLO26 ist ein hochmodernes Modell, das für seine hohe Genauigkeit und Echtzeitleistung bekannt ist und sich dadurch ideal für Aufgaben der Instanzsegmentierung eignet. YOLO26-Segmentmodelle werden auf dem COCO-Datensatz vortrainiert und liefern dadurch zuverlässige Ergebnisse für eine Vielzahl von Objekten. Darüber hinaus unterstützt YOLO Training, Validierung, Vorhersagen und Export mit nahtloser Integration und ist damit vielseitig für Forschung und industrielle Anwendungen einsetzbar.
Ein vortrainiertes YOLO-Segmentierungsmodell lässt sich ganz einfach laden und validieren. So geht es mit Python und CLI:
Beispielfrom ultralytics import YOLO # Vortrainiertes Modell laden model = YOLO("yolo26n-seg.pt") # Das Modell validieren metrics = model.val() print("Mean Average Precision for boxes:", metrics.box.map) print("Mean Average Precision for masks:", metrics.seg.map)Mit diesen Schritten erhältst du Validierungsmetriken wie die mittlere durchschnittliche Präzision (mAP), die entscheidend für die Bewertung der Modellleistung ist.
Ein YOLO-Segmentierungsmodell lässt sich einfach mit Python- oder CLI-Befehlen in das ONNX-Format exportieren:
Beispielfrom ultralytics import YOLO # Vortrainiertes Modell laden model = YOLO("yolo26n-seg.pt") # Exportiere das Modell in das ONNX-Format model.export(format="onnx")Weitere Informationen zum Export in verschiedene Formate findest du auf der Seite Export.