Meet YOLO26: next-gen vision AI.

Link to this sectionÜbersicht über Instanz-Segmentierungsdatensätze#

Instanz-Segmentierung ist eine Aufgabe der Computer Vision, bei der einzelne Objekte in einem Bild identifiziert und umrissen werden. Dieser Leitfaden bietet einen Überblick über die von Ultralytics YOLO unterstützten Datensatzformate für Instanz-Segmentierungsaufgaben sowie Anleitungen zur Vorbereitung, Konvertierung und Verwendung dieser Datensätze für das Training deiner Modelle.

Link to this sectionUnterstützte Datensatzformate#

Link to this sectionUltralytics YOLO Format#

Das für das Training von YOLO-Segmentierungsmodellen verwendete Datensatz-Labelformat sieht wie folgt aus:

  1. Eine Textdatei pro Bild: Jedes Bild im Datensatz hat eine zugehörige Textdatei mit demselben Namen wie die Bilddatei und der Endung ".txt".
  2. Eine Zeile pro Objekt: Jede Zeile in der Textdatei entspricht einer Objektinstanz im Bild.
  3. Objektinformationen pro Zeile: Jede Zeile enthält die folgenden Informationen über die Objektinstanz:
    • Objektklassenindex: Eine Ganzzahl, die die Klasse des Objekts repräsentiert (z. B. 0 für Person, 1 für Auto usw.).
    • Objekt-Begrenzungskoordinaten: Die Koordinaten um den Maskenbereich, normalisiert auf einen Wert zwischen 0 und 1.

Das Format für eine einzelne Zeile in der Segmentierungsdatensatzdatei ist wie folgt:

<class-index> <x1> <y1> <x2> <y2> ... <xn> <yn>

In diesem Format ist <class-index> der Index der Klasse für das Objekt und <x1> <y1> <x2> <y2> ... <xn> <yn> sind die normalisierten Polygon-Koordinaten der Segmentierungsmaske des Objekts (Werte liegen im Bereich [0, 1] relativ zur Bildbreite und -höhe). Die Koordinaten sind durch Leerzeichen getrennt.

Hier ist ein Beispiel für das YOLO-Datensatzformat für ein einzelnes Bild mit zwei Objekten, die aus einem 3-Punkt-Segment und einem 5-Punkt-Segment bestehen.

0 0.681 0.485 0.670 0.487 0.676 0.487
1 0.504 0.000 0.501 0.004 0.498 0.004 0.493 0.010 0.492 0.0104
Tipp
  • Die Länge jeder Zeile muss nicht gleich sein.
  • Jedes Segmentierungslabel muss mindestens 3 (x, y) Punkte haben: <class-index> <x1> <y1> <x2> <y2> <x3> <y3>

Link to this sectionDatensatz YAML-Format#

Das Ultralytics-Framework verwendet ein YAML-Dateiformat, um die Datensatz- und Modellkonfiguration für das Training von Segmentierungsmodellen zu definieren. Hier ist ein Beispiel für das YAML-Format zur Definition eines Segmentierungsdatensatzes:

ultralytics/cfg/datasets/coco8-seg.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# COCO8-seg dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/segment/coco8-seg/
# Example usage: yolo train data=coco8-seg.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco8-seg ← downloads here (1 MB)

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: coco8-seg # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
test: # test images (optional)

# Classes
names:
  0: person
  1: bicycle
  2: car
  3: motorcycle
  4: airplane
  5: bus
  6: train
  7: truck
  8: boat
  9: traffic light
  10: fire hydrant
  11: stop sign
  12: parking meter
  13: bench
  14: bird
  15: cat
  16: dog
  17: horse
  18: sheep
  19: cow
  20: elephant
  21: bear
  22: zebra
  23: giraffe
  24: backpack
  25: umbrella
  26: handbag
  27: tie
  28: suitcase
  29: frisbee
  30: skis
  31: snowboard
  32: sports ball
  33: kite
  34: baseball bat
  35: baseball glove
  36: skateboard
  37: surfboard
  38: tennis racket
  39: bottle
  40: wine glass
  41: cup
  42: fork
  43: knife
  44: spoon
  45: bowl
  46: banana
  47: apple
  48: sandwich
  49: orange
  50: broccoli
  51: carrot
  52: hot dog
  53: pizza
  54: donut
  55: cake
  56: chair
  57: couch
  58: potted plant
  59: bed
  60: dining table
  61: toilet
  62: tv
  63: laptop
  64: mouse
  65: remote
  66: keyboard
  67: cell phone
  68: microwave
  69: oven
  70: toaster
  71: sink
  72: refrigerator
  73: book
  74: clock
  75: vase
  76: scissors
  77: teddy bear
  78: hair drier
  79: toothbrush

# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-seg.zip

Die Felder train und val geben die Pfade zu den Verzeichnissen an, die die Trainings- bzw. Validierungsbilder enthalten.

names ist ein Wörterbuch mit Klassennamen. Die Reihenfolge der Namen sollte der Reihenfolge der Objektklassenindizes in den YOLO-Datensatzdateien entsprechen.

Link to this sectionVerwendung#

Beispiel
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-seg.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)

Link to this sectionUnterstützte Datensätze#

Ultralytics YOLO unterstützt verschiedene Datensätze für Instanz-Segmentierungsaufgaben. Hier ist eine Liste der am häufigsten verwendeten:

  • Carparts-seg: Ein spezialisierter Datensatz für die Segmentierung von Autoteilen, ideal für Automobilanwendungen. Er enthält eine Vielzahl von Fahrzeugen mit detaillierten Annotationen einzelner Fahrzeugkomponenten.
  • COCO: Ein umfassender Datensatz für Objekterkennung, Segmentierung und Bildunterschriften, der über 200.000 gelabelte Bilder in einer Vielzahl von Kategorien enthält.
  • COCO8-seg: Ein kompakter, aus 8 Bildern bestehender Datensatz-Ausschnitt von COCO, der für schnelle Tests des Segmentierungsmodell-Trainings konzipiert ist, ideal für CI-Prüfungen und Workflow-Validierung im ultralytics-Repository.
  • COCO128-seg: Ein kleinerer Datensatz für Instanz-Segmentierungsaufgaben, der einen Ausschnitt von 128 COCO-Bildern mit Segmentierungsannotationen enthält.
  • Crack-seg: Ein Datensatz, der auf die Segmentierung von Rissen in verschiedenen Oberflächen zugeschnitten ist. Er ist für die Instandhaltung von Infrastrukturen und die Qualitätskontrolle unerlässlich und liefert detaillierte Bilddaten für das Training von Modellen zur Identifizierung struktureller Schwachstellen.
  • Package-seg: Ein Datensatz für die Segmentierung verschiedener Arten von Verpackungsmaterialien und -formen. Er ist besonders nützlich für die Logistik und Lagerautomatisierung und unterstützt die Entwicklung von Systemen für die Paketabwicklung und -sortierung.

Link to this sectionHinzufügen deines eigenen Datensatzes#

Wenn du deinen eigenen Datensatz hast und ihn für das Training von Segmentierungsmodellen mit dem Ultralytics YOLO-Format verwenden möchtest, stelle sicher, dass er dem oben unter "Ultralytics YOLO Format" beschriebenen Format folgt. Konvertiere deine Annotationen in das erforderliche Format und gib die Pfade, die Anzahl der Klassen und die Klassennamen in der YAML-Konfigurationsdatei an. Halte images/ und labels/ als separate Ordner auf derselben Ebene mit passender Unterordnerstruktur; das Platzieren von .txt-Labeldateien im Bilderordner kann dazu führen, dass das Modell Labels übersieht.

Link to this sectionLabel-Formate portieren oder konvertieren#

Link to this sectionCOCO-Datensatzformat zu YOLO-Format#

Du kannst Labels aus dem gängigen COCO-Datensatzformat ganz einfach mit dem folgenden Code-Schnipsel in das YOLO-Format konvertieren:

Beispiel
from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/", use_segments=True)

Dieses Konvertierungstool kann verwendet werden, um den COCO-Datensatz oder jeden Datensatz im COCO-Format in das Ultralytics YOLO-Format zu konvertieren.

Denk daran zu überprüfen, ob der Datensatz, den du verwenden möchtest, mit deinem Modell kompatibel ist und den erforderlichen Formatkonventionen entspricht. Korrekt formatierte Datensätze sind entscheidend für das Training erfolgreicher Segmentierungsmodelle.

Link to this sectionAuto-Annotation#

