Überblick über Objekterkennungs-Datasets
Das Trainieren eines robusten und genauen Objekterkennungsmodells erfordert einen umfassenden Datensatz. Dieser Leitfaden stellt verschiedene Formate von Datensätzen vor, die mit dem Ultralytics YOLO-Modell kompatibel sind, und gibt Einblicke in ihre Struktur, Verwendung und Konvertierung zwischen verschiedenen Formaten.
Unterstützte Datensatzformate
Ultralytics YOLO Format
Das Ultralytics YOLO-Format ist ein Datensatzkonfigurationsformat, mit dem Sie das Stammverzeichnis des Datensatzes, die relativen Pfade zu den Bildverzeichnissen für Training/Validierung/Test oder *.txt
Dateien mit Bildpfaden und einem Dictionary mit Klassennamen. 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
Beschriftungen für dieses Format sollten mit einem in das YOLO-Format exportiert werden *.txt
Datei pro Bild. Wenn ein Bild keine Objekte enthält, darf keine *.txt
Datei ist erforderlich. Die *.txt
Datei sollte mit einer Zeile pro Objekt in class x_center y_center width height
Format. Box-Koordinaten müssen in normalisiertem xywh Format (von 0 bis 1). Wenn sich Ihre Boxen in Pixeln befinden, sollten Sie diese dividieren x_center
und width
durch die Bildbreite und y_center
und height
nach Bildhöhe. Klassennummern sollten nullindiziert sein (beginnend mit 0).
Die zum obigen Bild gehörende Beschriftungsdatei enthält 2 Personen (Klasse 0
) und eine Krawatte (Klasse 27
):
Wenn Sie das Ultralytics YOLO-Format verwenden, organisieren Sie Ihre Trainings- und Validierungsbilder und -beschriftungen wie im folgenden COCO8-Datensatz-Beispiel gezeigt.
Anwendungsbeispiel
Hier erfahren Sie, wie Sie Datensätze im YOLO-Format verwenden können, um Ihr Modell zu trainieren:
Beispiel
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640
Ultralytics NDJSON-Format
Das NDJSON-Format (Newline Delimited JSON) bietet eine alternative Möglichkeit, Datensätze für Ultralytics YOLO11-Modelle zu definieren. Bei diesem Format werden Datensatz-Metadaten und -Annotationen in einer einzigen Datei gespeichert, wobei jede Zeile ein separates JSON-Objekt enthält.
Eine NDJSON-Datensatzdatei enthält:
- Datensatz-Eintrag (erste Zeile): Enthält Datensatz-Metadaten, einschließlich Aufgabentyp, Klassennamen und allgemeine Informationen
- Bild-Einträge (nachfolgende Zeilen): Enthält individuelle Bilddaten, einschließlich Abmessungen, Annotationen und Dateipfade
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"
}
{
"type": "image",
"file": "image1.jpg",
"url": "https://www.url.com/path/to/image1.jpg",
"width": 640,
"height": 480,
"split": "train",
"annotations": {
"boxes": [
[0, 0.52481, 0.37629, 0.28394, 0.41832],
[1, 0.73526, 0.29847, 0.19275, 0.33691]
]
}
}
Anmerkungsformate nach Aufgabe:
- Erkennung:
"annotations": {"boxes": [[class_id, x_center, y_center, width, height], ...]}
- Segmentierung:
"annotations": {"segments": [[class_id, x1, y1, x2, y2, ...], ...]}
- Pose:
"annotations": {"pose": [[class_id, x1, y1, v1, x2, y2, v2, ...], ...]}
- OBB:
"annotations": {"obb": [[class_id, x_center, y_center, width, height, angle], ...]}
- Klassifizierung:
"annotations": {"classification": [class_id]}
Anwendungsbeispiel
Um einen NDJSON-Datensatz mit YOLO11 zu verwenden, gib einfach den Pfad zu dem .ndjson
Datei:
Beispiel
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt")
# Train using NDJSON dataset
results = model.train(data="path/to/dataset.ndjson", epochs=100, imgsz=640)
# Start training with NDJSON dataset
yolo detect train data=path/to/dataset.ndjson model=yolo11n.pt epochs=100 imgsz=640
Vorteile des NDJSON-Formats
- Einzelne Datei: Alle Datensatzinformationen in einer Datei enthalten
- Streaming: Kann große Datensätze Zeile für Zeile verarbeiten, ohne alles in den Speicher zu laden
- Cloud-Integration: Unterstützt Remote-Bild-URLs für Cloud-basiertes Training
- Erweiterbar: Einfaches Hinzufügen benutzerdefinierter Metadatenfelder
- Versionskontrolle: 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:
- Argoverse: Ein Datensatz, der 3D-Tracking- und Bewegungsprognosedaten aus städtischen Umgebungen mit umfangreichen Anmerkungen enthält.
- COCO: Common Objects in Context (COCO) ist ein umfangreicher Datensatz für Objekterkennung, Segmentierung und Bildbeschriftung mit 80 Objektkategorien.
- LVIS: Ein umfangreicher Datensatz für Objekterkennung, Segmentierung und Bildbeschriftung mit 1203 Objektkategorien.
- COCO8: Eine kleinere Teilmenge der ersten 4 Bilder aus COCO train und COCO val, geeignet für schnelle Tests.
- COCO8-Grayscale: Eine Graustufenversion von COCO8, die durch Konvertierung von RGB in Graustufen erstellt wurde und für die Einkanal-Modellbewertung nützlich ist.
- COCO8-Multispectral: Eine 10-Kanal-Multispektralversion von COCO8, die durch Interpolation von RGB-Wellenlängen erstellt wurde und für die spektrale Modellbewertung nützlich ist.
- COCO128: Eine kleinere Teilmenge der ersten 128 Bilder aus COCO train und COCO val, geeignet für Tests.
- Global Wheat 2020: Ein Datensatz, der Bilder von Weizenähren für die Global Wheat Challenge 2020 enthält.
- Objects365: Ein hochwertiger, umfangreicher Datensatz für Objekterkennung mit 365 Objektkategorien und über 600.000 annotierten Bildern.
- OpenImagesV7: Ein umfassender Datensatz von Google mit 1,7 Millionen Trainingsbildern und 42.000 Validierungsbildern.
- SKU-110K: Ein Datensatz mit dichter Objekterkennung in Einzelhandelsumgebungen mit über 11.000 Bildern und 1,7 Millionen Bounding Boxes.
- HomeObjects-3K Neu 🚀: 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.
- VisDrone: Ein Datensatz, der Objekterkennungs- und Multi-Objekt-Tracking-Daten aus von Drohnen aufgenommenen Bildern mit über 10.000 Bildern und Videosequenzen enthält.
- VOC: Der Pascal Visual Object Classes (VOC) Datensatz für Objekterkennung und Segmentierung mit 20 Objektklassen und über 11.000 Bildern.
- xView: Ein Datensatz für Objekterkennung in Luftaufnahmen mit 60 Objektkategorien und über 1 Million annotierten Objekten.
- Roboflow 100: Ein vielfältiger Benchmark für Objekterkennung mit 100 Datensätzen aus sieben Bildgebungsbereichen zur umfassenden Modellbewertung.
- Brain-tumor: Ein Datensatz zur Erkennung von Hirntumoren, der MRT- oder CT-Scan-Bilder mit Details zu Vorhandensein, Lage und Eigenschaften des Tumors enthält.
- African-wildlife: Ein Datensatz mit Bildern afrikanischer Wildtiere, darunter Büffel, Elefanten, Nashörner und Zebras.
- Signature: Ein Datensatz mit Bildern verschiedener Dokumente mit annotierten Unterschriften, der die Dokumentenprüfung und die Forschung zur Betrugserkennung unterstützt.
- Medical-pills: Ein Datensatz mit Bildern von medizinischen Pillen, die für Anwendungen wie pharmazeutische Qualitätssicherung, Pillensortierung und Einhaltung gesetzlicher Vorschriften annotiert sind.
Hinzufügen Ihres eigenen Datensatzes
Wenn Sie Ihr eigenes Dataset haben und es für das Training von Erkennungsmodellen im Ultralytics YOLO-Format verwenden möchten, stellen Sie sicher, dass es dem oben unter „Ultralytics YOLO-Format“ angegebenen Format entspricht. Konvertieren Sie Ihre Annotationen in das erforderliche Format und geben Sie die Pfade, die Anzahl der Klassen und die Klassennamen in der YAML-Konfigurationsdatei an.
Labelformate portieren oder konvertieren
COCO-Datensatzformat zu YOLO-Format
Sie können Labels einfach aus dem populären COCO-Datensatzformat in das YOLO-Format konvertieren, indem Sie den folgenden Code-Schnipsel verwenden:
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 einen beliebigen Datensatz im COCO-Format in das Ultralytics YOLO-Format zu konvertieren. Der Prozess wandelt die JSON-basierten COCO-Annotationen in das einfachere textbasierte YOLO-Format um, wodurch es mit Ultralytics YOLO-Modellen kompatibel wird.
Denken Sie daran, nochmals zu überprüfen, ob das Dataset, das Sie verwenden möchten, mit Ihrem Modell kompatibel ist und die erforderlichen Formatkonventionen einhält. Korrekt formatierte Datasets sind entscheidend für das Trainieren erfolgreicher Objekterkennungsmodelle.
FAQ
Was ist das Ultralytics YOLO-Datensatzformat und wie ist es aufgebaut?
Das Ultralytics YOLO-Format ist eine strukturierte Konfiguration zur Definition von Datensätzen in Ihren Trainingsprojekten. Es beinhaltet das Festlegen von Pfaden zu Ihren Trainings-, Validierungs- und Testbildern sowie den dazugehörigen Beschriftungen. 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
Beschriftungen werden gespeichert in *.txt
Dateien mit einer Datei pro Bild, formatiert als class x_center y_center width height
mit normalisierten Koordinaten. Eine detaillierte Anleitung finden Sie im COCO8 Datensatz Beispiel.
Wie konvertiere ich einen COCO-Datensatz in das YOLO-Format?
Sie können 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 Ihre COCO-Annotationen in das YOLO-Format und ermöglicht so eine nahtlose Integration mit Ultralytics YOLO-Modellen. Weitere Informationen finden Sie im Abschnitt Labelformate portieren oder konvertieren.
Welche Datasets werden von Ultralytics YOLO für die Objekterkennung unterstützt?
Ultralytics YOLO unterstützt eine Vielzahl von Datensätzen, darunter:
Jede Datensatzseite bietet detaillierte Informationen über die Struktur und Verwendung, die auf ein effizientes YOLO11-Training zugeschnitten sind. Entdecken Sie die vollständige Liste im Abschnitt Unterstützte Datensätze.
Wie beginne ich mit dem Training eines YOLO11-Modells mit meinem Datensatz?
Um mit dem Training eines YOLO11-Modells zu beginnen, stellen Sie sicher, dass Ihr Datensatz korrekt formatiert ist und die Pfade in einer YAML-Datei definiert sind. Verwenden Sie das folgende Skript, um mit dem Training zu beginnen:
Beispiel
from ultralytics import YOLO
model = YOLO("yolo11n.pt") # Load a pretrained model
results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)
yolo detect train data=path/to/your_dataset.yaml model=yolo11n.pt epochs=100 imgsz=640
Weitere Informationen zur Verwendung verschiedener Modi, einschließlich CLI-Befehle, finden Sie im Abschnitt Verwendung.
Wo finde ich praktische Beispiele für die Verwendung von Ultralytics YOLO zur Objekterkennung?
Ultralytics bietet zahlreiche Beispiele und praktische Anleitungen für die Verwendung von YOLO11 in verschiedenen Anwendungen. Einen umfassenden Überblick finden Sie im Ultralytics-Blog, wo Sie Fallstudien, detaillierte Tutorials und Community-Berichte über Objekterkennung, Segmentierung und mehr mit YOLO11 finden. Spezifische Beispiele finden Sie im Abschnitt Verwendung in der Dokumentation.