Come funziona una rete neurale CNN (convolutional Neural Network): “CNN cos’è” ?
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”
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.
Sono amante della tecnologia e delle tante sfumature del mondo IT, ho partecipato, sin dai primi anni di università ad importanti progetti in ambito Internet proseguendo, negli anni, allo startup, sviluppo e direzione di diverse aziende; Nei primi anni di carriera ho lavorato come consulente nel mondo dell’IT italiano, partecipando attivamente a progetti nazionali ed internazionali per realtà quali Ericsson, Telecom, Tin.it, Accenture, Tiscali, CNR. Dal 2010 mi occupo di startup mediante una delle mie società techintouch S.r.l che grazie alla collaborazione con la Digital Magics SpA, di cui sono Partner la Campania, mi occupo di supportare ed accelerare aziende del territorio .
Attualmente ricopro le cariche di :
– CTO MareGroup
– CTO Innoida
– Co-CEO in Techintouch s.r.l.
– Board member in StepFund GP SA
Manager ed imprenditore dal 2000 sono stato,
CEO e founder di Eclettica S.r.l. , Società specializzata in sviluppo software e System Integration
Partner per la Campania di Digital Magics S.p.A.
CTO e co-founder di Nexsoft S.p.A, società specializzata nella Consulenza di Servizi in ambito Informatico e sviluppo di soluzioni di System Integration, CTO della ITsys S.r.l. Società specializzata nella gestione di sistemi IT per la quale ho partecipato attivamente alla fase di startup.
Sognatore da sempre, curioso di novità ed alla ricerca di “nuovi mondi da esplorare“.
Comments