Meet YOLO26: next-gen vision AI.

Link to this sectionBest practice e consigli di Machine Learning per l'addestramento dei modelli#

Link to this sectionIntroduzione#

Uno dei passaggi più importanti quando lavori a un progetto di computer vision è l'addestramento del modello. Prima di arrivare a questa fase, devi definire i tuoi obiettivi e raccogliere e annotare i tuoi dati. Dopo aver preelaborato i dati per assicurarti che siano puliti e coerenti, puoi passare all'addestramento del tuo modello.



Watch: Model Training Tips | How to Handle Large Datasets | Batch Size, GPU Utilization and Mixed Precision

Quindi, cos'è l'addestramento del modello? L'addestramento del modello è il processo di insegnamento al tuo modello a riconoscere pattern visivi ed effettuare previsioni basate sui tuoi dati. Influisce direttamente sulle prestazioni e sull'accuratezza della tua applicazione. In questa guida, tratteremo best practice, tecniche di ottimizzazione e consigli per la risoluzione dei problemi per aiutarti ad addestrare i tuoi modelli di computer vision in modo efficace.

Link to this sectionCome addestrare un modello di Machine Learning#

Un modello di computer vision viene addestrato regolando i suoi parametri interni per minimizzare gli errori. Inizialmente, al modello viene fornito un ampio set di immagini etichettate. Esso effettua previsioni su ciò che è contenuto in queste immagini e le previsioni vengono confrontate con le etichette o i contenuti reali per calcolare gli errori. Questi errori mostrano quanto le previsioni del modello si discostano dai valori reali.

Durante l'addestramento, il modello effettua iterativamente previsioni, calcola errori e aggiorna i suoi parametri attraverso un processo chiamato backpropagation. In questo processo, il modello regola i suoi parametri interni (pesi e bias) per ridurre gli errori. Ripetendo questo ciclo molte volte, il modello migliora gradualmente la sua accuratezza. Nel tempo, impara a riconoscere pattern complessi come forme, colori e texture.

What is Backpropagation?

Questo processo di apprendimento rende possibile per il modello di computer vision eseguire varie attività, tra cui rilevamento oggetti, segmentazione di istanze, segmentazione semantica e classificazione di immagini. L'obiettivo finale è creare un modello in grado di generalizzare il suo apprendimento a immagini nuove e mai viste, in modo che possa comprendere accuratamente i dati visivi in applicazioni del mondo reale.

Ora che sappiamo cosa succede dietro le quinte quando addestriamo un modello, diamo un'occhiata ai punti da considerare durante l'addestramento di un modello.

Link to this sectionAddestramento su grandi dataset#

Ci sono alcuni aspetti diversi a cui pensare quando pianifichi di utilizzare un dataset di grandi dimensioni per addestrare un modello. Ad esempio, puoi regolare la dimensione del batch, controllare l'utilizzo della GPU, scegliere di utilizzare l'addestramento multiscala, ecc. Esaminiamo ciascuna di queste opzioni nel dettaglio.

Link to this sectionDimensione del batch e utilizzo della GPU#

Quando addestri modelli su grandi dataset, utilizzare in modo efficiente la tua GPU è fondamentale. La dimensione del batch è un fattore importante. È il numero di campioni di dati che un modello di machine learning elabora in una singola iterazione di addestramento. Utilizzando la dimensione massima del batch supportata dalla tua GPU, puoi sfruttare appieno le sue capacità e ridurre il tempo richiesto dall'addestramento del modello. Tuttavia, vuoi evitare di esaurire la memoria della GPU. Se riscontri errori di memoria, riduci gradualmente la dimensione del batch finché il modello non viene addestrato senza intoppi.



Watch: How to Use Batch Inference with Ultralytics YOLO26 | Speed Up Object Detection in Python 🎉

Per quanto riguarda YOLO26, puoi impostare il parametro batch nella configurazione di addestramento per adattarlo alla capacità della tua GPU. Inoltre, impostare batch=-1 nel tuo script di addestramento determinerà automaticamente la dimensione del batch che può essere elaborata in modo efficiente in base alle capacità del tuo dispositivo. Ottimizzando la dimensione del batch, puoi sfruttare al massimo le tue risorse GPU e migliorare l'intero processo di addestramento.

Link to this sectionAddestramento su sottoinsiemi (Subset Training)#

L'addestramento su sottoinsiemi è una strategia intelligente che prevede l'addestramento del tuo modello su un set di dati più piccolo che rappresenta il dataset più ampio. Può far risparmiare tempo e risorse, specialmente durante lo sviluppo iniziale e i test del modello. Se sei a corto di tempo o stai sperimentando diverse configurazioni del modello, l'addestramento su sottoinsiemi è una buona opzione.

