Meet YOLO26: next-gen vision AI.

Link to this sectionTipps für die besten YOLOv5 Trainingsergebnisse#

📚 Dieser Leitfaden erklärt dir, wie du mit YOLOv5 die besten mAP- und Trainingsergebnisse erzielst 🚀.

Meistens lassen sich gute Ergebnisse ohne Änderungen an den Modellen oder Trainingseinstellungen erzielen, vorausgesetzt, dein Datensatz ist ausreichend groß und gut annotiert. Falls du anfangs keine guten Ergebnisse erhältst, gibt es Schritte, die du zur Verbesserung unternehmen kannst. Wir empfehlen jedoch immer, zuerst mit allen Standardeinstellungen zu trainieren, bevor du Änderungen in Betracht ziehst. Dies hilft dabei, eine Leistungsbasis zu schaffen und Bereiche für Verbesserungen zu identifizieren.

Wenn du Fragen zu deinen Trainingsergebnissen hast, empfehlen wir dir, so viele Informationen wie möglich bereitzustellen, wenn du eine hilfreiche Antwort erwartest. Dazu gehören Ergebnisdiagramme (Train-Losses, Val-Losses, P, R, mAP), die PR-Kurve, die Konfusionsmatrix, Trainingsmosaike, Testergebnisse und Bilder der Datensatzstatistik wie labels.png. All diese befinden sich in deinem project/name-Verzeichnis, typischerweise yolov5/runs/train/exp.

Wir haben unten einen vollständigen Leitfaden für Nutzer zusammengestellt, die bei ihren YOLOv5-Trainings die besten Ergebnisse erzielen möchten.

Link to this sectionDatensatz#

  • Bilder pro Klasse. ≥ 1500 Bilder pro Klasse empfohlen
  • Instanzen pro Klasse. ≥ 10000 Instanzen (annotierte Objekte) pro Klasse empfohlen
  • Bildvielfalt. Diese muss repräsentativ für die Einsatzumgebung sein. Für reale Anwendungsfälle empfehlen wir Bilder von verschiedenen Tageszeiten, Jahreszeiten, Wetterbedingungen, Beleuchtungen, Blickwinkeln und aus verschiedenen Quellen (online gescrapt, lokal gesammelt, verschiedene Kameras) etc.
  • Label-Konsistenz. Alle Instanzen aller Klassen müssen in allen Bildern annotiert sein. Teilweise Annotierung funktioniert nicht.
  • Label-Genauigkeit. Labels müssen jedes Objekt eng umschließen. Es sollte kein Platz zwischen einem Objekt und seiner Bounding Box vorhanden sein. Bei keinem Objekt sollte das Label fehlen.
  • Disziplin bei der Train/Val-Aufteilung. Stelle sicher, dass Validierungs- und Testbilder niemals im Trainingsdatensatz erscheinen, um allzu optimistische Metriken zu vermeiden. Halte die Klassenverteilungen zwischen den Splits ähnlich.
  • Label-Überprüfung. Betrachte train_batch*.jpg beim Trainingsstart, um zu überprüfen, ob deine Labels korrekt erscheinen, siehe z. B. das Beispiel-Mosaik.
  • Hintergrundbilder. Hintergrundbilder sind Bilder ohne Objekte, die einem Datensatz hinzugefügt werden, um falsch-positive Ergebnisse (FP) zu reduzieren. Wir empfehlen etwa 0-10 % Hintergrundbilder, um die FPs zu verringern (COCO hat als Referenz 1000 Hintergrundbilder, das entspricht 1 % der Gesamtmenge). Für Hintergrundbilder sind keine Labels erforderlich.

COCO Datensatz Klassenverteilungsanalyse

Link to this sectionModellauswahl#

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 Training und sind langsamer in der Ausführung. Für mobile Anwendungen empfehlen wir YOLOv5s/m, für Cloud-Anwendungen YOLOv5l/x. Siehe unsere README-Tabelle für einen vollständigen Vergleich aller Modelle.

