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-Speicher zum Trainieren und sind langsamer. 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!



Created 2023-11-12, Updated 2024-06-02
Authors: glenn-jocher (4), Burhan-Q (1)

Kommentare