Meet YOLO26: next-gen vision AI.

Link to this sectionOttimizzazione efficiente degli iperparametri con Ray Tune e YOLO26#

L'ottimizzazione degli iperparametri è fondamentale per raggiungere le massime prestazioni del modello scoprendo il set ottimale di iperparametri. Ciò comporta l'esecuzione di prove con iperparametri diversi e la valutazione delle prestazioni di ciascuna prova.

Link to this sectionAccelera l'ottimizzazione con Ultralytics YOLO26 e Ray Tune#

Ultralytics YOLO26 integra Ray Tune per l'ottimizzazione degli iperparametri, semplificando l'ottimizzazione degli iperparametri del modello YOLO26. Con Ray Tune, puoi utilizzare strategie di ricerca avanzate, parallelismo e early stopping per accelerare il processo di ottimizzazione.

Link to this sectionRay Tune#

Ray Tune hyperparameter optimization workflow

Ray Tune è una libreria di ottimizzazione degli iperparametri progettata per efficienza e flessibilità. Supporta varie strategie di ricerca, parallelismo e strategie di early stopping, e si integra perfettamente con i più diffusi framework di machine learning, incluso Ultralytics YOLO26.

Link to this sectionIntegrazione con Weights & Biases#

YOLO26 consente inoltre l'integrazione facoltativa con Weights & Biases per monitorare il processo di ottimizzazione.

Link to this sectionInstallazione#

Per installare i pacchetti richiesti, esegui:

Installazione
# Install and update Ultralytics and Ray Tune packages
pip install -U ultralytics "ray[tune]"

# Optionally install W&B for logging
pip install wandb

Link to this sectionUtilizzo#

Utilizzo
from ultralytics import YOLO

# Load a YOLO26n model
model = YOLO("yolo26n.pt")

# Start tuning hyperparameters for YOLO26n training on the COCO8 dataset
result_grid = model.tune(data="coco8.yaml", use_ray=True)

Link to this sectionParametri del metodo tune()#

Il metodo tune() in YOLO26 fornisce un'interfaccia facile da usare per l'ottimizzazione degli iperparametri con Ray Tune. Accetta diversi argomenti che ti permettono di personalizzare il processo di ottimizzazione. Di seguito è riportata una spiegazione dettagliata di ciascun parametro:

ParametroTipoDescrizioneValore predefinito
datastrIl file di configurazione del dataset (in formato YAML) su cui eseguire il tuner. Questo file dovrebbe specificare i percorsi dei dati di addestramento e validazione, nonché altre impostazioni specifiche del dataset.
spacedict, optionalUn dizionario che definisce lo spazio di ricerca degli iperparametri per Ray Tune. Ogni chiave corrisponde a un nome di iperparametro e il valore specifica l'intervallo di valori da esplorare durante l'ottimizzazione. Se non fornito, YOLO26 utilizza uno spazio di ricerca predefinito con vari iperparametri.
grace_periodint, optionalIl periodo di tolleranza in epoche per lo scheduler ASHA in Ray Tune. Lo scheduler non terminerà alcuna prova prima di questo numero di epoche, consentendo al modello di avere un addestramento minimo prima di decidere per l'early stopping.10
gpu_per_trialint, optionalIl numero di GPU da allocare per prova durante l'ottimizzazione. Questo aiuta a gestire l'utilizzo della GPU, in particolare in ambienti multi-GPU. Se non fornito, il tuner utilizzerà tutte le GPU disponibili.None
iterationsint, optionalIl numero massimo di prove da eseguire durante l'ottimizzazione. Questo parametro aiuta a controllare il numero totale di combinazioni di iperparametri testate, garantendo che il processo di ottimizzazione non venga eseguito indefinitamente.10
search_algstr or Searcher, optionalStrategia di ricerca di Ray Tune da utilizzare. Puoi passare direttamente un oggetto di ricerca Ray o utilizzare una stringa supportata come optuna, hyperopt, bayesopt, bohb, hebo, nevergrad, zoopt, ax o random. I cercatori basati su stringa utilizzano automaticamente la metrica del task predefinita e mode="max". Se non fornito, Ray Tune ripiega sulla sua strategia di ricerca casuale predefinita, BasicVariantGenerator.None
**train_argsdict, optionalArgomenti aggiuntivi da passare al metodo train() durante l'ottimizzazione. Questi argomenti possono includere impostazioni come il numero di epoche di addestramento, la dimensione del batch e altre configurazioni specifiche dell'addestramento.{}

