Vai al contenuto

Ultralytics YOLO Guida alla regolazione degli iperparametri

Introduzione

La regolazione degli iperparametri non è un'operazione da fare una volta sola, ma un processo iterativo volto a ottimizzare le metriche di performance del modello di apprendimento automatico, come l'accuratezza, la precisione e il richiamo. Nel contesto di Ultralytics YOLO , questi iperparametri possono spaziare dal tasso di apprendimento ai dettagli architetturali, come il numero di livelli o i tipi di funzioni di attivazione utilizzati.

Cosa sono gli iperparametri?

Gli iperparametri sono impostazioni strutturali di alto livello per l'algoritmo. Vengono impostati prima della fase di addestramento e rimangono costanti durante la stessa. Ecco alcuni iperparametri comunemente regolati in Ultralytics YOLO :

  • Tasso di apprendimento lr0: Determina la dimensione del passo ad ogni iterazione mentre si muove verso un minimo nella funzione di perdita.
  • Dimensione del lotto batch: Numero di immagini elaborate simultaneamente in un passaggio in avanti.
  • Numero di epoche epochs: Un'epoca è un passaggio completo in avanti e indietro di tutti gli esempi di formazione.
  • Specifiche dell'architettura: Come il numero di canali, il numero di strati, i tipi di funzioni di attivazione, ecc.

Sintonizzazione dell'iperparametro Visuale

Per un elenco completo degli iperparametri di aumento utilizzati in YOLOv8 , consulta la pagina delle configurazioni.

Evoluzione genetica e mutazione

Ultralytics YOLO utilizza algoritmi genetici per ottimizzare gli iperparametri. Gli algoritmi genetici si ispirano al meccanismo della selezione naturale e della genetica.

  • Mutazione: Nel contesto di Ultralytics YOLO , la mutazione aiuta a ricercare localmente lo spazio degli iperparametri applicando piccole modifiche casuali agli iperparametri esistenti, producendo nuovi candidati da valutare.
  • Crossover: Sebbene il crossover sia una tecnica di algoritmo genetico molto diffusa, attualmente non viene utilizzata in Ultralytics YOLO per la regolazione degli iperparametri. L'attenzione è rivolta principalmente alla mutazione per generare nuovi set di iperparametri.

Preparazione per la regolazione degli iperparametri

Prima di iniziare il processo di messa a punto, è importante sapere che:

  1. Identificare le metriche: Determina le metriche che utilizzerai per valutare le prestazioni del modello. Potrebbe trattarsi dell'AP50, del punteggio F1 o di altri parametri.
  2. Imposta il budget per il tuning: Definisci la quantità di risorse computazionali che sei disposto ad allocare. La messa a punto degli iperparametri può essere molto impegnativa dal punto di vista computazionale.

Passi da compiere

Inizializza gli iperparametri

Inizia con un insieme ragionevole di iperparametri iniziali. Potrebbero essere gli iperparametri di default impostati da Ultralytics YOLO o qualcosa basato sulle tue conoscenze del dominio o su esperimenti precedenti.

Muta gli iperparametri

Usa il tasto _mutate per produrre un nuovo insieme di iperparametri basato sull'insieme esistente.

Modello di treno

L'addestramento viene eseguito utilizzando l'insieme mutato di iperparametri. Si valutano quindi le prestazioni dell'addestramento.

Valutare il modello

Usa metriche come AP50, F1-score o metriche personalizzate per valutare le prestazioni del modello.

Risultati del registro

È fondamentale registrare sia le metriche delle prestazioni che gli iperparametri corrispondenti per un riferimento futuro.

Ripetere

Il processo viene ripetuto fino a quando non viene raggiunto il numero di iterazioni stabilito oppure fino a quando la metrica delle prestazioni non è soddisfacente.

Esempio di utilizzo

Ecco come utilizzare la funzione model.tune() per utilizzare il metodo Tuner classe per la messa a punto degli iperparametri di YOLOv8n su COCO8 per 30 epoche con l'ottimizzatore AdamW e saltando il plottaggio, il checkpoint e la convalida se non all'ultima epoca per una messa a punto più rapida.

Esempio

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)

Risultati

Dopo aver completato con successo il processo di regolazione degli iperparametri, otterrai diversi file e directory che racchiudono i risultati della regolazione. Di seguito vengono descritti i singoli file:

Struttura dei file

Ecco come apparirà la struttura delle directory dei risultati. Le directory di formazione come train1/ contengono singole iterazioni di messa a punto, cioè un modello addestrato con un set di iperparametri. Il tune/ contiene i risultati della messa a punto di tutti i singoli addestramenti del modello:

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

Descrizioni dei file

best_hyperparameters.yaml

Questo file YAML contiene gli iperparametri più performanti trovati durante il processo di sintonizzazione. Puoi usare questo file per inizializzare i futuri addestramenti con queste impostazioni ottimizzate.

  • Formato: YAML
  • Utilizzo: Risultati degli iperparametri
  • Esempio:

    # 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

Si tratta di un grafico che mostra il fitness (in genere una metrica di performance come AP50) rispetto al numero di iterazioni. Ti aiuta a visualizzare il rendimento dell'algoritmo genetico nel tempo.

  • Formato: PNG
  • Utilizzo: Visualizzazione delle prestazioni

Regolazione dell'iperparametro Fitness vs Iterazione

tune_results.csv

Un file CSV contenente i risultati dettagliati di ogni iterazione durante la messa a punto. Ogni riga del file rappresenta un'iterazione e include metriche come il punteggio di fitness, la precisione, il richiamo e gli iperparametri utilizzati.

  • Formato: CSV
  • Utilizzo: Tracciamento dei risultati per ogni iterazione.
  • Esempio:
      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

