Zum Inhalt springen

Tipps für beste Trainingsergebnisse

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

In den meisten Fällen lassen sich gute Ergebnisse erzielen, ohne dass die Modelle oder Trainingseinstellungen geändert werden müssen, vorausgesetzt, Ihr Datensatz ist ausreichend groß und gut beschriftet. Wenn Sie zunächst keine guten Ergebnisse erzielen, können Sie möglicherweise Schritte zur Verbesserung unternehmen. Wir empfehlen jedoch immer, zunächst mit allen Standardeinstellungen zu trainieren, bevor Sie Änderungen in Betracht ziehen. Auf diese Weise können Sie eine Leistungsbasis erstellen und Bereiche mit Verbesserungspotenzial erkennen.

Wenn Sie Fragen zu Ihren Trainingsergebnissen haben wir empfehlen Ihnen, so viele Informationen wie möglich anzugeben wenn Sie eine hilfreiche Antwort erwarten, einschließlich Ergebnisdiagrammen (Zugverluste, Wertverluste, P, R, mAP), PR-Kurve, Verwirrungsmatrix, Trainingsmosaike, Testergebnisse und statistische Bilder des Datensatzes wie labels.png. Alle diese Bilder befinden sich in Ihrem project/name Verzeichnis, typischerweise yolov5/runs/train/exp.

Im Folgenden haben wir einen vollständigen Leitfaden für Benutzer zusammengestellt, die die besten Ergebnisse bei ihren YOLOv5 Schulungen erzielen möchten.

Datensatz

  • Bilder pro Klasse. ≥ 1500 Bilder pro Klasse empfohlen
  • Instanzen pro Klasse. ≥ 10000 Instanzen (markierte Objekte) pro Klasse empfohlen
  • Bildvielfalt. Sie müssen repräsentativ für die eingesetzte Umgebung sein. Für reale Anwendungsfälle empfehlen wir Bilder aus verschiedenen Tageszeiten, verschiedenen Jahreszeiten, verschiedenen Wetterlagen, verschiedenen Beleuchtungen, verschiedenen Blickwinkeln, verschiedenen Quellen (online gescannt, lokal gesammelt, verschiedene Kameras) usw.
  • Konsistenz der Beschriftung. Alle Instanzen aller Klassen in allen Bildern müssen beschriftet werden. Eine teilweise Beschriftung ist nicht möglich.
  • Genauigkeit der Etiketten. Die Beschriftungen müssen jedes Objekt eng umschließen. Zwischen einem Objekt und seinem Begrenzungsrahmen darf kein Abstand bestehen. Bei keinem Objekt darf eine Beschriftung fehlen.
  • Überprüfung des Etiketts. Siehe train_batch*.jpg beim Start des Zuges, um zu überprüfen, ob Ihre 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

Auswahl des Modells

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 in der Ausführung. Für mobile Einsätze empfehlen wir YOLOv5s/m, für Cloud-Einsätze empfehlen wir YOLOv5l/x. In unserer README-Tabelle finden Sie einen vollständigen Vergleich aller Modelle.

YOLOv5 Modelle

  • Starten Sie mit vortrainierten Gewichten. Empfohlen für kleine bis mittelgroße Datensätze (d. h. VOC, VisDrone, GlobalWheat). Übergeben Sie den Namen des Modells an die Funktion --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

Trainingseinstellungen

Bevor Sie irgendetwas ändern, trainieren Sie zunächst mit den Standardeinstellungen, um eine Leistungsbasis zu schaffen. Eine vollständige Liste der train.py-Einstellungen finden Sie in der train.py-Argparser-Datei.

  • Epochen. Beginnen Sie mit 300 Epochen. Wenn es zu früh zu einer Überanpassung kommt, können Sie die Epochenanzahl verringern. Wenn nach 300 Epochen keine Überanpassung auftritt, trainieren Sie 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 das Training bei höheren Auflösungen wie --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 Sie bei --img 1280 sollten Sie auch prüfen und feststellen, ob --img 1280.
  • Chargengröße. Verwenden Sie die größte --batch-size die Ihre Hardware zulässt. Kleine Losgrößen führen zu schlechten Batchnorm-Statistiken und sollten vermieden werden.
  • Hyperparameter. Standard-Hyperparameter sind in hyp.scratch-low.yaml. Wir empfehlen Ihnen, zunächst mit den Standard-Hyperparametern zu trainieren, bevor Sie eine Änderung in Erwägung ziehen. Im Allgemeinen reduziert und verzögert eine Erhöhung der Augmentierungs-Hyperparameter die Überanpassung, was längere Trainings und höhere endgültige mAP ermöglicht. Verringerung der Verlustkomponentenverstärkungs-Hyperparameter wie hyp['obj'] wird dazu beitragen, die Überanpassung in diesen spezifischen Verlustkomponenten zu reduzieren. Eine automatische Methode zur Optimierung dieser Hyperparameter finden Sie in unserer Hyperparameter Evolution Tutorial.

Weitere Lektüre

Wenn Sie mehr wissen möchten, ist Karpathys "Rezept für das Training neuronaler Netze" ein guter Ausgangspunkt. 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 lassen Sie uns wissen, wenn Sie weitere Fragen haben!

📅 Erstellt vor 1 Jahr ✏️ Aktualisiert vor 2 Monaten

Kommentare