YOLOv5 Models

  • Start mit vortrainierten Gewichten. Empfohlen für kleine bis mittelgroße Datensätze (z. B. VOC, VisDrone, GlobalWheat). Übergib den Namen des Modells an das --weights-Argument. Modelle werden automatisch vom neuesten YOLOv5-Release heruntergeladen.

    python train.py --data custom.yaml --weights yolov5s.pt
    python train.py --data custom.yaml --weights yolov5m.pt
    python train.py --data custom.yaml --weights yolov5l.pt
    python train.py --data custom.yaml --weights yolov5x.pt
    python train.py --data custom.yaml --weights custom_pretrained.pt
  • Start von Grund auf (Scratch). Empfohlen für große Datensätze (z. B. COCO, Objects365, OIv6). Übergib die Modellarchitektur-YAML, an der du interessiert bist, zusammen mit einem leeren --weights ''-Argument:

    python train.py --data custom.yaml --weights '' --cfg yolov5s.yaml
    python train.py --data custom.yaml --weights '' --cfg yolov5m.yaml
    python train.py --data custom.yaml --weights '' --cfg yolov5l.yaml
    python train.py --data custom.yaml --weights '' --cfg yolov5x.yaml

Link to this sectionTrainingseinstellungen#

Bevor du irgendetwas änderst, trainiere zuerst mit den Standardeinstellungen, um eine Leistungsbasis festzulegen. Eine vollständige Liste der train.py-Einstellungen findest du im train.py Argparser.

  • Epochen. Beginne mit 300 Epochen. Wenn das Modell vorzeitig überanpasst (Overfitting), kannst du die Epochen reduzieren. Tritt Overfitting nach 300 Epochen nicht auf, trainiere länger, z. B. 600, 1200 usw. Epochen.
  • Bildgröße. COCO trainiert mit einer nativen Auflösung von --img 640, obwohl es aufgrund der hohen Anzahl an kleinen Objekten im Datensatz von einem Training mit höheren Auflösungen wie --img 1280 profitieren kann. Wenn es viele kleine Objekte gibt, profitieren benutzerdefinierte Datensätze vom Training mit nativer oder höherer Auflösung. Die besten Inferenz-Ergebnisse werden mit dem gleichen --img erzielt, mit dem auch trainiert wurde, d. h. wenn du mit --img 1280 trainierst, solltest du auch mit --img 1280 testen und detektieren.
  • Batch-Größe. Verwende die größte --batch-size, die deine Hardware erlaubt. Kleine Batch-Größen führen zu schlechten Batch-Normalisierungs-Statistiken und sollten vermieden werden. Du kannst --batch-size -1 verwenden, um die optimale Batch-Größe für deine GPU automatisch auszuwählen.
  • Lernrate. Der Standard-Lernratenplan funktioniert in den meisten Fällen gut. Für eine schnellere Konvergenz kannst du das --cos-lr-Flag ausprobieren, um die Kosinus-Lernratenplanung zu aktivieren, die die Lernrate schrittweise entlang einer Kosinuskurve über die Epochen hinweg reduziert.
  • Datenaugmentation. YOLOv5 enthält verschiedene Augmentierungstechniken wie Mosaic, das mehrere Trainingsbilder kombiniert. Passe die Stärke der Augmentierung über den mosaic-Hyperparameter in deiner --hyp-Datei an, um das Training zu stabilisieren.
  • Hyperparameter. Die Standard-Hyperparameter befinden sich in hyp.scratch-low.yaml. Wir empfehlen dir, zuerst mit den Standard-Hyperparametern zu trainieren, bevor du über Änderungen nachdenkst. Im Allgemeinen reduziert und verzögert eine Erhöhung der Augmentierungs-Hyperparameter das Overfitting, was längere Trainings und einen höheren finalen mAP ermöglicht. Eine Reduzierung der Loss-Komponenten-Gain-Hyperparameter wie hyp['obj'] hilft, Overfitting bei diesen spezifischen Loss-Komponenten zu reduzieren. Für eine automatisierte Methode zur Optimierung dieser Hyperparameter siehe unser Tutorial zur Hyperparameter-Evolution.
  • Training mit gemischter Präzision. YOLOv5 aktiviert Automatic Mixed Precision (AMP) automatisch, wenn eine unterstützte GPU erkannt wird, was das Training beschleunigt und den Speicherverbrauch reduziert, ohne die Modellgenauigkeit zu beeinträchtigen.
  • Multi-GPU-Training. Wenn du mehrere GPUs hast, verwende --device 0,1,2,3, um das Training auf diese zu verteilen, was die Trainingszeit erheblich verkürzen kann.
  • Early Stopping. Verwende --patience 50, um das Training zu stoppen, wenn sich die Validierungsmetriken für 50 Epochen nicht verbessern. Das spart Zeit und verhindert Overfitting.

