Vai al contenuto

Programma di allenamento YOLO26

Introduzione

Questa guida descrive in dettaglio addestramento ricetta utilizzata per la produzione del prodotto ufficiale YOLO26 checkpoint preaddestrati su COCO. Ogni iperparametro quello che vedete qui è già integrato nella versione rilasciata .pt pesi e possono essere controllati a livello di programmazione.

Capire come sono stati addestrati i modelli di base ti aiuta a prendere decisioni più oculate durante la fase di fine-tuning: quali tecniche di aumento dei dati mantenere, quali pesi della funzione di perdita regolare e quali impostazioni dell'ottimizzatore funzionano meglio in base alle dimensioni del tuo set di dati.

A chi è rivolta questa guida?

Questa guida è destinata ai professionisti che desiderano comprendere gli elementi alla base dei checkpoint ufficiali di YOLO26: non solo l'architettura, ma anche i programmi di regolazione del tasso di apprendimento, le pipeline di augmentation e i pesi di perdita che ne hanno determinato le prestazioni. Utilizzate queste informazioni per compiere scelte consapevoli durante la messa a punto sui vostri dati.

Verifica degli argomenti di formazione

Ogni Ultralytics memorizza la configurazione completa dell'allenamento utilizzata per generarlo. È possibile controllare queste impostazioni in qualsiasi momento:

Controlla gli argomenti di addestramento dei checkpoint

from ultralytics import YOLO

model = YOLO("yolo26n.pt")
print(model.ckpt["train_args"])
import torch

# Load any official checkpoint
ckpt = torch.load("yolo26n.pt", map_location="cpu", weights_only=False)

# Print all training arguments
for k, v in sorted(ckpt["train_args"].items()):
    print(f"{k}: {v}")

Questo funziona per qualsiasi .pt checkpoint — sia le versioni ufficiali che i modelli personalizzati. Per l'elenco completo degli argomenti di addestramento configurabili, consultare il Riferimento alla configurazione della formazione.

Panoramica sulla formazione

Tutti i modelli base YOLO26 sono stati addestrati su COCO una risoluzione di 640x640 utilizzando l'ottimizzatore MuSGD con una dimensione del batch pari a 128. I modelli sono stati inizializzati a partire da pesi intermedi preaddestrati e perfezionati con iperparametri individuati tramite ricerca evolutiva. I log completi dell'addestramento e le metriche relative a ogni dimensione del modello sono disponibili sulla Ultralytics :

Caratteristiche principali comuni a tutte le taglie:

  • Formazione completa (end2end=True) con testa individuale NMS
  • Ottimizzatore MuSGD che combina SGD aggiornamenti ortogonalizzati in stile Muon per i pesi delle reti convoluzionali
  • Aumento massiccio del mosaico (probabilità ~0,9-1,0) disabilitato nelle ultime 10 epoche (close_mosaic=10)
  • Aumento aggressivo della scala (0,56-0,95) per gestire oggetti di diverse dimensioni
  • Rotazione e taglio minimi per la maggior parte delle dimensioni, con una distorsione geometrica ridotta

Iperparametri in base alle dimensioni del modello

Ottimizzatore e tasso di apprendimento

ImpostazioneNSMLX
optimizerMuSGDMuSGDMuSGDMuSGDMuSGD
lr00.00540.000380.000380.000380.00038
lrf0.04950.8820.8820.8820.882
momentum0.9470.9480.9480.9480.948
weight_decay0.000640.000270.000270.000270.00027
warmup_epochs0.980.990.990.990.99
epochs24570806040
batch128128128128128
imgsz640640640640640

Strategia del tasso di apprendimento

Il modello N utilizzava un tasso di apprendimento iniziale più elevato con un calo rapido (lrf=0.0495), mentre i modelli S/M/L/X utilizzavano un LR iniziale molto più basso con un programma più graduale (lrf=0.882). Ciò riflette le diverse dinamiche di convergenza tra modelli più piccoli e modelli più grandi: i modelli più piccoli necessitano di aggiornamenti più intensi per apprendere in modo efficace.

Pesi di perdita

ImpostazioneNSMLX
box5.639.839.839.839.83
cls0.560.650.650.650.65
dfl9.040.960.960.960.96

Il modello N dà priorità alla perdita DFL, mentre i modelli S/M/L/X concentrano l'attenzione sulla regressione del bounding box. La perdita di classificazione rimane relativamente costante per tutte le dimensioni.

Pipeline di potenziamento

Per una spiegazione dettagliata di ciascuna tecnica, consultare la guida all'aumentoYOLO .

ImpostazioneNSMLX
mosaic0.9090.9920.9920.9920.992
mixup0.0120.050.4270.4270.427
copy_paste0.0750.4040.3040.4040.404
scale0.5620.90.950.950.95
fliplr0.6060.3040.3040.3040.304
degrees1.11~0~0~0~0
shear1.46~0~0~0~0
translate0.0710.2750.2750.2750.275
hsv_h0.0140.0130.0130.0130.013
hsv_s0.6450.3530.3530.3530.353
hsv_v0.5660.1940.1940.1940.194
bgr0.1060.00.00.00.0

I modelli più grandi utilizzano in generale tecniche di aumento dei dati più aggressive (maggiore mixup, copia-incolla e ridimensionamento), poiché dispongono di una maggiore capacità e traggono vantaggio da una regolarizzazione più forte. Il modello N è l'unico a utilizzare tecniche significative di rotazione, shear e aumento BGR.

Parametri di addestramento interni

Avanzate: parametri interni della pipeline

I checkpoint contengono anche parametri che sono stati utilizzati nella pipeline di addestramento interna, ma che sono non disponibili come impostazioni configurabili dall'utente in default.yaml:

