Best Practice: Addestramento di una rete neurale basata sull'apprendimento approfondito

Introduzione

Il fattore principale che determina l'efficacia di un sistema basato sull'apprendimento approfondito è il set di dati utilizzato per l'addestramento. Un set di dati di alta qualità migliora l'accuratezza e la velocità dell'inferenza, riduce le risorse di sistema e accelera il processo di apprendimento.

If developers need to run deep learning inference on a system with highly limited resources, they can optimize the trained neural network accordingly and eliminate the need for a host system. Much smaller devices like the upcoming FLIR® Firefly® camera can run inference based on your deployed neural network on its integrated Movidius™ Myriad™ 2 processing unit.

This article describes how to develop a dataset for classifying and sorting images into categories, which is the best starting point for users new to deep learning.

 

Quanti dati sono necessari per l'addestramento?

 La quantità di dati necessari dipende dai seguenti fattori:

  1. Numero di categorie di dati da riconoscere, ad esempio “mela”, “foglia”, “ramo”.
  2. Somiglianza fra le categorie tra cui distinguere: ad esempio riconoscere “mela” rispetto a “pera” è più difficile       di “mela” rispetto a “foglia”.
  3. Variazioni all'interno di ogni categoria, ad esempio mele di diversi colori e forme, per una maggior tolleranza alle variazioni in situazioni reali.
  4. Variazioni indesiderate dei dati relativi alle immagini, ad esempio rumore, differenze nel bilanciamento del bianco, luminosità, contrasto, dimensioni dell'oggetto, angolazione, etc.

 

Alcune centinaia di immagini possono essere sufficienti per ottenere risultati accettabili, mentre le applicazioni più complesse possono richiedere oltre un milione di immagini. Il modo migliore per determinare i requisiti di addestramento della rete è raccogliere dati e utilizzarli per testare il modello. Anche imbattersi in problemi come  quello che state cercando di risolvere può fornire un buon punto di partenza per stimare la dimensione del set di dati.

Infine, la rete raggiungerà un punto in cui l'aggiunta di altri dati non migliora l'accuratezza del modello. È improbabile che il modello raggiunga un'accuratezza del 100%, a prescindere dalla dimensione del set di dati usato per l'addestramento. Comprendere qual è il gusto equilibrio fra velocità e precisione richiesti da una specifica applicazione vi aiuterà a determinare se sono necessari ulteriori dati per l'addestramento.

 

 

Test con dati di convalida

Il set di dati dev'essere sufficientemente ampio da fornire dati di convalida che verranno utilizzati per valutare l'accuratezza e la velocità della rete al termine dell'addestramento. Queste immagini dovrebbero essere selezionate in modo casuale dal set di dati per garantire che siano il più possibile rappresentative.

In caso di set di dati ridotti, mancanza di tempo o scarsa potenza di elaborazione, le prestazioni di riconoscimento possono essere determinate tramite una convalida incrociata. In questo caso il set di dati viene diviso, ad esempio, in cinque segmenti casuali. Dopodiché, la rete neurale viene addestrata con quattro segmenti e convalidata utilizzando il rimanente. Questo addestramento e successiva convalida vengono ripetuti per tutte le cinque combinazioni di segmenti di addestramento e convalida. La media delle percentuali di riconoscimento indica le prestazioni attese. La deviazione standard indica quanto sia rappresentativo il set di dati.

 

Miglioramento del set di dati

L'apprendimento approfondito è un processo ripetitivo. Le reti effettuano previsioni sui dati di addestramento che vengono usate per il miglioramento della rete. Questo processo viene ripetuto finché la rete non raggiunge il livello di accuratezza desiderato. Più il set di dati è ampio, più vengono presentate possibili variazioni all'algoritmo per l'apprendimento approfondito. Set di dati molto ridotti non forniscono informazioni sufficienti affinché l'algoritmo possa funzionare in modo corretto. Come risultato, si possono osservare buone prestazioni di riconoscimento sul set di dati ma un tasso di riconoscimento analogo alla probabilità statistica di individuare casualmente sui dati di convalida. Una fase di acquisizione ben pianificata dei dati di addestramento, che produca immagini etichettate in modo accurato con variazioni non necessarie ridotte al minimo, riduce le necessità di addestramento e ne sveltisce il processo, oltre a migliorare l'accuratezza e la velocità dell'inferenza.

 

Minimizzazione delle differenze fra immagini di addestramento e immagini prodotte

