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

  1. 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.
  1. 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.
  1. 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.
  1. 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.