Ultralytics YOLO Hyperparameter-Abstimmungsleitfaden
EinfĂĽhrung
Die Abstimmung der Hyperparameter ist nicht nur eine einmalige Einstellung, sondern ein iterativer Prozess, der darauf abzielt, die Leistungskennzahlen des maschinellen Lernmodells wie Genauigkeit, Präzision und Wiedererkennung zu optimieren. Im Kontext von Ultralytics YOLO können diese Hyperparameter von der Lernrate bis hin zu architektonischen Details wie der Anzahl der Schichten oder der Art der verwendeten Aktivierungsfunktionen reichen.
Was sind Hyperparameter?
Hyperparameter sind übergeordnete, strukturelle Einstellungen für den Algorithmus. Sie werden vor der Trainingsphase festgelegt und bleiben während der Trainingsphase konstant. Hier sind einige häufig eingestellte Hyperparameter in Ultralytics YOLO :
- Lernrate
lr0
: Legt die Schrittweite bei jeder Iteration fest, während du dich auf ein Minimum der Verlustfunktion zubewegst. - Chargengröße
batch
: Anzahl der Bilder, die gleichzeitig in einem Vorwärtsdurchlauf verarbeitet werden. - Anzahl der Epochen
epochs
: Eine Epoche ist ein vollständiger Vorwärts- und Rückwärtsdurchlauf aller Trainingsbeispiele. - Besonderheiten der Architektur: Wie z.B. die Anzahl der Kanäle, die Anzahl der Schichten, die Art der Aktivierungsfunktionen, etc.
Eine vollständige Liste der Augmentations-Hyperparameter, die in YOLOv8 verwendet werden, findest du auf der Seite mit den Konfigurationen.
Genetische Evolution und Mutation
Ultralytics YOLO verwendet genetische Algorithmen zur Optimierung der Hyperparameter. Genetische Algorithmen sind von den Mechanismen der natĂĽrlichen Selektion und der Genetik inspiriert.
- Mutation: Im Zusammenhang mit Ultralytics YOLO hilft die Mutation bei der lokalen Suche nach Hyperparametern, indem sie kleine, zufällige Änderungen an bestehenden Hyperparametern vornimmt und so neue Kandidaten für die Auswertung erzeugt.
- Crossover: Obwohl Crossover eine beliebte Technik der genetischen Algorithmen ist, wird sie in Ultralytics YOLO derzeit nicht zur Abstimmung der Hyperparameter verwendet. Das Hauptaugenmerk liegt auf der Mutation, um neue Hyperparametersätze zu erzeugen.
Vorbereitungen fĂĽr die Hyperparameter-Abstimmung
Bevor du mit dem Tuning beginnst, ist es wichtig, dass du:
- Bestimme die Metriken: Bestimme die Kennzahlen, die du zur Bewertung der Leistung des Modells verwenden willst. Das können AP50, F1-Score oder andere sein.
- Lege das Tuning-Budget fest: Lege fest, wie viele Rechenressourcen du bereit bist, zur VerfĂĽgung zu stellen. Die Abstimmung der Hyperparameter kann sehr rechenintensiv sein.
Beteiligte Schritte
Hyperparameter initialisieren
Beginne mit einem vernünftigen Satz von Anfangshyperparametern. Das können entweder die Standard-Hyperparameter von Ultralytics YOLO sein oder etwas, das auf deinem Fachwissen oder früheren Experimenten basiert.
Hyperparameter mutieren
Verwenden Sie die _mutate
Methode, um einen neuen Satz von Hyperparametern auf der Grundlage des bestehenden Satzes zu erstellen.
Zugmodell
Das Training wird mit dem veränderten Satz von Hyperparametern durchgeführt. Anschließend wird die Trainingsleistung bewertet.
Modell evaluieren
Verwende Metriken wie AP50, F1-Score oder benutzerdefinierte Metriken, um die Leistung des Modells zu bewerten.
Log-Ergebnisse
Es ist wichtig, sowohl die Leistungskennzahlen als auch die entsprechenden Hyperparameter zu protokollieren, damit du später darauf zurückgreifen kannst.
Wiederholen Sie
Der Prozess wird so lange wiederholt, bis entweder die festgelegte Anzahl von Iterationen erreicht ist oder die Leistungskennzahl zufriedenstellend ist.
Verwendungsbeispiel
Hier erfährst du, wie du die model.tune()
Methode zur Nutzung der Tuner
Klasse fĂĽr das Hyperparameter-Tuning von YOLOv8n auf COCO8 fĂĽr 30 Epochen mit einem AdamW-Optimierer und Ăśberspringen von Plotting, Checkpointing und Validierung auĂźer in der letzten Epoche fĂĽr ein schnelleres Tuning.
Beispiel
Ergebnisse
Nachdem du die Abstimmung der Hyperparameter erfolgreich abgeschlossen hast, erhältst du mehrere Dateien und Verzeichnisse, in denen die Ergebnisse der Abstimmung gespeichert sind. Im Folgenden werden sie beschrieben:
Dateistruktur
So sieht die Verzeichnisstruktur der Ergebnisse aus. Trainingsverzeichnisse wie train1/
enthalten einzelne Abstimmungsiterationen, d.h. ein Modell, das mit einem Satz von Hyperparametern trainiert wurde. Die tune/
Verzeichnis enthält die Abstimmungsergebnisse aller einzelnen Modelltrainings:
runs/
└── detect/
├── train1/
├── train2/
├── ...
└── tune/
├── best_hyperparameters.yaml
├── best_fitness.png
├── tune_results.csv
├── tune_scatter_plots.png
└── weights/
├── last.pt
└── best.pt
Datei-Beschreibungen
best_hyperparameters.yaml
Diese YAML-Datei enthält die leistungsfähigsten Hyperparameter, die während des Optimierungsprozesses gefunden wurden. Du kannst diese Datei verwenden, um zukünftige Trainings mit diesen optimierten Einstellungen zu initialisieren.
- Format: YAML
- Verwendung: Hyperparameter-Ergebnisse
-
Beispiel:
# 558/900 iterations complete âś… (45536.81s) # Results saved to /usr/src/ultralytics/runs/detect/tune # Best fitness=0.64297 observed at iteration 498 # Best fitness metrics are {'metrics/precision(B)': 0.87247, 'metrics/recall(B)': 0.71387, 'metrics/mAP50(B)': 0.79106, 'metrics/mAP50-95(B)': 0.62651, 'val/box_loss': 2.79884, 'val/cls_loss': 2.72386, 'val/dfl_loss': 0.68503, 'fitness': 0.64297} # Best fitness model is /usr/src/ultralytics/runs/detect/train498 # Best fitness hyperparameters are printed below. lr0: 0.00269 lrf: 0.00288 momentum: 0.73375 weight_decay: 0.00015 warmup_epochs: 1.22935 warmup_momentum: 0.1525 box: 18.27875 cls: 1.32899 dfl: 0.56016 hsv_h: 0.01148 hsv_s: 0.53554 hsv_v: 0.13636 degrees: 0.0 translate: 0.12431 scale: 0.07643 shear: 0.0 perspective: 0.0 flipud: 0.0 fliplr: 0.08631 mosaic: 0.42551 mixup: 0.0 copy_paste: 0.0
best_fitness.png
Dies ist ein Diagramm, das die Fitness (normalerweise eine Leistungskennzahl wie AP50) gegen die Anzahl der Iterationen anzeigt. So kannst du sehen, wie gut der genetische Algorithmus im Laufe der Zeit abgeschnitten hat.
- Format: PNG
- Verwendung: Leistungsvisualisierung
tune_results.csv
Eine CSV-Datei mit den detaillierten Ergebnissen jeder Iteration während der Optimierung. Jede Zeile in der Datei steht für eine Iteration und enthält Metriken wie Fitness Score, Precision, Recall sowie die verwendeten Hyperparameter.
- Format: CSV
- Verwendung: Nachverfolgung der Ergebnisse pro Iteration.
- Beispiel:
fitness,lr0,lrf,momentum,weight_decay,warmup_epochs,warmup_momentum,box,cls,dfl,hsv_h,hsv_s,hsv_v,degrees,translate,scale,shear,perspective,flipud,fliplr,mosaic,mixup,copy_paste 0.05021,0.01,0.01,0.937,0.0005,3.0,0.8,7.5,0.5,1.5,0.015,0.7,0.4,0.0,0.1,0.5,0.0,0.0,0.0,0.5,1.0,0.0,0.0 0.07217,0.01003,0.00967,0.93897,0.00049,2.79757,0.81075,7.5,0.50746,1.44826,0.01503,0.72948,0.40658,0.0,0.0987,0.4922,0.0,0.0,0.0,0.49729,1.0,0.0,0.0 0.06584,0.01003,0.00855,0.91009,0.00073,3.42176,0.95,8.64301,0.54594,1.72261,0.01503,0.59179,0.40658,0.0,0.0987,0.46955,0.0,0.0,0.0,0.49729,0.80187,0.0,0.0
tune_scatter_plots.png
Diese Datei enthält Streudiagramme, die aus tune_results.csv
und hilft dir, die Beziehungen zwischen verschiedenen Hyperparametern und Leistungskennzahlen zu visualisieren. Beachte, dass Hyperparameter, die auf 0 initialisiert sind, nicht abgestimmt werden, wie z. B. degrees
und shear
unten.
- Format: PNG
- Verwendung: Explorative Datenanalyse
Gewichte/
Dieses Verzeichnis enthält die gespeicherten PyTorch Modelle für die letzte und die beste Iteration während des Hyperparameter-Tuning-Prozesses.
last.pt
: Die last.pt sind die Gewichte aus der letzten Epoche des Trainings.best.pt
: Die best.pt-Gewichte fĂĽr die Iteration, die den besten Fitnesswert erzielt hat.
Anhand dieser Ergebnisse kannst du fundiertere Entscheidungen fĂĽr deine zukĂĽnftigen Modellschulungen und Analysen treffen. Du kannst diese Artefakte gerne zu Rate ziehen, um zu verstehen, wie gut dein Modell abgeschnitten hat und wie du es weiter verbessern kannst.
Fazit
Das Hyperparameter-Tuning in Ultralytics YOLO ist dank des auf Mutation basierenden genetischen Algorithmus vereinfacht und dennoch leistungsstark. Wenn du die in diesem Leitfaden beschriebenen Schritte befolgst, kannst du dein Modell systematisch optimieren, um eine bessere Leistung zu erzielen.
Weitere LektĂĽre
- Hyperparameter-Optimierung in Wikipedia
- YOLOv5 Leitfaden fĂĽr die Entwicklung von Hyperparametern
- Effizientes Hyperparameter-Tuning mit Ray Tune und YOLOv8
FĂĽr tiefere Einblicke kannst du die Tuner
Quellcode der Klasse und die dazugehörige Dokumentation. Solltest du Fragen oder Funktionswünsche haben oder weitere Unterstützung benötigen, kannst du dich gerne an uns wenden unter GitHub oder Discord.
FAQ
Wie optimiere ich die Lernrate für Ultralytics YOLO während der Abstimmung der Hyperparameter?
Um die Lernrate für Ultralytics YOLO zu optimieren, legen Sie zunächst eine anfängliche Lernrate fest, indem Sie die lr0
Parameter. Ăśbliche Werte reichen von 0.001
zu 0.01
. Während der Abstimmung der Hyperparameter wird dieser Wert verändert, um die optimale Einstellung zu finden. Du kannst die model.tune()
Methode, um diesen Prozess zu automatisieren. Zum Beispiel:
Beispiel
Weitere Informationen findest du auf der KonfigurationsseiteUltralytics YOLO .
Welche Vorteile bietet die Verwendung genetischer Algorithmen fĂĽr die Abstimmung der Hyperparameter in YOLOv8?
Genetische Algorithmen in Ultralytics YOLOv8 bieten eine robuste Methode zur Erkundung des Hyperparameterraums, die zu einer hochoptimierten Modellleistung fĂĽhrt. Die wichtigsten Vorteile sind:
- Effiziente Suche: Genetische Algorithmen wie die Mutation können schnell eine große Anzahl von Hyperparametern untersuchen.
- Vermeidung lokaler Minima: Durch die Einführung von Zufälligkeiten helfen sie, lokale Minima zu vermeiden und eine bessere globale Optimierung zu gewährleisten.
- Leistungsmetriken: Sie passen sich anhand von Leistungskennzahlen wie AP50 und F1-Score an.
Wie genetische Algorithmen Hyperparameter optimieren können, erfährst du im Leitfaden zur Entwicklung von Hyperparametern.
Wie lange dauert die Abstimmung der Hyperparameter fĂĽr Ultralytics YOLO ?
Die Zeit, die für die Abstimmung der Hyperparameter mit Ultralytics YOLO benötigt wird, hängt von mehreren Faktoren ab, wie z. B. der Größe des Datensatzes, der Komplexität der Modellarchitektur, der Anzahl der Iterationen und den verfügbaren Rechenressourcen. Zum Beispiel kann das Tuning von YOLOv8n auf einem Datensatz wie COCO8 für 30 Epochen je nach Hardware mehrere Stunden bis Tage dauern.
Um die Abstimmungszeit effektiv zu verwalten, solltest du vorher ein klares Abstimmungsbudget festlegen(Link zum internen Abschnitt). Das hilft dabei, die Ressourcenzuweisung und die Optimierungsziele auszubalancieren.
Welche Metriken sollte ich verwenden, um die Modellleistung während des Hyperparameter-Tunings in YOLO zu bewerten?
Bei der Bewertung der Modellleistung während des Hyperparametertunings in YOLO kannst du mehrere Schlüsselkennzahlen verwenden:
- AP50: Die durchschnittliche Genauigkeit bei einem IoU-Schwellenwert von 0,50.
- F1-Score: Das harmonische Mittel aus Precision und Recall.
- Präzision und Rückruf: Einzelne Metriken, die die Genauigkeit des Modells bei der Erkennung von echten Positiven gegenüber falschen Positiven und falschen Negativen angeben.
Diese Metriken helfen dir, verschiedene Aspekte der Leistung deines Modells zu verstehen. Einen umfassenden Ăśberblick findest du im Ultralytics YOLO Leitfaden fĂĽr Leistungskennzahlen.
Kann ich Ultralytics HUB fĂĽr die Abstimmung der Hyperparameter von YOLO Modellen verwenden?
Ja, du kannst Ultralytics HUB für das Hyperparameter-Tuning von YOLO Modellen nutzen. Das HUB bietet eine Plattform, die ohne Code auskommt, um einfach Datensätze hochzuladen, Modelle zu trainieren und Hyperparameter-Tuning effizient durchzuführen. Sie ermöglicht die Verfolgung und Visualisierung des Tuning-Fortschritts und der Ergebnisse in Echtzeit.
Erfahre mehr ĂĽber die Verwendung von Ultralytics HUB fĂĽr das Tuning von Hyperparametern in der Ultralytics HUB Cloud Training Dokumentation.