Übersicht über Objekterkennungsdatensätze

Das Training eines robusten und präzisen Objekterkennungs-Modells erfordert einen umfassenden Datensatz. Dieser Leitfaden stellt verschiedene Datensatzformate vor, die mit dem Ultralytics YOLO-Modell kompatibel sind, und bietet Einblicke in deren Struktur, Verwendung und die Konvertierung zwischen verschiedenen Formaten.

Unterstützte Datensatzformate

Ultralytics YOLO-Format

Das Ultralytics YOLO-Format ist ein Datensatzkonfigurationsformat, mit dem du das Stammverzeichnis des Datensatzes, die relativen Pfade zu den Bildverzeichnissen für Training/Validierung/Tests oder zu *.txt-Dateien mit Bildpfaden sowie ein Wörterbuch der Klassennamen definieren kannst. Hier ist ein Beispiel:

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

# COCO8 dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/detect/coco8/
# Example usage: yolo train data=coco8.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco8 ← 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 # 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.zip

Labels für dieses Format sollten im YOLO-Format exportiert werden, wobei eine *.txt-Datei pro Bild erstellt wird. Wenn ein Bild keine Objekte enthält, ist keine *.txt-Datei erforderlich. Die *.txt-Datei sollte pro Zeile ein Objekt im Format class x_center y_center width height enthalten. Box-Koordinaten müssen im normalisierten xywh-Format (von 0 bis 1) vorliegen. Wenn deine Boxen in Pixeln angegeben sind, musst du x_center und width durch die Bildbreite sowie y_center und height durch die Bildhöhe teilen. Klassennummern sollten nullbasiert sein (beginnend bei 0).

YOLO labeled image with bounding boxes on persons and tie

Die Label-Datei, die dem obigen Bild entspricht, enthält 2 Personen (Klasse 0) und eine Krawatte (Klasse 27):

YOLO format label file with normalized coordinates

Wenn du das Ultralytics YOLO-Format verwendest, organisiere deine Trainings- und Validierungsbilder sowie die Labels wie im folgenden COCO8 dataset-Beispiel gezeigt.

YOLO dataset directory structure with train and val folders

Anwendungsbeispiel

So kannst du Datensätze im YOLO-Format verwenden, um dein Modell zu trainieren:

Beispiel
from ultralytics import YOLO

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

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

Ultralytics NDJSON-Format

Das NDJSON-Format (Newline Delimited JSON) bietet eine alternative Möglichkeit, Datensätze für Ultralytics YOLO-Modelle zu definieren. Dieses Format speichert Datensatz-Metadaten und Annotationen in einer einzigen Datei, wobei jede Zeile ein separates JSON-Objekt enthält.

Eine NDJSON-Datensatzdatei enthält:

  1. Datensatzdatensatz (erste Zeile): Enthält Datensatz-Metadaten einschließlich Aufgabentyp, Klassennamen und allgemeine Informationen
  2. Bilddatensätze (nachfolgende Zeilen): Enthält individuelle Bilddaten einschließlich Abmessungen, Annotationen und Dateipfaden
NDJSON-Beispiel
{
    "type": "dataset",
    "task": "detect",
    "name": "Example",
    "description": "COCO NDJSON example dataset",
    "url": "https://app.ultralytics.com/user/datasets/example",
    "class_names": { "0": "person", "1": "bicycle", "2": "car" },
    "bytes": 426342,
    "version": 0,
    "created_at": "2024-01-01T00:00:00Z",
    "updated_at": "2025-01-01T00:00:00Z"
}

Anwendungsbeispiel

Um einen NDJSON-Datensatz mit YOLO26 zu verwenden, gib einfach den Pfad zur .ndjson-Datei an:

Beispiel
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Train using NDJSON dataset
results = model.train(data="path/to/dataset.ndjson", epochs=100, imgsz=640)

Vorteile des NDJSON-Formats

  • Einzelne Datei: Alle Datensatzinformationen sind in einer Datei enthalten
  • Streaming: Kann große Datensätze zeilenweise verarbeiten, ohne alles in den Arbeitsspeicher zu laden
  • Cloud-Integration: Unterstützt Remote-Bild-URLs für Cloud-basiertes Training
  • Erweiterbar: Einfaches Hinzufügen von benutzerdefinierten Metadatenfeldern
  • Versionskontrolle: Das Einzeldateiformat funktioniert gut mit git und Versionskontrollsystemen

