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='coco128-seg.yaml', epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=coco128-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 Erkennungsmodell YOLO . 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-01-25
Autoren: glenn-jocher (7)

Kommentare