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.
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.
- 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 640
Aufgrund 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!