Introduzione a Resnet
Le reti neurali convoluzionali (CNN) hanno trasformato il campo della visione artificiale, rendendo possibile affrontare con successo compiti complessi di elaborazione e interpretazione delle immagini. Tra le architetture più significative, ResNet (Residual Network) si distingue per la sua capacità di gestire reti profonde in modo efficiente. Introdotta da Kaiming He nel 2015, ResNet ha avuto un impatto notevole nel settore grazie alla sua struttura innovativa basata su connessioni residuali, che facilitano il flusso delle informazioni all’interno della rete.
Uso di Pretrained Models
Transfer Learning
Uno degli approcci più comuni quando si lavora con architetture complesse e dataset con risorse limitate è il transfer learning. Questo approccio prevede l’utilizzo di un modello pre-addestrato su un grande dataset, per poi adattarlo a un nuovo compito. ResNet50, grazie alla sua capacità di catturare caratteristiche complesse delle immagini, è particolarmente adatto per il transfer learning. Il concetto di fine-tuning si basa sul riutilizzo dei pesi di un modello pre-addestrato e sull’adattamento dei suoi strati finali al nuovo problema. Questo approccio consente di ridurre significativamente il tempo di addestramento, soprattutto quando i dati disponibili per il nuovo compito sono limitati. Per il fine-tuning di ResNet50, si congela la maggior parte dei layer pre-addestrati (in modo che non vengano aggiornati durante il training) e si addestrano solo gli strati finali o le nuove aggiunte, come un layer di classificazione specifico per il nuovo dataset.
Architettura di ResNet – in breve
ResNet introduce il concetto di residual learning, che facilita l’addestramento di reti molto profonde. L’idea principale è l’uso di skip connections, ovvero connessioni che bypassano uno o più livelli convoluzionali e sommano l’output direttamente a uno strato successivo. Questa struttura aiuta a preservare i gradienti durante il backpropagation (parte che permette di ottimizzarei parametri della rete in modo che l’output del modello si avvicini il più possibile al risultato desiderato), mitigando il problema della vanishing gradient .
Blocchi Residuali
Il cuore di ResNet è il residual block, che può essere rappresentato come:

![Rendered by QuickLaTeX.com \[y = F(x) + x\]](https://www.aiknow.io/wpvt/wp-content/ql-cache/quicklatex.com-aeed31f4311fef3a9e2d0a85ff4f3465_l3.png)
dove

è l’input,

rappresenta una trasformazione non lineare applicata da una serie di strati convoluzionali, e

è l’output finale del blocco. Questa connessione diretta tra input e output aiuta la rete a conservare informazioni
cruciali e accelera la convergenza durante l’addestramento.
Skip Connections: Un Approfondimento
Le skip connections sono uno degli aspetti chiave che rendono ResNet particolarmente potente. In un modello di rete neurale tradizionale, l’informazione passa attraverso tutti i livelli della rete, senza alcuna possibilità di “saltare” livelli intermedi. Tuttavia, in ResNet, le skip connections consentono a parte dell’informazione di bypassare uno o più strati convoluzionali e di essere sommata direttamente al risultato finale di uno strato più profondo.
Le skip connections sono utili per due motivi principali:
- Miglioramento del flusso del gradiente: Nelle reti neurali profonde, il gradiente può decrescere esponenzialmente mentre viene retropropagato, specialmente nei primi strati della rete. Questo fenomeno è noto come il vanishing gradient problem. Le skip connections permettono ai gradienti di passare direttamente attraverso gli strati senza subire attenuazioni significative, migliorando così l’apprendimento nelle reti molto profonde.
- Facilitazione dell’addestramento: Le skip connections aiutano la rete a concentrarsi su compiti di alto livello e a non dover memorizzare i dettagli meno rilevanti, favorendo una migliore generalizzazione. Senza la presenza di queste connessioni, le reti molto profonde potrebbero soffrire di un effetto di “saturazione” dell’apprendimento, dove i pesi tendono a non cambiare o a convergere troppo lentamente.
ResNet: Architettura e Funzionamento
1. Struttura dei Blocchi Residuali
Un blocco ResNet è composto da diversi strati convoluzionali, seguiti da normalizzazione e funzioni di attivazione. La struttura base di un blocco ResNet include:
-
-
- Convoluzione 3×3 (
): cattura caratteristiche spaziali locali.
- Batch Normalization (BN): normalizza l’output per migliorare la stabilità del training.
- ReLU (Rectified Linear Unit): introduce la non-linearità.
- Somma con l’input originale (skip connection): permette il flusso diretto dell’informazione.
Il funzionamento matematico di un blocco residuale può essere espresso come:
dove:
è l’input del blocco,
rappresenta la trasformazione non lineare applicata dall’insieme di operazioni (Conv, BN, ReLU),
è l’output del blocco, che somma
con l’input originale.
Più in dettaglio,

può essere espresso come:
![Rendered by QuickLaTeX.com \[F(x) = W_2 \sigma(W_1 x)\]](https://www.aiknow.io/wpvt/wp-content/ql-cache/quicklatex.com-d2418c374d25806bb9a6631837eaff90_l3.png)
dove:

e

sono i pesi dei layer convoluzionali,

è la funzione di attivazione ReLU. Se le dimensioni dell’input e dell’output non coincidono, si usa una trasformazione lineare tramite una convoluzione

:
![Rendered by QuickLaTeX.com \[y = F(x) + W_s x\]](https://www.aiknow.io/wpvt/wp-content/ql-cache/quicklatex.com-680ff37c3d7aa207e3b2322fdb75df24_l3.png)
dove

è una matrice di trasformazione.
2. Ciclo di Vita di ResNet
Il ciclo di vita dell’architettura ResNet comprende diverse fasi:
2.1. Preparazione del Modello
-
- Definizione dell’architettura (numero di blocchi residuali, dimensioni dei filtri, ecc.).
- Inizializzazione dei pesi.
2.2. Addestramento
-
- Forward pass: propagazione dell’input attraverso la rete.
- Calcolo della loss function.
- Backpropagation: aggiornamento dei pesi usando l’algoritmo di discesa del gradiente (SGD o Adam).
- Uso delle skip connections per migliorare il flusso del gradiente.
2.3. Validazione e Test
-
- Valutazione delle prestazioni su dati non visti.
- Possibile fine-tuning o aggiustamento di iperparametri.
2.4. Inferenza
-
- Uso del modello addestrato per fare previsioni su nuovi dati.
3. ResNet-50: Struttura Specifica
ResNet-50 è una versione specifica di ResNet con 50 livelli, organizzati come segue:
- Un primo strato convoluzionale (
, stride 2)
- Un max-pooling (
)
- 4 blocchi residuali con (3, 4, 6, 3) sottoblocchi ciascuno
- Un fully connected layer finale per la classificazione
La profondità della rete permette di catturare caratteristiche gerarchiche avanzate, rendendo ResNet50 efficace per compiti complessi di visione AI.
ResNet50 è una delle varianti più utilizzate perché offre un buon equilibrio tra profondità e efficienza computazionale. La sua architettura è composta da:
- Un layer convoluzionale iniziale seguito da un max-pooling.
- 16 bottleneck blocks organizzati in quattro gruppi.
- Un average pooling e un fully connected layer finale.
Bottleneck Blocks
A differenza dei blocchi residui standard, i bottleneck blocks utilizzano una sequenza di tre convoluzioni con kernel di dimensioni (1×1, 3×3, 1×1):
- 1×1 Conv– Riduzione della dimensionalità.
- 3×3 Conv – Elaborazione delle caratteristiche.
- 1×1 Conv – Ripristino della dimensionalità.
Questa configurazione consente di mantenere il numero di parametri gestibile anche in architetture profonde.
Vantaggi di ResNet e ResNet50
- Mitigazione del vanishing gradient: Grazie alle skip connections, i gradienti possono fluire senza degradarsi.
- Maggiore profondità senza aumentare la complessità computazionale: I bottleneck blocks migliorano l’efficienza rispetto ai blocchi residui standard.
- Prestazioni elevate su ImageNet e altri dataset: ResNet50 è ampiamente utilizzata per classificazione, segmentazione e riconoscimento di oggetti.
- Trasferimento dell’apprendimento: ResNet50 pre-addestrata su ImageNet viene spesso utilizzata per il fine-tuning in diverse applicazioni
Applicazioni di ResNet50
ResNet50 viene impiegata in numerosi contesti, tra cui:
- Riconoscimento di immagini: Classificazione di oggetti in dataset come ImageNet.
- Diagnostica medica: Identificazione di patologie da immagini mediche.
- Sorveglianza e sicurezza: Riconoscimento facciale e analisi video.
- Veicoli autonomi: Identificazione di segnali stradali e ostacoli.

Problemi e Limiti di ResNet
Complessità computazionale:
Nonostante i vantaggi significativi offerti da ResNet50, come la riduzione del rischio di vanishing gradient grazie alle skip connections, è comunque un modello molto profondo e complesso. La sua profondità, infatti, implica una considerevole quantità di operazioni computazionali. Questo può essere un ostacolo su dispositivi con risorse limitate, come quelli mobili o embedded. I tempi di inferenza possono risultare lenti, e l’utilizzo di memorie elevate può essere problematico in applicazioni che necessitano di una risposta rapida.
Overfitting in presenza di pochi dati:
Sebbene le skip connections di ResNet migliorino la capacità di apprendimento e la generalizzazione, il modello può comunque soffrire di overfitting quando i dati a disposizione sono pochi. Questo è particolarmente vero se il dataset non è abbastanza vario o rappresentativo. In questi casi, l’architettura profonda potrebbe imparare a “memorizzare” i dati di addestramento invece di generalizzare. Una soluzione efficace per contrastare l’overfitting è l’uso di data augmentation, che consente di aumentare la varietà dei dati di addestramento modificando le immagini (ad esempio, tramite rotazioni, zoom, traslazioni). Questo approccio permette di migliorare la robustezza del modello senza la necessità di raccogliere nuovi dati.
Conclusione
ResNet e le sue varianti, in particolare ResNet50, hanno trasformato il campo della visione artificiale. Grazie alla loro innovativa architettura con connessioni residuali, queste reti consentono l’addestramento di modelli profondi senza incorrere nei problemi tipici delle CNN tradizionali. La loro efficienza e accuratezza le rendono strumenti fondamentali per un’ampia gamma di applicazioni.