Personalizzando questi parametri, puoi perfezionare il processo di ottimizzazione degli iperparametri per soddisfare le tue esigenze specifiche e le risorse computazionali disponibili.

Link to this sectionDescrizione dello spazio di ricerca predefinito#

La seguente tabella elenca i parametri dello spazio di ricerca predefiniti per l'ottimizzazione degli iperparametri in YOLO26 con Ray Tune. Ogni parametro ha un intervallo di valori specifico definito da tune.uniform().

ParametroIntervalloDescrizione
lr0tune.uniform(1e-5, 1e-2)Learning rate iniziale che controlla la dimensione del passo durante l'ottimizzazione. Valori più alti accelerano l'addestramento ma possono causare instabilità.
lrftune.uniform(0.01, 1.0)Fattore di learning rate finale che determina quanto diminuisce il learning rate entro la fine dell'addestramento.
momentumtune.uniform(0.7, 0.98)Fattore di momentum per l'ottimizzatore che aiuta ad accelerare l'addestramento e a superare i minimi locali.
weight_decaytune.uniform(0.0, 0.001)Parametro di regolarizzazione che previene l'overfitting penalizzando valori dei pesi elevati.
warmup_epochstune.uniform(0.0, 5.0)Numero di epoche con learning rate gradualmente crescente per stabilizzare l'addestramento iniziale.
warmup_momentumtune.uniform(0.0, 0.95)Valore di momentum iniziale che aumenta gradualmente durante il periodo di warmup.
boxtune.uniform(1.0, 20.0)Peso per il componente di perdita della BBox, che bilancia l'accuratezza della localizzazione nel modello.
clstune.uniform(0.1, 4.0)Peso per il componente di perdita della classificazione, che bilancia l'accuratezza della previsione della classe nel modello.
dfltune.uniform(0.4, 12.0)Peso per il componente Distribution Focal Loss, che enfatizza la localizzazione precisa della BBox.
hsv_htune.uniform(0.0, 0.1)Intervallo di aumento dell'Hue che introduce variabilità cromatica per aiutare il modello a generalizzare.
hsv_stune.uniform(0.0, 0.9)Intervallo di aumento della saturazione che varia l'intensità del colore per migliorare la robustezza.
hsv_vtune.uniform(0.0, 0.9)Intervallo di aumento del valore (luminosità) che aiuta il modello a funzionare in varie condizioni di illuminazione.
degreestune.uniform(0.0, 45.0)Intervallo di aumento della rotazione in gradi, che migliora il riconoscimento degli oggetti ruotati.
translatetune.uniform(0.0, 0.9)Intervallo di aumento della traslazione che sposta le immagini orizzontalmente e verticalmente.
scaletune.uniform(0.0, 0.95)Intervallo di aumento della scala che simula oggetti a diverse distanze.
sheartune.uniform(0.0, 10.0)Intervallo di aumento dello shear in gradi, simulando cambiamenti di prospettiva.
perspectivetune.uniform(0.0, 0.001)Intervallo di aumento della prospettiva che simula cambiamenti del punto di vista 3D.
flipudtune.uniform(0.0, 1.0)Probabilità di aumento del capovolgimento verticale, aumentando la diversità del dataset.
fliplrtune.uniform(0.0, 1.0)Probabilità di aumento del capovolgimento orizzontale, utile per oggetti simmetrici.
bgrtune.uniform(0.0, 1.0)Probabilità di aumento dello scambio di canali BGR, utile per l'invarianza del colore.
mosaictune.uniform(0.0, 1.0)Probabilità di aumento del mosaico che combina quattro immagini in un singolo campione di addestramento.
mixuptune.uniform(0.0, 1.0)Probabilità di aumento del Mixup che fonde due immagini e le relative etichette.
cutmixtune.uniform(0.0, 1.0)Probabilità di aumento del Cutmix che combina regioni di immagini mantenendo le caratteristiche locali.
copy_pastetune.uniform(0.0, 1.0)Probabilità di aumento del copy-paste che trasferisce oggetti tra immagini per aumentare la diversità delle istanze.
close_mosaictune.randint(0, 11)Disabilita il mosaico nelle ultime N epoche per stabilizzare l'addestramento prima del completamento.

