Zum Inhalt springen

Ultralytics YOLO Hyperparameter-Tuning-Leitfaden

EinfĂĽhrung

Die Abstimmung von Hyperparametern ist nicht nur eine einmalige Einrichtung, 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 reichen, wie z. B. die Anzahl der Schichten oder die Art der verwendeten Aktivierungsfunktionen.

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: Bestimmt die Schrittweite bei jeder Iteration und bewegt sich dabei auf ein Minimum in der Verlustfunktion.
  • Größe der Charge 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. Anzahl der Kanäle, Anzahl der Schichten, Arten von Aktivierungsfunktionen, usw.

Hyperparameter-Abstimmung Visuell

Eine vollständige Liste der in YOLO11 verwendeten Augmentationshyperparameter finden Sie auf der Seite Konfigurationen.

Genetische Evolution und Mutation

Ultralytics YOLO verwendet genetische Algorithmen zur Optimierung von Hyperparametern. 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 im Hyperparameterraum, indem kleine, zufällige Ă„nderungen an bestehenden Hyperparametern vorgenommen werden, die neue Kandidaten fĂĽr die Bewertung hervorbringen.
  • Crossover: Obwohl Crossover eine beliebte Technik der genetischen Algorithmen ist, wird sie derzeit in Ultralytics YOLO nicht zur Abstimmung der Hyperparameter verwendet. Der Schwerpunkt liegt hauptsächlich auf der Mutation zur Erzeugung neuer Hyperparametersätze.

Vorbereiten der Hyperparameter-Abstimmung

Bevor Sie mit dem Tuning beginnen, ist es wichtig, dass Sie:

  1. Bestimmen Sie die Metriken: Bestimmen Sie die Metriken, die Sie zur Bewertung der Leistung des Modells verwenden wollen. Dies können AP50, F1-Score oder andere sein.
  2. Legen Sie das Tuning-Budget fest: Legen Sie fest, wie viele Rechenressourcen Sie bereit sind, zuzuweisen. Die Abstimmung von Hyperparametern kann rechenintensiv sein.

Beteiligte Schritte

Initialisierung von Hyperparametern

Beginnen Sie mit einem vernünftigen Satz von Anfangshyperparametern. Dies können entweder die Standard-Hyperparameter sein, die von Ultralytics YOLO festgelegt wurden, oder etwas, das auf Ihrem 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 auswerten

Verwenden Sie Metriken wie AP50, F1-Score oder benutzerdefinierte Metriken, um die Leistung des Modells zu bewerten.

Log-Ergebnisse

Es ist von entscheidender Bedeutung, sowohl die Leistungskennzahlen als auch die entsprechenden Hyperparameter zu protokollieren, um sie in Zukunft verwenden zu können.

Wiederholen Sie

Der Vorgang wird so lange wiederholt, bis entweder die festgelegte Anzahl von Iterationen erreicht ist oder die Leistungskennzahl zufriedenstellend ist.

Beispiel fĂĽr die Verwendung

