Ultralytics YOLO27:

Übersicht über Datensätze zur Objekterkennung#

Das Training eines robusten und präzisen Objekterkennungsmodells 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 unterschiedlichen Formaten.

Unterstützte Datensatzformate#

Ultralytics-YOLO-Format#

Das Ultralytics-YOLO-Format ist ein Konfigurationsformat für Datensätze, mit dem du das Stammverzeichnis des Datensatzes, die relativen Pfade zu den Bildverzeichnissen für Training, Validierung und Test oder zu *.txt-Dateien mit Bildpfaden sowie ein Verzeichnis mit Klassennamen festlegen 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

Jede der Dateien train, val und test akzeptiert ein Verzeichnis, eine Liste von Verzeichnissen oder eine *.txt-Datei, die pro Zeile einen Bildpfad enthält (Pfade, die mit ./ beginnen, werden relativ zur Datei *.txt aufgelöst). Eine *.txt-Datei ist nützlich, um mit einer Teilmenge eines Verzeichnisses zu trainieren, nicht beschriftete Bilder zu überspringen oder Bilder aus mehreren Quellen zu einem Datensatzabschnitt zusammenzuführen.

Bildpfade als `*.txt`-Datei
path: datasets/coco8 # dataset root
train: train.txt # a directory, a list e.g. [images/a, images/b], or a *.txt file
val: val.txt
names:
  0: person

Die Beschriftungen für dieses Format sollten im YOLO-Format exportiert werden, mit einer *.txt-Datei pro Bild. Wenn ein Bild keine Objekte enthält, ist keine *.txt-Datei erforderlich. Die Datei *.txt sollte mit einer Zeile pro Objekt im class x_center y_center width height-Format strukturiert sein. Die Boxkoordinaten müssen im normalisierten xywh-Format (von 0 bis 1) vorliegen. Wenn deine Boxen in Pixeln angegeben sind, solltest du x_center und width durch die Bildbreite sowie y_center und height durch die Bildhöhe teilen. Klassennummern müssen bei null beginnen.

YOLO labeled image with bounding boxes on persons and tie

Die Beschriftungsdatei für das oben gezeigte Bild 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 zugehörigen Beschriftungen wie im folgenden Beispiel des COCO8-Datensatzes.

YOLO dataset directory structure with train and val folders

Anwendungsbeispiel#

So kannst du Datensätze im YOLO-Format zum Trainieren deines Modells verwenden:

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 (JSON mit Zeilenumbrüchen) bietet eine alternative Möglichkeit, Datensätze für Ultralytics-YOLO-Modelle zu definieren. Dieses Format speichert Datensatzmetadaten 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 Datensatzmetadaten wie Aufgabentyp, Klassennamen und allgemeine Informationen
  2. Bilddatensätze (folgende Zeilen): Enthalten die Daten einzelner Bilder, einschließlich Abmessungen, Annotationen und Dateipfaden
NDJSON-Beispiel
{
    "type": "dataset",
    "task": "detect",
    "name": "Example",
    "description": "COCO NDJSON example dataset",
    "url": "https://platform.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"
}

Benutzerdefinierte Bildmetadaten#

Jeder Bilddatensatz kann ein metadata-JSON-Objekt für anwendungsspezifische Informationen enthalten, etwa Aufnahmebedingungen, Gerätekennungen oder den Prüfstatus. Verschachtelte Werte werden unterstützt. Beim Import in die Ultralytics Platform werden die Metadaten zusammen mit dem Bild gespeichert und können im Vollbild-Informationsbereich angezeigt oder bearbeitet werden.

{
    "type": "image",
    "file": "airbus-wing.jpg",
    "url": "https://example.com/airbus-wing.jpg",
    "split": "train",
    "metadata": {
        "aircraft": { "family": "A350", "section": "wing" },
        "inspectionStatus": "reviewed"
    }
}

Die Plattform begrenzt die Schlüssel der Metadaten auf oberster Ebene auf 128 Zeichen, das serialisierte Metadatenobjekt jedes Bildes auf 500.000 Zeichen und die zusammengeführten effektiven Metadaten eines einzelnen NDJSON-Imports auf 500.000 Zeichen.

Anwendungsbeispiel#

Um einen NDJSON-Datensatz mit YOLO26 zu verwenden, gib einfach den Pfad zur Datei .ndjson 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#

  • Eine Datei: Alle Informationen zum Datensatz befinden sich in einer Datei
  • Streaming: Große Datensätze können zeilenweise verarbeitet werden, ohne alles in den Speicher zu laden
  • Cloud-Integration: Unterstützt entfernte Bild-URLs für cloudbasiertes Training
  • Erweiterbarkeit: Benutzerdefinierte Metadatenfelder lassen sich einfach hinzufügen
  • Versionskontrolle: Das Ein-Datei-Format eignet sich gut für Git und Versionskontrollsysteme

