Vai al contenuto

Migliori pratiche di apprendimento automatico e suggerimenti per l'addestramento dei modelli

Introduzione

Una delle fasi più importanti quando si lavora a un progetto di computer vision è l'addestramento del modello. Prima di arrivare a questa fase, è necessario definire gli obiettivi e raccogliere e annotare i dati. Dopo aver preelaborato i dati per assicurarsi che siano puliti e coerenti, si può passare all'addestramento del modello.



Guarda: Suggerimenti per l'addestramento del modello | Come gestire grandi insiemi di dati | Dimensione del batch, utilizzo di GPU e Precisione mista

Che cos'è l'addestramento del modello? L'addestramento del modello è il processo che insegna al modello a riconoscere gli schemi visivi e a fare previsioni sulla base dei dati. Ha un impatto diretto sulle prestazioni e sull'accuratezza dell'applicazione. In questa guida, tratteremo le migliori pratiche, le tecniche di ottimizzazione e i suggerimenti per la risoluzione dei problemi per aiutarvi ad addestrare efficacemente i vostri modelli di computer vision.

Come addestrare un modello di apprendimento automatico

Un modello di computer vision viene addestrato regolando i suoi parametri interni per minimizzare gli errori. Inizialmente, il modello viene alimentato con un'ampia serie di immagini etichettate. Fa delle previsioni su ciò che è presente 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 siano lontane dai valori reali.

Durante l'addestramento, il modello effettua iterativamente delle previsioni, calcola gli errori e aggiorna i suoi parametri attraverso un processo chiamato backpropagation. In questo processo, il modello regola i suoi parametri interni (weights and biases) per ridurre gli errori. Ripetendo questo ciclo più volte, il modello migliora gradualmente la sua accuratezza. Con il tempo, impara a riconoscere modelli complessi come forme, colori e strutture.

Che cos'è la retropropagazione?

Questo processo di apprendimento consente al modello di visione computerizzata di eseguire diversi compiti, tra cui il rilevamento degli oggetti, la segmentazione delle istanze e la classificazione delle immagini. L'obiettivo finale è quello di creare un modello in grado di generalizzare il suo apprendimento a nuove immagini non viste, in modo da poter comprendere accuratamente i dati visivi nelle applicazioni del mondo reale.

Ora che sappiamo cosa succede dietro le quinte quando addestriamo un modello, esaminiamo i punti da considerare quando si addestra un modello.

Formazione su grandi insiemi di dati

Quando si intende utilizzare un set di dati di grandi dimensioni per addestrare un modello, è necessario considerare alcuni aspetti diversi. Ad esempio, è possibile regolare la dimensione del batch, controllare l'utilizzo di GPU , scegliere di utilizzare l'addestramento multiscala, ecc. Esaminiamo in dettaglio ciascuna di queste opzioni.

Dimensione del lotto e utilizzo di GPU

Quando si addestrano modelli su dataset di grandi dimensioni, è fondamentale utilizzare in modo efficiente il sito GPU . La dimensione del batch è un fattore importante. Si tratta del numero di campioni di dati che un modello di apprendimento automatico elabora in una singola iterazione di addestramento. Utilizzando la dimensione massima del batch supportata da GPU, è possibile sfruttare appieno le sue capacità e ridurre i tempi di addestramento del modello. Tuttavia, bisogna evitare di esaurire la memoria di GPU . Se si verificano errori di memoria, ridurre gradualmente la dimensione del batch finché il modello non si addestra senza problemi.

Per quanto riguarda YOLO11, è possibile impostare il parametro batch_size nel parametro configurazione della formazione per adattarsi alla capacità di GPU . Inoltre, l'impostazione batch=-1 nello script di addestramento determinerà automaticamente il Dimensione del lotto che possono essere elaborati in modo efficiente in base alle capacità del dispositivo. Regolando con precisione le dimensioni dei batch, è possibile sfruttare al meglio le risorse di GPU e migliorare il processo di formazione complessivo.

Formazione di sottoinsiemi

L'addestramento di sottoinsiemi è una strategia intelligente che prevede l'addestramento del modello su un insieme di dati più piccolo che rappresenta il set di dati più grande. Può far risparmiare tempo e risorse, soprattutto durante lo sviluppo iniziale del modello e i test. Se si ha poco tempo a disposizione o si stanno sperimentando diverse configurazioni del modello, la formazione in sottoinsiemi è una buona opzione.

Per quanto riguarda YOLO11, è possibile implementare facilmente l'addestramento dei sottoinsiemi utilizzando il metodo fraction parametro. Questo parametro consente di specificare la frazione del set di dati da utilizzare per l'addestramento. Ad esempio, impostando fraction=0.1 addestra il modello sul 10% dei dati. Questa tecnica può essere utilizzata per iterazioni rapide e per la messa a punto del modello prima di impegnarsi nell'addestramento di un modello utilizzando un set di dati completo. L'addestramento di sottoinsiemi aiuta a fare progressi rapidi e a identificare i potenziali problemi in anticipo.