La cattura di immagini con gli stessi sistemi ottici, telecamere e illuminazione utilizzati dal futuro sistema di produzione di immagini elimina la necessità di compensare differenza di forma geometrica, illuminazione e risposta allo spettro fra le immagini usate per l'addestramento e i dati reali. L'utilizzo di telecamere di alta qualità con sensori Pregius®, interfacce GenICam® e ricche funzionalità GPIO rende più facile automatizzare l'acquisizione di set di dati di buona qualità per l'addestramento.

 

Utilizzo di ambienti controllati per la riduzione del set di dati

 Un buon set di dati include esempi di variazioni attese e minimizza le variazioni eliminabili attraverso la progettazione del sistema. Ad esempio, l'ispezione delle mele ancora sull'albero è molto più complessa rispetto all'ispezione delle stesse mele su un nastro trasportatore. Un sistema esterno dev'essere addestrato a riconoscere mele poste a distanze, orientamenti e angolazioni diversi e deve tener conto delle condizioni di illuminazione e delle condizioni meteorologiche. Il modello richiederebbe un set di dati imponente per fornire prestazioni sistematiche.

La cattura di immagini delle mele in un ambiente controllato consente agli sviluppatori di sistema di eliminare numerose cause di variazioni e ottenere inferenze altamente accurate utilizzando un set di dati decisamente più ridotto. Ciò, a sua volta, riduce le dimensioni della rete e consente l'esecuzione su hardware compatto e autonomo, come la Firefly FLIR supportata da Movidius Myriad 2 Intel.

desc    

Fig. 1. Le immagini catturate in condizioni controllate (A) hanno minor variabilità rispetto a quelle catturate in condizioni non controllate (B).

 

Miglioramento dei risultati grazie a dati etichettati in modo accurato

Le etichette vengono usate per testare le previsioni effettuate durante l'addestramento. Le etichette devono rappresentare le immagini a cui appartengono; etichette inaccurate o con molto “rumore” sono un problema diffuso se si utilizzano set di dati assemblati utilizzando ricerche di immagini in internet. Etichettare i nomi dei file delle immagini è una buona idea per ridurre possibili confusioni nella gestione e nell'utilizzo dei dati di addestramento.

       

Fig. 2. Esempi di immagini ben selezionate (A) e mal selezionate (B) per la categoria “mela”.

 

Etichettare i dati per la segmentazione è molto più complesso e richiede molto più tempo rispetto alla classificazione.

Fig. . Etichettare i dati per la segmentazione è molto più complesso rispetto alla classificazione.

 

Miglioramento della qualità e della quantità di un set di dati esistente

Incremento per espandere il set di dati

Alcuni sistemi, come quelli utilizzati per ispezionare la frutta, esaminano oggetti il cui orientamento non è controllato. Per tali sistemi l'incremento dei dati è un modo utile per espandere rapidamente il set di dati usando trasformazioni affini e proiettive. Anche la trasformazione del colore può esporre la rete a una maggior varietà di immagini. Gli sviluppatori devono tagliare immagini trasformate per mantenere le dimensioni di input di cui la rete neurale necessita.

Fig. 5. Esempi di trasformazioni includono rotazione, scaling e taglio.

Normalizzazione per una maggior accuratezza

La normalizzazione dei dati rende più efficiente l'addestramento della rete neurale.  Le immagini normalizzate sembrano innaturali all'occhio umano, ma sono più efficaci per addestrare accuratamente una rete neurale. Gli sviluppatori possono normalizzare pixel e valori numerici allo stesso modo.

          

Fig. 6. Immagine originale (A) e immagine ottenuta con il metodo di normalizzazione Y = (x - x.mean()) / x.std()

 

Dati sintetici

In situazioni che richiedono grandi quantità di dati per l'addestramento che non possono essere creati utilizzando l'incremento del set di dati, i dati sintetici si rivelano uno strumento molto utile. I dati sintetici sono immagini generate artificialmente che possono essere utilizzate per generare velocemente grandi quantità di dati pre-etichettati perfettamente segmentati. Tuttavia, i soli dati sintetici non sono sufficienti per addestrare una rete che fornisca risultati accurati.  Migliorare la realisticità dei dati sintetici richiede un'ulteriore elaborazione.

 

Conclusione

Un set di dati di alta qualità migliora l'accuratezza e la velocità dell'inferenza, riduce le risorse di sistema e accelera il processo di apprendimento. Esistono metodi per incrementare sia la quantità che la qualità del set di dati. La telecamera Firefly FLIR è un'ottima soluzione per gli sviluppatori che desiderano minimizzare le dimensioni del sistema, ottenere inferenze altamente accurate, acquisire set di dati per l'addestramento e implementare la propria rete neurale.

Ulteriori informazioni su www.flir.com/firefly.

 

Articoli correlati