Siguiendo las instrucciones de 4Geeks, el proyecto comenzó con:
Exploración y visualización del dataset original.
Normalización y redimensionamiento de las imágenes.
Separación del dataset en conjuntos de entrenamiento, validación y test.
Construcción de una CNN profunda inspirada en la arquitectura VGG16, con múltiples capas convolucionales y capas densas de gran tamaño.
Sin embargo, al intentar entrenar esta arquitectura completa en un entorno solo CPU, se observó que el tiempo de entrenamiento era computacionalmente inviable (estimaciones de varias horas por epoch), incluso reduciendo el número de epochs.
La arquitectura VGG-like propuesta es adecuada para este problema, pero requiere GPU para entrenarse en tiempos razonables. En un entorno sin aceleración por hardware, el entrenamiento completo no es práctico.
Esta limitación fue detectada tras ejecutar pruebas controladas con pocos epochs y medir el tiempo por step, lo cual permitió tomar una decisión informada sin comprometer el enfoque del proyecto.
Para poder continuar el proyecto de forma eficiente y obtener resultados válidos, se optó por aplicar Transfer Learning, una técnica ampliamente utilizada en visión por computadora.
Se utilizó MobileNetV2 preentrenada en ImageNet como red base, congelando sus pesos y entrenando únicamente una pequeña red clasificadora en la parte superior. Este enfoque permite:
Reducir drásticamente el tiempo de entrenamiento.
Obtener muy buen rendimiento incluso en CPU.
Aprovechar características visuales ya aprendidas por el modelo.
Arquitectura final: MobileNetV2 + clasificador denso
Estrategias aplicadas:
EarlyStopping
ModelCheckpoint
Métrica final en conjunto de test:
Accuracy ≈ 98.3%
El modelo final fue guardado y evaluado correctamente utilizando un conjunto de test independiente.
Aunque el proyecto comenzó siguiendo estrictamente la arquitectura propuesta por el 4Geeks, fue necesario adaptar la solución a las limitaciones del entorno. El uso de Transfer Learning permitió completar el proyecto de manera eficiente, manteniendo un alto nivel de rigor técnico y obteniendo excelentes resultados.
Este enfoque refleja una práctica habitual en proyectos reales de Machine Learning, donde las decisiones técnicas deben equilibrar teoría, recursos disponibles y objetivos del proyecto