Overslaan naar inhoud

Ultralytics YOLO Hyperparameter afstelgids

Inleiding

Het afstemmen van hyperparameters is niet een eenmalige instelling, maar een iteratief proces gericht op het optimaliseren van de prestatiecijfers van het model voor machinaal leren, zoals nauwkeurigheid, precisie en terughalen. In de context van Ultralytics YOLO kunnen deze hyperparameters variëren van leersnelheid tot architecturale details, zoals het aantal lagen of de gebruikte typen activeringsfuncties.

Wat zijn hyperparameters?

Hyperparameters zijn structurele instellingen op hoog niveau voor het algoritme. Ze worden voorafgaand aan de trainingsfase ingesteld en blijven constant tijdens de trainingsfase. Hier zijn enkele veelgebruikte hyperparameters in Ultralytics YOLO :

  • Leertempo lr0: Bepaalt de stapgrootte bij elke iteratie terwijl naar een minimum in de verliesfunctie wordt bewogen.
  • Partijgrootte batch: Aantal beelden dat tegelijkertijd wordt verwerkt in een voorwaartse doorgang.
  • Aantal tijdperken epochs: Een epoch is één volledige voorwaartse en achterwaartse passage van alle trainingsvoorbeelden.
  • Architectuurspecificaties: Zoals kanaaltellingen, aantal lagen, soorten activeringsfuncties, enz.

Hyperparameter afstemmen Visueel

Voor een volledige lijst van augmentatie-hyperparameters die worden gebruikt in YOLOv8 kun je terecht op de configuraties pagina.

Genetische evolutie en mutatie

Ultralytics YOLO gebruikt genetische algoritmen om hyperparameters te optimaliseren. Genetische algoritmen zijn geïnspireerd op het mechanisme van natuurlijke selectie en genetica.

  • Mutatie: In de context van Ultralytics YOLO helpt mutatie bij het lokaal doorzoeken van de hyperparameterruimte door kleine, willekeurige veranderingen toe te passen op bestaande hyperparameters, waardoor nieuwe kandidaten voor evaluatie ontstaan.
  • Crossover: Hoewel crossover een populaire genetische algoritme techniek is, wordt deze momenteel niet gebruikt in Ultralytics YOLO voor hyperparameter tuning. De nadruk ligt voornamelijk op mutatie voor het genereren van nieuwe hyperparametersets.

Voorbereiden op het afstemmen van de hyperparameters

Voordat je begint met afstemmen, is het belangrijk om:

  1. Identificeer de metriek: Bepaal de metrieken die je gaat gebruiken om de prestaties van het model te evalueren. Dit kan AP50, F1-score of andere zijn.
  2. Stel het tuningbudget in: Bepaal hoeveel rekenkracht je bereid bent toe te wijzen. Hyperparameter tuning kan rekenintensief zijn.

Betrokken stappen

Hyperparameters initialiseren

Begin met een redelijke set initiële hyperparameters. Dit kunnen de standaard hyperparameters zijn die zijn ingesteld door Ultralytics YOLO of iets gebaseerd op je domeinkennis of eerdere experimenten.

Hyperparameters muteren

Gebruik de _mutate methode om een nieuwe set hyperparameters te produceren op basis van de bestaande set.

Trein Model

Er wordt getraind met de gemuteerde set hyperparameters. Vervolgens worden de trainingsprestaties beoordeeld.

Model evalueren

Gebruik metrieken zoals AP50, F1-score of aangepaste metrieken om de prestaties van het model te evalueren.

Resultaten logboek

Het is cruciaal om zowel de prestatiecijfers als de bijbehorende hyperparameters te loggen voor toekomstig gebruik.

Herhaal

Het proces wordt herhaald totdat het ingestelde aantal iteraties is bereikt of de prestatiemeting bevredigend is.

Gebruiksvoorbeeld

Hier lees je hoe je de model.tune() methode om de Tuner klasse voor hyperparameter tuning van YOLOv8n op COCO8 voor 30 epochs met een AdamW optimizer en het overslaan van plotten, checkpointing en validatie anders dan op de laatste epoch voor snellere tuning.