Auto-Annotation ist eine wesentliche Funktion, die es dir ermöglicht, einen Segmentierungsdatensatz mithilfe eines vortrainierten Erkennungsmodells zu erstellen. Sie ermöglicht es dir, eine große Anzahl von Bildern schnell und präzise zu annotieren, ohne dass eine manuelle Kennzeichnung erforderlich ist, was Zeit und Mühe spart.

Link to this sectionSegmentierungsdatensatz mit einem Erkennungsmodell generieren#

Um deinen Datensatz mit dem Ultralytics-Framework automatisch zu annotieren, kannst du die auto_annotate-Funktion wie unten gezeigt verwenden:

Beispiel
from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="sam_b.pt")
ArgumentTypStandardBeschreibung
datastrerforderlichPfad zum Verzeichnis, das Zielbilder für die Annotation oder Segmentierung enthält.
det_modelstr'yolo26x.pt'YOLO-Detektionsmodellpfad für die anfängliche Objekterkennung.
sam_modelstr'sam_b.pt'SAM-Modellpfad für die Segmentierung (unterstützt SAM, SAM 2, MobileSAM und SAM 3 Gewichte).
devicestr''Berechnungsgerät (z. B. 'cuda:0', 'cpu' oder '' für automatische Geräteerkennung).
conffloat0.25YOLO-Detektionskonfidenzschwellenwert zum Filtern schwacher Detektionen.
ioufloat0.45IoU-Schwellenwert für Non-Maximum Suppression zum Filtern überlappender Boxen.
imgszint640Eingabegröße für die Bildskalierung (muss ein Vielfaches von 32 sein).
max_detint300Maximale Anzahl an Detektionen pro Bild für Speichereffizienz.
classeslist[int]NoneListe der Klassen-Indizes, die erkannt werden sollen (z. B. [0, 1] für Person & Fahrrad).
output_dirstrNoneSpeicherverzeichnis für Annotationen (Standard: Unterverzeichnis <data>_auto_annotate_labels).

Die auto_annotate-Funktion nimmt den Pfad zu deinen Bildern sowie optionale Argumente zur Angabe der vortrainierten Erkennungsmodelle, z. B. YOLO26, YOLO11 oder andere Modelle, sowie Segmentierungsmodelle, z. B. SAM, SAM 2, MobileSAM oder SAM 3, das Gerät, auf dem die Modelle ausgeführt werden sollen, und das Ausgabeverzeichnis zum Speichern der annotierten Ergebnisse entgegen.

Durch die Nutzung der Leistung vortrainierter Modelle kann die Auto-Annotation den Zeit- und Arbeitsaufwand für die Erstellung hochwertiger Segmentierungsdatensätze erheblich reduzieren. Diese Funktion ist besonders nützlich für Forscher und Entwickler, die mit großen Bildsammlungen arbeiten, da sie sich auf die Modellentwicklung und -bewertung konzentrieren können, anstatt auf die manuelle Annotation.

Link to this sectionDatensatz-Annotationen visualisieren#

Bevor du dein Modell trainierst, ist es oft hilfreich, deine Datensatz-Annotationen zu visualisieren, um sicherzustellen, dass sie korrekt sind. Ultralytics stellt hierfür eine Hilfsfunktion bereit:

from ultralytics.data.utils import visualize_image_annotations

label_map = {  # Define the label map with all annotated class labels.
    0: "person",
    1: "car",
}

# Visualize
visualize_image_annotations(
    "path/to/image.jpg",  # Input image path.
    "path/to/annotations.txt",  # Annotation file path for the image.
    label_map,
)

Diese Funktion zeichnet Begrenzungsrahmen, beschriftet Objekte mit Klassennamen und passt die Textfarbe für eine bessere Lesbarkeit an, was dir hilft, Fehler bei der Annotation vor dem Training zu erkennen und zu korrigieren.

Link to this sectionSegmentierungsmasken in YOLO-Format konvertieren#

Wenn du Segmentierungsmasken im Binärformat hast, kannst du sie mit folgendem Befehl in das YOLO-Segmentierungsformat konvertieren:

from ultralytics.data.converter import convert_segment_masks_to_yolo_seg

# For datasets like COCO with 80 classes
convert_segment_masks_to_yolo_seg(masks_dir="path/to/masks_dir", output_dir="path/to/output_dir", classes=80)

Dieses Hilfsprogramm konvertiert binäre Maskenbilder in das YOLO-Segmentierungsformat und speichert sie im angegebenen Ausgabeverzeichnis.