Unterstützte Datensätze#

Hier ist eine Liste der unterstützten Datensätze und eine kurze Beschreibung für jeden Datensatz. Die meisten dieser Datensätze werden auch auf der Ultralytics Platform gehostet, wo du die Bilder und Annotationen durchsuchen, die Datensatzstatistiken einsehen und die Datensätze für das Cloud-Training klonen kannst.

  • African-wildlife: Ein Datensatz mit Bildern afrikanischer Wildtiere, darunter Büffel, Elefanten, Nashörner und Zebras.
  • Argoverse: Ein Datensatz mit Daten zur 3D-Verfolgung und Bewegungsprognose aus städtischen Umgebungen mit umfangreichen Annotationen.
  • Brain-tumor: Ein Datensatz zur Erkennung von Hirntumoren mit MRT- oder CT-Aufnahmen sowie Angaben zum Vorhandensein, zur Lage und zu den Eigenschaften der Tumoren.
  • COCO: Common Objects in Context (COCO) ist ein groß angelegter Datensatz zur Objekterkennung, Segmentierung und Bildbeschreibung mit 80 Objektkategorien.
  • COCO8: Eine kleinere Teilmenge der ersten 8 Bilder aus dem COCO train2017-Datensatz, 4 für das Training und 4 für die Validierung, geeignet für schnelle Tests.
  • COCO8-Grayscale: Eine Graustufenversion von COCO8, die durch die Umwandlung von RGB in Graustufen erstellt wurde und sich für die Evaluierung von Modellen mit einem Kanal eignet.
  • COCO8-Multispectral: Eine multispektrale Version von COCO8 mit 10 Kanälen, die durch Interpolation der RGB-Wellenlängen erstellt wurde und sich für die spektralbewusste Evaluierung von Modellen eignet.
  • COCO12-Formats: Ein Testdatensatz mit 12 Bildern in 12 unterstützten Bildformaten (AVIF, BMP, DNG, HEIC, JP2, JPEG, JPG, MPO, PNG, TIF, TIFF, WebP) zur Validierung von Bildladepipelines.
  • COCO16: Eine Teilmenge der ersten 16 Bilder aus COCO train2017 (8 Training + 8 Validierung), geeignet für schnelle Tests.
  • COCO32: Eine Teilmenge der ersten 32 Bilder aus COCO train2017 (16 Training + 16 Validierung), geeignet für schnelle Tests.
  • COCO64: Eine Teilmenge der ersten 64 Bilder aus COCO train2017 (32 Training + 32 Validierung), geeignet für schnelle Tests.
  • COCO128: Eine kleinere Teilmenge der ersten 128 Bilder aus COCO train2017, geeignet für Tests.
  • Construction-PPE: Ein Datensatz mit Bauarbeitern und beschrifteter Schutzausrüstung wie Helmen, Westen, Handschuhen, Stiefeln und Schutzbrillen, einschließlich Annotationen für fehlende Ausrüstung wie no_helmet und no_goggle zur Überwachung der Einhaltung von Sicherheitsvorschriften in der Praxis.
  • Global Wheat 2020: Ein Datensatz mit Bildern von Weizenähren für die Global Wheat Challenge 2020.
  • HomeObjects-3K: Ein Datensatz mit Haushaltsgegenständen in Innenräumen, darunter Betten, Stühle, Fernseher und mehr – ideal für Anwendungen in der Smart-Home-Automatisierung, Robotik, erweiterten Realität und Raumaufbauanalyse.
  • KITTI: Ein Datensatz mit realen Fahrszenen sowie Stereo-, LiDAR- und GPS/IMU-Daten, der hier für Aufgaben der 2D-Objekterkennung verwendet wird, etwa zur Erkennung von Autos, Fußgängern und Radfahrern in städtischen, ländlichen und auf Autobahnen aufgenommenen Umgebungen.
  • LVIS: Ein groß angelegter Datensatz zur Objekterkennung, Segmentierung und Bildbeschreibung mit 1203 Objektkategorien.
  • Medical-pills: Ein Datensatz mit Bildern medizinischer Tabletten, annotiert für Anwendungen wie pharmazeutische Qualitätssicherung, Tablettensortierung und die Einhaltung gesetzlicher Vorschriften.
  • Objects365: Ein hochwertiger, groß angelegter Datensatz zur 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 Benchmark für die Objekterkennung mit 100 Datensätzen aus sieben Bildbereichen zur umfassenden Modellbewertung.
  • Signature: Ein Datensatz mit Bildern verschiedener Dokumente und annotierten Unterschriften, der die Forschung zur Dokumentenprüfung und Betrugserkennung unterstützt.
  • SKU-110K: Ein Datensatz für die Erkennung dicht angeordneter Objekte in Einzelhandelsumgebungen mit über 11.000 Bildern und 1,7 Millionen Bounding Boxes.
  • TT100K: Erkunde den Verkehrszeichendatensatz Tsinghua-Tencent 100K (TT100K) mit 16.817 Straßenansichten aus 221 Verkehrsschildkategorien für robuste Erkennung und Klassifizierung.
  • VisDrone: Ein Datensatz mit Daten zur Objekterkennung und Verfolgung mehrerer Objekte aus Drohnenaufnahmen mit über 10.000 Bildern und Videosequenzen.
  • VOC: Der Datensatz Pascal Visual Object Classes (VOC) zur Objekterkennung und Segmentierung mit 20 Objektklassen und über 11.000 Bildern.
  • xView: Ein Datensatz zur Objekterkennung in Aufnahmen aus der Vogelperspektive mit 60 Objektkategorien und über 1 Million annotierten Objekten.