Formazione multiscala

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

Ad esempio, quando si addestra YOLO11, si può abilitare l'addestramento multiscala impostando il parametro scale parametro. Questo parametro regola le dimensioni delle immagini di addestramento in base a un fattore specificato, simulando oggetti a distanze diverse. Ad esempio, impostando scale=0.5 ridurrà le dimensioni dell'immagine della metà, mentre scale=2.0 raddoppierà. La configurazione di questo parametro consente al modello di sperimentare una varietà di scale di immagini e di migliorare le sue capacità di rilevamento per oggetti di dimensioni e scenari diversi.

Caching

La cache è una tecnica importante per migliorare l'efficienza dell'addestramento dei modelli di apprendimento automatico. Memorizzando le immagini pre-elaborate in memoria, la cache riduce il tempo che GPU impiega in attesa del caricamento dei dati dal disco. Il modello può ricevere continuamente i dati senza i ritardi causati dalle operazioni di I/O su disco.

La cache può essere controllata durante l'addestramento di YOLO11 utilizzando il metodo cache parametro:

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

Allenamento misto di precisione

L'allenamento a precisione mista utilizza sia i tipi a virgola mobile a 16 bit (FP16) che a 32 bit (FP32). I punti di forza di FP16 e FP32 vengono sfruttati utilizzando FP16 per un calcolo più veloce e FP32 per mantenere la precisione dove necessario. La maggior parte delle operazioni della rete neurale viene eseguita in FP16 per beneficiare di una maggiore velocità di calcolo e di un minore utilizzo della memoria. Tuttavia, una copia master dei pesi del modello viene mantenuta in FP32 per garantire la precisione durante le fasi di aggiornamento dei pesi. È possibile gestire modelli più grandi o batch di dimensioni maggiori con gli stessi vincoli hardware.

Panoramica dell'allenamento misto di precisione

Per implementare l'addestramento a precisione mista, è necessario modificare gli script di addestramento e assicurarsi che l'hardware (come le GPU) lo supporti. Molti framework moderni per l 'apprendimento profondo, come ad esempio Tensorflowoffrono un supporto integrato per la precisione mista.

L'addestramento a precisione mista è semplice quando si lavora con YOLO11. È possibile utilizzare il metodo amp nella configurazione dell'addestramento. Impostazione amp=True consente l'addestramento automatico a precisione mista (AMP). La formazione a precisione mista è un modo semplice ma efficace per ottimizzare il processo di formazione dei modelli.

Pesi pre-addestrati

L'uso di pesi pre-addestrati è un modo intelligente per accelerare il processo di addestramento del modello. I pesi pre-addestrati provengono da modelli già addestrati su grandi insiemi di dati, dando al modello un vantaggio. L'apprendimento per trasferimento adatta i modelli pre-addestrati a nuovi compiti correlati. La messa a punto di un modello pre-addestrato consiste nel partire da questi pesi per poi continuare l'addestramento sul set di dati specifico. Questo metodo di addestramento consente tempi di addestramento più rapidi e spesso prestazioni migliori, perché il modello parte da una solida conoscenza delle caratteristiche di base.

Il pretrained Il parametro rende facile l'apprendimento per trasferimento con YOLO11. Impostazione pretrained=True utilizzerà i pesi preaddestrati di default, oppure è possibile specificare un percorso per un modello preaddestrato personalizzato. L'uso di pesi pre-addestrati e dell'apprendimento per trasferimento aumenta efficacemente le capacità del modello e riduce i costi di addestramento.

Altre tecniche da considerare quando si gestisce un grande insieme di dati

Ci sono un paio di altre tecniche da considerare quando si gestisce un set di dati di grandi dimensioni:

  • Programmatori del tasso di apprendimento: L'implementazione di schedulatori del tasso di apprendimento regola dinamicamente il tasso di apprendimento durante l'addestramento. Un tasso di apprendimento ben regolato può evitare che il modello superi i minimi e migliorare la stabilità. Durante l'addestramento YOLO11, il lrf aiuta a gestire la programmazione del tasso di apprendimento, impostando il tasso di apprendimento finale come una frazione del tasso iniziale.
  • Formazione distribuita: Per gestire insiemi di dati di grandi dimensioni, la formazione distribuita può essere una svolta. È possibile ridurre il tempo di formazione distribuendo il carico di lavoro su più GPU o macchine.

Il numero di epoche per le quali allenarsi

