Reti neurali convoluzionali

 

Rete neurale convoluzionale

3 cose da sapere

Una rete neurale convoluzionale (CNN o ConvNet) è un’architettura di rete per il deep learning che apprende direttamente dai dati, eliminando la necessità di estrarre manualmente le feature.

Le CNN sono particolarmente utili per individuare pattern nelle immagini per il riconoscimento di oggetti, volti e scene. Inoltre, possono essere efficaci per la classificazione di dati non immagine come dati audio, serie storiche e segnali.

Le applicazioni che richiedono il riconoscimento di oggetti e la visione artificiale, come i veicoli a guida autonoma e le applicazioni di riconoscimento facciale, si basano ampiamente sulle CNN.

Cosa rende le CNN così utili?

L’utilizzo delle CNN per il deep learning è diffuso per via di tre fattori importanti:

  • Le CNN eliminano la necessità di estrarre manualmente le feature in quanto queste vengono apprese direttamente dalla CNN.
  • Le CNN producono risultati di riconoscimento ad alta precisione
  • Le CNN possono essere addestrate nuovamente per nuove attività di riconoscimento, consentendo agli utenti di basarsi sulle reti preesistenti.

Le CNN forniscono un’architettura ottimale per identificare e apprendere le feature chiave in dati immagine e serie storiche. Le CNN rappresentano una tecnologia chiave in applicazioni come:

  • Imaging biomedico: le CNN sono in grado di analizzare migliaia di esami medici per rilevare visivamente l’eventuale presenza di cellule tumorali nelle immagini.
  • Elaborazione audio: il rilevamento di parole chiave può essere utilizzato in qualsiasi dispositivo con un microfono al fine di rilevare quando viene pronunciata una certa parola o frase (“Ehi Siri!”). Le CNN sono in grado di apprendere e rilevare con precisione le parole chiave tralasciando tutto il resto, indipendentemente dall’ambiente.
  • Rilevamento dei segnali di stop: la guida autonoma sfrutta le CNN per rilevare con precisione la presenza di un segnale o altri oggetti e prendere decisioni in base all’output.
  • Generazione di dati sintetici: mediante l’utilizzo di reti generative avversarie (GAN) è possibile produrre nuove immagini da utilizzare in applicazioni di deep learning, tra cui il riconoscimento facciale e la guida autonoma.

Per saperne di più

Come funzionano le CNN

Una rete neurale convoluzionale può avere decine o centinaia di layer, ciascuno dei quali apprende feature diverse di un’immagine. A ciascuna immagine di addestramento vengono applicati dei filtri a diverse risoluzioni e l’output di ciascuna immagine convoluta viene utilizzato come input per il layer successivo. I filtri possono essere inizialmente feature molto semplici, ad esempio la luminosità o i bordi, e diventare sempre più complessi fino a includere feature che definiscono in modo univoco l’oggetto.

Apprendimento delle feature, layer e classificazione

Analogamente ad altre reti neurali, una CNN è costituita da un layer di input, un layer di output e tanti layer intermedi nascosti.

wsm-reboot-cnn-super-disc-neural-network

Questi layer eseguono operazioni che alterano i dati al fine di apprendere le feature specifiche dei dati stessi. Tre dei layer più diffusi sono: la convoluzione, l’attivazione o ReLU e il pooling.

  • La convoluzione sottopone le immagini di input a una serie di filtri convoluzionali, ciascuno dei quali attiva determinate feature dalle immagini.
  • L’unità lineare rettificata (ReLU) consente di eseguire un addestramento più rapido ed efficace mappando i valori negativi a zero e mantenendo quelli positivi. Questa operazione è talvolta definita attivazione, dal momento che solo le feature attivate vengono trasmesse al layer successivo.
  • Il pooling semplifica l’output mediante l’esecuzione di un downsampling non lineare, riducendo in tal modo il numero di parametri che la rete deve apprendere.

Queste operazioni vengono reiterate su decine o centinaia di layer e ciascun layer impara ad identificare feature diverse.

Esempio di una rete con numerosi layer convoluzionali. A ciascuna immagine di addestramento vengono applicati dei filtri a diverse risoluzioni e l’output di ciascuna immagine convoluta viene utilizzato come input per il layer successivo.

Esempio di una rete con numerosi layer convoluzionali. A ciascuna immagine di addestramento vengono applicati dei filtri a diverse risoluzioni e l’output di ciascuna immagine convoluta viene utilizzato come input per il layer successivo.

Bias e pesi condivisi

Analogamente a una rete neurale tradizionale, una CNN possiede neuroni con pesi e bias. Il modello apprende questi valori durante l’addestramento e li aggiorna costantemente con ogni nuovo esempio di addestramento. Tuttavia, nel caso delle CNN, i valori dei pesi e dei bias sono gli stessi per tutti i neuroni nascosti in un determinato layer.

Ciò significa che tutti i neuroni nascosti rilevano la stessa feature, come bordi o macchie, in diverse aree dell’immagine. Ciò rende la rete tollerante alla traslazione di oggetti in un’immagine. Ad esempio, una rete addestrata a riconoscere automobili sarà in grado di farlo indipendentemente dal tipo di automobile presente nell’immagine.