Voorbeeld

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)

Resultaten

Nadat je het afstemmen van de hyperparameters succesvol hebt afgerond, krijg je verschillende bestanden en mappen die de resultaten van het afstemmen bevatten. Hieronder wordt elk bestand beschreven:

Bestandsstructuur

Zo ziet de mappenstructuur van de resultaten eruit. Trainingsmappen zoals train1/ bevatten individuele afstem iteraties, d.w.z. één model getraind met één set hyperparameters. De tune/ De map bevat de afstemmingsresultaten van alle individuele modeltrainingen:

runs/
└── detect/
    ├── train1/
    ├── train2/
    ├── ...
    └── tune/
        ├── best_hyperparameters.yaml
        ├── best_fitness.png
        ├── tune_results.csv
        ├── tune_scatter_plots.png
        └── weights/
            ├── last.pt
            └── best.pt

Bestandsbeschrijvingen

beste_hyperparameters.yaml

Dit YAML-bestand bevat de best presterende hyperparameters die zijn gevonden tijdens het afstemmingsproces. Je kunt dit bestand gebruiken om toekomstige trainingen te initialiseren met deze geoptimaliseerde instellingen.

  • Formaat: YAML
  • Gebruik: Hyperparameter resultaten
  • Voorbeeld:

    # 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

Dit is een grafiek die de fitness (meestal een prestatiemeting zoals AP50) weergeeft tegen het aantal iteraties. Het helpt je te visualiseren hoe goed het genetische algoritme presteerde in de loop van de tijd.

  • Formaat: PNG
  • Gebruik: Prestatievisualisatie

Hyperparameter afstemmen Fitness vs Iteratie

afstemmen_resultaten.csv

Een CSV-bestand met gedetailleerde resultaten van elke iteratie tijdens het afstemmen. Elke rij in het bestand vertegenwoordigt één iteratie en bevat meetgegevens zoals fitnessscore, precisie, recall en de gebruikte hyperparameters.

  • Formaat: CSV
  • Gebruik: Per-iteratie resultaten bijhouden.
  • Voorbeeld:
      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
    

afstemmen_scatter_plots.png

Dit bestand bevat scatterplots gegenereerd uit tune_results.csvDit helpt je bij het visualiseren van relaties tussen verschillende hyperparameters en prestatiecijfers. Merk op dat hyperparameters die zijn geïnitialiseerd op 0 niet worden getuned, zoals degrees en shear hieronder.

  • Formaat: PNG
  • Gebruik: Verkennende gegevensanalyse

Hyperparameter afstemmen spreidingsdiagrammen

gewichten/

Deze map bevat de opgeslagen PyTorch modellen voor de laatste en de beste iteraties tijdens het afstemmen van de hyperparameters.

  • last.pt: De last.pt zijn de gewichten van het laatste epoch van de training.
  • best.pt: De best.pt gewichten voor de iteratie die de beste fitnessscore heeft behaald.

Met behulp van deze resultaten kun je beter geïnformeerde beslissingen nemen voor je toekomstige modeltrainingen en -analyses. Raadpleeg deze artefacten gerust om te begrijpen hoe goed je model presteerde en hoe je het verder zou kunnen verbeteren.

Conclusie

Het proces voor het afstellen van hyperparameters in Ultralytics YOLO is vereenvoudigd maar toch krachtig, dankzij de op genetische algoritmen gebaseerde aanpak die is gericht op mutatie. Door de stappen in deze handleiding te volgen, kun je je model systematisch afstemmen om betere prestaties te bereiken.

Verder lezen

  1. Hyperparameter optimalisatie in Wikipedia
  2. YOLOv5 Hyperparameter evolutiegids
  3. Efficiënt afstemmen van hyperparameters met Ray Tune en YOLOv8

