Python Data Science Program
📓 Abrir notebook en GitHub

Clase 130 — Arquitecturas CNN: LeNet, AlexNet, VGG, GoogLeNet, ResNet, Xception, SENet, EfficientNet, ConvNeXt

Parte: 2 — Deep Learning · Fuente: Géron, cap. 14 § CNN Architectures + papers originales. ⏱️ Duración estimada: 95 min.

🎯 Objetivo

Conocer la historia y evolución de las arquitecturas CNN desde LeNet-5 (1998) hasta ConvNeXt (2022) — qué innovación introdujo cada una, por qué importaba, y cuál usar hoy. Identificar 3 patrones clave: profundidad creciente, módulos con paths múltiples, eficiencia paramétrica.

📚 Resultados de aprendizaje

Al finalizar, el estudiante podrá:

🗺️ Temas

📖 Definiciones y características

📂 Dataset / recursos

🧪 Ejercicios

  1. Cargar varios modelos: keras.applications.{ResNet50, EfficientNetB0, ConvNeXtTiny}(weights='imagenet'). Comparar model.count_params() y model.summary().
  2. Mini-ResNet: implementar 4 bloques residuales: def res_block(x): return x + Conv(64,3,padding='same')(ReLU()(Conv(64,3,padding='same')(x))). Apilar y entrenar.
  3. Skip connection a mano: comparar entrenamiento de un "ResNet" sin skip vs con skip a 50 capas. Sin skip no entrena.
  4. Depthwise-separable: usar SeparableConv2D en lugar de Conv2D en el mismo modelo. Comparar params y accuracy.
  5. Squeeze-Excite: implementar un bloque SE manualmente: s = GlobalAvgPool(x); s = Dense(C//r)(s); s = Dense(C, sigmoid)(s); return x * Reshape((1,1,C))(s).

📝 Homework verificable

Comparar 4 arquitecturas en un dataset propio de imágenes (≥ 5 clases) con transfer learning:

  1. ResNet50 (clásico).
  2. EfficientNetB0 (eficiente).
  3. MobileNetV3Small (móvil).
  4. ConvNeXtTiny (moderno).

Para cada uno: feature extraction (frozen) + fine-tune. Reportar accuracy, # parámetros, tiempo de inference.

Criterio de aceptación: ConvNeXt o EfficientNet deben ganar en accuracy; MobileNet en velocidad de inference. ResNet sirve de baseline.

⚠️ Errores comunes

Síntoma / mensaje Causa y cómo arreglar
Cargar ResNet50 sin include_top=False y pasarle imágenes que no son 224×224 El head ImageNet espera 1000 clases. Fix: include_top=False, input_shape=(...).
Cargar EfficientNet y pasarle imágenes en [0, 1] Espera preprocesamiento específico. Fix: keras.applications.efficientnet.preprocess_input.
Implementar ResNet desde cero y Add() falla por shapes distintos Skip connection requiere shapes iguales — si Conv cambió channels o resolución, agregar Conv(1×1) en la skip.
MobileNet para batch grande en CPU lento Está optimizado para GPU/mobile. Fix: para batch CPU usar EfficientNet o ResNet.
ConvNeXt en TF Lite no exporta Algunos ops de ConvNeXt aún no portados a TF Lite. Fix: usar EfficientNet o MobileNet para móvil.

❓ Preguntas frecuentes

❓ ¿Cuál arquitectura uso en 2026?

❓ ¿ResNet aún se usa?

Sí, como baseline universal. Confiable, bien entendida, todo framework la soporta.

❓ ¿ViT supera a CNNs?

Con datasets muy grandes (>10M imágenes), ViT (clase 126) gana. Con datasets típicos del cliente (<100k imágenes), CNNs ganan o empatan. ConvNeXt mostró que CNNs bien modernizadas igualan a ViT.

❓ ¿"Compound scaling" qué significa?

EfficientNet showed que escalar depth × width × resolution con coeficientes balanceados (φ) es más eficiente que escalar uno solo. Por eso B0, B1, B2... son la misma red escalada.

❓ ¿Tantas opciones por qué?

Cada una optimizó una métrica distinta (accuracy puro, params, latencia, eficiencia mobile). No hay "una mejor" — depende del constraint.

🔗 Referencias

📥 Material descargable

➡️ Siguiente clase

Clase 131 — Transfer learning con CNNs preentrenadas