Ü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:
- Eine Textdatei pro Bild: Zu jedem Bild im Datensatz gibt es eine entsprechende Textdatei mit demselben Namen wie die Bilddatei und der Erweiterung ".txt".
- Eine Zeile pro Objekt: Jede Zeile in der Textdatei entspricht einer Objektinstanz im Bild.
- 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:
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
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
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
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.