Zum Inhalt

Instanzsegmentierung

Beispiele für Instanzsegmentierung

Instanzsegmentierung geht einen Schritt weiter als die Objekterkennung und beinhaltet die Identifizierung einzelner Objekte in einem Bild und deren Abtrennung vom Rest des Bildes.

Das Ergebnis eines Instanzsegmentierungsmodells ist eine Reihe von Masken oder Konturen, die jedes Objekt im Bild umreißen, zusammen mit Klassenbezeichnungen und Vertrauensscores für jedes Objekt. Instanzsegmentierung ist nützlich, wenn man nicht nur wissen muss, wo sich Objekte in einem Bild befinden, sondern auch, welche genaue Form sie haben.



Schauen Sie: Führen Sie Segmentierung mit dem vortrainierten Ultralytics YOLOv8 Modell in Python aus.

Tipp

YOLOv8 Segment-Modelle verwenden das Suffix -seg, d.h. yolov8n-seg.pt und sind auf dem COCO-Datensatz vortrainiert.

Modelle

Hier werden vortrainierte YOLOv8 Segment-Modelle gezeigt. Detect-, Segment- und Pose-Modelle sind auf dem COCO-Datensatz vortrainiert, während Classify-Modelle auf dem ImageNet-Datensatz vortrainiert sind.

Modelle laden sich automatisch von der neuesten Ultralytics Veröffentlichung beim ersten Gebrauch herunter.

Modell Größe
(Pixel)
mAPKasten
50-95
mAPMasken
50-95
Geschwindigkeit
CPU ONNX
(ms)
Geschwindigkeit
A100 TensorRT
(ms)
Parameter
(M)
FLOPs
(B)
YOLOv8n-seg 640 36.7 30.5 96.1 1.21 3.4 12.6
YOLOv8s-seg 640 44.6 36.8 155.7 1.47 11.8 42.6
YOLOv8m-seg 640 49.9 40.8 317.0 2.18 27.3 110.2
YOLOv8l-seg 640 52.3 42.6 572.4 2.79 46.0 220.5
YOLOv8x-seg 640 53.4 43.4 712.1 4.02 71.8 344.1
  • Die mAPval-Werte sind für ein einzelnes Modell, einzelne Skala auf dem COCO val2017-Datensatz.
    Zum Reproduzieren nutzen Sie yolo val segment data=coco.yaml device=0
  • Die Geschwindigkeit ist über die COCO-Validierungsbilder gemittelt und verwendet eine Amazon EC2 P4d-Instanz.
    Zum Reproduzieren yolo val segment data=coco128-seg.yaml batch=1 device=0|cpu

Training

Trainieren Sie YOLOv8n-seg auf dem COCO128-seg-Datensatz für 100 Epochen mit einer Bildgröße von 640. Eine vollständige Liste der verfügbaren Argumente finden Sie auf der Seite Konfiguration.

Beispiel

from ultralytics import YOLO

# Modell laden
model = YOLO('yolov8n-seg.yaml')  # ein neues Modell aus YAML erstellen
model = YOLO('yolov8n-seg.pt')  # ein vortrainiertes Modell laden (empfohlen für das Training)
model = YOLO('yolov8n-seg.yaml').load('yolov8n.pt')  # aus YAML erstellen und Gewichte übertragen

# Das Modell trainieren
results = model.train(data='coco128-seg.yaml', epochs=100, imgsz=640)
# Ein neues Modell aus YAML erstellen und das Training von vorne beginnen
yolo segment train data=coco128-seg.yaml model=yolov8n-seg.yaml epochs=100 imgsz=640

# Das Training von einem vortrainierten *.pt Modell aus starten
yolo segment train data=coco128-seg.yaml model=yolov8n-seg.pt epochs=100 imgsz=640

# Ein neues Modell aus YAML erstellen, vortrainierte Gewichte darauf übertragen und das Training beginnen
yolo segment train data=coco128-seg.yaml model=yolov8n-seg.yaml pretrained=yolov8n-seg.pt epochs=100 imgsz=640

Datenformat

Das YOLO Segmentierungsdatenformat finden Sie detailliert im Dataset Guide. Um Ihre vorhandenen Daten aus anderen Formaten (wie COCO usw.) in das YOLO-Format umzuwandeln, verwenden Sie bitte das JSON2YOLO-Tool von Ultralytics.

Val

