Residual Networks (ResNet)
Esplora la potenza delle reti neurali residue (ResNet). Scopri come le skip connection risolvono il problema del gradiente evanescente per abilitare il deep learning per la computer vision.
Le Residual Networks, ampiamente note come ResNet, sono un tipo specifico di architettura di artificial neural network (ANN) progettata per consentire l'addestramento di reti estremamente profonde. Introdotte dai ricercatori di Microsoft nel 2015, le ResNet hanno risolto un collo di bottiglia critico nel deep learning noto come vanishing gradient problem. Nelle reti tradizionali, l'accumulo di un numero maggiore di strati portava spesso alla saturazione o al degrado delle prestazioni perché il segnale necessario per aggiornare i model weights svaniva man mano che si propagava all'indietro attraverso gli strati. Le ResNet hanno introdotto le "connessioni di salto" (o connessioni residuali), che consentono ai dati di bypassare uno o più strati e fluire direttamente alle fasi di elaborazione successive. Questa innovazione ha dimostrato che le reti più profonde possono essere addestrate in modo efficace, portando a significativi progressi nella computer vision (CV) e diventando un concetto fondamentale per le architetture moderne.
Il concetto chiave: apprendimento residuo#
La caratteristica distintiva di una ResNet è il "blocco residuale". In una convolutional neural network (CNN) standard, ogni strato tenta di apprendere una mappatura diretta dall'input all'output. Man mano che le reti diventano più profonde, l'apprendimento di questa mappatura diretta diventa sempre più difficile.
La ResNet modifica questo approccio formulando l'obiettivo di apprendimento in modo diverso. Invece di sperare che ogni pila di strati apprenda l'intera mappatura sottostante, il blocco residuale costringe gli strati 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 connessione di salto. Questo cambiamento strutturale implica che se una mappatura d'identità (il passaggio dell'input invariato) è ottimale, la rete può facilmente imparare a spingere i residui a zero. Ciò rende i modelli di deep learning (DL) molto più facili da ottimizzare, consentendo loro di scalare da decine a centinaia o persino migliaia di strati.
Varianti chiave dell'architettura#
Fin dalla loro introduzione, diverse variazioni di ResNet sono diventate benchmark standard nella comunità AI.
- ResNet-50: una versione a 50 strati che utilizza un design a "collo di bottiglia". Questo design utilizza convoluzioni 1x1 per ridurre e poi ripristinare le dimensioni, rendendo la rete efficiente dal punto di vista computazionale pur mantenendo un'elevata accuracy.
- ResNet-101 e ResNet-152: varianti più profonde rispettivamente con 101 e 152 strati. Vengono spesso utilizzate quando le risorse computazionali consentono una maggiore complessità per catturare feature maps più complesse.
- ResNeXt: Un'evoluzione di ResNet che introduce una dimensione di "cardinalità", suddividendo il blocco residuo in più percorsi paralleli, il che migliora l'efficienza e le prestazioni.
Applicazioni nel mondo reale#
La robustezza delle architetture ResNet le ha rese una scelta ideale per un'ampia gamma di attività visive.
- Medical Image Analysis: nel settore sanitario, l'identificazione di sottili anomalie in scansioni ad alta risoluzione è fondamentale. I modelli basati su ResNet vengono frequentemente impiegati per rilevare condizioni come il tumor detection in medical imaging, in cui la profondità della rete aiuta a discernere pattern dettagliati nei dati MRI o TC.
- Autonomous Vehicles: le auto a guida autonoma richiedono una perfetta estrazione delle caratteristiche dai flussi di telecamere per identificare pedoni, segnali e ostacoli. Le ResNet fungono spesso da backbone per i sistemi di rilevamento di oggetti nelle applicazioni di AI in automotive, fornendo le ricche caratteristiche visive necessarie per una navigazione sicura.
ResNet vs. altre architetture#
È utile distinguere ResNet da altre architetture popolari per comprenderne l'utilità specifica.
- ResNet vs. VGG: le reti VGG (Visual Geometry Group) sono anch'esse CNN profonde ma mancano di connessioni residuali. Di conseguenza, sono molto più difficili da addestrare a profondità paragonabili a quelle delle ResNet e sono generalmente più costose dal punto di vista computazionale a causa dei loro ampi strati completamente connessi.
- ResNet vs. Inception: le reti Inception si concentrano sulla larghezza, utilizzando filtri di diverse dimensioni all'interno dello stesso strato per catturare caratteristiche a diverse scale. La ResNet si concentra sulla profondità. Le architetture moderne come Inception-ResNet combinano entrambi i concetti.
- ResNet vs. Vision Transformer (ViT): mentre i ViT utilizzano meccanismi di auto-attenzione per elaborare le immagini a livello globale, le ResNet si affidano a convoluzioni locali. Tuttavia, le ResNet rimangono una solida baseline e sono spesso più veloci per dataset più piccoli o per l'inference in tempo reale.
Esempio di Implementazione#
Le moderne librerie di deep learning come PyTorch rendono semplice l'accesso a 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 perfezionato per un compito specifico.
Il seguente snippet Python dimostra come caricare un modello ResNet-50 pre-addestrato utilizzando torchvision (parte dell'ecosistema PyTorch) ed eseguire un semplice passaggio in avanti (forward pass). Sebbene gli utenti della Ultralytics Platform possano spesso utilizzare YOLO26 per il rilevamento, comprendere i concetti di backbone sottostanti come ResNet è fondamentale per la 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 classesSignificato nell'AI moderna#
Sebbene le architetture più recenti come YOLO26 impieghino strutture altamente ottimizzate per la massima velocità e precisione, i principi dell'apprendimento residuale rimangono onnipresenti. Il concetto di connessioni di salto è ora un componente standard in molte reti avanzate, compresi i transformer utilizzati nel natural language processing (NLP) e nei più recenti modelli di object detection. Consentendo alle informazioni di fluire più liberamente attraverso la rete, la ResNet ha aperto la strada ai modelli profondi e complessi che alimentano l'intelligenza artificiale di oggi.