Voor diepere inzichten kun je de Tuner klasse broncode en bijbehorende documentatie. Als je vragen of verzoeken hebt, of meer hulp nodig hebt, kun je ons bereiken op GitHub of Discord.

FAQ

Hoe optimaliseer ik de leersnelheid voor Ultralytics YOLO tijdens het afstemmen van hyperparameters?

Om de leersnelheid voor Ultralytics YOLO te optimaliseren, begin je met het instellen van een initiële leersnelheid met behulp van de lr0 parameter. Gebruikelijke waarden variëren van 0.001 naar 0.01. Tijdens het afstemmen van de hyperparameters wordt deze waarde gemuteerd om de optimale instelling te vinden. Je kunt de model.tune() methode om dit proces te automatiseren. Bijvoorbeeld:

Voorbeeld

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)

Kijk voor meer details op de configuratiepaginaUltralytics YOLO .

Wat zijn de voordelen van het gebruik van genetische algoritmen voor het afstemmen van hyperparameters in YOLOv8?

Genetische algoritmen in Ultralytics YOLOv8 bieden een robuuste methode om de hyperparameterruimte te verkennen, wat leidt tot sterk geoptimaliseerde modelprestaties. De belangrijkste voordelen zijn:

  • Efficiënt zoeken: Genetische algoritmen zoals mutatie kunnen snel een grote verzameling hyperparameters verkennen.
  • Lokale minima vermijden: Door willekeurigheid te introduceren helpen ze lokale minima te vermijden, wat zorgt voor een betere globale optimalisatie.
  • Prestatiecijfers: Ze passen zich aan op basis van prestatiecijfers zoals AP50 en F1-score.

Om te zien hoe genetische algoritmen hyperparameters kunnen optimaliseren, bekijk je de hyperparameter evolutie gids.

Hoe lang duurt het afstemmen van de hyperparameters voor Ultralytics YOLO ?

De tijd die nodig is voor het afstemmen van hyperparameters met Ultralytics YOLO hangt grotendeels af van verschillende factoren, zoals de grootte van de dataset, de complexiteit van de modelarchitectuur, het aantal iteraties en de beschikbare rekenkracht. Zo kan het afstemmen van YOLOv8n op een dataset als COCO8 gedurende 30 epochs enkele uren tot dagen duren, afhankelijk van de hardware.

Om de tuningtijd effectief te beheren, moet je vooraf een duidelijk tuningbudget definiëren (interne sectie link). Dit helpt bij het in balans brengen van de toewijzing van bronnen en optimalisatiedoelen.

Welke metriek moet ik gebruiken om de modelprestaties te evalueren tijdens het afstemmen van hyperparameters in YOLO?

Bij het evalueren van de modelprestaties tijdens het afstemmen van hyperparameters in YOLO kun je verschillende belangrijke metrieken gebruiken:

  • AP50: De gemiddelde precisie bij een IoU-drempel van 0,50.
  • F1-Score: Het harmonisch gemiddelde van precisie en recall.
  • Precisie en Recall: Individuele meetgegevens die de nauwkeurigheid van het model aangeven bij het identificeren van ware positieven versus valse positieven en valse negatieven.

Deze statistieken helpen je om verschillende aspecten van de prestaties van je model te begrijpen. Raadpleeg de Ultralytics YOLO Performance Metrics Guide voor een uitgebreid overzicht.

Kan ik Ultralytics HUB gebruiken voor hyperparameter tuning van YOLO modellen?

Ja, je kunt Ultralytics HUB gebruiken voor hyperparameter tuning van YOLO modellen. De HUB biedt een no-code platform om eenvoudig datasets te uploaden, modellen te trainen en hyperparameter tuning efficiënt uit te voeren. Het biedt real-time tracking en visualisatie van de tuningvoortgang en -resultaten.

Lees meer over het gebruik van Ultralytics HUB voor hyperparameter tuning in de Ultralytics HUB Cloud Training documentatie.



Gemaakt op 2023-11-12, Bijgewerkt op 2024-07-05
Auteurs: glenn-jocher (11)

Reacties