Layer di classificazione

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

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

L’ultimo layer dell’architettura CNN utilizza un layer di classificazione come una softmax per fornire l’output della classificazione.

Progettazione e addestramento di CNN con MATLAB

Utilizzando MATLAB® con Deep Learning Toolbox™ è possibile progettare, addestrare e distribuire CNN.

MATLAB offre una vasta serie di modelli pre-addestrati dalla community di deep learning utilizzabili per l’apprendimento e l’identificazione di feature da un nuovo set di dati. Questo metodo, chiamato transfer learning, è un modo conveniente per applicare il deep learning senza partire da zero. Modelli come GoogLeNet, AlexNet e Inception forniscono un punto di partenza per esplorare il deep learning e trarre vantaggio da architetture efficaci costruite da esperti.

Progettazione e addestramento di reti

Utilizzando Deep Network Designer, sarai in grado di importare modelli pre-addestrati o costruire nuovi modelli da zero.

L’app Deep Network Designer per la costruzione, visualizzazione e modifica interattive di reti di deep learning.

L’app Deep Network Designer per la costruzione, visualizzazione e modifica interattive di reti di deep learning.

È inoltre possibile addestrare le reti direttamente nell’app e monitorarne l’addestramento attraverso grafici di precisione, perdita e metriche di convalida.

Utilizzo di modelli pre-addestrati per il transfer learning

Ottimizzare una rete pre-addestrata mediante transfer learning è in genere una soluzione molto più rapida e semplice rispetto all’addestramento da zero. La quantità di dati e le risorse computazionali richieste sono minime. Il transfer learning utilizza le conoscenze derivanti da un tipo di problema per risolvere problemi simili. Si inizia con una rete pre-addestrata, che viene utilizzata per apprendere una nuova attività. Un vantaggio del transfer learning è che la rete pre-addestrata ha già appreso un esteso set di feature. Queste feature possono essere applicate a una vasta gamma di attività simili. Ad esempio, è possibile prendere una rete addestrata su milioni di immagini e riaddestrarla per una nuova classificazione di oggetti utilizzando solo centinaia di immagini.

Accelerazione hardware con GPU

Una rete neurale convoluzionale è addestrata su centinaia, migliaia o addirittura milioni di immagini. Quando si lavora con grandi quantità di dati e con architetture di rete complesse, le GPU possono accelerare notevolmente il tempo di elaborazione necessario per addestrare un modello.

GPU NVIDIA® per l’accelerazione di attività computazionalmente onerose come il deep learning.

GPU NVIDIA® per l’accelerazione di attività computazionalmente onerose come il deep learning.

Per saperne di più


Applicazioni con CNN

Rilevamento di oggetti

Il rilevamento di oggetti è il processo di identificazione e classificazione di oggetti in immagini e video. Computer Vision Toolbox™ offre framework di addestramento per creare rilevatori di oggetti basati sul deep learning con YOLO e Faster R-CNN.

Rilevamento di oggetti tramite deep learning

Rilevamento di oggetti tramite deep learning

Questo esempio mostra come addestrare un rilevatore di oggetti tramite deep learning e R-CNN (regioni con reti neurali convoluzionali).

Rilevamento di parole chiave

Un’applicazione esemplare del riconoscimento vocale è il rilevamento di parole chiave, che riconosce determinate parole o frasi chiave e le utilizza come riferimento. Esempi comuni di questa applicazione sono i dispositivi di sveglia e l’accensione di luci.

Rilevamento di parole chiave tramite deep learning

Rilevamento di parole chiave tramite deep learning

Questo esempio mostra come utilizzare MATLAB per identificare e rilevare la presenza di comandi vocali in audio ed è utilizzabile nelle tecnologie di assistenza vocale.

Segmentazione semantica

Le CNN sono utilizzate nella segmentazione semantica per identificare ciascun pixel presente nell’immagine con un’etichetta di classe corrispondente. La segmentazione semantica può essere utilizzata in applicazioni come la guida autonoma, l’ispezione industriale, la classificazione di terreni e l’imaging biomedico. Le reti neurali convoluzionali rappresentano il punto di partenza per la costruzione di reti di segmentazione semantica.

Segmentazione semantica tramite deep learning

Segmentazione semantica tramite deep learning

Questo esempio mostra come utilizzare MATLAB per costruire una rete di segmentazione semantica in grado di identificare ciascun pixel presente nell’immagine con un’etichetta corrispondente.

MATLAB fornisce strumenti e funzionalità per tutte le applicazioni di deep learning. Utilizza le CNN per supportare i workflow di elaborazione di segnali, visione artificiale o comunicazioni e radar.


Come saperne di più sulle CNN

I prodotti che supportano l’utilizzo di CNN per l’analisi delle immagini includono MATLABComputer Vision Toolbox™Statistics and Machine Learning Toolbox™Deep Learning Toolbox.

Le reti neurali convoluzionali richiedono Deep Learning Toolbox. L’addestramento e la previsione sono supportati da una GPU compatibile con CUDA®, dotata di una capacità di elaborazione pari o superiore a 3.0. L’utilizzo di una GPU è vivamente consigliato e richiede Parallel Computing Toolbox™.

Video

Esempi e consigli pratici

Riferimenti software