Zum Inhalt springen

Tipps für beste Trainingsergebnisse

📚 In diesem Leitfaden wird erklärt, wie du mit YOLOv5 die besten mAP- und Trainingsergebnisse erzielst 🚀.

In den meisten Fällen lassen sich gute Ergebnisse erzielen, ohne dass die Modelle oder Trainingseinstellungen geändert werden müssen, vorausgesetzt, dein Datensatz ist ausreichend groß und gut beschriftet. Wenn du anfangs keine guten Ergebnisse erzielst, gibt es Maßnahmen, die du ergreifen kannst, um sie zu verbessern, aber wir empfehlen immer, zunächst mit allen Standardeinstellungen zu trainieren, bevor du Änderungen in Betracht ziehst. Auf diese Weise kannst du einen Grundstein für die Leistung legen und Bereiche mit Verbesserungspotenzial erkennen.

Wenn du Fragen zu deinen Trainingsergebnissen hast wir empfehlen dir, so viele Informationen wie möglich anzugeben wenn du eine hilfreiche Antwort erwartest, einschließlich der Ergebnisdiagramme (train losses, val losses, P, R, mAP), der PR-Kurve, der Konfusionsmatrix, der Trainingsmosaike, der Testergebnisse und der statistischen Bilder des Datensatzes wie labels.png. Alle diese Dateien befinden sich in deinem project/name Verzeichnis, typischerweise yolov5/runs/train/exp.

Nachfolgend haben wir einen vollständigen Leitfaden für Nutzer/innen zusammengestellt, die die besten Ergebnisse in ihren YOLOv5 Trainings erzielen wollen.

Datensatz

  • Bilder pro Klasse. ≥ 1500 Bilder pro Klasse empfohlen
  • Instanzen pro Klasse. ≥ 10000 Instanzen (beschriftete Objekte) pro Klasse empfohlen
  • Bildvielfalt. Sie müssen für die Einsatzumgebung repräsentativ sein. Für reale Anwendungsfälle empfehlen wir Bilder aus verschiedenen Tageszeiten, unterschiedlichen Jahreszeiten, unterschiedlichem Wetter, unterschiedlicher Beleuchtung, unterschiedlichen Blickwinkeln, unterschiedlichen Quellen (online gescannt, vor Ort gesammelt, unterschiedliche Kameras) usw.
  • Konsistenz der Beschriftung. Alle Instanzen aller Klassen in allen Bildern müssen beschriftet werden. Eine teilweise Beschriftung ist nicht möglich.
  • Etikettengenauigkeit. Die Beschriftungen müssen jedes Objekt eng umschließen. Zwischen einem Objekt und seinem Begrenzungsrahmen sollte kein Platz sein. Bei keinem Objekt darf eine Beschriftung fehlen.
  • Überprüfung des Labels. Siehe train_batch*.jpg beim Start des Zuges, um zu überprüfen, ob deine Beschriftungen korrekt sind, d.h. siehe Beispiel Mosaik.
  • Hintergrundbilder. Hintergrundbilder sind Bilder ohne Objekte, die zu einem Datensatz hinzugefügt werden, um False Positives (FP) zu reduzieren. Wir empfehlen etwa 0-10% Hintergrundbilder, um FP zu reduzieren (COCO hat 1000 Hintergrundbilder als Referenz, 1% der Gesamtmenge). Für Hintergrundbilder sind keine Beschriftungen erforderlich.

COCO-Analyse

Modellauswahl

Größere Modelle wie YOLOv5x und YOLOv5x6 liefern in fast allen Fällen bessere Ergebnisse, haben aber mehr Parameter, benötigen mehr CUDA Speicherplatz zum Trainieren und sind langsamer in der Ausführung. Für mobile Einsätze empfehlen wir YOLOv5s/m, für Cloud-Einsätze YOLOv5l/x. In unserer README-Tabelle findest du einen vollständigen Vergleich aller Modelle.

YOLOv5 Modelle

  • Beginne mit vortrainierten Gewichten. Empfohlen für kleine bis mittlere Datensätze (d. h. VOC, VisDrone, GlobalWheat). Übergeben Sie den Namen des Modells an die --weights Argument. Modelle werden automatisch von der neueste Version YOLOv5.
python train.py --data custom.yaml --weights yolov5s.pt
                                             yolov5m.pt
                                             yolov5l.pt
                                             yolov5x.pt
                                             custom_pretrained.pt
  • Ganz von vorne anfangen. Empfohlen für große Datensätze (d. h. COCO, Objekte365, OIv6). Übergeben Sie die YAML-Modellarchitektur, an der Sie interessiert sind, zusammen mit einem leeren --weights '' Argument:
python train.py --data custom.yaml --weights '' --cfg yolov5s.yaml
                                                      yolov5m.yaml
                                                      yolov5l.yaml
                                                      yolov5x.yaml

Training Einstellungen

Bevor du etwas änderst, solltest du zunächst mit den Standardeinstellungen trainieren, um eine Leistungsbasis zu schaffen. Eine vollständige Liste der train.py-Einstellungen findest du im train.py argparser.

  • Epochen. Beginne mit 300 Epochen. Wenn es zu früh zu einem Overfitting kommt, kannst du die Epochenanzahl verringern. Wenn nach 300 Epochen keine Überanpassung auftritt, trainiere länger, d.h. 600, 1200 usw. Epochen.
  • Bildgröße. COCO trainiert mit einer nativen Auflösung von --img 640Aufgrund des hohen Anteils kleiner Objekte im Datensatz kann es jedoch von einem Training mit höheren Auflösungen profitieren. --img 1280. Wenn es viele kleine Objekte gibt, profitieren benutzerdefinierte Datensätze vom Training in nativer oder höherer Auflösung. Die besten Inferenzergebnisse werden mit der gleichen --img wie das Training durchgeführt wurde, d.h. wenn du bei --img 1280 solltest du auch testen und feststellen, ob --img 1280.
  • Chargengröße. Verwenden Sie die größte --batch-size die deine Hardware zulässt. Kleine Losgrößen führen zu schlechten Batchnorm-Statistiken und sollten vermieden werden.
  • Hyperparameter. Die Standard-Hyperparameter sind in hyp.scratch-low.yaml. Wir empfehlen dir, zunächst mit den Standard-Hyperparametern zu trainieren, bevor du daran denkst, sie zu ändern. Im Allgemeinen reduziert und verzögert eine Erhöhung der Augmentations-Hyperparameter die Überanpassung und ermöglicht so längere Trainingszeiten und eine höhere mAP. Verringerung der Verlustkomponente Verstärkung Hyperparameter wie hyp['obj'] helfen, die Überanpassung in diesen spezifischen Verlustkomponenten zu reduzieren. Eine automatische Methode zur Optimierung dieser Hyperparameter findest du in unserem Hyperparameter Evolution Tutorial.

Weitere Lektüre

Wenn du mehr wissen möchtest, ist Karpathys "Rezept für das Training neuronaler Netze" ein guter Anfang. Es enthält großartige Ideen für das Training, die für alle ML-Domänen gelten: https://karpathy.github.io/2019/04/25/recipe/

Viel Glück 🍀 und lass uns wissen, wenn du weitere Fragen hast!



Erstellt am 2023-11-12, Aktualisiert am 2024-07-10
Autoren: glenn-jocher (5), Burhan-Q (1)

Kommentare