Instanzsegmentierung mit Ultralytics YOLO#
Instance segmentation geht einen Schritt weiter als die Objekterkennung und beinhaltet die Identifizierung einzelner Objekte in einem Bild sowie deren Segmentierung vom Rest des Bildes.
Die Ausgabe eines Instanzsegmentierungsmodells ist eine Reihe von Masken oder Konturen, die jedes Objekt im Bild umreißen, zusammen mit Klassenlabels und Konfidenzwerten für jedes Objekt. 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 Segment Modelle verwenden das Suffix -seg, d. h. yolo26n-seg.pt, und sind auf COCO vorab trainiert.
Models#
YOLO26 vortrainierte Segment Modelle werden hier gezeigt. Detect-, Segment- und Pose-Modelle sind auf dem COCO-Datensatz vortrainiert, Semantic-Modelle sind auf Cityscapes vortrainiert und Classify-Modelle 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) | mAPmask 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.1 |
| YOLO26s-seg | 640 | 47.3 | 40.0 | 118.4 ± 0.9 | 3.3 ± 0.0 | 10.4 | 34.2 |
| YOLO26m-seg | 640 | 52.5 | 44.1 | 328.2 ± 2.4 | 6.7 ± 0.1 | 23.6 | 121.5 |
| YOLO26l-seg | 640 | 54.4 | 45.5 | 387.0 ± 3.7 | 8.0 ± 0.1 | 28.0 | 139.8 |
| YOLO26x-seg | 640 | 56.5 | 47.0 | 787.0 ± 6.8 | 16.4 ± 0.1 | 62.8 | 313.5 |
- mAPval-Werte gelten für ein einzelnes Modell im Einzelskalierungsmodus auf dem COCO val2017-Datensatz.
Reproduzieren mityolo val segment data=coco.yaml device=0 - Geschwindigkeit gemittelt über COCO-val-Bilder unter Verwendung einer Amazon EC2 P4d-Instanz.
Reproduzieren mityolo val segment data=coco.yaml batch=1 device=0|cpu - Params- und FLOPs-Werte gelten für das fusionierte Modell nach
model.fuse(), welches Conv- und BatchNorm-Schichten zusammenführt und bei End-to-End-Modellen den zusätzlichen One-to-Many-Erkennungskopf entfernt. Vorab trainierte Checkpoints behalten die vollständige Trainingsarchitektur bei und können höhere Anzahlen aufweisen.
Trainieren#
Trainiere YOLO26n-seg auf dem COCO8-seg Datensatz für 100 Epochs bei einer Bildgröße von 640. Eine vollständige Liste der verfügbaren Argumente findest du auf der Configuration-Seite.
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)Siehe vollständige train Modus-Details auf der Train-Seite. Segmentierungsmodelle können auch mit dem Ultralytics Platform Cloud-Training trainiert werden.
Datensatzformat#
Das YOLO-Segmentierungsdatenformat wird im Detail im Dataset Guide beschrieben. Um deinen bestehenden Datensatz aus anderen Formaten (wie COCO etc.) in das YOLO-Format zu konvertieren, nutze bitte das JSON2YOLO-Tool von Ultralytics. Du kannst Segmentierungsmasken auch mit der Ultralytics Platform Annotation unter Verwendung von Polygon-Werkzeugen und SAM-gestützter intelligenter Annotation erstellen.
Validieren#
Validiere die Genauigkeit des trainierten YOLO26n-seg Modells auf dem COCO8-seg Datensatz. Es sind keine Argumente erforderlich, da das model seine Trainings-data und -Argumente als Modellattribute behä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 FNVorhersagen#
Verwende ein trainiertes YOLO26n-seg-Modell, um Vorhersagen auf Bildern 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.uint8Weitere Details zum predict-Modus findest du auf der Predict-Seite.
Ergebnisausgabe#
YOLO Instance Segmentation gibt ein Results Objekt pro Bild zurück. Jedes Ergebnis speichert Vorhersagen auf Objektobene, wobei jede erkannte Instanz ihre eigene binäre Maske, Klasse, Konfidenz und Box hat.
| Attribut | Typ | Form | Beschreibung |
|---|---|---|---|
result.masks | Masks | (N) | Instanzmasken. |
result.masks.data | torch.uint8 | (N,H,W) | Binäre Masken, 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/Konfidenzen. |
result.boxes.cls | torch.float32 | (N,) | Klassen-IDs; zu int casten für Namen. |
Aufgabenspezifische Results-Felder für alle Aufgaben findest du im Abschnitt Predict Results by Task.
Wie unterscheidet sich das von der semantischen Segmentierung?#
Instance Segmentation ist eine Segmentierung auf Objektobene: zwei Autos erzeugen zwei Masken, zwei Boxen und zwei Konfidenzwerte. Semantic segmentation ist eine Klassifizierung auf Pixelebene: dieselben Autos werden zu Pixeln mit derselben Klassen-ID in einer bildgroßen Klassenkarte, ohne Boxen pro Objekt, Konfidenzen oder Standard-Polygonliste.
Exportieren#
Exportiere ein YOLO26n-seg-Modell in ein anderes Format wie ONNX, CoreML etc.
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")Verfügbare YOLO26-seg Exportformate findest du in der Tabelle unten. Du kannst mit dem Argument format in jedes Format exportieren, d. h. format='onnx' oder format='engine'. Du kannst direkt auf exportierten Modellen vorhersagen oder validieren, d. h. yolo predict model=yolo26n-seg.onnx. Anwendungsbeispiele werden für dein Modell nach Abschluss des Exports angezeigt.
CoreML eingebettete NMS-Pipelines (nms=True) unterstützen nur Objekterkennungsmodelle. Segmentierungsexporte nach CoreML geben eine Warnung aus und erzwingen nms=False, wodurch ein rohes Modell ohne NMS erzeugt wird.
| Format | format-Argument | 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 |
Weitere Details zum export-Modus findest du auf der Export-Seite.
FAQ#
Um ein YOLO26 Segmentierungsmodell auf einem benutzerdefinierten Datensatz zu trainieren, musst du deinen Datensatz zuerst im YOLO-Segmentierungsformat vorbereiten. Du kannst Tools wie JSON2YOLO verwenden, um Datensätze aus anderen Formaten zu konvertieren. Sobald dein Datensatz bereit ist, kannst du das Modell mit Python- oder CLI-Befehlen 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)Besuche die Konfigurationsseite, um weitere verfügbare Argumente zu finden.
Objekterkennung identifiziert und lokalisiert Objekte innerhalb eines Bildes, indem Begrenzungsboxen um sie herum gezeichnet werden, während Instanzsegmentierung nicht nur die Begrenzungsboxen identifiziert, sondern auch die exakte Form jedes Objekts abgrenzt. YOLO26-Instanzsegmentierungsmodelle liefern Masken oder Konturen, die jedes erkannte Objekt umreißen, was besonders für Aufgaben nützlich ist, bei denen die genaue Form von Objekten wichtig ist, wie z. B. in der medizinischen Bildgebung oder beim autonomen Fahren.
Ultralytics YOLO26 ist ein hochmodernes Modell, das für seine hohe Genauigkeit und Echtzeitleistung bekannt ist, was es ideal für Instance Segmentation Aufgaben macht. YOLO26 Segment Modelle sind auf dem COCO dataset vorab trainiert, was eine robuste Leistung über eine Vielzahl von Objekten hinweg gewährleistet. Darüber hinaus unterstützt YOLO Trainings-, Validierungs-, Vorhersage- und Exportfunktionen mit nahtloser Integration, wodurch es für Forschungs- und Industrieanwendungen gleichermaßen vielseitig ist.
Das Laden und Validieren eines vortrainierten YOLO-Segmentierungsmodells ist unkompliziert. Hier erfährst du, wie du das sowohl mit Python als auch mit der CLI tun kannst:
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 Mean Average Precision (mAP), die für die Beurteilung der Modellleistung entscheidend sind.
Das Exportieren eines YOLO-Segmentierungsmodells in das ONNX-Format ist einfach und kann mithilfe von 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 Details zum Export in verschiedene Formate findest du auf der Export-Seite.