Link to this sectionEsempio di spazio di ricerca personalizzato#

In questo esempio, dimostriamo come utilizzare uno spazio di ricerca personalizzato per l'ottimizzazione degli iperparametri con Ray Tune e YOLO26. Fornendo uno spazio di ricerca personalizzato, puoi concentrare il processo di ottimizzazione su specifici iperparametri di interesse.

Utilizzo
from ray import tune

from ultralytics import YOLO

# Define a YOLO model
model = YOLO("yolo26n.pt")

# Run Ray Tune on the model
result_grid = model.tune(
    data="coco8.yaml",
    space={"lr0": tune.uniform(1e-5, 1e-2)},
    epochs=50,
    use_ray=True,
)

Nel frammento di codice sopra, creiamo un modello YOLO con i pesi preaddestrati "yolo26n.pt". Quindi, chiamiamo il metodo tune(), specificando la configurazione del dataset con "coco8.yaml". Forniamo uno spazio di ricerca personalizzato per il learning rate iniziale lr0 utilizzando un dizionario con la chiave "lr0" e il valore tune.uniform(1e-5, 1e-2). Infine, passiamo argomenti di addestramento aggiuntivi, come il numero di epoche, direttamente al metodo tune come epochs=50.

Link to this sectionEsempio di algoritmo di ricerca#

Puoi selezionare una strategia di ricerca di Ray Tune per nome. Per gli algoritmi di ricerca basati su stringa, Ultralytics utilizzerà automaticamente la metrica di ottimizzazione predefinita del task corrente e mode="max". Se search_alg non viene fornito, Ray Tune utilizza la sua strategia di ricerca casuale predefinita, BasicVariantGenerator.

Utilizzo di `search_alg` come stringa con `model.tune()`
from ultralytics import YOLO

# Define a YOLO model
model = YOLO("yolo26n.pt")

result_grid = model.tune(
    data="coco8.yaml",
    epochs=50,
    search_alg="optuna",
    use_ray=True,
)

Se hai bisogno di personalizzare il sampler del cercatore o sovrascrivere la sua metrica e modalità di ottimizzazione, passa un oggetto cercatore di Ray Tune istanziato invece di una stringa.

Utilizzo di un oggetto `OptunaSearch` con `model.tune()`
from ray.tune.search.optuna import OptunaSearch

from ultralytics import YOLO

# Define a YOLO model
model = YOLO("yolo26n.pt")

# Define a searcher
searcher = OptunaSearch(
    metric="metrics/mAP50-95(B)",
    mode="max",
)

result_grid = model.tune(
    data="coco8.yaml",
    epochs=50,
    search_alg=searcher,
    use_ray=True,
)

Link to this sectionRipresa di una sessione di ottimizzazione degli iperparametri interrotta con Ray Tune#

Puoi riprendere una sessione di Ray Tune interrotta passando resume=True. Puoi opzionalmente passare la directory name utilizzata da Ray Tune in runs/{task} per riprendere. Altrimenti, riprenderà l'ultima sessione interrotta. Non è necessario fornire nuovamente iterations e space, ma devi fornire nuovamente il resto degli argomenti di addestramento, inclusi data e epochs.

