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.



Beobachten: How to Tune Hyperparameters for Better Model Performance 🚀

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.

Standard-Suchraum Beschreibung

The following table lists the default search space parameters for hyperparameter tuning in YOLO11. Each parameter has a specific value range defined by a tuple (min, max).

Parameter Typ Wertebereich Beschreibung
lr0 float (1e-5, 1e-1) Initial learning rate at the start of training. Lower values provide more stable training but slower convergence
lrf float (0.01, 1.0) Final learning rate factor as a fraction of lr0. Controls how much the learning rate decreases during training
momentum float (0.6, 0.98) SGD momentum factor. Higher values help maintain consistent gradient direction and can speed up convergence
weight_decay float (0.0, 0.001) L2 regularization factor to prevent overfitting. Larger values enforce stronger regularization
warmup_epochs float (0.0, 5.0) Number of epochs for linear learning rate warmup. Helps prevent early training instability
warmup_momentum float (0.0, 0.95) Initial momentum during warmup phase. Gradually increases to the final momentum value
box float (0.02, 0.2) Bounding box loss weight in the total loss function. Balances box regression vs classification
cls float (0.2, 4.0) Classification loss weight in the total loss function. Higher values emphasize correct class prediction
hsv_h float (0.0, 0.1) Random hue augmentation range in HSV color space. Helps model generalize across color variations
hsv_s float (0.0, 0.9) Random saturation augmentation range in HSV space. Simulates different lighting conditions
hsv_v float (0.0, 0.9) Random value (brightness) augmentation range. Helps model handle different exposure levels
degrees float (0.0, 45.0) Maximum rotation augmentation in degrees. Helps model become invariant to object orientation
translate float (0.0, 0.9) Maximum translation augmentation as fraction of image size. Improves robustness to object position
scale float (0.0, 0.9) Random scaling augmentation range. Helps model detect objects at different sizes
shear float (0.0, 10.0) Maximum shear augmentation in degrees. Adds perspective-like distortions to training images
perspective float (0.0, 0.001) Random perspective augmentation range. Simulates different viewing angles
flipud float (0.0, 1.0) Probability of vertical image flip during training. Useful for overhead/aerial imagery
fliplr float (0.0, 1.0) Probability of horizontal image flip. Helps model become invariant to object direction
mosaic float (0.0, 1.0) Probability of using mosaic augmentation, which combines 4 images. Especially useful for small object detection
mixup float (0.0, 1.0) Probability of using mixup augmentation, which blends two images. Can improve model robustness
copy_paste float (0.0, 1.0) Probability of using copy-paste augmentation. Helps improve instance segmentation performance

Beispiel fĂĽr einen benutzerdefinierten Suchraum

Here's how to define a search space and use the 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")

# Define search space
search_space = {
    "lr0": (1e-5, 1e-1),
    "degrees": (0.0, 45.0),
}

# Tune hyperparameters on COCO8 for 30 epochs
model.tune(
    data="coco8.yaml",
    epochs=30,
    iterations=300,
    optimizer="AdamW",
    space=search_space,
    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 27 Tagen

Kommentare