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. Dieselben 128 Bilder werden sowohl für das Training als auch für die Validierung verwendet, um zu überprüfen, ob unsere Trainingspipeline zu einer Überanpassung fähig ist. 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 mit 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.
Dieses Verzeichnis enthält Zug- und Val-Statistiken, Mosaike, Beschriftungen, Vorhersagen und erweiterte Mosaike sowie Metriken und Diagramme, darunter Precision-Recall-Kurven (PR) und Konfusionsmatrizen.
Ergebnisdatei results.csv
wird nach jeder Epoche aktualisiert und dann aufgezeichnet als 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
- Überprüfe die Genauigkeit von Train-, Val- und Test-Splits
- Export in die Formate TensorFlow, Keras, ONNX, TFlite, TF.js, CoreML und TensorRT
- 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 wie CUDA, CUDNN vorinstalliert sind, Python, und PyTorch, um deine Projekte zu starten.
- Kostenlose GPU-Notebooks:
- 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.