Quando si tratta di YOLO26, puoi implementare facilmente l'addestramento su sottoinsiemi utilizzando il parametro fraction. Questo parametro ti permette di specificare quale frazione del tuo dataset utilizzare per l'addestramento. Ad esempio, impostare fraction=0.1 addestrerà il tuo modello sul 10% dei dati. Puoi utilizzare questa tecnica per iterazioni rapide e per ottimizzare il tuo modello prima di impegnarti nell'addestramento su un dataset completo. L'addestramento su sottoinsiemi ti aiuta a fare rapidi progressi e a identificare precocemente potenziali problemi.

Link to this sectionAddestramento multi-scala#

L'addestramento multiscala è una tecnica che migliora la capacità di generalizzazione del tuo modello addestrandolo su immagini di dimensioni variabili. Il tuo modello può imparare a rilevare oggetti a diverse scale e distanze e diventare più robusto.

Ad esempio, quando addestri YOLO26, puoi abilitare l'addestramento multiscala impostando il parametro scale. Questo parametro regola la dimensione delle immagini di addestramento di un fattore specificato, simulando oggetti a distanze diverse. Ad esempio, impostare scale=0.5 ingrandisce casualmente le immagini di addestramento di un fattore compreso tra 0.5 e 1.5 durante l'addestramento. Configurare questo parametro consente al tuo modello di sperimentare una varietà di scale di immagine e migliorare le sue capacità di rilevamento attraverso diverse dimensioni degli oggetti e scenari.

Ultralytics supporta anche l'addestramento multi-scala sulle dimensioni dell'immagine tramite il parametro multi_scale. A differenza di scale, che ingrandisce le immagini e poi riempie/ritaglia per tornare a imgsz, multi_scale cambia imgsz stesso ogni batch (arrotondato allo stride del modello). Ad esempio, con imgsz=640 e multi_scale=0.25, la dimensione di addestramento viene campionata da 480 fino a 800 a passi di stride (ad esempio, 480, 512, 544, ..., 800), mentre multi_scale=0.0 mantiene una dimensione fissa.

Link to this sectionCaching#

Il caching è una tecnica importante per migliorare l'efficienza dell'addestramento dei modelli di machine learning. Memorizzando le immagini preelaborate nella memoria RAM, il caching riduce il tempo che la GPU trascorre in attesa che i dati vengano caricati dal disco. Il modello può ricevere dati continuamente senza ritardi causati dalle operazioni di I/O del disco.

Il caching può essere controllato durante l'addestramento di YOLO26 utilizzando il parametro cache:

  • cache=True: Memorizza le immagini del dataset nella RAM, offrendo la velocità di accesso più rapida ma al costo di un maggiore utilizzo di memoria.
  • cache='disk': Memorizza le immagini sul disco, più lento della RAM ma più veloce del caricamento di nuovi dati ogni volta.
  • cache=False: Disabilita il caching, affidandosi interamente all'I/O del disco, che è l'opzione più lenta.

Link to this sectionAddestramento a precisione mista (Mixed Precision)#

L'addestramento a precisione mista utilizza sia tipi a virgola mobile a 16 bit (FP16) che a 32 bit (FP32). I punti di forza sia di FP16 che di FP32 vengono sfruttati utilizzando FP16 per calcoli più rapidi e FP32 per mantenere la precisione dove necessario. La maggior parte delle operazioni della rete neurale viene eseguita in FP16 per beneficiare di calcoli più veloci e un minor utilizzo di memoria. Tuttavia, una copia master dei pesi del modello viene mantenuta in FP32 per garantire l'accuratezza durante le fasi di aggiornamento dei pesi. Puoi gestire modelli più grandi o dimensioni di batch maggiori all'interno degli stessi vincoli hardware.

Mixed precision FP16 training benefits

Per implementare l'addestramento a precisione mista, dovrai modificare i tuoi script di addestramento e assicurarti che il tuo hardware (come le GPU) lo supporti. Molti moderni framework di deep learning, come PyTorch e TensorFlow, offrono supporto integrato per la precisione mista.

L'addestramento a precisione mista è semplice quando lavori con YOLO26. Puoi utilizzare il flag amp nella tua configurazione di addestramento. Impostare amp=True abilita l'addestramento con Automatic Mixed Precision (AMP). L'addestramento a precisione mista è un modo semplice ma efficace per ottimizzare il processo di addestramento del tuo modello.

Link to this sectionPesi pre-addestrati#