Unterstützte Datensätze

Hier ist eine Liste der unterstützten Datensätze und eine kurze Beschreibung für jeden:

  • African-wildlife: Ein Datensatz mit Bildern afrikanischer Wildtiere, einschließlich Büffeln, Elefanten, Nashörnern und Zebras.
  • Argoverse: Ein Datensatz, der 3D-Tracking- und Bewegungs-Prognosedaten aus städtischen Umgebungen mit umfangreichen Annotationen enthält.
  • Brain-tumor: Ein Datensatz zur Erkennung von Hirntumoren, der MRT- oder CT-Scan-Bilder mit Details zu Vorhandensein, Lage und Eigenschaften von Tumoren enthält.
  • COCO: Common Objects in Context (COCO) ist ein groß angelegter Datensatz zur Objekterkennung, Segmentierung und Bildunterschriften mit 80 Objektkategorien.
  • COCO8: Ein kleinerer Ausschnitt der ersten 4 Bilder aus COCO train und COCO val, geeignet für schnelle Tests.
  • COCO8-Grayscale: Eine Graustufen-Version von COCO8, die durch Konvertierung von RGB in Graustufen erstellt wurde, nützlich für die Auswertung einkanaliger Modelle.
  • COCO8-Multispectral: Eine 10-Kanal-multispektrale Version von COCO8, erstellt durch Interpolation von RGB-Wellenlängen, nützlich für spektralbewusste Modellauswertungen.
  • COCO12-Formats: Ein Testdatensatz mit 12 Bildern, der alle unterstützten Bildformate (AVIF, BMP, DNG, HEIC, JP2, JPEG, JPG, MPO, PNG, TIF, TIFF, WebP) abdeckt, zur Validierung von Bildladepipelines.
  • COCO128: Ein kleinerer Ausschnitt der ersten 128 Bilder aus COCO train und COCO val, geeignet für Tests.
  • Construction-PPE: Ein Datensatz mit Baustellenarbeitern mit gelabelter Schutzausrüstung wie Helmen, Westen, Handschuhen, Stiefeln und Schutzbrillen, einschließlich Annotationen für fehlende Ausrüstung wie no_helmet, no_googles für die Überwachung der Einhaltung vor Ort.
  • Global Wheat 2020: Ein Datensatz mit Bildern von Weizenähren für die Global Wheat Challenge 2020.
  • HomeObjects-3K: Ein Datensatz mit Haushaltsgegenständen für den Innenbereich, darunter Betten, Stühle, Fernseher und mehr – ideal für Anwendungen in der Smart-Home-Automatisierung, Robotik, Augmented Reality und Raumanalyse.
  • KITTI: Ein Datensatz mit realen Fahrszenen mit Stereo-, LiDAR- und GPS/IMU-Daten, hier verwendet für 2D-Objekterkennungsaufgaben wie das Identifizieren von Autos, Fußgängern und Radfahrern in städtischen, ländlichen und Autobahnumgebungen.
  • LVIS: Ein groß angelegter Datensatz für Objekterkennung, Segmentierung und Bildunterschriften mit 1203 Objektkategorien.
  • Medical-pills: Ein Datensatz mit Bildern von medizinischen Pillen, annotiert für Anwendungen wie pharmazeutische Qualitätssicherung, Pillensortierung und Einhaltung gesetzlicher Vorschriften.
  • Objects365: Ein hochwertiger, groß angelegter Datensatz für Objekterkennung mit 365 Objektkategorien und über 600.000 annotierten Bildern.
  • OpenImagesV7: Ein umfassender Datensatz von Google mit 1,7 Mio. Trainingsbildern und 42.000 Validierungsbildern.
  • Roboflow 100: Ein vielfältiger Objekterkennungs-Benchmark mit 100 Datensätzen, die sieben Bilddomänen umfassen, für eine umfassende Modellauswertung.
  • Signature: Ein Datensatz mit Bildern verschiedener Dokumente mit annotierten Unterschriften, der die Forschung zur Dokumentenverifizierung und Betrugserkennung unterstützt.
  • SKU-110K: Ein Datensatz mit dichter Objekterkennung in Einzelhandelsumgebungen mit über 11.000 Bildern und 1,7 Millionen Bounding Boxes.
  • TT100K: Entdecke den Tsinghua-Tencent 100K (TT100K) Verkehrsschilderdatensatz mit 100.000 Straßenansichtsbildern und über 30.000 annotierten Verkehrsschildern für robuste Erkennung und Klassifizierung.
  • VisDrone: Ein Datensatz mit Objekterkennungs- und Multi-Objekt-Tracking-Daten aus drohnengestützten Aufnahmen mit über 10.000 Bildern und Videosequenzen.
  • VOC: Der Pascal Visual Object Classes (VOC) Datensatz für Objekterkennung und Segmentierung mit 20 Objektklassen und über 11.000 Bildern.
  • xView: Ein Datensatz zur Objekterkennung in Luftbildaufnahmen mit 60 Objektkategorien und über 1 Million annotierten Objekten.