Hier erfahren Sie, wie Sie die model.tune() Methode zur Nutzung der Tuner Klasse fĂĽr das Hyperparameter-Tuning von YOLO11n auf COCO8 fĂĽr 30 Epochen mit einem AdamW-Optimierer und Ăśberspringen von Plotten, 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("yolo11n.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 Sie die Abstimmung der Hyperparameter erfolgreich abgeschlossen haben, erhalten Sie mehrere Dateien und Verzeichnisse, in denen die Ergebnisse der Abstimmung enthalten sind. Im Folgenden werden die einzelnen Dateien 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/ enthält die Abstimmungsergebnisse aus allen 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 besten Hyperparameter, die während des Tuning-Prozesses gefunden wurden. Sie können 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
    

beste_fitness.png

Dies ist ein Diagramm, das die Fitness (in der Regel eine Leistungskennzahl wie AP50) gegen die Anzahl der Iterationen darstellt. So können Sie sich ein Bild davon machen, 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 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, Präzision, Recall sowie die verwendeten Hyperparameter.

  • Format: CSV
  • Verwendung: Verfolgung 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 Ihnen, die Beziehungen zwischen verschiedenen Hyperparametern und Leistungsmetriken zu visualisieren. Beachten Sie, 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 letzten und besten Iterationen während des Hyperparameter-Tuning-Prozesses.

  • last.pt: Die letzten.pt sind die Gewichte der letzten Trainingsepoche.
  • best.pt: Die best.pt-Gewichte fĂĽr die Iteration, die das beste Fitness-Ergebnis erzielt hat.

Anhand dieser Ergebnisse können Sie fundiertere Entscheidungen für Ihre zukünftigen Modellschulungen und Analysen treffen. Sie können diese Artefakte gerne einsehen, um zu verstehen, wie gut Ihr Modell abgeschnitten hat und wie Sie es weiter verbessern können.

Schlussfolgerung

Der Prozess der Abstimmung der Hyperparameter in Ultralytics YOLO ist dank des auf Mutation basierenden genetischen Algorithmus vereinfacht und dennoch leistungsstark. Wenn Sie die in diesem Leitfaden beschriebenen Schritte befolgen, können Sie Ihr Modell systematisch abstimmen, 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 YOLO11

Wenn Sie tiefere Einblicke erhalten möchten, können Sie die Tuner Quellcode der Klasse und die dazugehörige Dokumentation. Sollten Sie Fragen oder Funktionswünsche haben oder weitere Unterstützung benötigen, können Sie sich gerne an uns wenden unter GitHub oder Diskord.

FAQ

Wie kann ich die Lernrate für Ultralytics YOLO während der Abstimmung der Hyperparameter optimieren?

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. Sie können die model.tune() Methode, um diesen Prozess zu automatisieren. Zum Beispiel:

Beispiel

from ultralytics import YOLO

# Initialize the YOLO model
model = YOLO("yolo11n.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 Einzelheiten sind auf der KonfigurationsseiteUltralytics YOLO zu finden.

Welche Vorteile bietet die Verwendung genetischer Algorithmen fĂĽr die Abstimmung der Hyperparameter in YOLO11?

Genetische Algorithmen in Ultralytics YOLO11 bieten eine robuste Methode zur Erkundung des Hyperparameterraums, die zu einer hoch optimierten Modellleistung fĂĽhrt. Die wichtigsten Vorteile sind:

  • Effiziente Suche: Genetische Algorithmen wie die Mutation können schnell einen groĂźen Satz von Hyperparametern untersuchen.
  • Vermeidung lokaler Minima: Durch die EinfĂĽhrung von Zufälligkeiten helfen sie bei der Vermeidung lokaler Minima und gewährleisten eine bessere globale Optimierung.
  • Leistungsmetriken: Sie passen sich auf der Grundlage von Leistungsmetriken wie AP50 und F1-Score an.

Wie genetische Algorithmen Hyperparameter optimieren können, erfahren Sie im Leitfaden zur Entwicklung von Hyperparametern.

Wie lange dauert der Prozess der Abstimmung der Hyperparameter fĂĽr Ultralytics YOLO ?

Die Zeit, die für die Abstimmung der Hyperparameter mit Ultralytics YOLO benötigt wird, hängt weitgehend 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 die Abstimmung von YOLO11n auf einem Datensatz wie COCO8 für 30 Epochen je nach Hardware mehrere Stunden bis Tage dauern.

Um die Abstimmungszeit effektiv zu verwalten, sollten Sie im Vorfeld ein klares Abstimmungsbudget festlegen(Link zum internen Abschnitt). Dies hilft bei der Abwägung zwischen Ressourcenzuweisung und Optimierungszielen.

Welche Metriken sollte ich zur Bewertung der Modellleistung während der Abstimmung der Hyperparameter in YOLO verwenden?

Bei der Bewertung der Modellleistung während der Abstimmung der Hyperparameter in YOLO können Sie mehrere Schlüsselmetriken 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ĂĽckgewinnung: Einzelne Metriken, die die Genauigkeit des Modells bei der Identifizierung von echten Positiven gegenĂĽber falschen Positiven und falschen Negativen angeben.

Diese Metriken helfen Ihnen, verschiedene Aspekte der Leistung Ihres Modells zu verstehen. Einen umfassenden Ăśberblick finden Sie im Leitfaden fĂĽr Leistungskennzahlen unterUltralytics YOLO .

Kann ich Ultralytics HUB fĂĽr die Abstimmung der Hyperparameter von YOLO Modellen verwenden?

Ja, Sie können Ultralytics HUB für das Hyperparameter-Tuning von YOLO Modellen verwenden. Die HUB bietet eine Plattform ohne Code zum einfachen Hochladen von Datensätzen, zum Trainieren von Modellen und zur effizienten Abstimmung von Hyperparametern. Sie ermöglicht die Verfolgung und Visualisierung des Abstimmungsfortschritts und der Ergebnisse in Echtzeit.

Weitere Informationen zur Verwendung von Ultralytics HUB fĂĽr die Abstimmung von Hyperparametern finden Sie in der Dokumentation Ultralytics HUB Cloud Training.

📅 Erstellt vor 1 Jahr ✏️ Aktualisiert vor 2 Monaten

Kommentare