Utilizzare pesi preaddestrati è un modo intelligente per accelerare il processo di addestramento del tuo modello. I pesi preaddestrati provengono da modelli già addestrati su grandi dataset, dando al tuo modello un vantaggio iniziale. Il transfer learning adatta i modelli preaddestrati a nuove attività correlate. Il fine-tuning di un modello preaddestrato comporta l'inizializzazione con questi pesi e quindi la continuazione dell'addestramento sul tuo specifico dataset. Questo metodo di addestramento porta a tempi di addestramento più rapidi e spesso a prestazioni migliori perché il modello inizia con una solida comprensione delle caratteristiche di base.

Il parametro pretrained rende facile il transfer learning con YOLO26. Impostare pretrained=True utilizzerà i pesi preaddestrati predefiniti, oppure puoi specificare un percorso per un modello preaddestrato personalizzato. L'utilizzo efficace di pesi preaddestrati e del transfer learning potenzia le capacità del tuo modello e riduce i costi di addestramento.

Link to this sectionAltre tecniche da considerare quando gestisci un dataset di grandi dimensioni#

Ci sono un paio di altre tecniche da considerare quando gestisci un dataset di grandi dimensioni:

  • Learning Rate Schedulers: L'implementazione di scheduler del tasso di apprendimento regola dinamicamente il learning rate durante l'addestramento. Un learning rate ben sintonizzato può impedire al modello di superare i minimi e migliorare la stabilità. Quando addestri YOLO26, il parametro lrf aiuta a gestire lo scheduling del learning rate impostando il learning rate finale come una frazione del tasso iniziale.
  • Addestramento distribuito: Per gestire grandi dataset, l'addestramento distribuito può cambiare le regole del gioco. Puoi ridurre il tempo di addestramento distribuendo il carico di lavoro su più GPU o macchine. Questo approccio è particolarmente prezioso per progetti su scala aziendale con risorse computazionali sostanziali.

Link to this sectionIl numero di epoche per cui addestrare#

Quando addestri un modello, un'epoca si riferisce a un passaggio completo attraverso l'intero dataset di addestramento. Durante un'epoca, il modello elabora ogni esempio nel set di addestramento una volta e aggiorna i suoi parametri basandosi sull'algoritmo di apprendimento. Solitamente sono necessarie più epoche per consentire al modello di apprendere e raffinare i suoi parametri nel tempo.

Una domanda comune che sorge è come determinare il numero di epoche per cui addestrare il modello. Un buon punto di partenza sono 300 epoche. Se il modello va in overfitting precocemente, puoi ridurre il numero di epoche. Se l'overfitting non si verifica dopo 300 epoche, puoi estendere l'addestramento a 600, 1200 o più epoche.

Tuttavia, il numero ideale di epoche può variare in base alla dimensione del tuo dataset e agli obiettivi del progetto. Dataset più grandi potrebbero richiedere più epoche affinché il modello apprenda efficacemente, mentre dataset più piccoli potrebbero necessitare di meno epoche per evitare l'overfitting. Per quanto riguarda YOLO26, puoi impostare il parametro epochs nel tuo script di addestramento.

Link to this sectionEarly Stopping#

L'early stopping è una tecnica preziosa per ottimizzare l'addestramento del modello. Monitorando le prestazioni di validazione, puoi interrompere l'addestramento una volta che il modello smette di migliorare. Puoi risparmiare risorse computazionali e prevenire l'overfitting.

Il processo prevede l'impostazione di un parametro di pazienza (patience) che determina quante epoche attendere per un miglioramento nelle metriche di validazione prima di interrompere l'addestramento. Se le prestazioni del modello non migliorano entro queste epoche, l'addestramento viene interrotto per evitare di sprecare tempo e risorse.

Early stopping to prevent model overfitting

Per YOLO26, puoi abilitare l'early stopping impostando il parametro di pazienza nella tua configurazione di addestramento. Ad esempio, patience=5 significa che l'addestramento si interromperà se non c'è alcun miglioramento nelle metriche di validazione per 5 epoche consecutive. Utilizzare questo metodo assicura che il processo di addestramento rimanga efficiente e raggiunga prestazioni ottimali senza calcoli eccessivi.

Link to this sectionScegliere tra addestramento in cloud e locale#

Ci sono due opzioni per addestrare il tuo modello: addestramento in cloud e addestramento locale.

