Residual Networks (ResNet)
Scopri la potenza delle reti residue (ResNet). Impara come le connessioni skip risolvano il problema della scomparsa dei gradienti, consentendo il deep learning per la computer vision.
Le reti residuali, ampiamente note come ResNet, sono un tipo specifico di architettura di rete neurale artificiale (ANN) progettata per consentire l'addestramento di reti estremamente profonde. Introdotta dai ricercatori di Microsoft nel 2015, ResNet ha risolto un collo di bottiglia critico del deep learning noto come problema del gradiente evanescente. Nelle reti tradizionali, l'aggiunta di un numero maggiore di layer portava spesso alla saturazione o al degrado delle prestazioni, perché il segnale necessario per aggiornare i pesi del modello svaniva durante la propagazione all'indietro attraverso i layer. ResNet ha introdotto le "skip connection" (o connessioni residuali), che consentono ai dati di bypassare uno o più layer e fluire direttamente verso le fasi di elaborazione successive. Questa innovazione ha dimostrato che le reti più profonde potevano essere addestrate efficacemente, portando a importanti progressi nella visione artificiale (CV) e diventando un concetto fondamentale per le architetture moderne.
Il concetto fondamentale: apprendimento residuale#
La caratteristica distintiva di una ResNet è il "blocco residuale". In una rete neurale convoluzionale (CNN) standard, ogni layer tenta di apprendere una mappatura diretta dall'input all'output. Man mano che le reti diventano più profonde, apprendere questa mappatura diretta diventa sempre più difficile.
ResNet modifica questo approccio formulando l'obiettivo di apprendimento in modo diverso. Invece di aspettarsi che ogni sequenza di layer apprenda l'intera mappatura sottostante, il blocco residuale obbliga i layer ad apprendere il "residuo", ovvero la differenza tra l'input e l'output desiderato. L'input originale viene quindi aggiunto nuovamente al residuo appreso tramite una skip connection. Questo cambiamento strutturale implica che, se una mappatura identità (che trasferisce l'input senza modificarlo) è ottimale, la rete può imparare facilmente a portare i residui a zero. Ciò rende i modelli di deep learning (DL) molto più semplici da ottimizzare, consentendo loro di scalare da alcune decine a centinaia o persino migliaia di layer.
Principali varianti architetturali#
Dalla sua introduzione, diverse varianti di ResNet sono diventate benchmark standard nella comunità AI.
- ResNet-50: Una versione a 50 layer che utilizza un design "bottleneck". Questo design usa convoluzioni 1x1 per ridurre e poi ripristinare le dimensioni, rendendo la rete efficiente dal punto di vista computazionale e mantenendo al contempo un'elevata accuratezza.
- ResNet-101 e ResNet-152: Varianti più profonde, rispettivamente con 101 e 152 layer. Vengono spesso utilizzate quando le risorse computazionali consentono una maggiore complessità per catturare mappe delle caratteristiche più articolate.
- ResNeXt: Un'evoluzione di ResNet che introduce una dimensione di "cardinalità", suddividendo il blocco residuale in più percorsi paralleli, con miglioramenti in termini di efficienza e prestazioni.
Applicazioni nel mondo reale#
La robustezza delle architetture ResNet le ha rese una scelta privilegiata per un'ampia gamma di attività visive.
- Analisi di immagini mediche: In ambito sanitario, identificare anomalie sottili nelle scansioni ad alta risoluzione è fondamentale. I modelli basati su ResNet vengono spesso impiegati per rilevare condizioni come il rilevamento di tumori nell'imaging medico, dove la profondità della rete aiuta a distinguere pattern dettagliati nei dati MRI o CT.
- Veicoli autonomi: Le auto a guida autonoma richiedono un'estrazione affidabile delle caratteristiche dai flussi delle telecamere per identificare pedoni, segnali e ostacoli. Le ResNet fungono spesso da backbone per i sistemi di rilevamento degli oggetti nelle applicazioni di AI nel settore automobilistico, fornendo le ricche caratteristiche visive necessarie per una navigazione sicura.
ResNet a confronto con altre architetture#
Per comprendere la sua utilità specifica, è utile distinguere ResNet dalle altre architetture più diffuse.
- ResNet vs. VGG: Le reti VGG (Gruppo di geometria visiva) sono anch'esse CNN profonde, ma non dispongono di connessioni residuali. Di conseguenza, sono molto più difficili da addestrare a profondità paragonabili a quelle di ResNet e sono generalmente più costose dal punto di vista computazionale a causa dei loro grandi layer completamente connessi.
- ResNet vs. Inception: Le reti Inception si concentrano sull'ampiezza, utilizzando filtri di più dimensioni all'interno dello stesso layer per catturare caratteristiche a scale diverse. ResNet si concentra sulla profondità. Le architetture moderne come Inception-ResNet combinano entrambi i concetti.
- ResNet vs. Transformer per la visione (ViT): Mentre i ViT usano meccanismi di self-attention per elaborare globalmente le immagini, le ResNet si basano su convoluzioni locali. Tuttavia, le ResNet rimangono una solida baseline e sono spesso più veloci per dataset più piccoli o per l'inferenza in tempo reale.
Esempio di implementazione#
Le librerie moderne di deep learning come PyTorch semplificano l'accesso ai modelli ResNet pre-addestrati. Questi modelli sono preziosi per il transfer learning, in cui un modello addestrato su un dataset di grandi dimensioni come ImageNet viene sottoposto a fine-tuning per un'attività specifica.
Il seguente snippet Python mostra come caricare un modello ResNet-50 pre-addestrato utilizzando torchvision (parte dell'ecosistema PyTorch) ed eseguire un semplice forward pass. Sebbene gli utenti della Ultralytics Platform possano spesso utilizzare YOLO26 per il rilevamento, comprendere i concetti alla base del backbone, come ResNet, è fondamentale per una personalizzazione avanzata.
import torch
import torchvision.models as models
# Load a pre-trained ResNet-50 model
resnet50 = models.resnet50(weights=models.ResNet50_Weights.DEFAULT)
resnet50.eval() # Set model to evaluation mode
# Create a dummy input tensor (batch_size, channels, height, width)
input_tensor = torch.randn(1, 3, 224, 224)
# Perform a forward pass to get predictions
with torch.no_grad():
output = resnet50(input_tensor)
print(f"Output shape: {output.shape}") # Expect [1, 1000] for ImageNet classesImportanza nell'AI moderna#
Sebbene le architetture più recenti come YOLO26 impieghino strutture altamente ottimizzate per massimizzare velocità e accuratezza, i principi dell'apprendimento residuale rimangono onnipresenti. Il concetto di skip connection è ormai un componente standard in molte reti avanzate, inclusi i Transformer utilizzati nell'elaborazione del linguaggio naturale (NLP) e nei più recenti modelli di rilevamento degli oggetti. Consentendo alle informazioni di fluire più liberamente attraverso la rete, ResNet ha aperto la strada ai modelli profondi e complessi che alimentano l'intelligenza artificiale odierna.









