Zum Inhalt springen

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

Ultralytics aktives Lernen

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:

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.

YOLOv5 Genauigkeiten

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:

Empfohlene Vorverarbeitungsschritte

  • 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.

Export im YOLOv5 Format

Exportieren in YOLOv5 Pytorch Format, dann kopiere das Snippet in dein Trainingsskript oder dein Notizbuch, um deinen Datensatz herunterzuladen.

Roboflow Datensatz herunterladen Schnipsel

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 und width durch die Bildbreite, und y_center und height nach Bildhöhe.
  • Die Klassennummern sind null-indiziert (beginnen bei 0).

Roboflow Anmerkungen

Die Etikettendatei, die dem obigen Bild entspricht, enthält 2 Personen (Klasse 0) und ein Unentschieden (Klasse 27):

Roboflow Vorverarbeitung des Datensatzes

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:

../datasets/coco128/images/im0.jpg  # image
../datasets/coco128/labels/im0.txt  # label

YOLOv5 Datensatzstruktur

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.

YOLOv5 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.

python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt

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. In Colab öffnen In Kaggle öffnen

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: In Colab öffnen

YOLO UI

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!

ClearML Experiment Management UI

Lokales Logging

Die Trainingsergebnisse werden automatisch mit Tensorboard und CSV Logger zu runs/trainwobei 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.

Lokale Logging-Ergebnisse

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'

ergebnisse.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.

Projektstatus

YOLOv5 CI

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.



Erstellt am 2023-11-12, Aktualisiert am 2024-01-21
Autoren: glenn-jocher (11)

Kommentare