Skip to content

alexisnlh/cifar100-deep-learning

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CIFAR-100 Image Classification — Transfer Learning vs From Scratch

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).


Resultado principal

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.


Dataset

  • 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)

Estrategia 1 — Transfer Learning + Fine Tuning

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.


Estrategia 2 — CNN From Scratch (evolución por técnica)

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

Estructura del proyecto

.
+-- 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

Ejecución

El notebook esta diseñado para ejecutarse en Google Colaboratory sin modificaciones.

  1. Abrir Grupo_2_dscesp_0925_Deep_Learning.ipynb en Google Colab.
  2. Ejecutar todas las celdas en orden (Runtime > Run all).
  3. CIFAR-100 se descarga automaticamente via keras.datasets.

Dependencias (disponibles por defecto en Colab):

  • TensorFlow >= 2.x
  • NumPy, Matplotlib, scikit-learn

Equipo

Gabriela Alberico, Jorge Silva, Robert Tunzi, Matias Lannes, Alexis Labrador

Master en Data Science & AI — Nuclio Digital School — Abril 2026

About

CIFAR-100 image classification: Transfer Learning (VGG16, MobileNetV2) vs custom CNN from scratch. Best result: 67.36% with BN + Data Augmentation. Nuclio Digital School — Master DS&AI 2026.

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors