Zum Inhalt springen

Übersicht der Instanzsegmentierungsdatensätze

Unterstützte Dataset-Formate

Ultralytics YOLO Format

Das Format der Datensatzbeschriftung, das für das Training der YOLO Segmentierungsmodelle verwendet wird, ist wie folgt:

  1. Eine Textdatei pro Bild: Jedes Bild im Datensatz hat 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:
    • Objektklassen-Index: Eine ganze Zahl, die die Klasse des Objekts angibt (z. B. 0 für Person, 1 für Auto usw.).
    • Objekt-Begrenzungskoordinaten: Die Begrenzungskoordinaten um den Maskenbereich, normiert 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, <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 Zeilen 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 von Detection Models 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 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 Dateien des YOLO -Datensatzes übereinstimmen.

Verwendung

Beispiel

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n-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 segment train data=coco8-seg.yaml model=yolo11n-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: Eine kompakte 8-Bilder-Teilmenge von COCO, die zum schnellen Testen des Segmentierungsmodells entwickelt wurde, ideal für CI-Checks und Workflow-Validierung in der ultralytics Repository.
  • COCO128-seg: Ein kleinerer Datensatz für Instanzsegmentierungsaufgaben, der eine Teilmenge von 128 COCO-Bildern mit Segmentierungskommentaren enthält.
  • Carparts-seg: Ein spezialisierter Datensatz, der sich auf die Segmentierung von Autoteilen konzentriert, ideal für Anwendungen im Automobilbereich. 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 für die Instandhaltung von Infrastrukturen und die Qualitätskontrolle unerlässlich und liefert detaillierte Bilder für das Training von Modellen zur Erkennung struktureller Schwachstellen.
  • Package-seg: Ein Datensatz, der der Segmentierung verschiedener Arten von Verpackungsmaterialien und -formen gewidmet ist. Er ist besonders nützlich für Logistik und Lagerautomatisierung und hilft bei der Entwicklung von Systemen für die Handhabung und Sortierung von Verpackungen.

Hinzufügen eines eigenen Datensatzes

Wenn Sie einen eigenen Datensatz haben und diesen für das Training von Segmentierungsmodellen mit dem Format Ultralytics YOLO verwenden möchten, stellen Sie sicher, dass er dem oben unter "Ultralytics YOLO format" angegebenen Format entspricht. Konvertieren Sie Ihre Annotationen in das gewünschte Format und geben Sie die Pfade, Anzahl der Klassen und Klassennamen in der YAML-Konfigurationsdatei an.

Etikettenformate portieren oder konvertieren

COCO-Datensatzformat in YOLO Format

Mit dem folgenden Codeschnipsel können Sie ganz einfach Etiketten aus dem beliebten COCO-Datensatzformat in das Format YOLO 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 einen beliebigen Datensatz im COCO-Format in das Format Ultralytics YOLO zu konvertieren.

Vergewissern Sie sich, dass der Datensatz, den Sie verwenden möchten, mit Ihrem Modell kompatibel ist und den erforderlichen Formatkonventionen entspricht. Korrekt formatierte Datensätze sind entscheidend für das Training erfolgreicher Objekterkennungsmodelle.

Auto-Annotation

Die automatische Beschriftung ist eine wichtige Funktion, mit der Sie einen Segmentierungsdatensatz mithilfe eines vorab trainierten Erkennungsmodells erstellen können. Sie ermöglicht es Ihnen, eine große Anzahl von Bildern schnell und genau zu beschriften, ohne dass eine manuelle Beschriftung erforderlich ist, was Zeit und Mühe spart.

Erzeugen eines Segmentierungsdatensatzes unter Verwendung eines Erkennungsmodells

Um Ihren Datensatz mit Hilfe des Ultralytics Frameworks automatisch zu annotieren, können Sie die auto_annotate Funktion wie unten dargestellt:

Beispiel

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo11x.pt", sam_model="sam_b.pt")
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 wird 'yolo11x.pt'. 'yolo11x.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 sollen. Standardmäßig wird eine leere Zeichenkette verwendet (CPU oder GPU, falls verfügbar). ''
output_dir str or None, optional Verzeichnis zum Speichern der kommentierten Ergebnisse. Standardmäßig ist dies ein 'labels' in demselben Verzeichnis wie 'data'. None

Die auto_annotate Funktion nimmt den Pfad zu Ihren Bildern sowie optionale Argumente für die Angabe der vorab trainierten Erkennung 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 vorab trainierten Modellen kann die automatische 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 -evaluierung statt auf die manuelle Annotation konzentrieren können.

FAQ

Welche Datensatzformate werden von Ultralytics YOLO für die Instanzsegmentierung unterstützt?

Ultralytics YOLO unterstützt mehrere Datensatzformate für die Segmentierung von Beispielen, wobei das Hauptformat sein eigenes Ultralytics YOLO Format ist. Jedes Bild in Ihrem Datensatz benötigt eine entsprechende Textdatei mit Objektinformationen, die in mehrere Zeilen (eine Zeile pro Objekt) segmentiert sind und den Klassenindex und normalisierte Begrenzungskoordinaten enthalten. Ausführlichere Anweisungen zum YOLO Dataset-Format finden Sie in der Übersicht über Instanzsegmentierungsdatensätze.

Wie kann ich COCO-Datensatz-Anmerkungen in das Format YOLO konvertieren?

Die Konvertierung von Anmerkungen im COCO-Format in das Format YOLO ist mit den Tools von Ultralytics ganz einfach. Sie können die convert_coco Funktion aus der ultralytics.data.converter Modul:

from ultralytics.data.converter import convert_coco

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

Dieses Skript konvertiert Ihre COCO-Datensatz-Annotationen in das erforderliche YOLO Format, so dass sie für das Training Ihrer YOLO Modelle geeignet sind. Weitere Einzelheiten finden Sie unter Portieren oder Konvertieren von Etikettenformaten.

Wie 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, müssen Sie die Pfade zu den Datensätzen und die Klassennamen definieren. Hier ist ein Beispiel für eine YAML-Konfiguration:

path: ../datasets/coco8-seg # dataset root dir
train: images/train # train images (relative to 'path')
val: images/val # val images (relative to 'path')

names:
    0: person
    1: bicycle
    2: car
    # ...

Stellen Sie sicher, dass Sie die Pfade und Klassennamen entsprechend Ihrem Datensatz aktualisieren. Weitere Informationen finden Sie im Abschnitt Dataset YAML Format.

Was ist die automatische Anmerkungsfunktion in Ultralytics YOLO ?

Mit der automatischen Beschriftung in Ultralytics YOLO können Sie mithilfe eines vorab trainierten Erkennungsmodells Segmentierungsbeschriftungen für Ihren Datensatz erstellen. Dadurch wird der Bedarf an manueller Beschriftung erheblich reduziert. Sie können die auto_annotate wie folgt funktionieren:

from ultralytics.data.annotator import auto_annotate

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

Diese Funktion automatisiert den Anmerkungsprozess und macht ihn schneller und effizienter. Weitere Einzelheiten finden Sie im Abschnitt Auto-Annotation.

📅 Erstellt vor 1 Jahr ✏️ Aktualisiert vor 2 Monaten

Kommentare