Convolution

[convoluzion]

Operazione matematica che fa scorrere un piccolo filtro sull'input. È la base delle CNN, la rivoluzione di computer vision.

La convoluzione è l'operazione matematica che ha reso possibile il deep learning per immagini. Le reti convoluzionali (CNN) hanno dominato la computer vision dal 2012 al 2020 prima di essere parzialmente sostituite dai Vision Transformer.

Idea: invece di connettere ogni pixel a tutti i neuroni del layer successivo (troppo costoso), fai scorrere un piccolo filtro (es. 3x3 o 5x5 pesi) sull'input. Per ogni posizione, calcoli prodotto scalare tra filtro e patch dell'input. Output: una "feature map" che mostra dove il pattern del filtro è presente.

Vantaggi enormi:

  • Parameter sharing: lo stesso filtro lavora ovunque. Pochi pesi, tanto effetto.
  • Translation invariance: un gatto in alto a destra o in basso a sinistra dell'immagine viene riconosciuto comunque.
  • Gerarchia: layer iniziali imparano bordi, layer intermedi forme, layer profondi oggetti complessi.

Architetture famose:

  • LeNet (1998): la prima CNN moderna, riconoscimento cifre.
  • AlexNet (2012): vinse ImageNet, fu l'inizio del boom deep learning.
  • VGG (2014): più profonda, più semplice.
  • ResNet (2015): introduce residual connection, layer da 152.
  • EfficientNet (2019): bilancia depth, width, resolution.

Componenti tipici di una CNN:

  • Conv layer: la convoluzione vera e propria.
  • Pooling: riduce dimensioni della feature map (max o average).
  • Activation: tipicamente ReLU.
  • Batch norm: stabilizza training.
  • Fully connected: alla fine, classifica.

Status oggi: per immagini classiche e grossi dataset, ViT (Vision Transformer) ha raggiunto/superato le CNN. Per dataset piccoli, edge devices, real-time: le CNN ancora dominano (più efficienti). Mobili, telefoni, dispositivi embedded usano CNN.