Tecnologie

Reti neurali convolutive, cosa sono, come applicarle all’analisi delle immagini

Nate negli anni ’90, sin dalla loro prima implementazione le CNN hanno dimostrato il loro enorme potenziale nell’analisi delle immagini. Insieme al miglioramento nell’ambito della pura classificazione, sono state più volte riadattate a scopi differenti. Cosa succede all’interno di un modello di analisi delle immagini?

Pubblicato il 13 Feb 2023

Giovanni Nardini

R&D Artificial Intelligence Lead Key to Business

reti neurali convolutive

La prima Rete neurale convolutiva (CNN) per il riconoscimento dei caratteri scritti a mano risale ai primi anni ’90 a opera del ricercatore informatico Yann LeCun, con LeNet.

Nel mondo della Computer science esiste un campo di applicazione, notoriamente conosciuto come visione artificiale, focalizzato sullo studio di modelli e algoritmi in grado fornire alle macchine la possibilità di ricavare informazioni utili dalle immagini senza la supervisione umana. La visione artificiale, come tecnologia abilitante, ha subito una grande spinta grazie al contributo del deep learning, che si occupa dello studio e dell’implementazione delle reti neurali artificiali (ANN). Ispirate alla struttura delle sinapsi cerebrali, le Reti neurali artificiali, nella loro forma semplice, vennero ideate nella prima metà del secolo scorso, per poi essere realizzate negli anni ’60.

Reti neurali convolutive, cosa sono, come sono fatte

rete neurale convolutiva
Figura 4: Esempio di filtro convolutivo di Sobel, per l’estrazione dei contorni di un’immagin

Le Reti neurali convolutive (Convolutional Neural Network – CNN)  basano il loro principio sul concetto di convoluzione. Tale operazione era già conosciuta ai tempi di LeNet e veniva comunemente utilizzata per l’estrazione dei contorni (esemplare il filtro di Sobel) o la rilevazione di pattern semplici all’interno di un’immagine. La convoluzione si basa sulla definizione di un Kernel, ovvero di una matrice di valori N x N, che viene fatto scorrere sull’immagine originale moltiplicandone di volta in volta gli elementi con i pixel sottostanti e sommandone i contributi. Questo genera una nuova immagine detta Mappa convolutiva, che evidenzia unicamente le zone interessate dai pattern ricercati. Tuttavia, prima delle reti convolutive, i singoli kernel venivano costruiti ad-hoc, manualmente. Nellea Rete neurale convolutiva, invece, costituiscono i pesi della rete e, proprio come per le ANN semplici, vengono calibrati in modo automatico in fase di addestramento.

reti neurali convolutive

Figura 3: Operazione di convoluzione. Il Kernel scorre lungo tutta l’immagine ed effettua la convoluzione generando la mappa convolutiva. (Autore: Giovanni Nardini)

La convoluzione presenta delle proprietà interessanti: è invariante rispetto allo spostamento, permette di carpire correlazioni spaziali tra i pixel e opera in condizioni di connettività locale. Quest’ultima caratteristica permette di superare il problema dell’enorme numero di parametri generato dalle reti neurali semplici, dove ogni neurone è collegato con tutti gli altri, in quanto parti diverse dell’immagine vengono processate con gli stessi kernel. Le operazioni di convoluzione in genere precedono quelle di pooling: applicare il pooling significa diminuire le dimensioni della mappa convolutiva utilizzando un’altra finestra N x N, priva di kernel, che scorre lungo l’input e che restituisce un unico valore ad ogni iterazione, di solito il valore massimo (in caso di Max pooling) o il valore medio rilevato (in caso di Average pooling).

reti neurali convolutive

Figura 5: Operazione di Max Pooling. (Autore: Giovanni Nardini)

La struttura di una rete neurale convolutiva

La struttura di una rete neurale convolutiva può essere quindi riassunta nei seguenti blocchi:

  • uno strato di input non più monodimensionale ma in grado di accettare l’intera matrice dell’immagine
  • un insieme di strati convolutivi interconnessi tra di loro attraverso degli operatori di pooling
  • un operatore di flattening
  • un gruppo di strati semplici di tipo fully-connected
  • uno strato di output che fornisce la risposta del modello.
reti neurali convolutive

Figura 6: Struttura di una rete neurale convolutiva. Da sinistra verso destra: layer di input, blocco convolutivo, blocco fully-connected, layer di output. (Autore: Sumit Saha)

