Residual Networks (ResNet)
Una red residual (ResNet) suma la entrada de cada bloque a su salida mediante una conexión de salto para poder entrenar redes muy profundas. Incluye bloques, variantes y código.
Una red residual (ResNet) es una red neuronal convolucional (CNN) profunda formada por bloques residuales, en los que una conexión de atajo suma la entrada de cada bloque a su salida. Así, cada bloque solo aprende una corrección de su entrada, lo que permite entrenar de forma fiable redes de 50, 152 o más de 1 000 capas. Kaiming He, Xiangyu Zhang, Shaoqing Ren y Jian Sun, de Microsoft Research, presentaron ResNet en el artículo de 2015 Aprendizaje residual profundo para el reconocimiento de imágenes; un ensamblado de redes residuales ganó la tarea de clasificación de ILSVRC 2015 con un error top-5 del 3.57 % en ImageNet. Desde entonces, las conexiones residuales se han convertido en una parte habitual de la mayoría de las arquitecturas profundas, incluidos los Transformers y los detectores de objetos en tiempo real.
El problema de degradación#
Antes de ResNet, añadir capas a una pila simple de convoluciones acababa empeorando los resultados. Los autores de ResNet demostraron que una red simple de 56 capas tenía más error de entrenamiento que una de 20, por lo que el sobreajuste no podía explicar el descenso del rendimiento. La red más profunda podía igualar a la superficial asignando la identidad a sus capas adicionales, pero el descenso de gradiente no encontraba esa solución. Los autores llamaron a esto el problema de degradación. El problema del gradiente desvanecido ya se había abordado en gran medida con la inicialización normalizada de pesos y la normalización por lotes, así que las redes simples profundas convergían, pero hacia soluciones peores.
Cómo funcionan los bloques residuales#
Un bloque residual calcula y = F(x) + x, donde x es la entrada del bloque y F es una pequeña pila de capas, normalmente dos o tres convoluciones con normalización por lotes y ReLU. Si la mejor transformación para el bloque se aproxima a una transformación identidad, las capas solo tienen que hacer que F tienda a cero, lo que es mucho más fácil que aprender la identidad desde cero. El atajo también proporciona a los gradientes una ruta directa hacia atrás a través de cada bloque. Los atajos de identidad no añaden parámetros y apenas requieren cómputo. Cuando un bloque cambia el número de canales o reduce la resolución con un stride de 2, x deja de tener la misma forma que F(x), así que una convolución de 1×1 proyecta el atajo a la nueva forma.
ResNet-18 y ResNet-34 apilan este bloque básico de dos convoluciones. ResNet-50, ResNet-101 y ResNet-152 utilizan un bloque cuello de botella de tres convoluciones: una convolución de 1×1 reduce los canales, una convolución de 3×3 los procesa y una segunda convolución de 1×1 los restaura, lo que mantiene asequible el entrenamiento de modelos profundos. ResNet-50 tiene unos 25,6 millones de parámetros. El artículo original también entrenó una red de 1 202 capas en CIFAR-10 hasta lograr menos del 0,1 % de error de entrenamiento, aunque su error de prueba del 7,93 % fue peor que el 6,43 % de una red de 110 capas; los autores atribuyeron esta diferencia al sobreajuste en el pequeño conjunto de datos.
Variantes de ResNet#
- ResNet de preactivación: En un artículo de 2016, los mismos autores movieron la normalización por lotes y ReLU antes de cada convolución, dejando la ruta del atajo como una identidad pura, y entrenaron una red de 1 001 capas en CIFAR-10.
- ResNeXt: Divide cada bloque cuello de botella en muchas rutas paralelas de poca anchura, denominadas cardinalidad, lo que aumenta la precisión con el mismo coste computacional.
- Wide ResNet: Utiliza menos bloques, pero más anchos, y demuestra que la anchura puede sustituir parte de la profundidad.
- ResNet modernizadas: ConvNeXt (2022) actualizó el diseño de ResNet con kernels más grandes, normalización por capas y activaciones GELU para competir con los Transformers de visión.
Uso de una ResNet preentrenada#
Las ResNet preentrenadas siguen siendo referencias habituales y backbones para el aprendizaje por transferencia. Los modelos ResNet de torchvision incluyen pesos de ImageNet y el preprocesamiento correspondiente, así que clasificar una imagen requiere unas pocas líneas:
import urllib.request
import torch
from torchvision.io import decode_image
from torchvision.models import ResNet50_Weights, resnet50
# Load ResNet-50 with ImageNet weights and its matching preprocessing
weights = ResNet50_Weights.DEFAULT
model = resnet50(weights=weights).eval()
preprocess = weights.transforms()
# Download and decode a sample image
data = urllib.request.urlopen("https://ultralytics.com/images/bus.jpg").read()
image = decode_image(torch.frombuffer(bytearray(data), dtype=torch.uint8))
# Classify the image and report the most likely ImageNet class
with torch.no_grad():
probs = model(preprocess(image).unsqueeze(0)).softmax(dim=1)
score, index = probs.max(dim=1)
print(f"{weights.meta['categories'][index.item()]}: {score.item():.2f}")Imprime minibus: 0.25, la clase más cercana de las 1 000 de ImageNet al autobús urbano de la foto. Para una tarea personalizada, sustituir la última capa totalmente conectada y ajustar el modelo con etiquetas nuevas permite reutilizar las características que las etapas residuales aprendieron con ImageNet.
ResNet frente a arquitecturas relacionadas#
- Redes simples como VGG: VGG apila convoluciones de 3×3 sin atajos y llega como máximo a 19 capas con pesos. ResNet-152 tiene ocho veces más profundidad y menor complejidad que VGG-19.
- Redes Highway: Desarrolladas al mismo tiempo que ResNet, añaden compuertas aprendidas que pueden cerrar el atajo. Los atajos de identidad de ResNet nunca se cierran y no añaden parámetros.
- DenseNet: Concatena las salidas de todas las capas anteriores de un bloque en vez de añadir un único atajo, lo que permite reutilizar características a costa de aumentar el número de canales.
- U-Net: Sus conexiones de salto llevan mapas de características del codificador al decodificador y los concatenan allí, enlazando etapas distantes en lugar de rodear bloques individuales.
- Transformers de visión (ViT): Sustituyen las convoluciones por autoatención, pero mantienen conexiones residuales alrededor de cada subcapa de atención y de propagación hacia delante, como todos los Transformers.
Conexiones residuales en modelos modernos#
La idea residual sobrevivió a las arquitecturas ResNet concretas. Cada capa de un modelo de lenguaje grande (LLM) suma sus salidas de atención y de propagación hacia delante a un flujo residual acumulado, y la mayoría de los detectores CNN construyen sus backbones a partir de bloques residuales. En YOLO26, los bloques C3k2 se construyen con módulos cuello de botella que devuelven x + F(x) cuando coinciden los canales de entrada y salida; además, el paquete Ultralytics incluye configuraciones de RT-DETR de Baidu con backbones ResNet-50 y ResNet-101. El artículo sobre ResNet ganó el premio al mejor artículo de CVPR 2016 y, en un análisis de Nature de 2025, fue clasificado como el artículo más citado del siglo XXI.