Quando si addestra un modello, un'epoca si riferisce a un passaggio completo attraverso l'intero set di dati di addestramento. Durante un'epoch, il modello elabora ogni esempio del set di addestramento una volta e aggiorna i suoi parametri in base all'algoritmo di apprendimento. Di solito sono necessarie più epoche per consentire al modello di apprendere e perfezionare i suoi parametri nel tempo.

Una domanda comune che viene posta è come determinare il numero di epoche per cui addestrare il modello. Un buon punto di partenza è 300 epoche. Se il modello si adatta troppo presto, si può ridurre il numero di epoch. Se l 'overfitting non si verifica dopo 300 epoch, si può estendere l'addestramento a 600, 1200 o più epoch.

Tuttavia, il numero ideale di epoch può variare in base alle dimensioni del dataset e agli obiettivi del progetto. I dataset più grandi potrebbero richiedere più epoch per un apprendimento efficace del modello, mentre quelli più piccoli potrebbero necessitare di un numero inferiore di epoch per evitare l'overfitting. Per quanto riguarda YOLO11, è possibile impostare il parametro epochs nello script di addestramento.

Arresto anticipato

L'arresto anticipato è una tecnica preziosa per ottimizzare la formazione del modello. Monitorando le prestazioni della validazione, è possibile interrompere l'addestramento quando il modello non migliora più. In questo modo è possibile risparmiare risorse di calcolo e prevenire l'overfitting.

Il processo prevede l'impostazione di un parametro di pazienza che determina il numero di epoche in cui attendere un miglioramento delle 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.

Panoramica sull'interruzione anticipata

Per YOLO11, è possibile attivare l'arresto anticipato impostando il parametro pazienza nella configurazione dell'addestramento. Ad esempio, patience=5 significa che l'addestramento si interrompe se non c'è alcun miglioramento nelle metriche di validazione per 5 epoche consecutive. L'uso di questo metodo garantisce che il processo di addestramento rimanga efficiente e raggiunga prestazioni ottimali senza eccessivi calcoli.

Scelta tra formazione in cloud e locale

Esistono due opzioni per l'addestramento del modello: l'addestramento nel cloud e l'addestramento locale.

La formazione in cloud offre scalabilità e hardware potente ed è ideale per gestire grandi insiemi di dati 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 formazione e consentendo esperimenti con modelli più grandi. Tuttavia, l'addestramento in cloud può essere costoso, soprattutto per lunghi periodi, e il trasferimento dei dati può aumentare i costi e la latenza.

La formazione locale offre un maggiore controllo e personalizzazione, consentendo di adattare l'ambiente alle esigenze specifiche e di evitare i costi continui del cloud. Può essere più economico per i progetti a lungo termine e, poiché i dati rimangono in sede, è più sicuro. Tuttavia, l'hardware locale può avere limitazioni di risorse e richiedere manutenzione, il che può comportare tempi di formazione più lunghi per i modelli di grandi dimensioni.

Selezione di un ottimizzatore

L'ottimizzatore è un algoritmo che regola i pesi della rete neurale per minimizzare la funzione di perdita, che misura il rendimento del modello. In termini più semplici, l'ottimizzatore aiuta il modello ad apprendere modificando i suoi parametri per ridurre gli errori. La scelta dell'ottimizzatore giusto influisce direttamente sulla velocità e sulla precisione di apprendimento del modello.

È inoltre possibile regolare con precisione i parametri dell'ottimizzatore per migliorare le prestazioni del modello. La regolazione del tasso di apprendimento stabilisce la dimensione dei passi nell'aggiornamento dei parametri. Per garantire la stabilità, si potrebbe iniziare con un tasso di apprendimento moderato e diminuirlo gradualmente nel tempo per migliorare l'apprendimento a lungo termine. Inoltre, l'impostazione del momentum determina l'influenza degli aggiornamenti passati sugli aggiornamenti attuali. Un valore comune per la quantità di moto è circa 0,9. In genere, questo valore fornisce un buon equilibrio. In genere fornisce un buon equilibrio.

Ottimizzatori comuni

I diversi ottimizzatori hanno diversi punti di forza e di debolezza. Diamo un'occhiata ad alcuni 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 bloccarsi in minimi locali.
  • Adam (Adaptive Moment Estimation):

    • Combina i vantaggi di SGD con slancio e RMSProp.
    • Regola il tasso di apprendimento per ogni parametro in base alle stime del primo e del secondo momento dei gradienti.
    • Adatta a dati rumorosi e a gradienti scarsi.
    • Efficiente e generalmente richiede una minore messa a punto, il che lo rende un ottimizzatore consigliato per YOLO11.
  • RMSProp (Root Mean Square Propagation):

    • Regola il tasso di apprendimento per ogni parametro dividendo il gradiente per una media mobile delle grandezze dei gradienti recenti.
    • Aiuta a gestire il problema del gradiente che svanisce ed è efficace per le reti neurali ricorrenti.