Link to this sectionFAQ#

Link to this sectionWelche Datensatzformate unterstützt Ultralytics YOLO für die Instanz-Segmentierung?#

Ultralytics YOLO unterstützt mehrere Datensatzformate für die Instanz-Segmentierung, wobei das primäre Format das eigene Ultralytics YOLO-Format ist. Jedes Bild in deinem Datensatz benötigt eine entsprechende Textdatei mit Objektinformationen, die in mehrere Zeilen segmentiert sind (eine Zeile pro Objekt) und den Klassenindex sowie normalisierte Begrenzungskoordinaten auflisten. Weitere detaillierte Anweisungen zum YOLO-Datensatzformat findest du in der Übersicht über Instanz-Segmentierungsdatensätze.

Link to this sectionWie kann ich COCO-Datensatz-Annotationen in das YOLO-Format konvertieren?#

Das Konvertieren von COCO-Format-Annotationen in das YOLO-Format ist mit den Ultralytics-Tools unkompliziert. Du kannst die Funktion convert_coco aus dem Modul ultralytics.data.converter verwenden:

from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/", use_segments=True)

Dieses Skript konvertiert deine COCO-Datensatz-Annotationen in das erforderliche YOLO-Format und macht sie für das Training deiner YOLO-Modelle geeignet. Weitere Einzelheiten findest du unter Label-Formate portieren oder konvertieren.

Link to this sectionWie bereite ich eine YAML-Datei für das Training von Ultralytics YOLO-Modellen vor?#

Um eine YAML-Datei für das Training von YOLO-Modellen mit Ultralytics vorzubereiten, musst du die Datensatzpfade und Klassennamen definieren. Hier ist ein Beispiel für eine YAML-Konfiguration:

# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# COCO8-seg dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/segment/coco8-seg/
# Example usage: yolo train data=coco8-seg.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco8-seg ← downloads here (1 MB)

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: coco8-seg # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
test: # test images (optional)

# Classes
names:
  0: person
  1: bicycle
  2: car
  3: motorcycle
  4: airplane
  5: bus
  6: train
  7: truck
  8: boat
  9: traffic light
  10: fire hydrant
  11: stop sign
  12: parking meter
  13: bench
  14: bird
  15: cat
  16: dog
  17: horse
  18: sheep
  19: cow
  20: elephant
  21: bear
  22: zebra
  23: giraffe
  24: backpack
  25: umbrella
  26: handbag
  27: tie
  28: suitcase
  29: frisbee
  30: skis
  31: snowboard
  32: sports ball
  33: kite
  34: baseball bat
  35: baseball glove
  36: skateboard
  37: surfboard
  38: tennis racket
  39: bottle
  40: wine glass
  41: cup
  42: fork
  43: knife
  44: spoon
  45: bowl
  46: banana
  47: apple
  48: sandwich
  49: orange
  50: broccoli
  51: carrot
  52: hot dog
  53: pizza
  54: donut
  55: cake
  56: chair
  57: couch
  58: potted plant
  59: bed
  60: dining table
  61: toilet
  62: tv
  63: laptop
  64: mouse
  65: remote
  66: keyboard
  67: cell phone
  68: microwave
  69: oven
  70: toaster
  71: sink
  72: refrigerator
  73: book
  74: clock
  75: vase
  76: scissors
  77: teddy bear
  78: hair drier
  79: toothbrush

# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-seg.zip

Stelle sicher, dass du die Pfade und Klassennamen entsprechend deinem Datensatz aktualisierst. Weitere Informationen findest du im Abschnitt Datensatz YAML-Format.

Link to this sectionWas ist die Auto-Annotation-Funktion in Ultralytics YOLO?#

Auto-Annotation in Ultralytics YOLO ermöglicht es dir, Segmentierungsannotationen für deinen Datensatz mithilfe eines vortrainierten Erkennungsmodells zu generieren. Dies reduziert den Bedarf an manueller Kennzeichnung erheblich. Du kannst die auto_annotate-Funktion wie folgt verwenden:

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="sam_b.pt")  # or sam_model="mobile_sam.pt"

Diese Funktion automatisiert den Annotationsprozess und macht ihn schneller und effizienter. Weitere Einzelheiten findest du in der Auto-Annotate-Referenz.

Kommentare