Link to this sectionFortgeschrittene Optimierungstechniken#

  • Transfer Learning. Beginne bei spezialisierten Datensätzen mit vortrainierten Gewichten und friere während des Trainings nach und nach Layer ein (unfreeze), um das Modell an deine spezifische Aufgabe anzupassen.
  • Modell-Pruning. Erwäge nach dem Training, dein Modell zu beschneiden (Pruning), um redundante Gewichte zu entfernen und die Modellgröße ohne nennenswerten Leistungsverlust zu reduzieren.
  • Modell-Ensemble. Trainiere für kritische Anwendungen mehrere Modelle mit unterschiedlichen Konfigurationen und kombiniere deren Vorhersagen für eine verbesserte Genauigkeit.
  • Test-Time Augmentation. Aktiviere TTA während der Inferenz mit --augment, um die Vorhersagegenauigkeit durch Mittelung der Ergebnisse aus augmentierten Versionen des Eingabebildes zu verbessern.

Link to this sectionWeiterführende Literatur#

Wenn du mehr wissen möchtest, ist Karpathys 'Rezept für das Training von neuronalen Netzen' ein guter Startpunkt. Es enthält großartige Ideen für das Training, die allgemein auf alle ML-Bereiche anwendbar sind: https://karpathy.github.io/2019/04/25/recipe/

Für detailliertere Informationen zu Trainingseinstellungen und -konfigurationen siehe die Ultralytics train-Einstellungsdokumentation, die umfassende Erklärungen zu allen verfügbaren Parametern bietet.

Viel Erfolg 🍀 und sag uns Bescheid, wenn du weitere Fragen hast!

Link to this sectionFAQ#

Link to this sectionWoher weiß ich, ob mein Modell überanpasst (Overfitting)?#

Dein Modell könnte überanpassen, wenn der Trainingsverlust weiter sinkt, während der Validierungsverlust zu steigen beginnt. Überwache den Validierungs-mAP – wenn er stagniert oder sinkt, während sich der Trainingsverlust weiter verbessert, ist das ein Anzeichen für Overfitting. Lösungen umfassen das Hinzufügen von mehr Trainingsdaten, die Erhöhung der Datenaugmentation oder die Implementierung von Regularisierungstechniken.

Link to this sectionWas ist die optimale Batch-Größe für das Training von YOLOv5?#

Die optimale Batch-Größe hängt von deinem GPU-Speicher ab. Größere Batch-Größen bieten im Allgemeinen bessere Batch-Normalisierungs-Statistiken und eine höhere Trainingsstabilität. Verwende die größte Batch-Größe, die deine Hardware ohne Speichermangel bewältigen kann. Du kannst --batch-size -1 verwenden, um die optimale Batch-Größe für dein Setup automatisch zu bestimmen.

Link to this sectionWie kann ich das Training von YOLOv5 beschleunigen?#

Um das Training zu beschleunigen, versuche Folgendes: Verwendung mehrerer GPUs mit --device 0,1,2,3, Caching deines Datensatzes mit --cache und Optimierung deiner Batch-Größe (gemischte Präzision wird auf unterstützten GPUs automatisch aktiviert). Erwäge auch die Verwendung einer kleineren Modellvariante wie YOLOv5s, wenn absolute Genauigkeit nicht kritisch ist.

Kommentare