Addestramento del modello con Ultralytics YOLO
Introduzione
L'addestramento di un modello di deep learning consiste nell'alimentarlo con dati e regolarne i parametri in modo che possa effettuare previsioni accurate. La modalità di addestramento (Train) in Ultralytics YOLO26 è progettata per un addestramento efficace ed efficiente di modelli di rilevamento oggetti, sfruttando appieno le capacità dell'hardware moderno. Questa guida mira a coprire tutti i dettagli necessari per iniziare ad addestrare i tuoi modelli utilizzando il robusto set di funzionalità di YOLO26.
Watch: How to Train a YOLO model on Your Custom Dataset in Google Colab.
Perché scegliere Ultralytics YOLO per l'addestramento?
Ecco alcuni motivi convincenti per scegliere la modalità di addestramento di YOLO26:
- Efficienza: Sfrutta al massimo il tuo hardware, sia che tu utilizzi una singola GPU o che tu stia scalando su più GPU.
- Versatilità: Addestra su set di dati personalizzati oltre a quelli prontamente disponibili come COCO, VOC e ImageNet.
- Facilità d'uso: Interfacce CLI e Python semplici ma potenti per un'esperienza di addestramento lineare.
- Flessibilità degli iperparametri: Una vasta gamma di iperparametri personalizzabili per ottimizzare le prestazioni del modello. Per un controllo più approfondito, puoi personalizzare il trainer stesso.
- Addestramento in Cloud: Addestra su GPU in cloud tramite Ultralytics Platform con metriche in tempo reale e salvataggio automatico dei checkpoint.
Caratteristiche principali della modalità di addestramento
Di seguito sono riportate alcune caratteristiche degne di nota della modalità di addestramento di YOLO26:
- Download automatico del dataset: I dataset standard come COCO, VOC e ImageNet vengono scaricati automaticamente al primo utilizzo.
- Supporto Multi-GPU: Scala i tuoi sforzi di addestramento in modo fluido su più GPU per accelerare il processo.
- Configurazione degli iperparametri: La possibilità di modificare gli iperparametri tramite file di configurazione YAML o argomenti CLI.
- Visualizzazione e monitoraggio: Monitoraggio in tempo reale delle metriche di addestramento e visualizzazione del processo di apprendimento per ottenere informazioni migliori.
- I dataset per YOLO26 come COCO, VOC, ImageNet e molti altri vengono scaricati automaticamente al primo utilizzo, ad esempio
yolo train data=coco.yaml
Esempi di utilizzo
Addestra YOLO26n sul dataset COCO8 per 100 epochs con una dimensione dell'immagine di 640. Il dispositivo di addestramento può essere specificato utilizzando l'argomento device. Se non viene passato alcun argomento, verrà utilizzata la GPU device=0 quando disponibile; altrimenti verrà utilizzato device='cpu'. Consulta la sezione Argomenti qui sotto per un elenco completo degli argomenti di addestramento.
Su Windows, potresti ricevere un RuntimeError quando avvii l'addestramento come script. Aggiungi un blocco if __name__ == "__main__": prima del codice di addestramento per risolvere il problema.
Il dispositivo viene determinato automaticamente. Se è disponibile una GPU, verrà utilizzata (dispositivo CUDA predefinito 0); altrimenti l'addestramento inizierà sulla CPU.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.yaml") # build a new model from YAML
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
model = YOLO("yolo26n.yaml").load("yolo26n.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)Addestramento Multi-GPU
L'addestramento Multi-GPU consente un utilizzo più efficiente delle risorse hardware disponibili distribuendo il carico di lavoro su più GPU. Questa funzionalità è disponibile sia tramite l'API Python che tramite l'interfaccia a riga di comando. Per abilitare l'addestramento multi-GPU, specifica gli ID dei dispositivi GPU che desideri utilizzare.
Per addestrare con 2 GPU, i dispositivi CUDA 0 e 1, utilizza i seguenti comandi. Espandi a ulteriori GPU secondo necessità.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
# Train the model with 2 GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[0, 1])
# Train the model with the two most idle GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])Quando specifichi più dispositivi (ad esempio, device=[0, 1]), Ultralytics genera internamente una nuova istanza di trainer ed esegue torch.distributed.run in background. Questo funziona perfettamente per l'uso standard da CLI e per script Python non modificati.
Tuttavia, se il tuo script contiene componenti personalizzati (come un trainer, validatore, dataset o pipeline di aumentazione personalizzati), questi oggetti non possono essere serializzati e trasferiti automaticamente ai sottoprocessi DDP. In questo caso, devi avviare lo script direttamente con torch.distributed.run:
python -m torch.distributed.run --nproc_per_node 2 your_training_script.pyAddestramento su GPU inattiva (Idle)
L'addestramento su GPU inattiva consente la selezione automatica delle GPU meno utilizzate nei sistemi multi-GPU, ottimizzando l'uso delle risorse senza una selezione manuale della GPU. Questa funzionalità identifica le GPU disponibili in base alle metriche di utilizzo e alla disponibilità di VRAM.
Per selezionare e utilizzare automaticamente la/e GPU più inattiva/e per l'addestramento, usa il parametro di dispositivo -1. Questo è particolarmente utile in ambienti di calcolo condivisi o server con più utenti.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
# Train using the single most idle GPU
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=-1)
# Train using the two most idle GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])L'algoritmo di selezione automatica dà priorità alle GPU con:
- Percentuali di utilizzo corrente inferiori
- Memoria disponibile superiore (VRAM libera)
- Minore temperatura e consumo energetico
Questa funzionalità è particolarmente preziosa in ambienti di calcolo condivisi o quando si eseguono più lavori di addestramento su modelli diversi. Si adatta automaticamente al mutare delle condizioni del sistema, garantendo un'allocazione ottimale delle risorse senza intervento manuale.
Addestramento su Apple Silicon MPS
Con il supporto per i chip Apple Silicon integrato nei modelli Ultralytics YOLO, ora è possibile addestrare i modelli su dispositivi che utilizzano il potente framework Metal Performance Shaders (MPS). MPS offre un modo ad alte prestazioni per eseguire attività di calcolo ed elaborazione immagini sul silicio personalizzato di Apple.
Per abilitare l'addestramento sui chip Apple Silicon, dovresti specificare 'mps' come tuo dispositivo all'avvio del processo di addestramento. Di seguito è riportato un esempio di come potresti farlo in Python e tramite la riga di comando:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
# Train the model with MPS
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")Sfruttando la potenza di calcolo dei chip Apple Silicon, questo consente un'elaborazione più efficiente delle attività di addestramento. Per una guida più dettagliata e opzioni di configurazione avanzate, fai riferimento alla documentazione PyTorch MPS.
Ripresa di addestramenti interrotti
Riprendere l'addestramento da uno stato salvato in precedenza è una funzionalità cruciale quando si lavora con modelli di deep learning. Questo può tornare utile in vari scenari, come quando il processo di addestramento è stato inaspettatamente interrotto, o quando desideri continuare ad addestrare un modello con nuovi dati o per ulteriori epoche.
Quando l'addestramento viene ripreso, Ultralytics YOLO carica i pesi dall'ultimo modello salvato e ripristina anche lo stato dell'ottimizzatore, lo scheduler del learning rate e il numero dell'epoca. Questo ti consente di continuare il processo di addestramento senza interruzioni dal punto in cui era stato lasciato.
Puoi facilmente riprendere l'addestramento in Ultralytics YOLO impostando l'argomento resume su True quando chiami il metodo train e specificando il percorso al file .pt contenente i pesi del modello parzialmente addestrato.
Di seguito è riportato un esempio di come riprendere un addestramento interrotto utilizzando Python e tramite la riga di comando:
from ultralytics import YOLO
# Load a model
model = YOLO("path/to/last.pt") # load a partially trained model
# Resume training
results = model.train(resume=True)Impostando resume=True, la funzione train continuerà l'addestramento da dove era stato interrotto, utilizzando lo stato memorizzato nel file 'path/to/last.pt'. Se l'argomento resume viene omesso o impostato su False, la funzione train avvierà una nuova sessione di addestramento.
Ricorda che i checkpoint vengono salvati alla fine di ogni epoca per impostazione predefinita, o a intervalli fissi utilizzando l'argomento save_period, quindi devi completare almeno 1 epoca per riprendere un'esecuzione di addestramento.
Impostazioni di Addestramento
Le impostazioni di addestramento per i modelli YOLO comprendono vari iperparametri e configurazioni utilizzati durante il processo di addestramento. Queste impostazioni influenzano le prestazioni, la velocità e l'accuracy del modello. Le impostazioni di addestramento chiave includono la dimensione del batch, il tasso di apprendimento (learning rate), il momentum e il weight decay. Inoltre, la scelta dell'ottimizzatore, della loss function e della composizione del dataset di addestramento può influire sul processo. Un'attenta regolazione e sperimentazione con queste impostazioni sono fondamentali per ottimizzare le prestazioni.
Ottimizzatore MuSGD
In YOLO26, MuSGD è un ottimizzatore ibrido che combina aggiornamenti standard SGD con aggiornamenti ortogonalizzati in stile Muon.
È raccomandato per esecuzioni di addestramento YOLO26 più lunghe e dataset più grandi, dove gli aggiornamenti ortogonalizzati Muon possono aiutare a stabilizzare l'ottimizzazione.
Solo i parametri con param.ndim >= 2 (come i pesi convoluzionali) ricevono l'aggiornamento in stile Muon insieme a SGD, mentre i parametri a dimensione inferiore come i layer di normalizzazione batch (batch normalization) e i termini di bias rimangono su SGD standard.
Quando viene utilizzato optimizer=auto, Ultralytics seleziona automaticamente MuSGD per esecuzioni di addestramento più lunghe (tipicamente quando le iterazioni > 10000). Per esecuzioni più brevi, il trainer torna a AdamW.
Esempio di utilizzo:
yolo train model=yolo26n.pt data=coco8.yaml optimizer=MuSGDVedi l'implementazione in ultralytics/optim/muon.py e la logica di selezione automatica dell'ottimizzatore in BaseTrainer.build_optimizer.
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
model | str | None | Specifica il file del modello per l'addestramento. Accetta un percorso verso un modello preaddestrato .pt o un file di configurazione .yaml. Essenziale per definire la struttura del modello o inizializzare i pesi. |
data | str | None | Percorso al file di configurazione del dataset (ad es. coco8.yaml). Questo file contiene i parametri specifici del dataset, inclusi i percorsi ai dati di addestramento e validazione, i nomi delle classi e il numero di classi. |
epochs | int | 100 | Numero totale di epoche di addestramento. Ogni epoca rappresenta un passaggio completo sull'intero dataset. Regolare questo valore può influenzare la durata dell'addestramento e le prestazioni del modello. |
time | float | None | Tempo massimo di addestramento in ore. Se impostato, sovrascrive l'argomento epochs, consentendo all'addestramento di terminare automaticamente dopo la durata specificata. Utile per scenari di addestramento con vincoli temporali. |
patience | int | 100 | Numero di epoche da attendere senza miglioramenti nelle metriche di validazione prima di interrompere precocemente l'addestramento. Aiuta a prevenire l'overfitting interrompendo l'addestramento quando le prestazioni raggiungono un plateau. |
batch | int o float | 16 | Batch size, con tre modalità: impostata come numero intero (ad es. batch=16), modalità automatica per un utilizzo della memoria GPU del 60% (batch=-1), o modalità automatica con frazione di utilizzo specificata (batch=0.70). |
imgsz | int | 640 | Dimensione target dell'immagine per l'addestramento. Le immagini vengono ridimensionate a quadrati con lati uguali al valore specificato (se rect=False), preservando il rapporto d'aspetto per i modelli YOLO ma non per RT-DETR. Influisce sull'accuratezza del modello e sulla complessità computazionale. |
save | bool | True | Abilita il salvataggio dei checkpoint di addestramento e dei pesi finali del modello. Utile per riprendere l'addestramento o per il deployment del modello. |
save_period | int | -1 | Frequenza di salvataggio dei checkpoint del modello, specificata in epoche. Un valore di -1 disabilita questa funzione. Utile per salvare modelli intermedi durante lunghe sessioni di addestramento. |
cache | bool | False | Abilita il caching delle immagini del dataset in memoria (True/ram), su disco (disk), o lo disabilita (False). Migliora la velocità di addestramento riducendo l'I/O su disco a costo di un maggiore utilizzo di memoria. |
device | int o str o list | None | Specifica il/i dispositivo/i computazionale/i per l'addestramento: una singola GPU (device=0), più GPU (device=[0,1]), CPU (device=cpu), MPS per Apple silicon (device=mps), Huawei Ascend NPU (device=npu o device=npu:0), o la selezione automatica della GPU più scarica (device=-1) o di più GPU scariche (device=[-1,-1]) |
workers | int | 8 | Numero di thread worker per il caricamento dei dati (per RANK in caso di addestramento Multi-GPU). Influenza la velocità di pre-elaborazione dei dati e dell'invio al modello, particolarmente utile nelle configurazioni multi-GPU. |
project | str | None | Nome della directory del progetto in cui vengono salvati gli output dell'addestramento. Consente l'archiviazione organizzata di diversi esperimenti. |
name | str | None | Nome dell'esecuzione dell'addestramento. Utilizzato per creare una sottodirectory all'interno della cartella del progetto, dove vengono memorizzati i log e gli output dell'addestramento. |
exist_ok | bool | False | Se True, consente di sovrascrivere una directory progetto/nome esistente. Utile per la sperimentazione iterativa senza dover cancellare manualmente gli output precedenti. |
pretrained | bool o str | True | Determina se iniziare l'addestramento da pesi preaddestrati. Può essere un valore booleano o un percorso stringa verso i pesi da caricare. pretrained=False addestra da pesi inizializzati casualmente mantenendo l'architettura del modello. |
optimizer | str | 'auto' | Scelta dell'ottimizzatore per l'addestramento. Le opzioni includono SGD, MuSGD, Adam, Adamax, AdamW, NAdam, RAdam, RMSProp, o auto per la selezione automatica basata sulla configurazione del modello. Influisce sulla velocità di convergenza e sulla stabilità. |
seed | int | 0 | Imposta il seed casuale per l'addestramento, garantendo la riproducibilità dei risultati tra diverse esecuzioni con le stesse configurazioni. |
deterministic | bool | True | Forza l'uso di algoritmi deterministici, garantendo la riproducibilità ma potenzialmente influenzando prestazioni e velocità a causa della restrizione sugli algoritmi non deterministici. |
verbose | bool | True | Abilita l'output dettagliato durante l'addestramento, visualizzando barre di avanzamento, metriche per epoca e ulteriori informazioni sull'addestramento nella console. |
single_cls | bool | False | Tratta tutte le classi nei dataset multi-classe come un'unica classe durante l'addestramento. Utile per task di classificazione binaria o quando ci si concentra sulla presenza di oggetti piuttosto che sulla classificazione. |
classes | list[int] | None | Specifica un elenco di ID classe su cui addestrare. Utile per filtrare e concentrarsi solo su determinate classi durante l'addestramento. |
rect | bool | False | Abilita la strategia di padding minimo: le immagini in un batch vengono minimamente riempite per raggiungere una dimensione comune, con il lato più lungo uguale a imgsz. Può migliorare l'efficienza e la velocità, ma potrebbe influire sull'accuratezza del modello. |
multi_scale | float | 0.0 | Varia casualmente imgsz a ogni batch di +/- multi_scale (ad es. 0.25 -> da 0.75x a 1.25x), arrotondando ai multipli dello stride del modello; 0.0 disabilita l'addestramento multi-scala. |
cos_lr | bool | False | Utilizza uno scheduler per il learning rate a coseno, che regola il learning rate seguendo una curva a coseno durante le epoche. Aiuta a gestire il learning rate per una migliore convergenza. |
close_mosaic | int | 10 | Disabilita la data augmentation mosaic nelle ultime N epoche per stabilizzare l'addestramento prima del completamento. Impostarlo a 0 disabilita questa funzionalità. |
resume | bool | False | Riprende l'addestramento dall'ultimo checkpoint salvato. Carica automaticamente i pesi del modello, lo stato dell'ottimizzatore e il conteggio delle epoche, continuando l'addestramento senza interruzioni. |
amp | bool | True | Abilita l'addestramento con Mixed Precision (AMP) automatico, riducendo l'utilizzo della memoria e possibilmente accelerando l'addestramento con un impatto minimo sulla precisione. |
fraction | float | 1.0 | Specifica la frazione del dataset da utilizzare per l'addestramento. Consente di addestrare su un sottoinsieme del dataset completo, utile per esperimenti o quando le risorse sono limitate. |
profile | bool | False | Abilita la profilazione delle velocità di ONNX e TensorRT durante l'addestramento, utile per ottimizzare il deployment del modello. |
freeze | int o list | None | Blocca i primi N strati del modello o gli strati specificati per indice, riducendo il numero di parametri addestrabili. Utile per il fine-tuning o il transfer learning. |
lr0 | float | 0.01 | Learning rate iniziale (es. SGD=1E-2, Adam=1E-3). Regolare questo valore è cruciale per il processo di ottimizzazione, influenzando la velocità con cui vengono aggiornati i pesi del modello. |
lrf | float | 0.01 | Learning rate finale come frazione del valore iniziale = (lr0 * lrf), utilizzato insieme agli scheduler per regolare il learning rate nel tempo. |
momentum | float | 0.937 | Fattore di momentum per SGD o beta1 per gli ottimizzatori Adam, che influenza l'incorporazione dei gradienti passati nell'aggiornamento corrente. |
weight_decay | float | 0.0005 | Termine di regolarizzazione L2, che penalizza i pesi elevati per prevenire l'overfitting. |
warmup_epochs | float | 3.0 | Numero di epoche per il warmup del learning rate, che aumenta gradualmente il valore da un livello basso fino al learning rate iniziale per stabilizzare l'addestramento nelle prime fasi. |
warmup_momentum | float | 0.8 | Momentum iniziale per la fase di warmup, che si regola gradualmente verso il momentum impostato durante il periodo di warmup. |
warmup_bias_lr | float | 0.1 | Learning rate per i parametri di bias durante la fase di warmup, aiutando a stabilizzare l'addestramento del modello nelle epoche iniziali. |
box | float | 7.5 | Peso della componente di perdita box nella loss function, che influenza quanta enfasi viene posta sulla previsione accurata delle coordinate del bounding box. |
cls | float | 0.5 | Peso della perdita di classificazione nella loss function totale, che influenza l'importanza della corretta previsione della classe rispetto ad altre componenti. |
cls_pw | float | 0.0 | Esponente per la ponderazione delle classi per gestire lo sbilanciamento usando la frequenza inversa delle classi. 0.0 disabilita la ponderazione, 1.0 applica la ponderazione completa tramite frequenza inversa. Valori tra 0 e 1 forniscono una ponderazione parziale. |
dfl | float | 1.5 | Peso della distribuzione focal loss, utilizzata in alcune versioni di YOLO per la classificazione a grana fine. |
pose | float | 12.0 | Peso della perdita pose nei modelli addestrati per la stima della posa, che influenza l'enfasi sulla previsione accurata dei keypoint della posa. |
kobj | float | 1.0 | Peso della perdita di objectness dei keypoint nei modelli di stima della posa, bilanciando la confidenza del rilevamento con la precisione della posa. |
rle | float | 1.0 | Peso della perdita di stima della log-verosimiglianza residua nei modelli di stima della posa, che influenza la precisione della localizzazione dei keypoint. |
angle | float | 1.0 | Peso della perdita dell'angolo nei modelli obb, che influenza la precisione delle previsioni dell'angolo dei bounding box orientati. |
nbs | int | 64 | Dimensione nominale del batch per la normalizzazione della perdita. |
overlap_mask | bool | True | Determina se le maschere degli oggetti debbano essere unite in un'unica maschera durante l'addestramento o mantenute separate per ogni oggetto. In caso di sovrapposizione, la maschera più piccola viene sovrapposta a quella più grande durante l'unione. |
mask_ratio | int | 4 | Rapporto di downsampling per le maschere di segmentazione, che influenza la risoluzione delle maschere utilizzate durante l'addestramento. |
dropout | float | 0.0 | Dropout rate per la regolarizzazione in compiti di classificazione, che previene l'overfitting omettendo casualmente unità durante l'addestramento. |
val | bool | True | Abilita la validazione durante l'addestramento, consentendo una valutazione periodica delle prestazioni del modello su un dataset separato. |
plots | bool | True | Genera e salva grafici delle metriche di addestramento e validazione, oltre a esempi di previsione, fornendo approfondimenti visivi sulle prestazioni del modello e sul progresso dell'apprendimento. |
compile | bool o str | False | Abilita la compilazione del grafo PyTorch 2.x torch.compile con backend='inductor'. Accetta True → "default", False → disabilita, oppure una stringa di modalità come "default", "reduce-overhead", "max-autotune-no-cudagraphs". In caso di mancato supporto, torna alla modalità eager con un avviso. |
max_det | int | 300 | Specifica il numero massimo di oggetti conservati durante la fase di validazione dell'addestramento. |
L'argomento batch può essere configurato in tre modi:
- Batch Size Fisso: Imposta un valore intero (es.
batch=16), specificando direttamente il numero di immagini per batch. - Modalità Automatica (60% Memoria GPU): Usa
batch=-1per regolare automaticamente la dimensione del batch per circa il 60% dell'utilizzo della memoria CUDA. - Modalità Automatica con Frazione di Utilizzo: Imposta un valore frazionario (es.
batch=0.70) per regolare la dimensione del batch in base alla frazione specificata di utilizzo della memoria GPU. - OOM Auto-Retry: Se si verifica un errore di esaurimento memoria CUDA durante la prima epoca, il trainer dimezza automaticamente la dimensione del batch e riprova (fino a 3 volte). Questo si applica solo all'addestramento su singola GPU; l'addestramento multi-GPU (DDP) solleverà immediatamente l'errore.
Impostazioni di aumentazione e iperparametri
Le tecniche di aumentazione sono essenziali per migliorare la robustezza e le prestazioni dei modelli YOLO introducendo variabilità nei dati di addestramento, aiutando il modello a generalizzare meglio verso dati non visti. La seguente tabella delinea lo scopo e l'effetto di ogni argomento di aumentazione:
| Argomento | Tipo | Predefinito | Attività supportate | Intervallo | Descrizione |
|---|---|---|---|---|---|
hsv_h | float | 0.015 | detect, segment, pose, obb, classify | 0.0 - 1.0 | Regola la tonalità (hue) dell'immagine di una frazione della ruota dei colori, introducendo variabilità cromatica. Aiuta il modello a generalizzare in diverse condizioni di illuminazione. |
hsv_s | float | 0.7 | detect, segment, pose, obb, classify | 0.0 - 1.0 | Altera la saturazione dell'immagine di una frazione, influenzando l'intensità dei colori. Utile per simulare diverse condizioni ambientali. |
hsv_v | float | 0.4 | detect, segment, pose, obb, classify | 0.0 - 1.0 | Modifica il valore (luminosità) dell'immagine di una frazione, aiutando il modello a funzionare bene in varie condizioni di illuminazione. |
degrees | float | 0 | detect, segment, pose, obb | 0.0 - 180 | Ruota l'immagine casualmente entro l'intervallo di gradi specificato, migliorando la capacità del modello di riconoscere oggetti in vari orientamenti. |
translate | float | 0.1 | detect, segment, pose, obb | 0.0 - 1.0 | Trasla l'immagine orizzontalmente e verticalmente di una frazione della dimensione dell'immagine, aiutando ad imparare a rilevare oggetti parzialmente visibili. |
scale | float | 0.5 | detect, segment, pose, obb, classify | 0 - 1 | Scala l'immagine di un fattore di guadagno, simulando oggetti a distanze diverse dalla fotocamera. |
shear | float | 0 | detect, segment, pose, obb | -180 - +180 | Inclina (shear) l'immagine di un grado specificato, mimando l'effetto di oggetti visti da angolazioni diverse. |
perspective | float | 0 | detect, segment, pose, obb | 0.0 - 0.001 | Applica una trasformazione prospettica casuale all'immagine, migliorando la capacità del modello di comprendere gli oggetti nello spazio 3D. |
flipud | float | 0 | detect, segment, pose, obb, classify | 0.0 - 1.0 | Capovolge l'immagine verticalmente con la probabilità specificata, aumentando la variabilità dei dati senza influenzare le caratteristiche dell'oggetto. |
fliplr | float | 0.5 | detect, segment, pose, obb, classify | 0.0 - 1.0 | Capovolge l'immagine orizzontalmente con la probabilità specificata, utile per apprendere oggetti simmetrici e aumentare la diversità del dataset. |
bgr | float | 0 | detect, segment, pose, obb | 0.0 - 1.0 | Inverte i canali dell'immagine da RGB a BGR con la probabilità specificata, utile per aumentare la robustezza contro l'ordinamento errato dei canali. |
mosaic | float | 1 | detect, segment, pose, obb | 0.0 - 1.0 | Combina quattro immagini di addestramento in una, simulando diverse composizioni di scene e interazioni tra oggetti. Altamente efficace per la comprensione di scene complesse. |
mixup | float | 0 | detect, segment, pose, obb | 0.0 - 1.0 | Unisci due immagini e le relative etichette, creando un'immagine composita. Migliora la capacità del modello di generalizzare introducendo rumore nelle etichette e variabilità visiva. |
cutmix | float | 0 | detect, segment, pose, obb | 0.0 - 1.0 | Combina porzioni di due immagini, creando una fusione parziale pur mantenendo regioni distinte. Aumenta la robustezza del modello creando scenari di occlusione. |
copy_paste | float | 0 | segment | 0.0 - 1.0 | Copia e incolla oggetti tra le immagini per aumentare le istanze degli oggetti. |
copy_paste_mode | str | flip | segment | - | Specifica la strategia copy-paste da utilizzare. Le opzioni includono 'flip' e 'mixup'. |
auto_augment | str | randaugment | classify | - | Applica una policy di aumento predefinita ('randaugment', 'autoaugment' o 'augmix') per migliorare le prestazioni del modello attraverso la diversità visiva. |
erasing | float | 0.4 | classify | 0.0 - 1.0 | Cancella casualmente regioni dell'immagine durante l'addestramento per incoraggiare il modello a concentrarsi su caratteristiche meno ovvie. |
augmentations | list | `` | detect, segment, pose, obb | - | Trasformazioni personalizzate di Albumentations per un aumento dei dati avanzato (solo Python API). Accetta un elenco di oggetti di trasformazione per esigenze di aumento specializzate. |
Queste impostazioni possono essere regolate per soddisfare i requisiti specifici del dataset e del compito in questione. Sperimentare con valori diversi può aiutare a trovare la strategia di aumento ottimale che porta alle migliori prestazioni del modello.
Per ulteriori informazioni sulle operazioni di aumento durante l'addestramento, consulta la sezione di riferimento.
Logging
Nell'addestramento di un modello YOLO26, potresti trovare utile monitorare le prestazioni del modello nel tempo. È qui che entra in gioco il logging. Ultralytics YOLO fornisce supporto per tre tipi di logger: Comet, ClearML e TensorBoard.
Per utilizzare un logger, selezionalo dal menu a discesa nel frammento di codice sopra ed eseguilo. Il logger scelto verrà installato e inizializzato.
Comet
Comet è una piattaforma che consente a data scientist e sviluppatori di tracciare, confrontare, spiegare e ottimizzare esperimenti e modelli. Fornisce funzionalità come metriche in tempo reale, differenze nel codice e tracciamento degli iperparametri.
Per utilizzare Comet:
# pip install comet_ml
import comet_ml
comet_ml.init()Ricordati di accedere al tuo account Comet sul loro sito web e ottenere la tua chiave API. Dovrai aggiungerla alle tue variabili d'ambiente o al tuo script per registrare i tuoi esperimenti.
ClearML
ClearML è una piattaforma open-source che automatizza il tracciamento degli esperimenti e aiuta a condividere le risorse in modo efficiente. È progettata per aiutare i team a gestire, eseguire e riprodurre il proprio lavoro ML in modo più efficiente.
Per utilizzare ClearML:
# pip install clearml
import clearml
clearml.browser_login()Dopo aver eseguito questo script, dovrai accedere al tuo account ClearML nel browser e autenticare la tua sessione.
TensorBoard
TensorBoard è un toolkit di visualizzazione per TensorFlow. Ti consente di visualizzare il tuo grafo TensorFlow, tracciare metriche quantitative sull'esecuzione del tuo grafo e mostrare dati aggiuntivi come le immagini che lo attraversano.
Per utilizzare TensorBoard in Google Colab:
load_ext tensorboard
tensorboard --logdir ultralytics/runs # replace with 'runs' directoryPer utilizzare TensorBoard localmente, esegui il comando sottostante e visualizza i risultati su localhost:6006.
tensorboard --logdir ultralytics/runs # replace with 'runs' directoryQuesto caricherà TensorBoard e lo indirizzerà alla directory in cui sono salvati i tuoi log di addestramento.
Dopo aver configurato il tuo logger, puoi procedere con l'addestramento del modello. Tutte le metriche di addestramento verranno registrate automaticamente nella piattaforma scelta e potrai accedere a questi log per monitorare le prestazioni del modello nel tempo, confrontare diversi modelli e identificare aree di miglioramento.
FAQ
Posso addestrare senza una GPU locale?
Sì. Ultralytics Platform supporta l'addestramento in cloud con crediti gratuiti per iniziare. Carica il tuo dataset, seleziona un modello e una GPU e addestra direttamente dal browser. Consulta la guida all'addestramento in cloud per i dettagli.
Come posso addestrare un modello di rilevamento oggetti utilizzando Ultralytics YOLO26?
Per addestrare un modello di rilevamento oggetti utilizzando Ultralytics YOLO26, puoi utilizzare la Python API o la CLI. Di seguito un esempio per entrambi:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)Per ulteriori dettagli, consulta la sezione Impostazioni di addestramento.
Quali sono le caratteristiche principali della modalità Train di Ultralytics YOLO26?
Le caratteristiche principali della modalità Train di Ultralytics YOLO26 includono:
- Download automatico del dataset: Scarica automaticamente dataset standard come COCO, VOC e ImageNet.
- Supporto Multi-GPU: Scala l'addestramento su più GPU per un'elaborazione più veloce.
- Configurazione degli iperparametri: Personalizza gli iperparametri tramite file YAML o argomenti CLI.
- Visualizzazione e monitoraggio: Tracciamento in tempo reale delle metriche di addestramento per migliori approfondimenti.
Queste funzionalità rendono l'addestramento efficiente e personalizzabile in base alle tue esigenze. Per ulteriori dettagli, consulta la sezione Funzionalità principali della modalità Train.
Come posso riprendere l'addestramento da una sessione interrotta in Ultralytics YOLO26?
Per riprendere l'addestramento da una sessione interrotta, imposta l'argomento resume su True e specifica il percorso dell'ultimo checkpoint salvato.
from ultralytics import YOLO
# Load the partially trained model
model = YOLO("path/to/last.pt")
# Resume training
results = model.train(resume=True)Controlla la sezione su Riprendere addestramenti interrotti per maggiori informazioni.
Come posso addestrare un modello su un dataset sbilanciato?
Lo sbilanciamento delle classi si verifica quando alcune classi hanno un numero significativamente inferiore di esempi rispetto ad altre nei tuoi dati di addestramento. Questo può far sì che il modello ottenga scarse prestazioni sulle classi rare. Ultralytics YOLO supporta la ponderazione delle classi tramite l'argomento cls_pw per affrontare questo problema.
L'argomento cls_pw controlla la potenza di ponderazione delle classi basata sulla frequenza inversa della classe:
cls_pw=0.0(predefinito): Disabilita la ponderazione delle classicls_pw=1.0: Applica una ponderazione completa per frequenza inversa- Valori tra
0.0e1.0: Forniscono una ponderazione parziale per sbilanciamenti moderati
I pesi delle classi vengono calcolati come (1.0 / class_counts) ^ cls_pw e normalizzati in modo che la loro media sia pari a 1.0.
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n.pt")
# Train with full class weighting for severely imbalanced data
results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=1.0)
# Or use partial weighting (0.25) for moderate imbalance
results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=0.25)Inizia con cls_pw=0.25 per dataset moderatamente sbilanciati e aumenta fino a 1.0 se le classi rare continuano a non avere buone prestazioni. Puoi controllare i pesi delle classi calcolati nei log di addestramento per verificare la distribuzione dei pesi.
Posso addestrare modelli YOLO26 su chip Apple Silicon?
Sì, Ultralytics YOLO26 supporta l'addestramento su chip Apple Silicon utilizzando il framework Metal Performance Shaders (MPS). Specifica 'mps' come dispositivo di addestramento.
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n.pt")
# Train the model on Apple silicon chip (M1/M2/M3/M4)
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")Per ulteriori dettagli, consulta la sezione Addestramento su Apple Silicon MPS.
Quali sono le impostazioni di addestramento comuni e come le configuro?
Ultralytics YOLO26 ti consente di configurare una varietà di impostazioni di addestramento come dimensione del batch, tasso di apprendimento, epoche e altro tramite argomenti. Ecco una breve panoramica:
| Argomento | Predefinito | Descrizione |
|---|---|---|
model | None | Percorso del file del modello per l'addestramento. |
data | None | Percorso del file di configurazione del dataset (es. coco8.yaml). |
epochs | 100 | Numero totale di epoche di addestramento. |
batch | 16 | Dimensione del batch, regolabile come numero intero o modalità automatica. |
imgsz | 640 | Dimensione target dell'immagine per l'addestramento. |
device | None | Dispositivo/i di calcolo per l'addestramento come cpu, 0, 0,1 o mps. |
save | True | Abilita il salvataggio dei checkpoint di addestramento e dei pesi finali del modello. |
Per una guida approfondita sulle impostazioni di addestramento, controlla la sezione Impostazioni di addestramento.