Ricetta di addestramento di YOLO26#
Introduzione#
Questa guida documenta la ricetta esatta di addestramento usata per produrre i checkpoint ufficiali preaddestrati di YOLO26 su COCO. Ogni iperparametro mostrato qui è già incorporato nei pesi .pt distribuiti, insieme al log di addestramento per epoca e alla revisione del codice usata nell'esecuzione; tutti questi dati possono essere esaminati programmaticamente.
Sapere cosa è stato usato per ottenere i checkpoint ufficiali — non solo l'architettura, ma anche i programmi del learning rate, le pipeline di augmentation e i pesi delle loss che ne hanno determinato le prestazioni — ti aiuta a prendere decisioni migliori durante il fine-tuning: quali augmentation dei dati mantenere, quali pesi della funzione di loss modificare e quali impostazioni dell'ottimizzatore sono più adatte alle dimensioni del tuo dataset.
Questa pagina illustra gli iperparametri registrati nei checkpoint distribuiti. Per conoscere le motivazioni alla base di queste scelte, compresi l'architettura, le modifiche alla loss e all'assegnazione delle etichette e gli studi di ablazione, leggi Ultralytics YOLO26: modelli di visione unificati end-to-end in tempo reale.
Panoramica dell'addestramento#
Tutti i modelli base YOLO26 sono stati addestrati in due fasi: preaddestramento su Objects365v1 per 150 epoche, seguito dal fine-tuning su COCO. Entrambe le fasi sono state eseguite alla risoluzione 640x640 con l'ottimizzatore MuSGD e una dimensione del batch di 128. Nessun checkpoint YOLO26 è stato addestrato su COCO partendo da pesi casuali, perciò la fase su COCO è breve per la maggior parte delle dimensioni; gli iperparametri per la fase su COCO sono stati individuati tramite ricerca evolutiva. I log di addestramento e le metriche completi per ogni dimensione del modello sono archiviati nei checkpoint distribuiti e visualizzati come grafici su Ultralytics Platform.
Scelte progettuali chiave comuni a tutte le dimensioni:
- Preaddestramento su Objects365 per ogni dimensione prima della fase su COCO
- Addestramento dual-head con supervisione one-to-many e one-to-one; per impostazione predefinita, l'inferenza usa NMS, mentre
nms=Falseseleziona la head senza NMS - Ottimizzatore MuSGD che combina SGD con aggiornamenti ortogonalizzati in stile Muon per le matrici dei pesi (pesi lineari 2D e filtri convoluzionali 4D, rimodellati in 2D)
- Augmentation mosaic intensa (probabilità ~0.9-1.0), disabilitata nelle epoche finali (
close_mosaic=8nel preaddestramento,close_mosaic=10su COCO) - Augmentation della scala aggressiva (0.5-0.95) per gestire oggetti di diverse dimensioni
- Rotazione/shear minimi per la maggior parte delle dimensioni, così da limitare la distorsione geometrica
Fase 1: preaddestramento su Objects365#
Ogni checkpoint YOLO26 per COCO è stato sottoposto a fine-tuning a partire da un checkpoint Objects365v1 della stessa dimensione. Anche questi pesi preaddestrati sono pubblicati e documentati nella pagina del dataset Objects365. Ogni checkpoint COCO indica i pesi iniziali nella configurazione di addestramento incorporata nel file .pt; la sezione Ispezione degli argomenti di addestramento dei checkpoint YOLO26 qui sotto mostra come leggerla:
| Checkpoint COCO | Pesi iniziali |
|---|---|
yolo26n.pt | yolo26n-objv1-150.pt |
yolo26s.pt | yolo26s-objv1-150.pt |
yolo26m.pt | yolo26m-objv1-150.pt |
yolo26l.pt | yolo26l-objv1-150.pt |
yolo26x.pt | yolo26x-objv1-150.pt |
Il preaddestramento ha usato per lo più impostazioni predefinite anziché valori individuati tramite ricerca. lr0, lrf, momentum, weight_decay, box e cls corrispondono a default.yaml, mentre warmup_epochs, close_mosaic e dfl sono stati sovrascritti. Le impostazioni sono condivise tra le diverse dimensioni, ad eccezione di warmup_epochs per X, dell'intensità delle augmentation e dei pesi interni di MuSGD e della head elencati dopo le tabelle:
| Impostazione | Valore |
|---|---|
data | Objects365v1 |
epochs | 150 |
imgsz | 640 |
batch | 128 |
optimizer | MuSGD |
lr0 / lrf | 0.01 / 0.01 |
momentum | 0.937 |
weight_decay | 0.0005 |
warmup_epochs | 1 (2 per X) |
close_mosaic | 8 |
box / cls / dfl | 7.5 / 0.5 / 6.0 |
| Augmentation | N | S | M | L | X |
|---|---|---|---|---|---|
mosaic | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
mixup | 0.0 | 0.05 | 0.15 | 0.15 | 0.2 |
copy_paste | 0.1 | 0.15 | 0.4 | 0.5 | 0.6 |
scale | 0.5 | 0.9 | 0.9 | 0.9 | 0.9 |
Queste tabelle riportano le impostazioni che caratterizzano il preaddestramento, non la configurazione completa. I checkpoint registrano oltre 100 argomenti: stampa train_args, come mostrato qui sotto, per consultare l'elenco completo e autorevole.
Avanzate: parametri interni del preaddestramento
Durante il preaddestramento sono stati variati anche parametri del ramo sperimentale dello stesso tipo descritti in Parametri interni di addestramento. cls_w era pari a 1.0 per tutte le dimensioni:
| Impostazione | N | S | M | L | X |
|---|---|---|---|---|---|
muon_w | 0.45 | 0.5 | 0.45 | 0.45 | 0.5 |
sgd_w | 0.55 | 0.5 | 0.55 | 0.55 | 0.6 |
o2m | 0.1 | 0.1 | 0.1 | 1.0 | 1.0 |
Non ti serve il dataset Objects365 per riutilizzare la fase 1. I checkpoint pretrained vengono scaricati automaticamente, come qualsiasi altra risorsa Ultralytics, così puoi eseguirne il fine-tuning sul tuo dataset:
from ultralytics import YOLO
model = YOLO("yolo26s-objv1-150.pt")
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)Per ripetere invece la fase COCO, parti dagli stessi pesi e passa i valori dell’ottimizzatore, della loss e dell’augmentation della fase 2 per quella dimensione, riportati nelle tabelle qui sotto. Le tabelle non includono gli argomenti più piccoli e non predefiniti, come warmup_momentum, warmup_bias_lr, perspective, flipud e cutmix, quindi stampa train_args dal checkpoint per ottenere la configurazione esatta. Il pacchetto rilasciato rifiuta i parametri interni, che richiedono il branch sperimentale.
Esaminare gli argomenti di training dei checkpoint YOLO26#
Ogni checkpoint Ultralytics memorizza la configurazione completa del training usata per generarlo, così puoi verificare personalmente ogni valore riportato in questa pagina:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
print(model.ckpt["train_args"])L'output elenca la configurazione completa, con oltre 100 voci, inclusi tutti i valori della ricetta documentati in questa pagina. Un estratto per yolo26n.pt:
batch: 128
...
box: 5.62767
...
close_mosaic: 10
cls: 0.56099
...
dfl: 9.03871
...
epochs: 245
...
lr0: 0.0054
lrf: 0.04952
...
optimizer: MuSGDQuesto funziona con qualsiasi checkpoint .pt, sia con le versioni ufficiali sia con i tuoi modelli sottoposti a fine-tuning. Per l'elenco completo degli argomenti di training configurabili, consulta il riferimento alla configurazione del training.
Visualizzare le curve di training#
train_args non è l'unico elemento memorizzato. Ogni checkpoint contiene anche il results.csv completo per ogni epoca dell'esecuzione che lo ha generato, insieme alle metriche finali di validazione. Le curve dei checkpoint ufficiali YOLO26 sono pubblicate su Ultralytics Platform e qualsiasi file .pt può essere trascinato e rilasciato su un progetto per rappresentare graficamente gli stessi dati, con i metadati estratti automaticamente dal file.
Ogni checkpoint riguarda la fase che lo ha generato: le curve COCO sono in yolo26s.pt, mentre le curve dei 150 epoch di Objects365 sono in yolo26s-objv1-150.pt.
Verificare la revisione del codice#
ckpt["git"] registra il commit che ha generato il checkpoint; poiché questi commit si trovano nei branch sperimentali pubblici del repository Ultralytics, puoi passare esattamente al codice di training usato:
from ultralytics import YOLO
print(YOLO("yolo26n.pt").ckpt["git"])
# {'root': ..., 'branch': 'exp-main', 'commit': 'cb13d5f9cfbd6f299da3620c625f81d721dc2849', ...}git fetch origin cb13d5f9cfbd6f299da3620c625f81d721dc2849
git checkout cb13d5f9cfbd6f299da3620c625f81d721dc2849I branch sperimentali contengono modifiche che non sono mai confluite in main, come o2m e cls_w configurabili. Eseguire il training su main con gli iperparametri documentati qui sotto non darà risultati identici bit per bit, ma la differenza rispetto alle metriche pubblicate sarà trascurabile.
Iperparametri di training di YOLO26 per dimensione del modello#
Questi sono i valori della fase 2, applicati ai pesi Objects365 riportati sopra. Le tabelle qui sotto suddividono la ricetta per categoria: ottimizzatore e pianificazione, pesi delle loss e augmentation. Ogni valore proviene direttamente da train_args incorporato nei checkpoint rilasciati.
Ottimizzatore e learning rate#
Queste impostazioni dell'ottimizzatore e della pianificazione hanno guidato il fine-tuning su COCO per ogni dimensione; nota come il modello N si distingua dagli altri:
| 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 usato un learning rate iniziale più alto con un decadimento marcato (lrf=0.0495), mentre i modelli S/M/L/X hanno usato un LR iniziale molto più basso e una pianificazione più graduale (lrf=0.882). Questo riflette le diverse dinamiche di convergenza dei modelli più piccoli rispetto a quelli più grandi: i modelli più piccoli hanno bisogno di aggiornamenti più incisivi per apprendere in modo efficace.
Pesi delle loss#
I pesi delle loss bilanciano le tre componenti della loss di rilevamento: la regressione IoU dei riquadri di delimitazione (box), la classificazione (cls) e un termine di regressione della distanza dei riquadri (dfl). Nota che YOLO26, privo di DFL, riutilizza il coefficiente dfl per assegnare un peso a una loss L1 sulle distanze normalizzate dei riquadri, anziché alla distribution focal loss:
| 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à al termine di regressione della distanza dfl, mentre i modelli S/M/L/X spostano l'attenzione sulla regressione dei riquadri basata su IoU. La loss di classificazione rimane relativamente costante in tutte le dimensioni.
Pipeline di augmentation#
Per una spiegazione dettagliata di ciascuna tecnica, consulta la guida all'augmentation 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 valori indicati come ~0 sono inferiori a 0.01 nei checkpoint effettivi (per esempio, degrees=0.00012 per il modello S): l'augmentation è di fatto disattivata.
Nel complesso, i modelli più grandi usano un'augmentation più aggressiva (mixup e scale maggiori), perché hanno più capacità e traggono vantaggio da una regolarizzazione più intensa. Il modello N è l'unico a usare quantità significative di rotazione, shear e augmentation BGR.
Parametri di training interni#
Avanzate: parametri interni della pipeline
I checkpoint contengono anche parametri usati nel branch di training sperimentale, che non sono esposti come impostazioni configurabili dall'utente in default.yaml:
| Impostazione | Descrizione | N | S | M | L | X |
|---|---|---|---|---|---|---|
muon_w | Peso dell'aggiornamento Muon in MuSGD | 0.528 | 0.436 | 0.436 | 0.436 | 0.436 |
sgd_w | Peso dell'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 della head one-to-many | 1.0 | 0.705 | 0.705 | 0.705 | 0.705 |
topk | Assegnazione delle etichette top-k | 8 | 5 | 5 | 5 | 5 |
Per sapere a cosa servono durante il fine-tuning, consulta la voce delle FAQ su questi parametri.
Eseguire il fine-tuning di YOLO26 sul tuo dataset#
Quando esegui il fine-tuning di YOLO26 sul tuo dataset, non devi replicare l'intera ricetta di pretraining. I pesi pretrained incorporano già le conoscenze di augmentation e ottimizzazione acquisite durante il training su COCO. Per ulteriori buone pratiche di training, consulta Suggerimenti per il training dei modelli.
Esegui il fine-tuning con le impostazioni predefinite#
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 è un ottimo punto di partenza. Modifica gli iperparametri solo se hai un motivo specifico.
Quando modificare gli iperparametri di YOLO26#
Dataset piccoli (< 1.000 immagini):
- Riduci l'intensità dell'augmentation:
mosaic=0.5,mixup=0.0,copy_paste=0.0 - Riduci il learning rate e specifica un ottimizzatore:
optimizer=AdamW,lr0=0.001 - Usa meno epoche e imposta un valore di pazienza:
epochs=50,patience=20 - Valuta di congelare i layer del backbone:
freeze=10
Dataset grandi (> 50.000 immagini):
- Avvicinati di più alla ricetta di pretraining
- Valuta di usare
optimizer=MuSGDper esecuzioni più lunghe - Aumenta l'augmentation:
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 compaiono con rotazioni arbitrarie - Modifica
hsv_sehsv_vse le condizioni di illuminazione differiscono notevolmente da COCO
Per l'ottimizzazione automatica degli iperparametri, consulta la guida all'ottimizzazione degli iperparametri.
Scegliere la dimensione del modello#
| Modello | Ideale per | Indicazioni sulla dimensione del batch |
|---|---|---|
| YOLO26n | Dispositivi edge, dispositivi mobili, uso in tempo reale su CPU | Batch grandi (64-128) su GPU consumer |
| YOLO26s | Equilibrio tra velocità e precisione | Batch medi (32-64) |
| YOLO26m | Maggiore precisione con risorse di calcolo moderate | Batch più piccoli (16-32) |
| YOLO26l | Elevata precisione quando è disponibile una GPU | Batch piccoli (8-16) o più GPU |
| YOLO26x | Precisione massima, distribuzione su server | Batch piccoli (4-8) o più GPU |
Per le opzioni di esportazione e distribuzione, consulta la guida all'esportazione e le opzioni di distribuzione dei modelli.
Conclusione#
I checkpoint YOLO26 includono la ricetta completa di training, quindi per conoscere gli iperparametri esatti di ogni dimensione del modello basta consultare train_args. Inizia il fine-tuning con le impostazioni predefinite, apporta modifiche mirate usando le tabelle di questa pagina e verifica ogni cambiamento sul tuo set di validazione. Se hai domande, chiedi alla community nel repository GitHub di Ultralytics o nel server Discord di Ultralytics.
Domande frequenti#
Carica il checkpoint con
torch.load()e accedi alla chiavetrain_args, oppure usamodel.ckpt["train_args"]con l'API Ultralytics. Per esempi completi, consulta Esaminare gli argomenti di training dei checkpoint YOLO26.Tutte le dimensioni hanno ricevuto lo stesso pretraining di 150 epoch su Objects365, quindi i conteggi COCO riguardano solo la fase di fine-tuning. I modelli più grandi convergono su COCO in meno epoch: 40 per X contro 245 per N. I conteggi non sono strettamente monotoni (S ne ha usati 70, M 80) perché sono il risultato della ricerca degli iperparametri per ciascuna dimensione. Quando esegui il fine-tuning sul tuo dataset, il numero ottimale di epoch dipende dalle dimensioni e dalla complessità del dataset, non da quelle del modello. Usa l'arresto anticipato (
patience) per trovare automaticamente il momento giusto in cui fermarti.Questi parametri provengono dal branch sperimentale che ha generato i checkpoint di base e sono registrati in
train_argsper garantire la riproducibilità. Non sono impostazioni configurabili dall'utente indefault.yamle passarli amodel.train()genera un errore di argomento non valido, perché il pacchetto rilasciato non li legge. Non devi impostarli durante il fine-tuning; consulta Parametri di training interni per i relativi valori per ogni dimensione del modello.No. Ogni checkpoint COCO è stato sottoposto a fine-tuning a partire da un checkpoint Objects365v1 della stessa dimensione, già addestrato per 150 epoch, come descritto in Fase 1: pretraining su Objects365 e nel paper YOLO26. I numeri pubblicati non derivano da alcun training COCO da zero, quindi un confronto con quei numeri partendo da zero non è un confronto alla pari.
Sono nei checkpoint e visualizzati graficamente su Ultralytics Platform. Ogni checkpoint memorizza il
results.csvcompleto, epoca per epoca, della relativa esecuzione; basta quindi trascinare un file.ptsu un progetto Platform per tracciare le loss, l'andamento di mAP e i learning rate senza scrivere codice. Consulta Visualizzare le curve di training. La fase Objects365 ha il proprio log nei checkpointyolo26*-objv1-150.pt.Otterrai risultati vicini alle metriche pubblicate, ma non identici. Per riprodurre la configurazione esatta, passa al commit registrato nel checkpoint ed esegui il training su quel branch. Consulta Verificare la revisione del codice.