Eigenen Datensatz hinzufügen#

Wenn du über einen eigenen Datensatz verfügst und ihn zum Trainieren von Erkennungsmodellen im Ultralytics-YOLO-Format verwenden möchtest, stelle sicher, dass er dem oben unter „Ultralytics-YOLO-Format“ beschriebenen 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.

Beschriftungsformate übertragen oder konvertieren#

COCO-Datensatzformat in YOLO-Format konvertieren#

Du kannst Beschriftungen aus dem beliebten COCO-Datensatzformat mithilfe des folgenden Codeausschnitts einfach in das YOLO-Format konvertieren:

Beispiel
from ultralytics.data.converter import convert_coco

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

Dieses Konvertierungswerkzeug kann den COCO-Datensatz oder jeden Datensatz im COCO-Format in das Ultralytics-YOLO-Format konvertieren. Dabei werden die JSON-basierten COCO-Annotationen in das einfachere textbasierte YOLO-Format umgewandelt, wodurch sie mit Ultralytics-YOLO-Modellen kompatibel werden. Den vollständigen Ablauf – einschließlich der Zuordnung von Klassen-IDs, der Verzeichnisstruktur sowie der Segmentierungs- oder Pose-Annotationen – findest du unter COCO-Annotationen in YOLO konvertieren.

Prüfe sorgfältig, ob der gewünschte Datensatz mit deinem Modell kompatibel ist und die erforderlichen Formatkonventionen einhält. Korrekt formatierte Datensätze sind entscheidend für das erfolgreiche Training von Objekterkennungsmodellen.

Wie geht es weiter?#

Sobald dein Datensatz korrekt formatiert ist, starte das Training deines Modells. Du weißt nicht, mit welchem vortrainierten Modell du beginnen solltest? Vergleiche die Optionen in der YOLO26-Modellfamilie.

FAQ#

  • Das Ultralytics-YOLO-Format ist eine strukturierte Konfiguration zum Definieren von Datensätzen in deinen Trainingsprojekten. Dazu werden Pfade zu deinen Trainings-, Validierungs- und Testbildern sowie den zugehörigen Beschriftungen festgelegt. 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

    Beschriftungen werden in *.txt-Dateien gespeichert, mit einer Datei pro Bild, formatiert als class x_center y_center width height mit normalisierten Koordinaten. Eine ausführliche Anleitung findest du im COCO8-Datensatzbeispiel.

  • Du kannst einen COCO-Datensatz mithilfe der Ultralytics-Konvertierungswerkzeuge 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 dadurch eine nahtlose Integration in Ultralytics-YOLO-Modelle. Weitere Informationen findest du im Abschnitt Beschriftungsformate übertragen oder konvertieren.

  • Ultralytics YOLO unterstützt eine große Auswahl an Datensätzen, darunter:

    Jede Datensatzseite bietet ausführliche Informationen zur Struktur und Verwendung, abgestimmt auf ein effizientes YOLO26-Training. Die vollständige Liste findest du im Abschnitt Unterstützte Datensätze.

  • 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 Informationen zur Verwendung verschiedener Modi, einschließlich CLI-Befehlen, findest du im Abschnitt Verwendung.

  • Ultralytics bietet zahlreiche Beispiele und praxisnahe Anleitungen für die Verwendung von YOLO26 in verschiedenen Anwendungsbereichen. Eine umfassende Übersicht findest du im Ultralytics Blog mit Fallstudien, ausführlichen Tutorials und Erfahrungsberichten aus der Community zu Objekterkennung, Segmentierung und weiteren Themen mit YOLO26. Konkrete Beispiele findest du im Dokumentationsabschnitt Verwendung.

Kommentare