Benutzerdefinierte Daten trainieren
📚 Diese Anleitung erklärt, wie du deinen eigenen Datensatz mit YOLOv5 🚀.
Bevor du anfängst
Klone das Repo und installiere die requirements.txt in einem Python>=3.8.0 Umgebung, einschließlich PyTorch>=1.8. Modelle und Datensätze werden automatisch von der neuesten YOLOv5 Version heruntergeladen.
git clone https://github.com/ultralytics/yolov5 # clone
cd yolov5
pip install -r requirements.txt # install
Mit benutzerdefinierten Daten trainieren
Die Erstellung eines benutzerdefinierten Modells zur Erkennung deiner Objekte ist ein iterativer Prozess, bei dem du Bilder sammelst und ordnest, deine interessanten Objekte kennzeichnest, ein Modell trainierst, es in der freien Wildbahn einsetzt, um Vorhersagen zu treffen, und dann dieses eingesetzte Modell nutzt, um Beispiele für Grenzfälle zu sammeln, die du wiederholen und verbessern kannst.
Lizenzierung
Ultralytics bietet zwei Lizenzierungsoptionen an:
- Die AGPL-3.0 Lizenz, eine von der OSI genehmigte Open-Source-Lizenz, ist ideal für Studierende und Enthusiasten.
- Die Enterprise-Lizenz für Unternehmen, die unsere KI-Modelle in ihre Produkte und Dienstleistungen einbinden möchten.
Weitere Informationen findest du unter Ultralytics Lizenzierung.
YOLOv5 Modelle müssen auf beschrifteten Daten trainiert werden, damit sie die Klassen der Objekte in diesen Daten lernen können. Es gibt zwei Möglichkeiten, deinen Datensatz zu erstellen, bevor du mit dem Training beginnst:
Option 1: Erstellen eines Roboflow Datensatz
1.1 Bilder sammeln
Dein Modell lernt durch Vorbild. Es ist äußerst wichtig, dass du mit Bildern trainierst, die denen ähneln, die es in freier Wildbahn sehen wird. Idealerweise sammelst du eine Vielzahl von Bildern mit der gleichen Konfiguration (Kamera, Winkel, Beleuchtung usw.), wie du dein Projekt letztendlich einsetzen wirst.
Wenn das nicht möglich ist, kannst du mit einem öffentlichen Datensatz beginnen, um dein anfängliches Modell zu trainieren und dann während der Inferenz Bilder aus der freien Natur auswählen, um deinen Datensatz und dein Modell iterativ zu verbessern.
1.2 Etiketten erstellen
Sobald du Bilder gesammelt hast, musst du die interessanten Objekte mit Anmerkungen versehen, um eine Grundlage für dein Modell zu schaffen.
Roboflow Annotate ist ein einfaches webbasiertes Tool, mit dem du deine Bilder gemeinsam mit deinem Team verwalten, beschriften und im YOLOv5's Annotationsformat exportieren kannst.
1.3 Datensatz vorbereiten für YOLOv5
Unabhängig davon, ob du deine Bilder mit Roboflow beschriftest oder nicht, kannst du damit deinen Datensatz in das Format YOLO konvertieren, eine YOLOv5 YAML-Konfigurationsdatei erstellen und sie für den Import in dein Trainingsskript bereitstellen.
Erstelle ein kostenloses Roboflow Konto und lade deinen Datensatz in eine Public
Arbeitsbereich, beschriften Sie alle unkommentierten Bilder und erstellen und exportieren Sie dann eine Version Ihres Datensatzes in YOLOv5 Pytorch
Format.
Hinweis: YOLOv5 führt während des Trainings eine Online-Erweiterung durch. Wir empfehlen daher, für das Training mit YOLOv5 keine Erweiterungsschritte in Roboflow durchzuführen. Wir empfehlen jedoch, die folgenden Vorverarbeitungsschritte anzuwenden:
- Auto-Ausrichtung - um die EXIF-Ausrichtung aus deinen Bildern zu entfernen.
- Größe ändern (strecken) - auf die quadratische Eingabegröße deines Modells (640x640 ist die Vorgabe von YOLOv5 ).
Wenn du eine Version erstellst, erhältst du eine Momentaufnahme deines Datensatzes. So kannst du immer wieder zurückgehen und deine zukünftigen Modell-Trainingsläufe damit vergleichen, auch wenn du später weitere Bilder hinzufügst oder die Konfiguration änderst.
Exportieren in YOLOv5 Pytorch
Format, dann kopiere das Snippet in dein Trainingsskript oder dein Notizbuch, um deinen Datensatz herunterzuladen.
Option 2: Einen manuellen Datensatz erstellen
2.1 Erstellen dataset.yaml
COCO128 ist ein Beispiel für einen kleinen Tutorial-Datensatz, der aus den ersten 128 Bildern in COCO train2017. These same 128 images are used for both training and validation to verify our training pipeline is capable of overfitting. data/coco128.yaml(siehe unten) ist die Dataset-Konfigurationsdatei, die 1) das Stammverzeichnis des Datasets definiert path
und relative Pfade zu train
/ val
/ test
Bildverzeichnisse (oder *.txt
Dateien mit Bildpfaden) und 2) eine Klasse names
Wörterbuch:
# 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/coco128 # dataset root dir
train: images/train2017 # train images (relative to 'path') 128 images
val: images/train2017 # val images (relative to 'path') 128 images
test: # test images (optional)
# Classes (80 COCO classes)
names:
0: person
1: bicycle
2: car
# ...
77: teddy bear
78: hair drier
79: toothbrush
2.2 Etiketten erstellen
Nachdem du deine Bilder mit einem Beschriftungswerkzeug beschriftet hast, exportiere deine Beschriftungen nach YOLO Format, mit einer *.txt
Datei pro Bild (wenn keine Objekte im Bild, keine *.txt
Datei erforderlich ist). Die *.txt
Dateispezifikationen sind:
- Eine Zeile pro Objekt
- Jede Zeile ist
class x_center y_center width height
Format. - Die Koordinaten der Box müssen in normalisierte xywh Format (von 0 bis 1). Wenn deine Boxen in Pixeln angegeben sind, teile
x_center
undwidth
durch die Bildbreite, undy_center
undheight
nach Bildhöhe. - Die Klassennummern sind null-indiziert (beginnen bei 0).
Die Etikettendatei, die dem obigen Bild entspricht, enthält 2 Personen (Klasse 0
) und ein Unentschieden (Klasse 27
):
2.3 Verzeichnisse organisieren
Organisiere deine Zug- und Val-Bilder und Beschriftungen nach dem folgenden Beispiel. YOLOv5 nimmt an /coco128
ist innerhalb einer /datasets
Verzeichnis neben Die /yolov5
Verzeichnis. YOLOv5 findet die Etiketten automatisch für jedes Bild durch Ersetzen der letzten Instanz von /images/
in jedem Bildpfad mit /labels/
. Zum Beispiel:
3. Wähle ein Modell
Wähle ein trainiertes Modell aus, um mit dem Training zu beginnen. Hier wählen wir YOLOv5s, das zweitkleinste und schnellste verfügbare Modell. In unserer README-Tabelle findest du einen vollständigen Vergleich aller Modelle.
4. Zug
Trainiere ein YOLOv5s-Modell auf COCO128, indem du den Datensatz, die Stapelgröße, die Bildgröße und entweder das Pre-Training --weights yolov5s.pt
(empfohlen), oder zufällig initialisiert --weights '' --cfg yolov5s.yaml
(nicht empfohlen). Vortrainierte Gewichte werden automatisch von der Datenbank heruntergeladen. neueste Version YOLOv5.
Tipp
💡 Hinzufügen --cache ram
oder --cache disk
um die Ausbildung zu beschleunigen (erfordert erhebliche RAM- und Festplattenressourcen).
Tipp
💡 Trainiere immer von einem lokalen Datensatz. Gemountete oder Netzlaufwerke wie Google Drive werden sehr langsam sein.
Alle Trainingsergebnisse werden gespeichert in runs/train/
mit inkrementellen Laufverzeichnissen, d.h. runs/train/exp2
, runs/train/exp3
usw. Weitere Informationen findest du im Abschnitt Training in unserem Tutorial-Notizbuch.
5. Visualisiere
Comet Protokollierung und Visualisierung 🌟 NEU
Comet ist jetzt vollständig mit YOLOv5 integriert. Verfolge und visualisiere Modellmetriken in Echtzeit, speichere deine Hyperparameter, Datensätze und Modellprüfpunkte und visualisiere deine Modellvorhersagen mit Comet Custom Panels! Comet sorgt dafür, dass du nie den Überblick über deine Arbeit verlierst, und macht es einfach, Ergebnisse zu teilen und mit Teams jeder Größe zusammenzuarbeiten!
Der Einstieg ist ganz einfach:
pip install comet_ml # 1. install
export COMET_API_KEY=<Your API Key> # 2. paste API key
python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt # 3. train
Um mehr über alle unterstützten Comet Funktionen für diese Integration zu erfahren, schau dir die Comet Tutorial. Wenn du mehr über Comet erfahren möchtest, besuche unsere Dokumentation. Probiere das Comet Colab Notebook aus:
ClearML Protokollierung und Automatisierung 🌟 NEU
ClearML ist vollständig in YOLOv5 integriert, um deine Experimente zu verfolgen, Datensatzversionen zu verwalten und sogar Trainingsläufe aus der Ferne durchzuführen. Um ClearML zu aktivieren:
pip install clearml
- laufen.
clearml-init
um eine Verbindung zu einem ClearML Server herzustellen
Du bekommst alle Funktionen, die du von einem Experiment-Manager erwartest: Live-Updates, Modell-Upload, Experiment-Vergleich usw. Aber ClearML verfolgt zum Beispiel auch unbestätigte Änderungen und installierte Pakete. Dank ClearML sind Tasks (so nennen wir die Experimente) auch auf verschiedenen Rechnern reproduzierbar! Mit nur einer zusätzlichen Zeile können wir eine YOLOv5 Trainingsaufgabe in eine Warteschlange einplanen, die von einer beliebigen Anzahl von ClearML Agenten (Arbeitern) ausgeführt wird.
Du kannst ClearML Data verwenden, um deinen Datensatz zu versionieren und ihn dann einfach mit seiner eindeutigen ID an YOLOv5 zu übergeben. So behältst du den Überblick über deine Daten, ohne dass du dir zusätzliche Mühe machen musst. Weitere Informationen findest du im ClearML Tutorial!
Lokales Logging
Die Trainingsergebnisse werden automatisch mit Tensorboard und CSV Logger zu runs/train
wobei für jedes neue Training ein neues Experimentierverzeichnis erstellt wird als runs/train/exp2
, runs/train/exp3
, etc.
This directory contains train and val statistics, mosaics, labels, predictions and augmented mosaics, as well as metrics and charts including precision-recall (PR) curves and confusion matrices.
Ergebnisdatei results.csv
is updated after each epoch, and then plotted as results.png
(unten), nachdem das Training abgeschlossen ist. Du kannst auch jede results.csv
Datei manuell:
from utils.plots import plot_results
plot_results("path/to/results.csv") # plot 'results.csv' as 'results.png'
Nächste Schritte
Sobald dein Modell trainiert ist, kannst du deinen besten Kontrollpunkt verwenden best.pt
zu:
- Führen Sie CLI oder Python Inferenz auf neue Bilder und Videos
- Validate accuracy on train, val and test splits
- Export to TensorFlow, Keras, ONNX, TFlite, TF.js, CoreML and TensorRT formats
- Hyperparameter weiterentwickeln, um die Leistung zu verbessern
- Verbessere dein Modell, indem du Bilder aus der realen Welt nimmst und sie deinem Datensatz hinzufügst
Unterstützte Umgebungen
Ultralytics bietet eine Reihe gebrauchsfertiger Umgebungen, die jeweils mit wichtigen Abhängigkeiten vorinstalliert sind, wie z. B. CUDA, CUDNN, Python, und PyTorch, um deine Projekte zu starten.
- Kostenlose GPU Notizbücher:
- Google Cloud: GCP Schnellstart-Anleitung
- Amazon: AWS Schnellstart-Anleitung
- Azure: AzureML Schnellstartanleitung
- Docker: Docker Schnellstart-Anleitung
Projektstatus
Dieses Abzeichen zeigt an, dass alle YOLOv5 GitHub Actions Continuous Integration (CI) Tests erfolgreich bestanden wurden. Diese CI-Tests überprüfen die Funktionalität und Leistung von YOLOv5 in verschiedenen Bereichen: Training, Validierung, Inferenz, Export und Benchmarks. Sie gewährleisten einen konsistenten und zuverlässigen Betrieb unter macOS, Windows und Ubuntu. Die Tests werden alle 24 Stunden und bei jeder neuen Übertragung durchgeführt.
FAQ
Wie trainiere ich YOLOv5 auf meinem eigenen Datensatz?
Das Training von YOLOv5 auf einem benutzerdefinierten Datensatz umfasst mehrere Schritte:
- Bereite deinen Datensatz vor: Sammle und beschrifte die Bilder. Verwende Tools wie Roboflow um die Daten zu organisieren und im FormatYOLOv5 zu exportieren.
- Umgebung einrichten: Klone das YOLOv5 Repo und installiere die Abhängigkeiten:
- Datensatzkonfiguration erstellen: Schreibe eine
dataset.yaml
Datei, in der die Zug-/Val-Pfade und Klassennamen definiert sind. - Das Modell trainieren:
Welche Tools kann ich verwenden, um meinen YOLOv5 Datensatz mit Anmerkungen zu versehen?
Du kannst Roboflow Annotate verwenden, ein intuitives, webbasiertes Tool zur Beschriftung von Bildern. Es unterstützt die Zusammenarbeit im Team und exportiert im Format YOLOv5 . Nach dem Sammeln der Bilder kannst du mit Roboflow effizient Anmerkungen erstellen und verwalten. Weitere Optionen sind Tools wie LabelImg und CVAT für lokale Beschriftungen.
Warum sollte ich Ultralytics HUB für die Ausbildung meiner YOLO Modelle nutzen?
Ultralytics HUB bietet eine durchgängige Plattform für die Schulung, den Einsatz und die Verwaltung von YOLO Modellen, ohne dass umfangreiche Programmierkenntnisse erforderlich sind. Die Vorteile der Nutzung von Ultralytics HUB sind
- Einfache Modellschulung: Vereinfacht den Trainingsprozess mit vorkonfigurierten Umgebungen.
- Datenmanagement: Verwalte mühelos Datensätze und Versionskontrolle.
- Überwachung in Echtzeit: Integriert Tools wie Comet für die Verfolgung und Visualisierung von Metriken in Echtzeit.
- Kollaboration: Ideal für Teamprojekte mit gemeinsamen Ressourcen und einfacher Verwaltung.
Wie konvertiere ich meine kommentierten Daten in das Format YOLOv5 ?
Um kommentierte Daten in das Format YOLOv5 zu konvertieren, verwende Roboflow:
- Lade deinen Datensatz in einen Roboflow Arbeitsbereich hoch.
- Beschrifte die Bilder, wenn sie noch nicht beschriftet sind.
- Generieren und exportieren den Datensatz in
YOLOv5 Pytorch
Format. Vergewissere dich, dass Vorverarbeitungsschritte wie automatische Ausrichtung und Größenanpassung (Streckung) an die quadratische Eingabegröße (z. B. 640x640) durchgeführt werden. - Lade den Datensatz herunter und integriere ihn in dein YOLOv5 Trainingsskript.
Welche Lizenzierungsmöglichkeiten gibt es für die Nutzung von YOLOv5 in kommerziellen Anwendungen?
Ultralytics bietet zwei Lizenzierungsoptionen an:
- AGPL-3.0 Lizenz: Eine Open-Source-Lizenz, die für die nicht-kommerzielle Nutzung geeignet ist, ideal für Studierende und Enthusiasten.
- Unternehmenslizenz: Maßgeschneidert für Unternehmen, die YOLOv5 in kommerzielle Produkte und Dienstleistungen integrieren möchten. Ausführliche Informationen findest du auf unserer Seite zur Lizenzierung.
Weitere Informationen findest du in unserem Leitfaden zur Ultralytics Lizenzierung.