Clasificación de imágenes sobre CIFAR-100 comparando dos estrategias: Transfer Learning con redes preentrenadas (VGG16, MobileNetV2) y CNN diseñada desde cero con técnicas de optimización progresivas.
Proyecto del Máster en Data Science & AI — Nuclio Digital School (Abril 2026).
| Estrategia | Mejor modelo | Test Accuracy |
|---|---|---|
| Transfer Learning + Fine Tuning | VGG16 FT | 44.81% |
| From Scratch | CNN Optimizada (BN + DataAug) | 67.36% |
La CNN entrenada desde cero supera al mejor modelo de Transfer Learning por +22.55 pp, resultado contraintuitivo explicado por el gap de resolucion: VGG16 y MobileNetV2 fueron diseñados para imágenes de 224x224, mientras que CIFAR-100 usa imágenes de 32x32.
- CIFAR-100 (via
keras.datasets.cifar100) - 60.000 imágenes RGB de 32x32 px — 100 clases, 600 imágenes/clase
- Split: 45.000 train / 5.000 val / 10.000 test (estratificado)
- Línea base aleatoria: 1% (1/100 clases)
Dos arquitecturas preentrenadas con ImageNet, evaluadas en Feature Extraction y Fine Tuning:
| Modelo | Test Accuracy | Parámetros entrenables |
|---|---|---|
| VGG16 FE | 35.96% | Solo clasificador |
| VGG16 FT | 44.81% | Clasificador + block5 |
| MobileNetV2 FE | 13.98% | Solo clasificador |
| MobileNetV2 FT | 27.31% | Clasificador + últimas 20 capas |
¿Por qué MobileNetV2 rinde menos que VGG16?: el stride=2 inicial de MobileNetV2 colapsa los feature maps de 32x32 muy rápidamente, degradando la calidad de las representaciones. VGG16 aplica la reducción espacial de forma mas gradual.
Diseño propio con optimización progresiva e incremental:
| Modelo | Técnicas | Test Accuracy | Cambio |
|---|---|---|---|
| CNN Base | Ninguna | 38.57% | línea base |
| CNN + L2 | Weight Regularization | 37.36% | -1.21 pp |
| CNN + L2 + Dropout | + Dropout (0.25 / 0.5) | 44.83% | +7.47 pp |
| CNN Optimizada | + BatchNorm + DataAug + GAP | 67.36% | +22.53 pp |
Técnicas clave del modelo final:
- 3 bloques convolucionales dobles (64 -> 128 -> 256 filtros).
- BatchNormalization tras cada Conv2D.
- GlobalAveragePooling2D en lugar de Flatten (reduce parámetros del clasificador).
- Data Augmentation en tiempo real (flip, rotation, shift, zoom).
- EarlyStopping + ReduceLROnPlateau.
- 1.33M parámetros totales
.
+-- docs/
| +-- Entregable_4_Deep_Learning.pdf # Documento con el enunciado
+-- notebooks/
| +-- Grupo_2_dscesp_0925_Deep_Learning.ipynb # Notebook ejecutado (entrega oficial)
+-- README.md
+-- LICENSE
El notebook esta diseñado para ejecutarse en Google Colaboratory sin modificaciones.
- Abrir
Grupo_2_dscesp_0925_Deep_Learning.ipynben Google Colab. - Ejecutar todas las celdas en orden (
Runtime > Run all). - CIFAR-100 se descarga automaticamente via
keras.datasets.
Dependencias (disponibles por defecto en Colab):
- TensorFlow >= 2.x
- NumPy, Matplotlib, scikit-learn
Gabriela Alberico, Jorge Silva, Robert Tunzi, Matias Lannes, Alexis Labrador
Master en Data Science & AI — Nuclio Digital School — Abril 2026