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 if you expect a helpful response, including results plots (train losses, val losses, P, R, mAP), PR curve, confusion matrix, training mosaics, test results and dataset statistics images such as labels.png. All of these are located in your 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.
  • Label accuracy. Labels must closely enclose each object. No space should exist between an object and it's bounding box. No objects should be missing a label.
  • Ü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.

  • Epochs. Start with 300 epochs. If this overfits early then you can reduce epochs. If overfitting does not occur after 300 epochs, train longer, i.e. 600, 1200 etc. epochs.
  • 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.
  • Batch size. 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

If you'd like to know more, a good place to start is Karpathy's 'Recipe for Training Neural Networks', which has great ideas for training that apply broadly across all ML domains: https://karpathy.github.io/2019/04/25/recipe/

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


📅 Created 11 months ago ✏ Updated 20 days ago

Kommentare