Validieren Sie die Genauigkeit des trainierten YOLOv8n-seg-Modells auf dem COCO128-seg-Datensatz. Es müssen keine Argumente übergeben werden, da das Modell seine Trainingsdaten und -argumente als Modellattribute behält.

Beispiel

from ultralytics import YOLO

# Modell laden
model = YOLO('yolov8n-seg.pt')  # offizielles Modell laden
model = YOLO('pfad/zu/best.pt')  # benutzerdefiniertes Modell laden

# Das Modell validieren
metrics = model.val()  # Keine Argumente erforderlich, Datensatz und Einstellungen werden behalten
metrics.box.map    # mAP50-95(B)
metrics.box.map50  # mAP50(B)
metrics.box.map75  # mAP75(B)
metrics.box.maps   # eine Liste enthält mAP50-95(B) für jede Kategorie
metrics.seg.map    # mAP50-95(M)
metrics.seg.map50  # mAP50(M)
metrics.seg.map75  # mAP75(M)
metrics.seg.maps   # eine Liste enthält mAP50-95(M) für jede Kategorie
yolo segment val model=yolov8n-seg.pt  # offizielles Modell validieren
yolo segment val model=pfad/zu/best.pt  # benutzerdefiniertes Modell validieren

Predict

Verwenden Sie ein trainiertes YOLOv8n-seg-Modell für Vorhersagen auf Bildern.

Beispiel

from ultralytics import YOLO

# Modell laden
model = YOLO('yolov8n-seg.pt')  # offizielles Modell laden
model = YOLO('pfad/zu/best.pt')  # benutzerdefiniertes Modell laden

# Mit dem Modell Vorhersagen treffen
results = model('https://ultralytics.com/images/bus.jpg')  # Vorhersage auf einem Bild
yolo segment predict model=yolov8n-seg.pt source='https://ultralytics.com/images/bus.jpg'  # Vorhersage mit offiziellem Modell treffen
yolo segment predict model=pfad/zu/best.pt source='https://ultralytics.com/images/bus.jpg'  # Vorhersage mit benutzerdefiniertem Modell treffen

Die vollständigen Details zum predict-Modus finden Sie auf der Seite Predict.

Export

Exportieren Sie ein YOLOv8n-seg-Modell in ein anderes Format wie ONNX, CoreML usw.

Beispiel

from ultralytics import YOLO

# Modell laden
model = YOLO('yolov8n-seg.pt')  # offizielles Modell laden
model = YOLO('pfad/zu/best.pt')  # benutzerdefiniertes trainiertes Modell laden

# Das Modell exportieren
model.export(format='onnx')
yolo export model=yolov8n-seg.pt format=onnx  # offizielles Modell exportieren
yolo export model=pfad/zu/best.pt format=onnx  # benutzerdefiniertes trainiertes Modell exportieren

Die verfügbaren YOLOv8-seg-Exportformate sind in der folgenden Tabelle aufgeführt. Sie können direkt auf exportierten Modellen Vorhersagen treffen oder sie validieren, z.B. yolo predict model=yolov8n-seg.onnx. Verwendungsbeispiele werden für Ihr Modell nach dem Export angezeigt.

Format format-Argument Modell Metadaten Argumente
PyTorch - yolov8n-seg.pt -
TorchScript torchscript yolov8n-seg.torchscript imgsz, optimieren
ONNX onnx yolov8n-seg.onnx imgsz, halb, dynamisch, vereinfachen, opset
OpenVINO openvino yolov8n-seg_openvino_model/ imgsz, halb
TensorRT engine yolov8n-seg.engine imgsz, halb, dynamisch, vereinfachen, Arbeitsspeicher
CoreML coreml yolov8n-seg.mlpackage imgsz, halb, int8, nms
TF SavedModel saved_model yolov8n-seg_saved_model/ imgsz, keras
TF GraphDef pb yolov8n-seg.pb imgsz
TF Lite tflite yolov8n-seg.tflite imgsz, halb, int8
TF Edge TPU edgetpu yolov8n-seg_edgetpu.tflite imgsz
TF.js tfjs yolov8n-seg_web_model/ imgsz
PaddlePaddle paddle yolov8n-seg_paddle_model/ imgsz
ncnn ncnn yolov8n-seg_ncnn_model/ imgsz, halb

Die vollständigen Details zum export finden Sie auf der Seite Export.


Created 2023-11-13, Updated 2023-11-18
Authors: glenn-jocher (4)

Kommentare