Rete Neurale Convoluzionale

3 cose da sapere

Che cos’è una rete neurale convoluzionale?

La rete neurale convoluzionale (CNN o ConvNet) è uno degli algoritmi più comuni per il deep learning, un tipo di machine learning in cui un modello computerizzato impara a svolgere attività di classificazione direttamente da immagini, video, testo o suoni.

Le CNN sono particolarmente utili per trovare pattern nelle immagini per riconoscere oggetti, volti e scene. Apprendono direttamente dai dati delle immagini, utilizzando i pattern per classificare le immagini ed eliminando la necessità dell’estrazione manuale delle feature.

Le applicazioni che richiedono il riconoscimento di oggetti e la visione artificiale, come ad esempio i veicoli a guida autonoma e le applicazioni di riconoscimento facciale, dipendono fortemente dalle CNN. A seconda dell’applicazione, è possibile creare una CNN da zero o utilizzare un modello pre-addestrato con il proprio set di dati.

Perché le CNN sono così utili?

L’utilizzo delle CNN per il deep learning è diventato sempre più comune grazie a tre fattori importanti:

  • Le CNN eliminano la necessità dell’estrazione manuale delle feature, poiché queste vengono apprese direttamente dalla CNN.
  • Le CNN producono risultati di riconoscimento all’avanguardia.
  • Le CNN possono essere ri-addestrate per nuove attività di riconoscimento, consentendo di sfruttare reti preesistenti.

Flusso di lavoro per il deep learning. Le immagini vengono passate alla CNN, che apprende automaticamente le feature e classifica gli oggetti.

Le CNN permettono di realizzare progressi nella rilevazione e nel riconoscimento degli oggetti

Le CNN forniscono un’architettura ottimale per il riconoscimento di immagini e la rilevazione dei pattern. Unite ai progressi delle GPU e del calcolo parallelo, le CNN sono una tecnologia chiave alla base dei nuovi sviluppi nella guida automatica e nel riconoscimento facciale.

Ad esempio, le applicazioni di deep learning utilizzano le CNN per esaminare migliaia di referti patologici per rilevare visivamente le cellule tumorali. Inoltre, le CNN consentono alle auto a guida autonoma di rilevare gli oggetti e imparare a distinguere tra un segnale stradale e un pedone. 

Per saperne di più

Come funzionano le CNN

Una rete neurale convoluzionale può avere decine o centinaia di layer, ognuno dei quali impara a rilevare le diverse feature di un’immagine. A ciascuna immagine, in diverse risoluzioni, vengono applicati filtri e l’output di ogni immagine convolta viene utilizzato come input per il layer successivo. I filtri possono essere inizialmente feature molto semplici, come la luminosità e i bordi, per assumere forme via via più complesse che definiscono in modo univoco l’oggetto.

Le CNN eseguono l’identificazione delle feature e la classificazione di immagini, testo, suoni e video.

Apprendimento delle feature, layer e classificazione

Come altre reti neurali, una CNN è composta da un layer di input, uno di output e vari layer nascosti nel mezzo.

Questi layer eseguono operazioni che alterano i dati con l’intento di apprendere le feature specifiche dei dati. Tre dei layer più comuni sono: convoluzione, attivazione o ReLU e pooling.

  • La convoluzione applica alle immagini di input una serie di filtri convoluzionali, ognuno dei quali attiva determinate feature delle immagini.
  • L’unità lineare rettificata (ReLU) consente un addestramento più rapido ed efficace mappando i valori negativi a zero e mantenendo valori positivi. Talvolta si parla di attivazione, perché solo le feature attivate vengono fatte passare al layer successivo.
  • Il pooling semplifica l’output eseguendo il sottocampionamento non lineare, riducendo il numero di parametri che la rete deve apprendere.

Queste operazioni vengono ripetute su decine o centinaia di layer, ognuno dei quali impara a identificare diverse feature.

Esempio di una rete con molti layer convoluzionali. A ciascuna immagine, in diverse risoluzioni, vengono applicati filtri e l’output di ogni immagine convolta viene utilizzato come input per il layer successivo.

Layer di classificazione

Dopo aver appreso le feature in vari layer, l’architettura di una CNN passa alla classificazione.

Il penultimo layer è un layer completamente connesso che genera un vettore di dimensioni K in cui K è il numero di classi che la rete sarà in grado di prevedere. Questo vettore contiene le probabilità per ogni classe di qualsiasi immagine classificata.

Il layer finale dell’architettura CNN utilizza un layer di classificazione come softmax per fornire l’output di classificazione. 

Accelerazione hardware con GPU

Una rete neurale convoluzionale viene addestrata su centinaia, migliaia o persino milioni di immagini. Quando si lavora con grandi quantità di dati e architetture di rete complesse, le GPU possono velocizzare significativamente il tempo di elaborazione necessario per addestrare un modello. Una volta che una CNN è stata addestrata, può essere impiegata nelle applicazioni in tempo reale, quale il rilevamento di pedoni nei sistemi avanzati di assistenza al conducente (ADAS).

