Come funziona una rete neurale CNN (convolutional Neural Network): “CNN cos’è” ?

AI, INFORMATICA, INTELLIGENZA ARTIFICIALE

Rete neurale convoluzionale

Una rete neurale convoluzionale (CNN o ConvNet dall’inglese convolutional neural network) è un tipo di rete neurale di tipo  feed-forward ispirata all’organizzazione della corteccia visiva.

Come vedremo in seguito, una rete CNN è una rete costituita da più stadi e similarmente a quanto succede nella corteccia visiva ogni stadio è specializzato a fare cose diverse. Senza entrare nel dettaglio,infatti,  possiamo affermare che il cervello umano opera delle semplificazioni per consentirci di riconoscere gli oggetti e così farà anche la nostra rete neurale. Giusto per dare qualche informazione  in più,  uno degli stadi intermedi,  all’interno del cervello,  è specializzato all’estrazione di  forme o caratteristiche dell’immagine che si sta  guardando. La stessa cosa la ritroveremo nelle reti CNN.

Una rete neurale convoluzionale funziona, in generale, come tutte le altre feed forward. Essa infatti è costituita da  un blocco di input, uno o più blocchi nascosti (hidden layer), che effettuano calcoli tramite funzioni di attivazione (ad esempio RELU)  e un blocco di output che effettua la classificazione vera e propria. La differenza, infatti,  rispetto alle classiche reti feed forward è rappresentata dalla presenza dei livelli di convoluzione.

Che ruolo svolgono dunque questi ultimi  all’interno della catena ?

I livelli di convoluzione svolgono un lavoro molto importante in quanto estraggono attraverso l’uso di filtri delle caratteristiche 0 features delle immagini di cui  si vuole analizzare il contenuto.

A differenza pertanto di una feed forward tradizionale che lavora “sull’informazione generale dell’immagine”  una CNN lavora e classifica l’immagine basandosi su particolari caratteristiche della stessa. In altre parole a secondo del tipo di filtro utilizzato  è possibile identificare sull’immagine di riferimento cose diverse, ad esempio i contorni delle figure, le linee verticali,  le linee orizzontali, le diagonali, etc.

Cerchiamo di semplificare il concetto.

Rispetto ad  una semplice rete  feed forward la CNN è in grado, pertanto, di trattare informazioni più specifiche ed essere di conseguenza più efficiente. Semplificando pertanto  lo schema di funzionamento di una  CNN possiamo dire che la rete è costituita da una catena di blocchi il cui ordine è rappresentato nel modo seguente:

Input->Conv->ReLU->Pool->Conv->ReLU->Pool->ReLU->Conv->ReLU->Pool->FullyConnected

Se si considera, inoltre, che la funzione ReLU è parte integrante del livello Conv possiamo ridurre la CNN allo schema seguente.

Cerchiamo di capire che ruolo svolgono  i vari blocchi.

Tipicamente ogni layer convoluzionale viene fatto seguire da uno di Max-Pooling, riducendo via via la dimensione della matrice, ma aumentando il livello di “astrazione”. Si passa quindi da filtri elementari, come appunto linee verticali e orizzontali, a filtri via via più sofisticati, in grado ad esempio di riconoscere i fanali, il parabrezza… fino all’ultimo livello dove è in grado di distinguere un’automobile da un camion.

Il livello di input è  costuituito da una sequenza  di neuroni in grado di ricevere le informazioni dell’immagine da trattare. A questo livello, infatti,  verrà passato il vettore di dati che  rappresentano i pixel dell’immagine di ingresso. Nel caso ad esempio di una immagine a colori di 32 x 32  pixel il vettore di ingresso dovrà avere  una lunghezza di  32 x 32 x 3; in pratica per ogni pixel dell’immagine di dimensione  32 X 32 avremo 3 valori che rapprensentano  i tre colori dell’immagine in formato RGB  (Red, Green e Blue) .

Il Livello convoluzionale (Conv) è il principale della rete. Il suo obiettivo è quello di individuare schemi, come ad esempio curve, angoli, circonferenze o quadrati raffigurati in un’immagine con elevata precisione. I filtri applicabili sono e possono essere più di uno; Maggiore è il loro numero e maggiore è la complessità delle features che si potranno individuare. Ma come funziona il livello di convoluzione? in pratica un filtro digitale (un piccola maschera ) è fatta scorrere sulle diverse posizioni dell’immagine in input; per ogni posizione viene generato un valore di output, eseguendo il prodotto scalare tra la maschera e la porzione dell’input coperta (entrambi trattati come vettori).

 

 

Nell’esempio in figura il filtro è rappresentato da una matrice 3×3 pertanto il pennello di scansione prenderà in esame solo una porzione di immagine di ingresso 3×3 tra cui si dovrà fare il prodotto con il filtro di convoluzione scelto.

 

di seguito il risulato con  un esempio di filtro.

In definitiva l’immagine verrà scansionata pezzo per pezzo ottenendo in uscita una matrice di valori più piccola che rappresenta “l’immagine caratterizzata”

 

Processo di windowing

 

 

Il Livello ReLU (Rectified Linear Units) si pone l’obiettivo di annullare valori non utili  ottenuti nei livelli precedenti ed è posto dopo i livelli convoluzionali.

Il Livello Pooling permette di identificare se la caratteristica di studio è presente nel livello precedente e rende più grezza l’immagine, mantenendo la caratteristica utilizzata dal livello convoluzionale. In altre parole il livello di pooling esegue un’aggregazione delle informazioni , generando feature map di dimensione inferiore.

Livello FC (o Fully connected, completamente connesso): E’ il livello che esegue di fatto la classificazione delle immagini.

 

 

Se vuoi farmi qualche richiesta o contattarmi per un aiuto riempi il seguente form

    Comments