Quando una immagine viene data in input a un modello di classificazione basato su rete neurale convolutiva, viene processata in serie dalle coppie di strati convolutivi e di pooling. In questa fase ciascun Layer utilizza i propri gruppi di kernel (denominati Filtri convolutivi) per produrre le relative mappe convolutive. L’output diviene l’input dello strato successivo fino ad arrivare all’ultimo strato convolutivo. A questo punto viene eseguita l’operazione di flattening, simile alla procedura descritta per le ANN, ma stavolta su un gruppo di mappe convolutive dalle dimensioni notevolmente ridotte rispetto all’immagine originale.

Si ottiene dunque un vettore monodimensionale che attraverso un semplice Layer fully-connected, produce l’output del modello di classificazione. Lo strato di output è costituito da un numero di neuroni pari al numero di classi che il modello è in grado di rilevare e il valore in uscita corrisponde alla probabilità che tali classi siano presenti o meno nell’immagine analizzata.

Reti neurali convolutive e immagini

È interessante osservare come durante l’intero processo, l’immagine venga trasformata a tal punto da ridurre notevolmente altezza e larghezza ma aumentare drasticamente il numero di canali. Alla fine del blocco convolutivo, quello che rimane dell’immagine originale assomiglia di più ad una specie di parallelepipedo stretto e lungo, caratterizzato per esempio da dimensioni quali: 3 pixel di larghezza, 3 pixel di altezza e 512 pixel di profondità. Questo comportamento è legato al concetto denominato “Neural Abstraction Pyramid“, fenomeno che determina la perdita delle informazioni spaziali in favore delle informazioni semantiche. Difatti, concatenando una serie di convoluzioni caratterizzate da un numero di filtri crescente, viene favorito l’apprendimento di pattern progressivamente più complessi: dalla rilevazione dei bordi, l’identificazione delle texture, a parti di oggetti fino ad arrivare al rilevamento di oggetti interi.

Pertanto, la rete tenderà a concentrarsi di più sul “cosa” piuttosto che sul “dove”. In definitiva, ciascun filtro si specializza nella rilevazione di una determinata caratteristica, denominata feature, che contribuisce insieme alle altre alla rilevazione delle classi per cui il modello è stato addestrato.

reti neurali convolutive immagini

Figura 7: Neural Abstraction Pyramid di una Rete neurale convolutiva. I filtri convolutivi si specializzano nella rilevazione di pattern sempre più complessi. In alto: esempi di pattern che attivano determinati filtri, evidenziati in giallo quelli correlati con l’immagine di esempio. (Autore: Giovanni Nardini)

Le tecniche per visualizzare filtri e mappe

Esistono diverse tecniche che permettono di visualizzare i filtri e le mappe di ogni strato, costituendo non solo uno spunto per la ricerca, ma anche un valido strumento in mano agli ingegneri AI per poter comprendere quanto appreso dal modello ed eventualmente effettuare delle azioni correttive. Queste metodologie richiedono un’implementazione ad-hoc, calata in modo specifico sulla singola architettura sviluppata, tuttavia esistono alcuni tool di carattere generale che lo sviluppatore può utilizzare o riadattare per una prima indagine. Un esempio è il Deep Visualization Toolbox di Jason Yosinsk che offre un’interfaccia grafica per l’ispezione del modello. Lo strumento permette di selezionare un’immagine o un flusso video in input, indicare la tipologia di rete pre-addestrata da utilizzare e inizializzare il processo. L’utente può osservare in tempo reale come rispondono tutti i canali di uno specifico strato e selezionarne uno per comprendere a quali feature sia sensibile.

Sono presenti anche alcune elaborazioni grafiche di grande aiuto come le mappe di deconvoluzione e una selezione di alcune immagini appartenenti al dataset ImageNet che maggiormente attivano la risposta del canale indicato. Un altro esempio da segnalare, molto utile a scopo didattico, è il tool di visualizzazione del modello di riconoscimento delle cifre (MNIST) sviluppato da Adam Harley. In questo caso, l’utente può disegnare una cifra nel riquadro sovrastante, osservare in tempo reale la generazione di tutte le mappe di convoluzione ed ottenere la predizione del modello. Esiste anche una versione priva di convoluzioni e basata su una ANN, flattening compreso

Tali modelli possono assolvere alle funzioni più disparate quali: classificare il contenuto di un’immagine, localizzare oggetti, persone o parti del corpo, indicarne il contorno, estrarre la posa di un soggetto, identificare una persona tramite le sue caratteristiche fisionomiche, ricostruire ambienti 3D dalle fotografie fino a generare immagini che non esistono semplicemente descrivendone il contenuto. Nel tempo sono emersi dei veri e propri settori specializzati in queste aree, motivo per il quale vengono spesso utilizzate espressioni come: classificazione, detection, segmentazione, stima della posa, riconoscimento facciale, person re-identification, depth estimation e modelli generativi.