Per YOLO11, il optimizer Il parametro consente di scegliere tra vari ottimizzatori, tra cui SGD, Adam, AdamW, NAdam, RAdam e RMSProp, oppure può essere impostato su auto per la selezione automatica in base alla configurazione del modello.

Collegamento con la comunità

Far parte di una comunità di appassionati di computer vision può aiutare a risolvere i problemi e a imparare più rapidamente. Ecco alcuni modi per connettersi, ricevere aiuto e condividere idee.

Risorse comunitarie

Documentazione ufficiale

L'utilizzo di queste risorse vi aiuterà a risolvere le sfide e a rimanere aggiornati sulle ultime tendenze e pratiche della comunità della computer vision.

Punti di forza

L'addestramento dei modelli di visione computerizzata comporta l'adozione di buone pratiche, l'ottimizzazione delle strategie e la risoluzione dei problemi che si presentano. Tecniche come la regolazione delle dimensioni dei batch, l'addestramento a precisione mista e l'avvio con pesi pre-addestrati possono far funzionare meglio e addestrare più rapidamente i modelli. Metodi come l'addestramento di sottoinsiemi e l'arresto anticipato aiutano a risparmiare tempo e risorse. Rimanere in contatto con la comunità e seguire le nuove tendenze vi aiuterà a migliorare le vostre capacità di addestramento dei modelli.

FAQ

Come si può migliorare l'utilizzo di GPU quando si addestra un grande insieme di dati con Ultralytics YOLO ?

Per migliorare l'utilizzo di GPU , impostare il parametro batch_size nella configurazione di addestramento alla dimensione massima supportata da GPU. In questo modo si sfrutta appieno la capacità di GPU e si riduce il tempo di addestramento. Se si verificano errori di memoria, ridurre gradualmente la dimensione del batch fino a quando l'addestramento non si svolge senza problemi. Per YOLO11, impostare batch=-1 nello script di addestramento determinerà automaticamente la dimensione ottimale del batch per un'elaborazione efficiente. Per ulteriori informazioni, consultare la sezione configurazione della formazione.

Che cos'è l'allenamento misto di precisione e come si attiva in YOLO11?

L'addestramento a precisione mista utilizza tipi a virgola mobile a 16 bit (FP16) e a 32 bit (FP32) per bilanciare velocità di calcolo e precisione. Questo approccio accelera l'addestramento e riduce l'uso della memoria senza sacrificare il modello. precisione. Per abilitare l'addestramento a precisione mista in YOLO11, impostare amp a True nella configurazione dell'allenamento. In questo modo si attiva l'addestramento automatico di precisione mista (AMP). Per maggiori dettagli su questa tecnica di ottimizzazione, consultare la sezione configurazione della formazione.

In che modo l'addestramento multiscala migliora le prestazioni del modello YOLO11 ?

L'addestramento multiscala migliora le prestazioni del modello grazie all'addestramento su immagini di dimensioni diverse, consentendo al modello di generalizzare meglio su scale e distanze diverse. In YOLO11, è possibile abilitare l'addestramento multiscala impostando l'opzione scale nella configurazione di addestramento. Ad esempio, scale=0.5 riduce le dimensioni dell'immagine della metà, mentre scale=2.0 raddoppia. Questa tecnica simula oggetti a distanze diverse, rendendo il modello più robusto in vari scenari. Per le impostazioni e ulteriori dettagli, consultare il sito configurazione della formazione.

Come si possono utilizzare i pesi pre-addestrati per accelerare l'addestramento in YOLO11?

L'uso di pesi pre-addestrati può ridurre significativamente i tempi di addestramento e migliorare le prestazioni del modello, partendo da un modello che già comprende le caratteristiche di base. In YOLO11, è possibile impostare il valore pretrained a True o specificare un percorso per i pesi preaddestrati personalizzati nella configurazione dell'addestramento. Questo approccio, noto come apprendimento per trasferimento, sfrutta la conoscenza di grandi insiemi di dati per adattarsi a un compito specifico. Per saperne di più sui pesi pre-addestrati e sui loro vantaggi qui.

Il numero di epoche si riferisce ai passaggi completi attraverso il dataset di addestramento durante la formazione del modello. Un punto di partenza tipico è 300 epoche. Se il modello si adatta troppo presto, si può ridurre il numero. In alternativa, se non si osserva overfitting, si può estendere l'addestramento a 600, 1200 o più epoche. Per impostare questo valore in YOLO11, si può usare l'opzione epochs nello script di addestramento. Per ulteriori consigli sulla determinazione del numero ideale di epoche, consultare questa sezione su numero di epoche.

📅C reato 5 mesi fa ✏️ Aggiornato 1 mese fa

Commenti