Utilizzo di `resume=True` con `model.tune()`
from ultralytics import YOLO

# Define a YOLO model
model = YOLO("yolo26n.pt")

# Resume previous run
results = model.tune(use_ray=True, data="coco8.yaml", epochs=50, resume=True)

# Resume Ray Tune run with name 'tune_exp_2'
results = model.tune(use_ray=True, data="coco8.yaml", epochs=50, name="tune_exp_2", resume=True)

Link to this sectionElaborazione dei risultati di Ray Tune#

Dopo aver eseguito un esperimento di ottimizzazione degli iperparametri con Ray Tune, potresti voler eseguire varie analisi sui risultati ottenuti. Questa guida ti condurrà attraverso i flussi di lavoro comuni per l'elaborazione e l'analisi di questi risultati.

Link to this sectionCaricamento dei risultati dell'esperimento di ottimizzazione da una directory#

Dopo aver eseguito l'esperimento di tuning con tuner.fit(), puoi caricare i risultati da una directory. Questo è utile, specialmente se stai eseguendo l'analisi dopo che lo script di addestramento iniziale è terminato.

experiment_path = f"{storage_path}/{exp_name}"
print(f"Loading results from {experiment_path}...")

restored_tuner = tune.Tuner.restore(experiment_path, trainable=train_mnist)
result_grid = restored_tuner.get_results()

Link to this sectionAnalisi di base a livello di esperimento#

Ottieni una panoramica di come sono state eseguite le prove. Puoi controllare rapidamente se ci sono stati errori durante le prove.

if result_grid.errors:
    print("One or more trials failed!")
else:
    print("No errors!")

Link to this sectionAnalisi di base a livello di prova#

Accedi alle singole configurazioni degli iperparametri della prova e alle ultime metriche riportate.

for i, result in enumerate(result_grid):
    print(f"Trial #{i}: Configuration: {result.config}, Last Reported Metrics: {result.metrics}")

Link to this sectionGrafico dell'intera cronologia delle metriche riportate per una prova#

Puoi tracciare la cronologia delle metriche riportate per ogni prova per vedere come le metriche si sono evolute nel tempo.

import matplotlib.pyplot as plt

for i, result in enumerate(result_grid):
    plt.plot(
        result.metrics_dataframe["training_iteration"],
        result.metrics_dataframe["mean_accuracy"],
        label=f"Trial {i}",
    )

plt.xlabel("Training Iterations")
plt.ylabel("Mean Accuracy")
plt.legend()
plt.show()

In questa guida, abbiamo trattato i flussi di lavoro comuni per analizzare i risultati degli esperimenti eseguiti con Ray Tune utilizzando Ultralytics. I passaggi chiave includono il caricamento dei risultati dell'esperimento da una directory, l'esecuzione di un'analisi di base a livello di esperimento e di prova, e la rappresentazione grafica delle metriche.

Approfondisci consultando la pagina di documentazione Analyze Results di Ray Tune per ottenere il massimo dai tuoi esperimenti di ottimizzazione degli iperparametri.

Link to this sectionFAQ#

Link to this sectionCome posso regolare gli iperparametri del mio modello YOLO26 utilizzando Ray Tune?#

Per regolare gli iperparametri del tuo modello Ultralytics YOLO26 utilizzando Ray Tune, segui questi passaggi:

  1. Installa i pacchetti richiesti:

    pip install -U ultralytics "ray[tune]"
    pip install wandb # optional for logging
  2. Carica il tuo modello YOLO26 e avvia il tuning:

    from ultralytics import YOLO
    
    # Load a YOLO26 model
    model = YOLO("yolo26n.pt")
    
    # Start tuning with the COCO8 dataset
    result_grid = model.tune(data="coco8.yaml", use_ray=True)