Cos’è una rete neurale

Una rete neurale semplice è costituita da unità elementari chiamate neuroni. Il compito del neurone è quello di prendere in input un segnale, processarlo e restituire un determinato output. In biologia il segnale è di tipo chimico mentre nella versione informatica viene rappresentato da un numero reale. I neuroni, a loro volta, sono organizzati in modo tale da formare dei gruppi chiamati strati. Ciascun neurone di un determinato strato, è collegato a tutti i neuroni dello strato precedente e dello strato successivo, in modo tale che l’input di un neurone corrisponda alla somma dei contributi di tutti i neuroni precedenti e l’output venga distribuito a tutti i successivi.

Da questa proprietà deriva la denominazione “Fully Connected” associata agli strati di una ANN. Inoltre, i collegamenti neurone-neurone, chiamati Edges, sono dotati di un peso numerico, detto weight, che viene moltiplicato al segnale, amplificandone o diminuendone la portata. Grazie a questo meccanismo è possibile filtrare le informazioni, lasciando passare solamente quelle più importanti ed inibendo la propagazione di quelle superflue. Riassumendo, la struttura di una rete neurale artificiale è quindi dotata di: uno strato di input che raccoglie il dato da sottoporre al modello, uno o più strati intermedi detti “nascosti” che elaborano in sinergia l’informazione e uno strato di output che fornisce la risposta del modello.

reti neurali

Figura 1: Struttura di una ANN semplice. Esempio di predizione del prezzo di un immobile. (Autore: Giovanni Nardini)

Come addestrare una rete neurale artificiale

Addestrare una rete neurale a svolgere un determinato compito, equivale a modificare i pesi interni di ciascun collegamento neuronale in maniera tale da ottenere una certa risposta a fronte di un determinato input. Una ANN è in grado di modellare problemi complessi, soprattutto quelli non lineari. I dati con cui vengono addestrate le reti neurali semplici sono di solito dati tabellari, dove ciascun record è costituito da un insieme di attributi e da un target . Proprio come nel lessico algebrico, il modello ANN addestrato rappresenta la funzione che permette di trovare il valore della fornendo un nuovo record con attributi conosciuti .

Y=ANN(X_i)

Per fare un esempio pratico, un tipico modello basato su ANN è quello utilizzato nei sistemi di monitoraggio delle frodi bancarie, dove gli attributi rappresentano le caratteristiche di una specifica transazione e il target rappresenta la predizione del modello, ovvero un valore reale compreso tra 0 e 1 inteso come probabilità che si tratti di una frode o meno. Oppure, un’altra applicazione può essere la stima del prezzo di un immobile, a partire dalle sue caratteristiche principali.

Reti neurali semplici e immagini

La domanda sorge spontanea: è possibile utilizzare una rete neurale semplice quando si ha a che fare con dati non strutturati come le immagini? In teoria si, in pratica no. Un primo elemento di criticità riguarda la struttura del dato: in informatica un’immagine è costituita da una matrice tridimensionale al cui interno troviamo i valori di ciascun pixel. Le prime due dimensioni corrispondono ad altezza e larghezza, mentre la terza dimensione è costituita dai canali, di solito tre (RGB) uno per il rosso, uno per il verde, uno per il blu. Una ANN, invece, accetta dati di tipo tabellare, caratterizzati da una struttura dei record monodimensionale e un numero fisso di attributi .

I ricercatori, prima dell’avvento delle reti convolutive, utilizzavano un espediente originale per superare questo problema: il cosiddetto “flattening” dell’immagine. Consisteva nel trasformare l’immagine da matrice tridimensionale a unico vettore monodimensionale attraverso un’operazione di destrutturazione, non molto diversa dall’azione di srotolare il filo da un gomitolo.

reti neurali

Figura 2: il flattening trasforma un’immagine 3D in un vettore monodimensionale, pronto per costituire l’input di una ANN semplice. (Autore: Giovanni Nardini)

Sebbene questa tecnica permettesse di risolvere il problema della forma dell’input, ben presto ci si rese conto della seconda criticità: all’aumentare della grandezza di un’immagine cresceva drasticamente la dimensione del vettore di input, al punto che, per una normale fotografia RGB di bassa qualità (ad esempio 640x480x3 pixel) lo strato di input doveva contenere ben 921.600 neuroni. Per di più, immaginando un’architettura basica con tre strati nascosti dotati di un numero limitato di neuroni, la mole di connessioni e dei relativi pesi poteva raggiungere l’ordine di grandezza delle centinaia di miliardi (ad esempio: 921.600 x 1.000 x 500 x 128 = 460.800.000.000). Un modello con centinaia di miliardi di parametri richiede risorse e tempi di calcolo proibitivi, senza considerare la necessità di una enorme quantità di dati per l’addestramento. Dunque, un approccio di questo tipo può andar bene per immagini molto piccole ma non è sostenibile per modelli che lavorano con grandezze superiori.