Questo file contiene i grafici di dispersione generati da tune_results.csvper aiutarti a visualizzare le relazioni tra i diversi iperparametri e le metriche delle prestazioni. Tieni presente che gli iperparametri inizializzati a 0 non verranno sintonizzati, come ad esempio degrees e shear di seguito.

  • Formato: PNG
  • Utilizzo: Analisi esplorativa dei dati

Piani di dispersione per la regolazione dell'iperparametro

pesi/

Questa directory contiene i modelli PyTorch salvati per le ultime e le migliori iterazioni durante il processo di regolazione degli iperparametri.

  • last.pt: Gli ultimi.pt sono i pesi dell'ultima epoca di addestramento.
  • best.pt: I pesi best.pt per l'iterazione che ha ottenuto il miglior punteggio di fitness.

Grazie a questi risultati, potrai prendere decisioni più informate per le tue future formazioni e analisi del modello. Non esitare a consultare questi artefatti per capire come si è comportato il tuo modello e come potresti migliorarlo ulteriormente.

Conclusione

Il processo di regolazione degli iperparametri in Ultralytics YOLO è semplificato ma potente, grazie al suo approccio basato su algoritmi genetici e incentrato sulla mutazione. Seguendo i passaggi descritti in questa guida, sarai in grado di mettere a punto sistematicamente il tuo modello per ottenere prestazioni migliori.

Ulteriori letture

  1. Ottimizzazione iperparametrica in Wikipedia
  2. YOLOv5 Guida all'evoluzione degli iperparametri
  3. Sintonizzazione efficiente degli iperparametri con Ray Tune e YOLOv8

Per approfondimenti, puoi esplorare la sezione Tuner e la documentazione di accompagnamento. Se hai domande, richieste di funzionalità o bisogno di ulteriore assistenza, sentiti libero di contattarci su GitHub o Discordia.

DOMANDE FREQUENTI

Come posso ottimizzare il tasso di apprendimento per Ultralytics YOLO durante la regolazione degli iperparametri?

Per ottimizzare il tasso di apprendimento di Ultralytics YOLO , inizia con l'impostare un tasso di apprendimento iniziale usando il metodo lr0 parametro. I valori comuni vanno da 0.001 a 0.01. Durante il processo di regolazione dell'iperparametro, questo valore verrà modificato per trovare l'impostazione ottimale. Puoi utilizzare il parametro model.tune() per automatizzare questo processo. Ad esempio:

Esempio

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)

Per maggiori dettagli, consulta la pagina di configurazione diUltralytics YOLO .

Quali sono i vantaggi dell'utilizzo di algoritmi genetici per la regolazione degli iperparametri in YOLOv8?

Gli algoritmi genetici in Ultralytics YOLOv8 forniscono un metodo robusto per esplorare lo spazio degli iperparametri, portando a prestazioni del modello altamente ottimizzate. I vantaggi principali includono:

  • Ricerca efficiente: Gli algoritmi genetici, come la mutazione, possono esplorare rapidamente un ampio insieme di iperparametri.
  • Evitare i minimi locali: introducendo la casualità, aiutano a evitare i minimi locali, garantendo una migliore ottimizzazione globale.
  • Metriche di prestazione: Si adattano in base a metriche di performance come AP50 e F1-score.

Per vedere come gli algoritmi genetici possono ottimizzare gli iperparametri, consulta la guida all'evoluzione degli iperparametri.

Quanto tempo richiede il processo di regolazione dell'iperparametro per Ultralytics YOLO ?

Il tempo necessario per la messa a punto degli iperparametri con Ultralytics YOLO dipende in larga misura da diversi fattori, come le dimensioni del dataset, la complessità dell'architettura del modello, il numero di iterazioni e le risorse computazionali disponibili. Ad esempio, la messa a punto di YOLOv8n su un set di dati come COCO8 per 30 epoche potrebbe richiedere da diverse ore a giorni, a seconda dell'hardware.

Per gestire efficacemente i tempi di messa a punto, definisci in anticipo un budget chiaro per la messa a punto(link alla sezione interna). Questo aiuta a bilanciare l'allocazione delle risorse e gli obiettivi di ottimizzazione.

Quali metriche devo utilizzare per valutare le prestazioni del modello durante la regolazione degli iperparametri in YOLO?

Quando valuti le prestazioni del modello durante la regolazione degli iperparametri in YOLO, puoi utilizzare diverse metriche chiave:

  • AP50: la precisione media alla soglia IoU di 0,50.
  • F1-Score: La media armonica di precision e recall.
  • Precisione e Richiamo: Metriche individuali che indicano l'accuratezza del modello nell'identificare i veri positivi rispetto ai falsi positivi e ai falsi negativi.

Queste metriche ti aiutano a comprendere diversi aspetti delle prestazioni del tuo modello. Per una panoramica completa, consulta la guida alle metriche delle prestazioni diUltralytics YOLO .

Posso utilizzare Ultralytics HUB per la regolazione degli iperparametri dei modelli di YOLO ?

Sì, puoi utilizzare Ultralytics HUB per la messa a punto degli iperparametri dei modelli di YOLO . L'HUB offre una piattaforma senza codice per caricare facilmente i dataset, addestrare i modelli ed eseguire la messa a punto degli iperparametri in modo efficiente. Fornisce un monitoraggio e una visualizzazione in tempo reale dei progressi e dei risultati della messa a punto.

Per saperne di più sull'uso di Ultralytics HUB per la regolazione degli iperparametri, consulta la documentazione di Ultralytics HUB Cloud Training.



Creato 2023-11-12, Aggiornato 2024-07-05
Autori: glenn-jocher (11)

Commenti