Questo utilizza le strategie di ricerca avanzata e il parallelismo di Ray Tune per ottimizzare in modo efficiente gli iperparametri del tuo modello. Per ulteriori informazioni, consulta la documentazione di Ray Tune.

Link to this sectionQuali sono gli iperparametri predefiniti per il tuning di YOLO26 con Ray Tune?#

Ultralytics YOLO26 utilizza i seguenti iperparametri predefiniti per il tuning con Ray Tune:

ParametroIntervallo di valoriDescrizione
lr0tune.uniform(1e-5, 1e-2)Tasso di apprendimento iniziale
lrftune.uniform(0.01, 1.0)Fattore finale del tasso di apprendimento
momentumtune.uniform(0.7, 0.98)Momentum
weight_decaytune.uniform(0.0, 0.001)Decadimento del peso (Weight decay)
warmup_epochstune.uniform(0.0, 5.0)Epoche di riscaldamento (Warmup)
boxtune.uniform(1.0, 20.0)Peso della perdita della BBox
clstune.uniform(0.1, 4.0)Peso della perdita di classe
dfltune.uniform(0.4, 12.0)Peso della perdita DFL
hsv_htune.uniform(0.0, 0.1)Intervallo di aumento della tonalità (Hue)
translatetune.uniform(0.0, 0.9)Intervallo di aumento della traslazione

Questi iperparametri possono essere personalizzati per soddisfare le tue esigenze specifiche. Per un elenco completo e maggiori dettagli, fai riferimento alla guida Hyperparameter Tuning.

Link to this sectionCome posso integrare Weights & Biases con il tuning del mio modello YOLO26?#

Per integrare Weights & Biases (W&B) con il tuo processo di tuning Ultralytics YOLO26:

  1. Installa W&B:

    pip install wandb
  2. Modifica il tuo script di tuning:

    import wandb
    
    from ultralytics import YOLO
    
    wandb.init(project="YOLO-Tuning", entity="your-entity")
    
    # Load YOLO model
    model = YOLO("yolo26n.pt")
    
    # Tune hyperparameters
    result_grid = model.tune(data="coco8.yaml", use_ray=True)

Questa configurazione ti consentirà di monitorare il processo di tuning, tracciare le configurazioni degli iperparametri e visualizzare i risultati in W&B.

Link to this sectionPerché dovrei usare Ray Tune per l'ottimizzazione degli iperparametri con YOLO26?#

Ray Tune offre numerosi vantaggi per l'ottimizzazione degli iperparametri:

  • Strategie di ricerca avanzate: Utilizza algoritmi come Bayesian Optimization e HyperOpt per una ricerca efficiente dei parametri.
  • Parallelismo: Supporta l'esecuzione parallela di più prove, accelerando significativamente il processo di tuning.
  • Interruzione anticipata (Early Stopping): Impiega strategie come ASHA per terminare in anticipo le prove con prestazioni inferiori, risparmiando risorse computazionali.

Ray Tune si integra perfettamente con Ultralytics YOLO26, fornendo un'interfaccia facile da usare per regolare efficacemente gli iperparametri. Per iniziare, dai un'occhiata alla guida Hyperparameter Tuning.

Link to this sectionCome posso definire uno spazio di ricerca personalizzato per il tuning degli iperparametri di YOLO26?#

Per definire uno spazio di ricerca personalizzato per il tuning degli iperparametri di YOLO26 con Ray Tune:

from ray import tune

from ultralytics import YOLO

model = YOLO("yolo26n.pt")
search_space = {"lr0": tune.uniform(1e-5, 1e-2), "momentum": tune.uniform(0.7, 0.98)}
result_grid = model.tune(data="coco8.yaml", space=search_space, use_ray=True)

Questo personalizza l'intervallo degli iperparametri, come il tasso di apprendimento iniziale e il momentum, da esplorare durante il processo di tuning. Per configurazioni avanzate, fai riferimento alla sezione Custom Search Space Example.

Commenti