Hinzufügen deines eigenen Datensatzes

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

Labelformate portieren oder konvertieren

COCO-Datensatzformat in das YOLO-Format

Du kannst Labels vom beliebten COCO-Datensatz-Format 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/")

Dieses Konvertierungstool kann verwendet werden, um den COCO-Datensatz oder jeden Datensatz im COCO-Format in das Ultralytics YOLO-Format zu konvertieren. Der Prozess transformiert die JSON-basierten COCO-Annotationen in das einfachere textbasierte YOLO-Format, wodurch er mit Ultralytics YOLO-Modellen kompatibel wird.

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

FAQ

Was ist das Ultralytics YOLO-Datensatzformat und wie ist es strukturiert?

Das Ultralytics YOLO-Format ist eine strukturierte Konfiguration zur Definition von Datensätzen in deinen Trainingsprojekten. Sie umfasst das Festlegen von Pfaden zu deinen Trainings-, Validierungs- und Testbildern sowie den entsprechenden Labels. Zum Beispiel:

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

# COCO8 dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/detect/coco8/
# Example usage: yolo train data=coco8.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco8 ← 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 # 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.zip

Labels werden in *.txt-Dateien gespeichert, wobei eine Datei pro Bild verwendet wird, formatiert als class x_center y_center width height mit normalisierten Koordinaten. Für eine detaillierte Anleitung siehe das COCO8-Datensatzbeispiel.

Wie konvertiere ich einen COCO-Datensatz in das YOLO-Format?

Du kannst einen COCO-Datensatz mit den Ultralytics Konvertierungstools in das YOLO-Format konvertieren. Hier ist eine schnelle Methode:

from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/")

Dieser Code konvertiert deine COCO-Annotationen in das YOLO-Format und ermöglicht eine nahtlose Integration mit Ultralytics YOLO-Modellen. Für weitere Details besuche den Abschnitt Labelformate portieren oder konvertieren.

Welche Datensätze werden von Ultralytics YOLO für die Objekterkennung unterstützt?

Ultralytics YOLO unterstützt eine breite Palette von Datensätzen, darunter:

Jede Datensatzseite bietet detaillierte Informationen zur Struktur und Verwendung, die auf ein effizientes Training mit YOLO26 zugeschnitten sind. Entdecke die vollständige Liste im Abschnitt Unterstützte Datensätze.

Wie beginne ich mit dem Training eines YOLO26-Modells unter Verwendung meines Datensatzes?

Um mit dem Training eines YOLO26-Modells zu beginnen, stelle sicher, dass dein Datensatz korrekt formatiert ist und die Pfade in einer YAML-Datei definiert sind. Verwende das folgende Skript, um das Training zu starten:

Beispiel
from ultralytics import YOLO

model = YOLO("yolo26n.pt")  # Load a pretrained model
results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)

Weitere Einzelheiten zur Nutzung verschiedener Modi, einschließlich CLI-Befehlen, findest du im Abschnitt Nutzung.

Wo finde ich praktische Beispiele für die Verwendung von Ultralytics YOLO zur Objekterkennung?

Ultralytics bietet zahlreiche Beispiele und praktische Leitfäden für den Einsatz von YOLO26 in verschiedenen Anwendungen. Für einen umfassenden Überblick besuche den Ultralytics Blog, wo du Fallstudien, detaillierte Tutorials und Community-Geschichten findest, die Objekterkennung, Segmentierung und mehr mit YOLO26 präsentieren. Spezielle Beispiele findest du im Abschnitt Nutzung in der Dokumentation.

Kommentare