Cosa sono le Convolutional Neural Network (CNN)
NB: questo testo fa parte dei miei appunti del CAS in LLM di SUPSI, fanne buon uso!
Una Convolutional Neural Network (CNN) è un tipo di rete neurale particolarmente efficace per l'elaborazione e l'analisi di dati con una struttura grid-like, come le immagini. Le CNN sono state ampiamente utilizzate in compiti di visione artificiale, come il riconoscimento di immagini, la segmentazione e la classificazione. Ecco i principali componenti e caratteristiche delle CNN:
Componenti Principali
- Strato di Convoluzione (Convolutional Layer):
- Filtri (o Kernel): Piccole matrici di peso che si muovono attraverso l'immagine di input per estrarre caratteristiche locali. Ad esempio, un filtro potrebbe rilevare i bordi verticali, orizzontali o diagonali.
- Operazione di Convoluzione: Il filtro viene applicato su tutta l'immagine di input per creare una mappa di attivazione (feature map) che evidenzia la presenza di caratteristiche rilevanti.
- Strato di Attivazione (Activation Layer):
- Funzione di Attivazione ReLU (Rectified Linear Unit): Viene applicata agli output dello strato di convoluzione per introdurre non-linearità, rendendo il modello capace di apprendere relazioni complesse. La funzione ReLU sostituisce i valori negativi con zero.
- Strato di Pooling (Pooling Layer):
- Pooling (es. Max Pooling): Riduce la dimensionalità delle mappe di attivazione aggregando i valori in una finestra mobile. Ad esempio, nel Max Pooling, si prende il valore massimo in ogni finestra, riducendo la risoluzione ma mantenendo le caratteristiche più salienti.
- Strati Completamente Connessi (Fully Connected Layers):
- Dopo una serie di strati di convoluzione e pooling, le feature map vengono appiattite in un vettore che viene poi passato attraverso uno o più strati completamente connessi. Questi strati finali servono a combinare le caratteristiche estratte e a fare la classificazione finale.
Caratteristiche delle CNN
-
Località e Condivisione dei Pesi: I filtri convoluzionali applicano gli stessi pesi attraverso tutta l'immagine, permettendo alla CNN di rilevare caratteristiche locali indipendentemente dalla loro posizione. Questo riduce drasticamente il numero di parametri rispetto a una rete completamente connessa.
-
Gerarchia delle Caratteristiche: Gli strati convoluzionali successivi possono rilevare caratteristiche sempre più complesse, a partire dai bordi e dai contorni nei primi strati, fino a forme e oggetti complessi negli strati più profondi.
Applicazioni delle CNN
- Riconoscimento di Immagini: Identificazione e classificazione di oggetti all'interno di immagini.
- Segmentazione Semantica: Assegnazione di etichette a ogni pixel di un'immagine, utile in campi come la guida autonoma e la medicina.
- Riconoscimento di Testo (OCR): Identificazione di caratteri e parole in immagini di testo.
- Riconoscimento Facciale: Identificazione e verifica delle identità delle persone attraverso le immagini del volto.
Le CNN sono diventate uno standard de facto per i compiti di visione artificiale grazie alla loro capacità di gestire grandi quantità di dati e di estrarre automaticamente caratteristiche rilevanti senza la necessità di ingegneria manuale delle caratteristiche.