L'addestramento in cloud offre scalabilità e hardware potente ed è ideale per gestire grandi dataset e modelli complessi. Piattaforme come Google Cloud, AWS e Azure forniscono accesso on-demand a GPU e TPU ad alte prestazioni, accelerando i tempi di addestramento e consentendo esperimenti con modelli più grandi. Tuttavia, l'addestramento in cloud può essere costoso, specialmente per lunghi periodi, e il trasferimento dei dati può aumentare i costi e la latenza.

L'addestramento locale fornisce maggiore controllo e personalizzazione, permettendoti di adattare il tuo ambiente alle esigenze specifiche ed evitare costi cloud continui. Può essere più economico per progetti a lungo termine e, poiché i tuoi dati rimangono on-premise, è più sicuro. Tuttavia, l'hardware locale può avere limitazioni di risorse e richiedere manutenzione, il che può portare a tempi di addestramento più lunghi per modelli grandi.

Link to this sectionSelezione di un ottimizzatore#

Un ottimizzatore è un algoritmo che regola i pesi della tua rete neurale per minimizzare la funzione di perdita, che misura quanto bene sta performando il modello. In termini semplici, l'ottimizzatore aiuta il modello ad apprendere modificando i suoi parametri per ridurre gli errori. Scegliere l'ottimizzatore giusto influisce direttamente sulla velocità e sulla precisione con cui il modello apprende.

Puoi anche ottimizzare i parametri dell'ottimizzatore per migliorare le prestazioni del modello. Regolare il learning rate imposta la dimensione dei passi durante l'aggiornamento dei parametri. Per stabilità, potresti iniziare con un learning rate moderato e diminuirlo gradualmente nel tempo per migliorare l'apprendimento a lungo termine. Inoltre, impostare il momentum determina quanta influenza hanno gli aggiornamenti passati su quelli attuali. Un valore comune per il momentum è circa 0.9. Generalmente fornisce un buon equilibrio.

Link to this sectionOttimizzatori comuni#

Diversi ottimizzatori hanno vari punti di forza e debolezza. Diamo un'occhiata a pochi ottimizzatori comuni.

  • SGD (Stochastic Gradient Descent):

    • Aggiorna i parametri del modello utilizzando il gradiente della funzione di perdita rispetto ai parametri.
    • Semplice ed efficiente ma può essere lento a convergere e potrebbe rimanere bloccato in minimi locali.
  • Adam (Adaptive Moment Estimation):

    • Combina i vantaggi sia di SGD con momentum che di RMSProp.
    • Regola il learning rate per ogni parametro basandosi su stime dei primi e secondi momenti dei gradienti.
    • Ben adatto a dati rumorosi e gradienti sparsi.
    • Efficiente e generalmente richiede meno tuning, rendendolo un ottimizzatore consigliato per YOLO26.
  • RMSProp (Root Mean Square Propagation):

    • Regola il learning rate per ogni parametro dividendo il gradiente per una media mobile delle magnitudini dei gradienti recenti.
    • Aiuta a gestire il problema del gradiente evanescente ed è efficace per le reti neurali ricorrenti.
  • MuSGD (Muon + SGD hybrid):

    • Combina aggiornamenti in stile SGD con un comportamento ispirato a Muon per una maggiore stabilità nell'addestramento su larga scala.
    • Una buona scelta quando desideri una generalizzazione simile a SGD ma hai bisogno di una convergenza più fluida rispetto a SGD standard.
    • Particolarmente rilevante per le ricette di addestramento di YOLO26; se non sei sicuro, inizia con optimizer=auto e confrontalo con MuSGD sul tuo dataset.

Per YOLO26, il parametro optimizer ti permette di scegliere tra vari ottimizzatori, inclusi SGD, MuSGD, Adam, AdamW, NAdam, RAdam e RMSProp, oppure puoi impostarlo su auto per la selezione automatica basata sulla configurazione del modello.

yolo train model=yolo26n.pt data=coco8.yaml optimizer=MuSGD

Link to this sectionConnettersi con la community#

Far parte di una community di appassionati di computer vision può aiutarti a risolvere problemi e imparare più velocemente. Ecco alcuni modi per connettersi, ottenere aiuto e condividere idee.

Link to this sectionRisorse della community#

  • GitHub Issues: Visita il repository GitHub di YOLO26 e utilizza la scheda Issues per porre domande, segnalare bug e suggerire nuove funzionalità. La community e i manutentori sono molto attivi e pronti ad aiutare.
  • Server Discord di Ultralytics: Unisciti al server Discord di Ultralytics per chattare con altri utenti e sviluppatori, ottenere supporto e condividere le tue esperienze.

Link to this sectionDocumentazione ufficiale#

  • Documentazione di Ultralytics YOLO26: Dai un'occhiata alla documentazione ufficiale di YOLO26 per guide dettagliate e consigli utili su vari progetti di computer vision.