Il concetto di invarianza allo spostamento

La terza e ultima fondamentale criticità è invece legata al concetto di invarianza allo spostamento: le ANN sono architetture notevolmente dipendenti dalla posizione dei soggetti all’interno dell’immagine, una traslazione di questi può determinare un output diverso ed errato, soprattutto se i dati di training sono caratterizzati da una certa staticità. A tal proposito, grazie agli studi dei neurobiologi Hubel e Wiesel condotti negli anni ’60, si scoprì che il meccanismo umano di percezione delle immagini all’interno della corteccia cerebrale visiva era leggermente diverso dal modello classico delle reti neurali. Furono individuate due tipologie di cellule neuronali: quelle semplici e quelle complesse. Le prime erano responsabili della percezione di pattern basilari quali linee orizzontali, linee verticali o spigoli.

Inoltre, a ciascuna cellula semplice era assegnata una piccola porzione dell’immagine impressa sulla retina, chiamata Campo ricettivo locale. Le seconde, invece, raccoglievano gli stimoli di tutte le cellule semplici per rilevare pattern globali progressivamente più complessi, a prescindere dai campi ricettivi di provenienza. Fu così che nei primi anni ’90, grazie al contributo di queste scoperte, Yann LeCun ideò e realizzò LeNet, la prima rete neurale convolutiva (CNN). Questa nuova architettura rivoluzionò il Deep learning e fu fonte di ispirazione per numerosi studiosi che svilupparono a loro volta delle versioni migliorative quali: AlexNet, VGG, ResNet, GoogleNet, MobileNet e UNet.

Computer vision, breve storia

La ricerca in ambito computer vision ha origini non proprio recenti e nonostante i numerosi traguardi raggiunti nell’arco di questi ultimi anni, alcune tecniche di visione artificiale furono ideate ben prima dell’avvento dei computer, e vennero finalmente implementate dal 1970 in poi, in virtù di una crescente espansione dell’utilizzo dei PC e delle prestazioni di calcolo. Non è un caso che al giorno d’oggi, in alcune situazioni, gli algoritmi utilizzati siano gli stessi teorizzati e implementati vent’anni fa. Un esempio emblematico è l’algoritmo Viola-Jones, conosciuto con il nome di Haar Cascades, per la rilevazione dei volti all’interno delle immagini. La semplicità di calcolo, la velocità di esecuzione e le ottime performance, lo rendono ancora oggi un metodo ampiamente utilizzato nelle fotocamere di smartphone e laptop.

Haar Cascade Visualization

Haar Cascade Visualization

Guarda questo video su YouTube

Video: l’algoritmo Viola-Jones in azione per la rilevazione dei volti. (Autore: Adam Harvey)

reti neurali

Figura 8: Tool interattivi di visualizzazione dei filtri e delle mappe convolutive. A sinistra il visualizzatore MNIST: l’utente può disegnare una cifra e vedere cosa succede nei vari strati fino all’output. (Autore: Adam Harley)

A destra il “Deep Visualization Toolbox” sviluppato da Jason Yosinsk: nell’immagine alcuni esempi di canali sensibili rispettivamente alle ruote di un veicolo, ai volti di una persona e ai testi.

Conclusioni: le CNN saranno superate dai Transformers?

Le reti neurali convolutive sin dalla loro prima implementazione, hanno dimostrato l’enorme potenziale nell’analisi delle immagini. Pertanto, insieme al miglioramento nell’ambito della pura classificazione, sono state più volte riadattate a scopi differenti. Ad oggi le applicazioni più frequenti comprendono anche: la detection di oggetti specifici e la segmentazione. La differenza principale con la classificazione è che queste reti oltre rilevare la presenza di una determinata categoria, sono in grado di localizzarla all’interno dell’immagine, restituendone le coordinate o i contorni.

Ad oggi, lo studio delle CNN sembra non aver ancora raggiunto la saturazione, nonostante l’introduzione di nuove tipologie di architetture molto promettenti, tra le quali i noti Transformers. Non è ancora chiaro se questi ultimi siano in grado di superare le performance raggiunte dalle CNN, determinando di fatto la fine di una vera e propria egemonia nel Deep learning.

Valuta la qualità di questo articolo

La tua opinione è importante per noi!

Articoli correlati

Articolo 1 di 4