Una rete neurale convoluzionale (CNN) Γ¨ un tipo di rete neurale artificiale che si basa sull'apprendimento automatico supervisionato. Questo tipo di rete viene utilizzato principalmente per l'elaborazione delle immagini e del video, ma puΓ² essere applicato anche ad altri tipi di dati come il suono o i testi.
La CNN prende in input una matrice bidimensionale rappresentante unβimmagine e la elabora attraverso una serie di strati convoluzionali, pooling e completamente connessi. Il primo strato della CNN Γ¨ quello convoluzionale, dove vengono estratti dei filtri dalle immagini dβinput per creare mappe delle caratteristiche dellβimmagine stessa. Queste mappe sono poi passate attraverso uno strato di pooling che riduce le dimensioni dellβimmagine mantenendo solo le informazioni piΓΉ importanti.
In seguito ci sono diversi strati convoluzionali alternati a quelli di pooling fino a quando non si arriva allo strato completamente connesso finale dove avviene la classificazione dellβoggetto presente nellβimmagine.
Le reti neurali convoluzionali hanno rivoluzionato il campo della visione artificiale grazie alla loro capacitΓ di apprendere funzioni complesse dai dati grezzi senza bisogno dellβestrazione manuale delle features dallβimmagine da parte degli esperti del settore. CiΓ² significa che possono essere utilizzate in molteplici contestualizzazioni come riconoscimento facciale, diagnosi medica tramite radiografie o scansione MRI oppure nel campo automobilistico nella guida autonoma.
Un altro aspetto importante delle CNN Γ¨ la possibilitΓ di effettuare transfer learning ovvero lβutilizzo pre-addestramento sui pesi ottenuti da altre architetture giΓ addestrate su milioni dβimage permettendo cosΓ¬ alle nuove architetture costruite sulla base dei pesi preaddestrati miglioramenti notevoli rispetto ai modelli partiti dallo zero.
Stride e padding
Per controllare la dimensione delle uscite dei layer convoluzionali e per gestire i bordi delle immagini durante la convoluzione.
- Stride (Passo): Lo stride Γ¨ un parametro che determina il numero di passi che il filtro (o kernel) compie durante lβapplicazione della convoluzione sullβinput. In altre parole, indica di quanti pixel il filtro si sposta alla volta mentre scorre sullβinput. Ad esempio, con uno stride di 1, il filtro si sposterΓ di un pixel alla volta. Con uno stride di 2, il filtro salterΓ due pixel alla volta. Un valore di stride piΓΉ grande significa una riduzione piΓΉ rapida della dimensione dellβoutput.
- Padding (Riempimento): Il padding Γ¨ lβaggiunta di pixel intorno ai bordi dellβinput prima di applicare la convoluzione. Serve a gestire il problema della riduzione delle dimensioni dellβoutput causato dalla convoluzione. Ci sono due tipi comuni di padding:
- Valid (Senza padding): In questo caso, non viene aggiunto alcun padding allβinput. Di conseguenza, la dimensione dellβoutput sarΓ inferiore rispetto allβinput, poichΓ© il filtro non puΓ² scorrere completamente sui bordi.
- Same (Padding per mantenere le dimensioni): Qui, il padding viene aggiunto in modo che lβoutput abbia le stesse dimensioni dellβinput. Questo viene fatto aggiungendo un numero appropriato di pixel intorno ai bordi in modo che il filtro possa scorrere completamente su tutti i pixel dellβinput. CiΓ² aiuta a mantenere le informazioni nei bordi dellβimmagine durante la convoluzione.
Pooling
Il pooling Γ¨ unβoperazione utilizzata nelle Convolutional Neural Networks (CNN) per ridurre la dimensione spaziale (larghezza e altezza) della rappresentazione dell'immagine, mantenendo le caratteristiche piΓΉ rilevanti.
In parole semplici, il pooling riduce la dimensione dellβimmagine, mantenendo le informazioni piΓΉ importanti. CiΓ² viene fatto suddividendo lβimmagine in regioni sovrapposte (ad esempio, 2x2 o 3x3) e applicando una funzione di aggregazione, come il massimo (max pooling) o la media (average pooling), a ciascuna regione.
Ad esempio, se usiamo il max pooling, per ogni regione 2x2 dellβimmagine, selezioniamo il valore massimo e lo manteniamo, eliminando gli altri. Questo processo riduce la dimensione dellβimmagine a circa la metΓ , poichΓ© stiamo prendendo solo il massimo valore da ogni 2x2 regione.
Il pooling Γ¨ utile per diverse ragioni:
- Riduzione della dimensionalitΓ : Riducendo la dimensione dellβimmagine, si riducono i computi e i parametri richiesti nella rete, il che rende il modello piΓΉ efficiente in termini di tempo e risorse computazionali e riduce il rischio di Overfitting.
- Invarianza alle traslazioni: Aiuta a rendere la rete neurale piΓΉ robusta alle piccole variazioni spaziali nellβinput, poichΓ© le caratteristiche importanti sono conservate anche se spostate di pochi pixel.
- Permette di riconoscere il target anche in posizioni diverse dellβimmagine