Instanzsegmentierung mit Ultralytics YOLO#
Instanzsegmentierung geht über die Objekterkennung hinaus und umfasst das Identifizieren einzelner Objekte in einem Bild sowie deren Abgrenzung vom restlichen Bild.
Die Ausgabe eines Modells zur Instanzsegmentierung besteht aus einer Reihe von Masken oder Konturen, die jedes Objekt im Bild umreißen, sowie aus 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.
Watch: Run Segmentation with Pretrained Ultralytics YOLO Model in Python.
YOLO26-Modelle für die Segmentierung verwenden das Suffix -seg, also yolo26n-seg.pt, und sind auf COCO vortrainiert.
Modelle#
Hier werden vortrainierte Segmentierungsmodelle von YOLO26 gezeigt. Modelle für Erkennung, Segmentierung und Pose sind auf dem COCO-Datensatz vortrainiert, Modelle für semantische Segmentierung sind auf Cityscapes vortrainiert, und Klassifikationsmodelle sind auf dem ImageNet-Datensatz vortrainiert.
Modelle werden bei der ersten Verwendung automatisch aus dem neuesten Ultralytics-Release 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 für mAPval gelten für ein einzelnes Modell mit einer einzelnen Skalierung auf dem COCO-val2017-Datensatz.
Reproduziere sie mityolo val segment data=coco.yaml device=0 nms=False - Geschwindigkeit, gemittelt über COCO-val-Bilder unter Verwendung einer Amazon-EC2-P4d-Instanz.
Reproduziere sie mityolo val segment data=coco.yaml batch=1 device=0|cpu nms=False - Params- und FLOPs-Werte beziehen sich auf fusionierte Modelle nach der Conv/BatchNorm-Faltung und dem Entfernen des nicht verwendeten Erkennungszweigs. Vortrainierte Checkpoints behalten die vollständige Trainingsarchitektur bei und können höhere Anzahlen aufweisen.
Diese Checkpoints segmentieren die 80 COCO-Klassen. Um Kategorien außerhalb dieser Liste ohne erneutes Training zu segmentieren, siehe YOLOE, das die Klassen als Text-Prompt, visuelles Beispiel oder integriertes Vokabular verwendet.
Sieh dir die unveröffentlichte YOLO27 Vorschau für vorläufige COCO-Bounding-Box- und Maskenergebnisse an.
Trainieren#
Trainiere YOLO26n-seg 100 Epochen lang mit der Bildgröße 640 auf dem COCO8-seg-Datensatz. Eine vollständige Liste der verfügbaren Argumente findest du auf der Seite Konfiguration.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-seg.yaml") # build a new model from YAML
model = YOLO("yolo26n-seg.pt") # load a pretrained model (recommended for training)
model = YOLO("yolo26n-seg.yaml").load("yolo26n-seg.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)Vollständige Details zum Modus train findest du auf der Seite Trainieren. Segmentierungsmodelle können auch mit dem Cloud-Training der Ultralytics Platform trainiert werden.
Datensatzformat#
Das YOLO-Segmentierungsdatenformat findest du detailliert im Dataset Guide. Um ein bestehendes COCO-JSON-Dataset in das YOLO-Format zu konvertieren, nutze die integrierte convert_coco-Funktion mit use_segments=True, wie im COCO to YOLO guide beschrieben. Du kannst Segmentierungsmasken außerdem mit der Ultralytics Platform annotation über Polygon-Tools und SAM-gestützte intelligente Annotation erstellen.
Validierung#
Validiere die Genauigkeit des trainierten YOLO26n-seg-Modells auf dem COCO8-seg-Datensatz. Es sind keine Argumente erforderlich, da model seine Trainings-data und Argumente als Modelleigenschaften beibehält.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-seg.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Validate the model
metrics = model.val() # no arguments needed, dataset and settings remembered
metrics.box.map # map50-95(B)
metrics.box.map50 # map50(B)
metrics.box.map75 # map75(B)
metrics.box.maps # a list containing mAP50-95(B) for each category
metrics.box.image_metrics # per-image metrics dictionary for det with precision, recall, F1, TP, FP, and FN
metrics.seg.map # map50-95(M)
metrics.seg.map50 # map50(M)
metrics.seg.map75 # map75(M)
metrics.seg.maps # a list containing mAP50-95(M) for each category
metrics.seg.image_metrics # per-image metrics dictionary for seg with precision, recall, F1, TP, FP, and FNVorhersage#
Verwende ein trainiertes YOLO26n-seg-Modell, um Vorhersagen für Bilder auszuführen.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-seg.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:
xy = result.masks.xy # mask polygons in pixel coordinates
xyn = result.masks.xyn # normalized mask polygons
masks = result.masks.data # binary masks, shape (N,H,W), dtype torch.uint8Ausführliche Informationen zum Modus predict findest du auf der Seite Predict.
Ausgabe der Ergebnisse#
Die YOLO-Instanzsegmentierung gibt ein Results-Objekt pro Bild zurück. Jedes Ergebnis speichert Vorhersagen auf Objektebene, wobei jede erkannte Instanz ihre eigene Binärmaske, Klasse, Konfidenz und Box besitzt.
| Attribut | Typ | Form | Beschreibung |
|---|---|---|---|
result.masks | Masks | (N) | Instanzmasken. |
result.masks.data | torch.uint8 | (N,H,W) | Binärmasken, Werte 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) | Instanzboxen, Klassen und Konfidenzwerte. |
result.boxes.cls | torch.float32 | (N,) | Klassen-IDs; für Namen in int umwandeln. |
Task-spezifische Felder Results für alle Tasks findest du im Abschnitt Vorhersageergebnisse nach Task.
Unterschiede zur semantischen Segmentierung#
Die Instanzsegmentierung ist eine Segmentierung auf Objektebene: Zwei Autos erzeugen 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 klassenbezogenen Karte in Bildgröße, ohne Boxen, Konfidenzwerte oder standardmäßige Polygonliste pro Objekt.
Export#
Exportiere ein YOLO26n-seg-Modell in ein anderes Format wie ONNX, CoreML usw.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-seg.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom-trained model
# Export the model
model.export(format="onnx")Die verfügbaren Exportformate für YOLO26-seg sind in der folgenden Tabelle aufgeführt. Du kannst mit dem Argument format in jedes Format exportieren, also mit format='onnx' oder format='engine'. Du kannst direkt mit exportierten Modellen Vorhersagen ausführen oder sie validieren, also mit yolo predict model=yolo26n-seg.onnx. Nach Abschluss des Exports werden Verwendungsbeispiele für dein Modell angezeigt.
CoreML unterstützt eingebettetes NMS (nms=True) für Detektion, Instanzsegmentierung und Pose mit statischen Formen. Standardmäßige Segmentierungsexporte (nms=None) überlassen NMS dem Verbraucher.
| 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 |
| TF SavedModel | saved_model | yolo26n-seg_saved_model/ | ✅ | imgsz, keras, 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 |
| 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 |
| LiteRT | litert | yolo26n-seg.tflite | ✅ | imgsz, quantize, batch, data, fraction, device |
| Hailo | hailo | yolo26n-seg_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou |
| Huawei Ascend | ascend | yolo26n-seg_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms |
| Apple Core AI | coreai | yolo26n-seg.aimodel | ✅ | imgsz, batch, quantize |
nms=None verwendet standardmäßig Rohausgaben für externes NMS. Setze nms=False, um einen verfügbaren NMS-freien Kopf auszuwählen; nicht unterstützte Formate greifen auf ihren nativen Ausgabepfad zurück. Die Einträge nms oben identifizieren Formate, die NMS mit nms=True einbetten können.
Ausführliche Informationen zu export findest du auf der Seite Export.
FAQ#
Um ein YOLO26-Segmentierungsmodell mit einem benutzerdefinierten Dataset zu trainieren, musst du dein Dataset zunächst im YOLO-Segmentierungsformat vorbereiten. Du kannst das integrierte Hilfsprogramm
convert_cocoverwenden, um COCO-JSON-Datasets zu konvertieren. Sobald dein Dataset bereit ist, kannst du das Modell über Python- oder CLI-Befehle trainieren:Beispielfrom ultralytics import YOLO # Load a pretrained YOLO26 segment model model = YOLO("yolo26n-seg.pt") # Train the model results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)Weitere verfügbare Argumente findest du auf der Seite Konfiguration.
Die Objekterkennung identifiziert und lokalisiert Objekte in einem Bild, indem sie sie mit Begrenzungsrahmen umgibt, während die Instanzsegmentierung nicht nur die Begrenzungsrahmen identifiziert, sondern auch die genaue Form jedes Objekts abgrenzt. YOLO26-Modelle zur Instanzsegmentierung liefern Masken oder Konturen, die jedes erkannte Objekt umreißen. Das ist besonders für Aufgaben nützlich, bei denen die präzise 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, wodurch es sich ideal für Aufgaben der Instanzsegmentierung eignet. Die Segmentierungsmodelle von YOLO26 sind auf dem COCO-Datensatz vortrainiert und bieten dadurch eine robuste Leistung für eine Vielzahl von Objekten. Darüber hinaus unterstützt YOLO Funktionen zum Trainieren, Validieren, Ausführen von Vorhersagen und Exportieren mit nahtloser Integration, wodurch es sich sowohl für Forschungs- als auch für Industrieanwendungen vielseitig einsetzen lässt.
Das Laden und Validieren eines vortrainierten YOLO-Segmentierungsmodells ist unkompliziert. So kannst du es sowohl mit Python als auch mit CLI ausführen:
Beispielfrom ultralytics import YOLO # Load a pretrained model model = YOLO("yolo26n-seg.pt") # Validate the model metrics = model.val() print("Mean Average Precision for boxes:", metrics.box.map) print("Mean Average Precision for masks:", metrics.seg.map)Diese Schritte liefern dir Validierungsmetriken wie die mittlere durchschnittliche Präzision (mAP), die für die Bewertung der Modellleistung entscheidend ist.
Der Export eines YOLO-Segmentierungsmodells in das ONNX-Format ist einfach und kann mit Python- oder CLI-Befehlen durchgeführt werden:
Beispielfrom ultralytics import YOLO # Load a pretrained model model = YOLO("yolo26n-seg.pt") # Export the model to ONNX format model.export(format="onnx")Weitere Informationen zum Export in verschiedene Formate findest du auf der Seite Export.