Zum Inhalt springen

Übersicht über die Instanzsegmentierungsdatensätze

Unterstützte Datensatzformate

Ultralytics YOLO Format

Das Format der Datensatzbeschriftung, das für das Training der YOLO Segmentierungsmodelle verwendet wird, sieht folgendermaßen aus:

  1. Eine Textdatei pro Bild: Zu jedem Bild im Datensatz gibt es eine entsprechende Textdatei mit demselben Namen wie die Bilddatei und der Erweiterung ".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 ganze Zahl, die die Klasse des Objekts angibt (z.B. 0 für eine Person, 1 für ein Auto, etc.).
    • Objektbegrenzungskoordinaten: Die Begrenzungskoordinaten um den Maskenbereich, normalisiert auf einen Wert zwischen 0 und 1.

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

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

In diesem Format, <class-index> ist der Index der Klasse für das Objekt, und <x1> <y1> <x2> <y2> ... <xn> <yn> sind die Begrenzungskoordinaten der Segmentierungsmaske des Objekts. 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 der einzelnen Reihen muss nicht gleich sein.
  • Jedes Segmentierungsetikett muss eine mindestens 3 xy-Punkte: <class-index> <x1> <y1> <x2> <y2> <x3> <y3>

Datensatz YAML-Format

Das Ultralytics Framework verwendet ein YAML-Dateiformat, um den Datensatz und die Modellkonfiguration für das Training der Erkennungsmodelle zu definieren. Hier ist ein Beispiel für das YAML-Format, das für die Definition eines Erkennungsdatensatzes verwendet wird:

# 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: ../datasets/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 (80 COCO classes)
names:
  0: person
  1: bicycle
  2: car
  # ...
  77: teddy bear
  78: hair drier
  79: toothbrush

Die train und val Felder 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 mit der Reihenfolge der Objektklassenindizes in den YOLO Dataset-Dateien übereinstimmen.

Verwendung

Beispiel

from ultralytics import YOLO

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

# Train the model
results = model.train(data='coco8-seg.yaml', epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=coco8-seg.yaml model=yolov8n-seg.pt epochs=100 imgsz=640

Unterstützte Datensätze

Unterstützte Datensätze

  • COCO: Ein umfassender Datensatz für die Erkennung, Segmentierung und Beschriftung von Objekten mit über 200.000 beschrifteten Bildern aus einer Vielzahl von Kategorien.

  • COCO8-seg: Ein kompaktes 8-Bilder-Subset von COCO zum schnellen Testen des Segmentierungsmodells, ideal für CI-Checks und Workflow-Validierung in der ultralytics Repository.

  • Carparts-seg: Ein spezialisierter Datensatz, der sich auf die Segmentierung von Autoteilen konzentriert und ideal für Anwendungen im Automobilbereich ist. Er umfasst eine Vielzahl von Fahrzeugen mit detaillierten Anmerkungen zu den einzelnen Fahrzeugteilen.

  • Crack-seg: Ein Datensatz, der für die Segmentierung von Rissen in verschiedenen Oberflächen zugeschnitten ist. Er ist unverzichtbar für die Instandhaltung und Qualitätskontrolle von Infrastrukturen und liefert detaillierte Bilder für das Training von Modellen zur Identifizierung struktureller Schwachstellen.

  • Package-seg: Ein Datensatz für die Segmentierung verschiedener Verpackungsmaterialien und -formen. Er ist besonders nützlich für die Logistik und Lagerautomatisierung und hilft bei der Entwicklung von Systemen für die Handhabung und Sortierung von Verpackungen.

Hinzufügen deines eigenen Datensatzes

Wenn du deinen eigenen Datensatz hast und ihn für das Training von Segmentierungsmodellen mit dem Format Ultralytics YOLO verwenden möchtest, stelle sicher, dass er dem oben unter "Ultralytics YOLO Format" angegebenen Format entspricht. Konvertiere deine Annotationen in das gewünschte Format und gib die Pfade, die Anzahl der Klassen und die Klassennamen in der YAML-Konfigurationsdatei an.

Etikettenformate portieren oder konvertieren

COCO-Datensatzformat zu YOLO Format

Mit dem folgenden Codeschnipsel kannst du ganz einfach Etiketten aus dem beliebten COCO-Datensatzformat in das YOLO Format konvertieren:

Beispiel

from ultralytics.data.converter import convert_coco

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

Mit diesem Konvertierungstool kannst du den COCO-Datensatz oder jeden anderen Datensatz im COCO-Format in das Format Ultralytics YOLO umwandeln.

Vergiss nicht, zu überprüfen, ob der Datensatz, den du verwenden möchtest, mit deinem Modell kompatibel ist und den notwendigen Formatkonventionen entspricht. Ordnungsgemäß formatierte Datensätze sind entscheidend für das Training erfolgreicher Modelle zur Objekterkennung.

Auto-Annotation

Die automatische Beschriftung ist eine wichtige Funktion, mit der du einen Segmentierungsdatensatz mithilfe eines vorab trainierten Erkennungsmodells erstellen kannst. So kannst du eine große Anzahl von Bildern schnell und präzise beschriften, ohne dass du sie manuell beschriften musst. Das spart Zeit und Mühe.

Erzeugen eines Segmentierungsdatensatzes mit einem Erkennungsmodell

Um deinen Datensatz mithilfe des Ultralytics Frameworks automatisch zu annotieren, kannst du die auto_annotate Funktion wie unten dargestellt:

Beispiel

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolov8x.pt", sam_model='sam_b.pt')

Natürlich, hier ist die Tabelle mit aktualisierten Codeschnipseln:

Argument Typ Beschreibung Standard
data str Pfad zu einem Ordner mit Bildern, die mit Anmerkungen versehen werden sollen. None
det_model str, optional Vorgeprüftes YOLO Erkennungsmodell. Standardmäßig 'yolov8x.pt'. 'yolov8x.pt'
sam_model str, optional Vorgeprüftes SAM Segmentierungsmodell. Standardmäßig 'sam_b.pt'. 'sam_b.pt'
device str, optional Gerät, auf dem die Modelle ausgeführt werden. Der Standardwert ist ein leerer String (CPU oder GPU, falls verfügbar). ''
output_dir str or None, optional Verzeichnis zum Speichern der kommentierten Ergebnisse. Standardmäßig wird ein 'labels' Ordner im selben Verzeichnis wie 'data'. None

Die auto_annotate Funktion nimmt den Pfad zu deinen Bildern sowie optionale Argumente für die Angabe der vortrainierten Erkennungs- und SAM Segmentierungsmodelledas Gerät, auf dem die Modelle ausgeführt werden sollen, und das Ausgabeverzeichnis zum Speichern der kommentierten Ergebnisse.

Durch die Nutzung der Leistungsfähigkeit von vortrainierten Modellen kann die automatische Beschriftung 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 -evaluierung konzentrieren können und nicht auf die manuelle Annotation.



Erstellt am 2023-11-12, Aktualisiert am 2024-04-18
Autoren: glenn-jocher (8)

Kommentare