Vai al contenuto

Ultralytics YOLO Guida allaregolazione degli iperparametri

Introduzione

La messa a punto degli iperparametri non è una semplice messa a punto, ma un processo iterativo volto a ottimizzare le metriche di prestazione 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 a dettagli architetturali, come il numero di strati o i tipi di funzioni di attivazione utilizzati.



Guarda: Come sintonizzare gli iperparametri per migliorare le prestazioni del modello 🚀

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, muovendosi verso un minimo nel 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 addestramento.
  • Specifiche dell'architettura: Come il numero di canali, il numero di strati, i tipi di funzioni di attivazione, ecc.

Regolazione dell'iperparametro Visuale

Per un elenco completo degli iperparametri di incremento utilizzati in YOLO11 , consultare 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 per la valutazione.
  • 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 si concentra principalmente sulla mutazione per generare nuovi insiemi di iperparametri.

Preparazione per la regolazione degli iperparametri

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

  1. Identificare le metriche: Determinare le metriche da utilizzare per valutare le prestazioni del modello. Potrebbe trattarsi dell'AP50, del punteggio F1 o di altri parametri.
  2. Impostare il budget di ottimizzazione: Definire la quantità di risorse computazionali che si è disposti ad allocare. La messa a punto degli iperparametri può essere molto impegnativa dal punto di vista computazionale.

Fasi coinvolte

Inizializza gli iperparametri

Iniziare con un insieme ragionevole di iperparametri iniziali. Può trattarsi degli iperparametri predefiniti impostati da Ultralytics YOLO o di qualcosa basato sulla conoscenza del dominio o su esperimenti precedenti.

Mutare gli iperparametri

Utilizzare il _mutate per produrre un nuovo insieme di iperparametri basato sull'insieme esistente. Il Classe Tuner gestisce questo processo automaticamente.

Modello di treno

L'addestramento viene eseguito utilizzando l'insieme mutato di iperparametri. Le prestazioni dell'addestramento vengono quindi valutate in base alle metriche scelte.

Valutare il modello

Utilizzare metriche come AP50, F1-score o metriche personalizzate per valutare le prestazioni del modello. Il processo di valutazione aiuta a determinare se gli iperparametri attuali sono migliori di quelli precedenti.

Risultati del registro

È fondamentale registrare sia le metriche delle prestazioni sia gli iperparametri corrispondenti per riferimenti futuri. Ultralytics YOLO salva automaticamente questi risultati in formato CSV.

Ripetere

Il processo viene ripetuto fino a quando non si raggiunge il numero di iterazioni prestabilito o la metrica delle prestazioni è soddisfacente. Ogni iterazione si basa sulle conoscenze acquisite nelle esecuzioni precedenti.

Spazio di ricerca predefinito Descrizione

La tabella seguente elenca i parametri predefiniti dello spazio di ricerca per la regolazione degli iperparametri in YOLO11. Ogni parametro ha un intervallo di valori specifico definito da una tupla (min, max).

Parametro Tipo Intervallo di valori Descrizione
lr0 float (1e-5, 1e-1) Tasso di apprendimento iniziale all'inizio dell'addestramento. Valori più bassi forniscono un addestramento più stabile ma una convergenza più lenta.
lrf float (0.01, 1.0) Fattore del tasso di apprendimento finale come frazione di lr0. Controlla di quanto diminuisce il tasso di apprendimento durante l'addestramento.
momentum float (0.6, 0.98) Fattore di slancio SGD. Valori più alti aiutano a mantenere una direzione coerente del gradiente e possono accelerare la convergenza.
weight_decay float (0.0, 0.001) Fattore di regolarizzazione L2 per evitare l'overfitting. Valori maggiori impongono una regolarizzazione più forte
warmup_epochs float (0.0, 5.0) Numero di epoche per il riscaldamento del tasso di apprendimento lineare. Aiuta a prevenire l'instabilità iniziale dell'allenamento
warmup_momentum float (0.0, 0.95) Momento iniziale durante la fase di riscaldamento. Aumenta gradualmente fino al valore della quantità di moto finale
box float (0.02, 0.2) Peso della perdita della casella di contenimento nella funzione di perdita totale. Equilibrio tra regressione box e classificazione
cls float (0.2, 4.0) Peso della perdita di classificazione nella funzione di perdita totale. I valori più alti enfatizzano la corretta previsione della classe
hsv_h float (0.0, 0.1) Gamma di aumento casuale della tinta nello spazio colore HSV. Aiuta il modello a generalizzare le variazioni di colore
hsv_s float (0.0, 0.9) Gamma di aumento della saturazione casuale nello spazio HSV. Simula diverse condizioni di illuminazione
hsv_v float (0.0, 0.9) Gamma di incremento del valore casuale (luminosità). Aiuta il modello a gestire diversi livelli di esposizione
degrees float (0.0, 45.0) Aumento massimo della rotazione in gradi. Aiuta il modello a diventare invariante rispetto all'orientamento dell'oggetto.
translate float (0.0, 0.9) Massimo incremento della traslazione come frazione della dimensione dell'immagine. Migliora la robustezza rispetto alla posizione dell'oggetto
scale float (0.0, 0.9) Campo di incremento scalare casuale. Aiuta il modello a rilevare oggetti di dimensioni diverse
shear float (0.0, 10.0) Aumento massimo del taglio in gradi. Aggiunge distorsioni di tipo prospettico alle immagini di allenamento
perspective float (0.0, 0.001) Campo di incremento prospettico casuale. Simula diversi angoli di visione
flipud float (0.0, 1.0) Probabilità di ribaltamento verticale dell'immagine durante la formazione. Utile per immagini dall'alto/aeree
fliplr float (0.0, 1.0) Probabilità di ribaltamento orizzontale dell'immagine. Aiuta il modello a diventare invariante rispetto alla direzione dell'oggetto.
mosaic float (0.0, 1.0) Probabilità di utilizzare l'incremento del mosaico, che combina 4 immagini. Particolarmente utile per il rilevamento di piccoli oggetti
mixup float (0.0, 1.0) Probabilità di utilizzare l'aumento del mixup, che fonde due immagini. Può migliorare la robustezza del modello
copy_paste float (0.0, 1.0) Probabilità di utilizzare l'aumento del copia-incolla. Contribuisce a migliorare le prestazioni di segmentazione delle istanze