Utilizzare queste risorse ti aiuterà a risolvere sfide e a rimanere aggiornato sulle ultime tendenze e pratiche nella community di computer vision.

Link to this sectionPunti chiave#

L'addestramento di modelli di computer vision comporta seguire buone pratiche, ottimizzare le tue strategie e risolvere problemi man mano che si presentano. Tecniche come la regolazione della dimensione del batch, l'addestramento a precisione mista e l'iniziazione con pesi preaddestrati possono far funzionare meglio i tuoi modelli e addestrarli più velocemente. Metodi come l'addestramento su sottoinsiemi e l'early stopping ti aiutano a risparmiare tempo e risorse. Rimanere connesso con la community e tenere il passo con le nuove tendenze ti aiuterà a continuare a migliorare le tue competenze di addestramento dei modelli.

Link to this sectionFAQ#

Link to this sectionCome posso migliorare l'utilizzo della GPU quando addestro un dataset di grandi dimensioni con Ultralytics YOLO?#

Per migliorare l'utilizzo della GPU, imposta il parametro batch nella tua configurazione di addestramento alla dimensione massima supportata dalla tua GPU. Questo garantisce di sfruttare appieno le capacità della GPU, riducendo i tempi di addestramento. Se riscontri errori di memoria, riduci gradualmente la dimensione del batch finché l'addestramento non viene eseguito senza problemi. Per YOLO26, impostare batch=-1 nel tuo script di addestramento determinerà automaticamente la dimensione del batch ottimale per un'elaborazione efficiente. Per ulteriori informazioni, consulta la configurazione dell'addestramento.

Link to this sectionCos'è l'addestramento a precisione mista e come lo abilito in YOLO26?#

L'addestramento a precisione mista utilizza sia tipi a virgola mobile a 16 bit (FP16) che a 32 bit (FP32) per bilanciare velocità di calcolo e precisione. Questo approccio accelera l'addestramento e riduce l'utilizzo di memoria senza sacrificare l' accuratezza del modello. Per abilitare l'addestramento a precisione mista in YOLO26, imposta il parametro amp su True nella tua configurazione di addestramento. Questo attiva l'addestramento Automatic Mixed Precision (AMP). Per maggiori dettagli su questa tecnica di ottimizzazione, vedi la configurazione di addestramento.

Link to this sectionIn che modo l'addestramento multiscala migliora le prestazioni del modello YOLO26?#

L'addestramento multiscala migliora le prestazioni del modello addestrandolo su immagini di dimensioni variabili, consentendo al modello di generalizzare meglio attraverso diverse scale e distanze. In YOLO26, puoi abilitare l'addestramento multiscala impostando il parametro scale nella configurazione di addestramento. Ad esempio, scale=0.5 campiona un fattore di zoom tra 0.5 e 1.5, poi riempie/ritaglia per tornare a imgsz. Questa tecnica simula oggetti a distanze diverse, rendendo il modello più robusto in vari scenari. Per le impostazioni e maggiori dettagli, dai un'occhiata alla configurazione di addestramento.

Link to this sectionCome posso utilizzare i pesi preaddestrati per accelerare l'addestramento in YOLO26?#

Utilizzare pesi preaddestrati può accelerare notevolmente l'addestramento e migliorare l'accuratezza del modello sfruttando un modello già familiare con caratteristiche visive fondamentali. In YOLO26, imposta semplicemente il parametro pretrained su True o fornisci un percorso ai tuoi pesi preaddestrati personalizzati nella configurazione di addestramento. Questo metodo, chiamato transfer learning, consente ai modelli addestrati su grandi dataset di essere adattati efficacemente alla tua applicazione specifica. Scopri di più su come utilizzare i pesi preaddestrati e sui loro benefici nella guida alla configurazione di addestramento.

Link to this sectionQual è il numero di epoche raccomandato per l'addestramento di un modello e come lo imposto in YOLO26?#

Il numero di epoche si riferisce ai passaggi completi attraverso il dataset di addestramento durante l'addestramento del modello. Un punto di partenza tipico sono 300 epoche. Se il tuo modello va in overfitting precocemente, puoi ridurre il numero. In alternativa, se l'overfitting non viene osservato, potresti estendere l'addestramento a 600, 1200 o più epoche. Per impostarlo in YOLO26, usa il parametro epochs nel tuo script di addestramento. Per ulteriori consigli sulla determinazione del numero ideale di epoche, consulta questa sezione sul numero di epoche.

Commenti