Usare MATLAB con una CNN

L’utilizzo di MATLAB® con Neural Network Toolbox™ consente di addestrare la propria CNN da zero o utilizzare un modello pre-addestrato per eseguire il transfer learning.

Il metodo scelto dipende dalle risorse disponibili e dal tipo di applicazione che si sta realizzando.

Per addestrare una rete da zero, l’architetto deve definire il numero di layer e filtri, oltre ad altri parametri regolabili. L’addestramento di un modello preciso da zero prevede anche l’uso di grosse masse di dati, dell’ordine di milioni di campioni, il che può richiedere una quantità enorme di tempo.

Un’alternativa comune all’addestramento di una CNN da zero è l’utilizzo di un modello pre-addestrato per estrarre automaticamente le feature da un nuovo set di dati. Questo metodo, denominato transfer learning, è un modo conveniente per applicare il deep learning senza un enorme set di dati e lunghi tempi di calcolo e addestramento. 

Addestramento da zero

Creare una rete da zero significa poter determinare la configurazione di rete. Questo approccio offre il massimo controllo sulla rete e può produrre risultati notevoli, ma richiede una conoscenza approfondita della struttura di una rete neurale e delle numerose opzioni relative ai tipi di layer e alla configurazione.

Sebbene i risultati possano a volte superare quelli del transfer learning (vedere sotto), questo metodo tende a richiedere più immagini per l’addestramento, in quanto la nuova rete ha bisogno di numerosi esempi dell’oggetto per comprendere la variazione delle feature. I tempi di addestramento sono spesso più lunghi e la quantità di combinazioni di layer di rete esistenti può rendere la configurazione della rete da zero un’operazione molto complessa. In genere, quando si realizza una rete e si organizzano i layer, è utile fare riferimento ad altre configurazioni di rete per sfruttare le soluzioni che si sono dimostrate efficaci dalle ricerche. 

Per saperne di più

Usare modelli pre-addestrati per il transfer learning

L’affinamento di una rete pre-addestrata con il transfer learning è in genere molto più rapido e semplice rispetto all’addestramento da zero. Richiede una quantità minima di dati e risorse di calcolo. Il transfer learning utilizza la conoscenza di un tipo di problema per risolvere problemi analoghi. Si inizia con una rete pre-addestrata e la si utilizza per apprendere una nuova attività.  Uno dei vantaggi del transfer learning è che la rete pre-addestrata ha già acquisito un nutrito insieme di feature. Queste feature possono essere applicate a una vasta gamma di altre attività simili. Ad esempio, si può prendere una rete addestrata su milioni di immagini e ri-addestrarla per la classificazione di nuovi oggetti utilizzando solo centinaia di immagini.

Con Neural Network Toolbox, è possibile eseguire il transfer learning con modelli CNN pre-addestrati (come GoogLeNet, AlexNet, vgg16, vgg19) e modelli di Caffe e TensorFlow-Keras.

Per saperne di più

Applicazioni che impiegano le CNN

Rilevazione di oggetti

La rilevazione di oggetti è il processo di individuazione e classificazione di oggetti in immagini e video. Computer Vision System Toolbox™ fornisce framework di addestramento per creare rilevatori di oggetti basati sul deep learning utilizzando R-CNN (CNN basata sulla regione), Fast R-CNN e Faster R-CNN.

È possibile utilizzare le tecniche di machine learning di Statistics and Machine Learning Toolbox™ con Computer Vision System Toolbox per creare sistemi di riconoscimento di oggetti.

Neural Network Toolbox fornisce funzioni per costruire e addestrare le CNN, oltre a effettuare previsioni con un modello CNN addestrato.

Questo esempio mostra come addestrare un rilevatore di oggetti mediante deep learning e R-CNN (regioni con reti neurali convoluzionali).
Questo esempio mostra come addestrare un rilevatore di oggetti utilizzando una tecnica di deep learning denominata Faster R-CNN (regioni con reti neurali convoluzionali).

Come saperne di più sulle CNN

I prodotti che supportano l’uso delle CNN per l’analisi di immagini includono MATLAB®, Computer Vision System Toolbox™, Statistics and Machine Learning Toolbox™ e Neural Network Toolbox™.

Le reti neurali convoluzionali richiedono Neural Network Toolbox. L’addestramento e la previsione sono supportate su una GPU CUDA® con capacità di calcolo versione 3.0 o successive. Si consiglia l’uso di una GPU, che richiede Parallel Computing Toolbox™

Riferimenti software

Prova gratuita

30 giorni di esplorazione a tua disposizione.

Hai domande?

Consulta un esperto di deep learning.