ImpostazioneDescrizioneNSMLX
muon_wAggiornamento del peso del muone in MuSGD0.5280.4360.4360.4360.436
sgd_wSGD del peso SGD in MuSGD0.6740.4790.4790.4790.479
cls_wPeso di classificazione interno2.743.483.483.483.48
o2mPeso della perdita di carico uno-a-molti1.00.7050.7050.7050.705
topkAssegnazione dell'etichetta Top-k85555

Questi valori vengono registrati a fini di riproducibilità, ma non è necessario impostarli durante la regolazione di precisione. Per ulteriori dettagli, consultare le Domande frequenti.

Linee guida per la messa a punto

Quando si ottimizza YOLO26 sul proprio set di dati, non è necessario ripetere l'intera procedura di pre-addestramento. I pesi pre-addestrati incorporano già le tecniche di aumento dei dati e le conoscenze di ottimizzazione acquisite durante COCO . Per ulteriori best practice generali sull'addestramento, consultare la sezione " Suggerimenti per l'addestramento dei modelli".

Inizia in modo semplice

Ottimizzare con le impostazioni predefinite

from ultralytics import YOLO

model = YOLO("yolo26n.pt")
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)
yolo train model=yolo26n.pt data=your-dataset.yaml epochs=100 imgsz=640

La messa a punto utilizzando i valori predefiniti costituisce un ottimo punto di partenza. Modifica gli iperparametri solo se hai un motivo specifico per farlo.

Quando regolare

Small datasets (< 1,000 images):

  • Ridurre la forza di aumento: mosaic=0.5, mixup=0.0, copy_paste=0.0
  • Ritmo di apprendimento più lento: lr0=0.001
  • Usane meno epoche con pazienza: epochs=50, patience=20
  • Si consiglia di congelare i livelli di base: freeze=10

Set di dati di grandi dimensioni (> 50.000 immagini):

  • Adattare meglio la ricetta di pre-addestramento
  • Prendi in considerazione optimizer=MuSGD per percorsi più lunghi
  • Aumento dell'aumento: mosaic=1.0, mixup=0.3, scale=0.9

Immagini relative a settori specifici (aeree, mediche, subacquee):

  • Aumento flipud=0.5 se l'orientamento verticale varia
  • Aumento degrees se gli oggetti appaiono con rotazioni arbitrarie
  • Regolare hsv_s e hsv_v se le condizioni di illuminazione differiscono in modo significativo da quelle di COCO

Per l'ottimizzazione automatica degli iperparametri, consultare la guida alla regolazione degli iperparametri.

Scegliere la taglia del modello

ModelloIdeale perLinee guida sulle dimensioni dei lotti
YOLO26nDispositivi edge, dispositivi mobili, elaborazione in tempo reale sulla CPULotti di grandi dimensioni (64-128) su GPU consumer
YOLO26sEquilibrio tra velocità e precisioneLotti medi (32-64)
YOLO26mMaggiore precisione con una potenza di calcolo moderataLotti più piccoli (16-32)
YOLO26lElevata precisione quando GPU disponibile GPUPiccoli lotti (8-16) oGPU
YOLO26xMassima precisione, implementazione su serverPiccoli lotti (4-8) oGPU

Per le opzioni di esportazione e distribuzione, consultare la Guida all'esportazione e le Opzioni di distribuzione dei modelli.

FAQ

Come posso visualizzare gli iperparametri esatti utilizzati per un determinato checkpoint?

Carica il punto di salvataggio con torch.load() e accedere al train_args tasto, oppure utilizzare model.ckpt["train_args"] con Ultralytics . Vedi Verifica degli argomenti di formazione per esempi completi.

Perché il numero di epoche varia a seconda delle dimensioni del modello?

I modelli più grandi convergono più rapidamente su COCO hanno una maggiore capacità. Il modello N ha richiesto 245 epoche, mentre il modello X ne ha necessarie solo 40. Quando si esegue la messa a punto su un proprio set di dati, il numero ottimale di epoche dipende dalle dimensioni e dalla complessità del set di dati, non dalle dimensioni del modello. Utilizzare l'early stopping (patience) per individuare automaticamente il punto di arresto corretto.

È consigliabile utilizzare MuSGD per la messa a punto?

Quando optimizer=auto (impostazione predefinita), Ultralytics seleziona Ultralytics MuSGD per sessioni di addestramento più lunghe (>10.000 iterazioni) e AdamW per quelli più brevi. È possibile impostare esplicitamente optimizer=MuSGD se preferisci. Per ulteriori informazioni sulla scelta dell'ottimizzatore, consulta il documentazione relativa alla formazione.

Cosa sono muon_w, sgd_w, cls_w, o2m, e topk al posto di blocco?

Si tratta di parametri interni della pipeline di addestramento che ha generato i checkpoint di base. Sono memorizzati a fini di riproducibilità, ma sono non impostazioni configurabili dall'utente in default.yaml. Non è necessario impostarli durante la regolazione di precisione. Vedi Parametri di addestramento interni per i dettagli.

Posso riprodurre esattamente il pre-addestramento partendo da zero?

I checkpoint sono stati creati utilizzando un ramo di sviluppo interno dotato di funzionalità aggiuntive non presenti nel codice pubblico (come la possibilità di configurare o2m pesi e cls_w). È possibile ottenere risultati molto simili utilizzando gli iperparametri descritti in questa pagina con il Ultralytics pubblico Ultralytics , ma per una riproduzione esatta è necessario il ramo interno.



📅 Creato 0 giorni fa ✏️ Aggiornato 0 giorni fa
raimbekovm

Commenti