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 und 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 durchzufĂŒhren:

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 nach 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 dir leicht, 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

Wenn du mehr ĂŒber alle unterstĂŒtzten Comet Funktionen fĂŒr diese Integration erfahren möchtest, sieh 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

Trainingsergebnisse werden automatisch protokolliert 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 SchlĂŒsselbereichen: 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