Esempio di spazio di ricerca personalizzato

Ecco come definire uno spazio di ricerca e utilizzare il metodo model.tune() per utilizzare il metodo Tuner classe per la messa a punto degli iperparametri di YOLO11n su COCO8 per 30 epoche con un ottimizzatore AdamW e saltando il plottaggio, il checkpoint e la validazione se non all'ultima epoca per una messa a punto più rapida.

Esempio

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,
)

Risultati

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

Struttura del file

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

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. È possibile utilizzare questo file per inizializzare i futuri addestramenti con queste impostazioni ottimizzate.

  • Formato: YAML
  • Utilizzo: Risultati dell'iperparametro
  • 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 visualizza il fitness (in genere una metrica di performance come AP50) rispetto al numero di iterazioni. 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 sintonizzazione. 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
  • Uso: Tracciamento dei risultati per 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.csvche aiuta a visualizzare le relazioni tra i diversi iperparametri e le metriche delle prestazioni. Si noti che gli iperparametri inizializzati a 0 non saranno 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 salvati PyTorch 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, è possibile prendere decisioni più informate per le future formazioni e analisi del modello. Consultate pure questi artefatti per capire come si è comportato il vostro modello e come potete migliorarlo ulteriormente.

Conclusione

Il processo di regolazione degli iperparametri in Ultralytics YOLO è semplificato ma potente, grazie all'approccio basato su algoritmi genetici e incentrato sulla mutazione. Seguendo i passaggi descritti in questa guida, si potrà regolare sistematicamente il 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 YOLO11

Per ulteriori approfondimenti, è possibile esplorare la sezione Tuner classe codice sorgente e la relativa documentazione. Se avete domande, richieste di funzionalità o bisogno di ulteriore assistenza, non esitate a contattarci su GitHub o Discordia.

FAQ

Come si ottimizza il tasso di apprendimento per Ultralytics YOLO durante la regolazione degli iperparametri?

Per ottimizzare il tasso di apprendimento per Ultralytics YOLO , si inizia con l'impostazione di un tasso di apprendimento iniziale utilizzando il parametro 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. È possibile utilizzare il parametro model.tune() per automatizzare questo processo. Ad esempio:

Esempio

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)

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

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

Gli algoritmi genetici in Ultralytics YOLO11 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 prestazione come AP50 e F1-score.

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

Quanto tempo richiede il processo di regolazione degli iperparametri per Ultralytics YOLO ?

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

Per gestire efficacemente il tempo di messa a punto, è necessario definire 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 sono le metriche da utilizzare per valutare le prestazioni del modello durante la regolazione degli iperparametri in YOLO?

Quando si valutano le prestazioni del modello durante la regolazione degli iperparametri in YOLO, si possono utilizzare diverse metriche chiave:

  • AP50: la precisione media alla soglia IoU di 0,50.
  • Punteggio F1: 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 aiutano a comprendere i diversi aspetti delle prestazioni del modello. Per una panoramica completa, consultare la guida alle metriche delle prestazioni diUltralytics YOLO .

È possibile utilizzare Ray Tune per l'ottimizzazione avanzata degli iperparametri con YOLO11?

Sì, Ultralytics YOLO11 si integra con Ray Tune per l'ottimizzazione avanzata degli iperparametri. Ray Tune offre sofisticati algoritmi di ricerca come l'ottimizzazione bayesiana e l'Hyperband, oltre a funzionalità di esecuzione parallela per accelerare il processo di ottimizzazione.

Per utilizzare Ray Tune con YOLO11, è sufficiente impostare il parametro use_ray=True nel parametro model.tune() per il metodo di chiamata. Per maggiori dettagli ed esempi, consultate la sezione Guida all'integrazione di Ray Tune.

📅C reato 1 anno fa ✏️ Aggiornato 8 giorni fa

Commenti