Zum Inhalt springen

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.

Hyperparameter-Abstimmung Visuell

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:

  1. 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.
  2. 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

from ultralytics import YOLO

# Initialize the YOLO model
model = YOLO("yolov8n.pt")

# Tune hyperparameters on COCO8 for 30 epochs
model.tune(data="coco8.yaml", epochs=30, iterations=300, optimizer="AdamW", plots=False, save=False, val=False)

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

Hyperparameter-Tuning Fitness vs. Iteration

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.csvund 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

Hyperparameter-Abstimmung Streudiagramme

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

  1. Hyperparameter-Optimierung in Wikipedia
  2. YOLOv5 Leitfaden fĂĽr die Entwicklung von Hyperparametern
  3. 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

from ultralytics import YOLO

# Initialize the YOLO model
model = YOLO("yolov8n.pt")

# Tune hyperparameters on COCO8 for 30 epochs
model.tune(data="coco8.yaml", epochs=30, iterations=300, optimizer="AdamW", plots=False, save=False, val=False)

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.



Erstellt am 2023-11-12, Aktualisiert am 2024-07-05
Autoren: glenn-jocher (11)

Kommentare