Ricetta per l'addestramento con YOLO26
Introduzione
Questa guida documenta l'esatta addestramento ricetta utilizzata per produrre gli ufficiali YOLO26 checkpoint pre-addestrati su COCO. Ogni iperparametri mostrato qui è già integrato nei pesi .pt rilasciati e può essere ispezionato a livello programmatico.
Capire come sono stati addestrati i modelli base ti aiuta a prendere decisioni migliori quando approcci di fine-tuning: quali data augmentations mantenere, quali loss function pesi regolare e quali impostazioni dell'ottimizzatore funzionano meglio per la dimensione del tuo dataset.
Questa guida è rivolta ai professionisti che desiderano comprendere cosa è confluito nei checkpoint ufficiali YOLO26 — non solo l'architettura, ma anche i learning rate programmi, le pipeline di aumento e i pesi di perdita che ne hanno determinato le prestazioni. Usa queste informazioni per fare scelte informate durante il fine-tuning sui tuoi dati.
Ispezione degli argomenti di addestramento
Ogni checkpoint Ultralytics memorizza la configurazione di addestramento completa utilizzata per produrlo. Puoi ispezionare queste impostazioni in qualsiasi momento:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
print(model.ckpt["train_args"])Questo funziona per qualsiasi .pt checkpoint — sia le versioni ufficiali che i tuoi modelli personalizzati. Per l'elenco completo degli argomenti di addestramento configurabili, consulta la riferimento alla configurazione di addestramento.
Panoramica sull'addestramento
Tutti i modelli base YOLO26 sono stati addestrati su COCO a 640x640 risoluzione utilizzando l'ottimizzatore MuSGD con batch size 128. I modelli sono stati inizializzati da pesi pre-addestrati intermedi e perfezionati con iperparametri trovati tramite ricerca evolutiva. I log di addestramento completi e le metriche per ogni dimensione del modello sono disponibili su Ultralytics Platform:
Scelte di design chiave per tutte le dimensioni:
- Addestramento end-to-end (
end2end=True) con head one-to-one priva di NMS - ottimizzatore MuSGD combinando SGD con aggiornamenti ortogonalizzati in stile Muon per i pesi conv
- Pesante mosaic aumento (~0.9-1.0 di probabilità) disabilitato nelle ultime 10 epoche (
close_mosaic=10) - Aggressivo aumento della scala (0.56-0.95) per gestire oggetti a diverse dimensioni
- Rotazione/taglio minimo per la maggior parte delle dimensioni, mantenendo bassa la distorsione geometrica
Iperparametri per dimensione del modello
Ottimizzatore e tasso di apprendimento
| Impostazione | N | S | M | L | X |
|---|---|---|---|---|---|
optimizer | MuSGD | MuSGD | MuSGD | MuSGD | MuSGD |
lr0 | 0.0054 | 0.00038 | 0.00038 | 0.00038 | 0.00038 |
lrf | 0.0495 | 0.882 | 0.882 | 0.882 | 0.882 |
momentum | 0.947 | 0.948 | 0.948 | 0.948 | 0.948 |
weight_decay | 0.00064 | 0.00027 | 0.00027 | 0.00027 | 0.00027 |
warmup_epochs | 0.98 | 0.99 | 0.99 | 0.99 | 0.99 |
epochs | 245 | 70 | 80 | 60 | 40 |
batch | 128 | 128 | 128 | 128 | 128 |
imgsz | 640 | 640 | 640 | 640 | 640 |
Il modello N ha utilizzato un tasso di apprendimento iniziale più elevato con un decadimento ripido (lrf=0.0495), mentre i modelli S/M/L/X hanno utilizzato un LR iniziale molto più basso con un programma più gentile (lrf=0.882). Ciò riflette le diverse dinamiche di convergenza dei modelli più piccoli rispetto a quelli più grandi: i modelli più piccoli necessitano di aggiornamenti più aggressivi per apprendere efficacemente.
Pesi di perdita
| Impostazione | N | S | M | L | X |
|---|---|---|---|---|---|
box | 5,63 | 9.83 | 9.83 | 9.83 | 9.83 |
cls | 0.56 | 0.65 | 0.65 | 0.65 | 0.65 |
dfl | 9.04 | 0.96 | 0.96 | 0.96 | 0.96 |
Il modello N dà priorità alla perdita DFL, mentre i modelli S/M/L/X spostano l'enfasi sulla bounding box regressione. La perdita di classificazione rimane relativamente coerente in tutte le dimensioni.
Pipeline di aumento
Per una spiegazione dettagliata di ogni tecnica, consulta la guida all'aumento dei dati YOLO.
| Impostazione | N | S | M | L | X |
|---|---|---|---|---|---|
mosaic | 0.909 | 0.992 | 0.992 | 0.992 | 0.992 |
mixup | 0.012 | 0.05 | 0.427 | 0.427 | 0.427 |
copy_paste | 0.075 | 0.404 | 0.304 | 0.404 | 0.404 |
scale | 0.562 | 0.9 | 0.95 | 0.95 | 0.95 |
fliplr | 0.606 | 0.304 | 0.304 | 0.304 | 0.304 |
degrees | 1.11 | ~0 | ~0 | ~0 | ~0 |
shear | 1.46 | ~0 | ~0 | ~0 | ~0 |
translate | 0.071 | 0.275 | 0.275 | 0.275 | 0.275 |
hsv_h | 0.014 | 0.013 | 0.013 | 0.013 | 0.013 |
hsv_s | 0.645 | 0.353 | 0.353 | 0.353 | 0.353 |
hsv_v | 0.566 | 0.194 | 0.194 | 0.194 | 0.194 |
bgr | 0.106 | 0.0 | 0.0 | 0.0 | 0.0 |
I modelli più grandi utilizzano un aumento complessivamente più aggressivo (maggiore mixup, copy-paste, e scala), poiché hanno maggiore capacità e beneficiano di un regolarizzazione più forte. Il modello N è l'unica dimensione con una significativa rotazione, taglio, e BGR aumentazione.
Parametri di addestramento interni
Avanzato: parametri della pipeline interna
I checkpoint contengono anche parametri che sono stati utilizzati nella pipeline di addestramento interna ma che non sono esposti come impostazioni configurabili dall'utente in default.yaml:
| Impostazione | Descrizione | N | S | M | L | X |
|---|---|---|---|---|---|---|
muon_w | Peso di aggiornamento Muon in MuSGD | 0.528 | 0.436 | 0.436 | 0.436 | 0.436 |
sgd_w | Peso di aggiornamento SGD in MuSGD | 0.674 | 0.479 | 0.479 | 0.479 | 0.479 |
cls_w | Peso di classificazione interno | 2.74 | 3.48 | 3.48 | 3.48 | 3.48 |
o2m | Peso della loss dell'head one-to-many | 1.0 | 0.705 | 0.705 | 0.705 | 0.705 |
topk | Assegnazione dell'etichetta Top-k | 8 | 5 | 5 | 5 | 5 |
Questi sono registrati per la riproducibilità ma non devono essere impostati durante il fine-tuning. Consulta la FAQ per ulteriori dettagli.
Guida al fine-tuning
Quando effettui il fine-tuning di YOLO26 sul tuo dataset, non hai bisogno di replicare l'intera procedura di preaddestramento. I pesi preaddestrati codificano già la conoscenza sull'aumentazione e sull'ottimizzazione derivante dall'addestramento su COCO. Per le migliori pratiche di addestramento generali, vedi Suggerimenti per l'addestramento dei modelli.
Inizia in modo semplice
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)Il fine-tuning con le impostazioni predefinite è una solida base di partenza. Regola gli iperparametri solo se hai una ragione specifica per farlo.
Quando regolare
Dataset piccoli (< 1.000 immagini):
- Riduci la forza dell'aumentazione:
mosaic=0.5,mixup=0.0,copy_paste=0.0 - Abbassa il learning rate:
lr0=0.001 - Usa meno epochs con patience:
epochs=50,patience=20 - Valuta il congelamento dei layer del backbone:
freeze=10
Dataset grandi (> 50.000 immagini):
- Segui più fedelmente la procedura di preaddestramento
- Considera
optimizer=MuSGDper esecuzioni più lunghe - Aumenta l'aumentazione:
mosaic=1.0,mixup=0.3,scale=0.9
Immagini specifiche del dominio (aeree, mediche, subacquee):
- Aumenta
flipud=0.5se l'orientamento verticale varia - Aumenta
degreesse gli oggetti appaiono con rotazioni arbitrarie - Regola
hsv_sehsv_vse le condizioni di illuminazione differiscono significativamente da COCO
Per l'ottimizzazione automatizzata degli iperparametri, vedi la Guida al tuning degli iperparametri.
Scegliere la dimensione del modello
| Modello | Ideale per | Guida alla Batch Size |
|---|---|---|
| YOLO26n | Dispositivi edge, mobile, tempo reale su CPU | Batch grandi (64-128) su GPU consumer |
| YOLO26s | Velocità e precisione bilanciate | Batch medi (32-64) |
| YOLO26m | Precisione superiore con calcolo moderato | Batch più piccoli (16-32) |
| YOLO26l | Precisione elevata quando la GPU è disponibile | Batch piccoli (8-16) o multi-GPU |
| YOLO26x | Massima precisione, distribuzione su server | Batch piccoli (4-8) o multi-GPU |
Per le opzioni di export e deployment, vedi la Guida all'export e Opzioni di deployment dei modelli.
FAQ
Come posso vedere gli iperparametri esatti utilizzati per un qualsiasi checkpoint?
Carica il checkpoint con torch.load() e accedi alla chiave train_args, o usa model.ckpt["train_args"] con l'Ultralytics API. Vedi Ispezione degli argomenti di addestramento per esempi completi.
Perché il numero di epoche è diverso per ogni dimensione del modello?
I modelli più grandi convergono più velocemente su COCO perché hanno maggiore capacità. Il modello N ha richiesto 245 epoche mentre il modello X ne ha richieste solo 40. Quando effettui il fine-tuning sul tuo dataset, il numero ottimale di epoche dipende dalla dimensione e dalla complessità del tuo dataset, non dalla dimensione del modello. Usa l'early stopping (patience) per trovare automaticamente il punto di arresto corretto.
Dovrei usare MuSGD per il fine-tuning?
Quando optimizer=auto (l'impostazione predefinita), Ultralytics seleziona automaticamente MuSGD per esecuzioni di addestramento più lunghe (>10.000 iterazioni) e AdamW per quelle più brevi. Puoi impostare esplicitamente optimizer=MuSGD se preferisci. Per saperne di più sulla selezione dell'ottimizzatore, vedi la documentazione sull'addestramento.
Cosa sono muon_w, sgd_w, cls_w, o2m, e topk nel checkpoint?
Questi sono parametri interni della pipeline di addestramento che ha prodotto i checkpoint di base. Sono memorizzati per la riproducibilità ma non sono impostazioni configurabili dall'utente in default.yaml. Non hai bisogno di impostarli durante il fine-tuning. Vedi Parametri di addestramento interni per i dettagli.
Posso replicare l'esatto preaddestramento da zero?
I checkpoint sono stati prodotti utilizzando un branch di addestramento interno con funzionalità aggiuntive non presenti nel codice pubblico (come pesi o2m configurabili e cls_w). Puoi ottenere risultati molto vicini utilizzando gli iperparametri documentati in questa pagina con il pacchetto Ultralytics pubblico, ma una riproduzione esatta richiede il branch interno.