Clasificador de comida saludable
Clasificador binario de comida saludable con CNN propia sobre Food-101 y demo en Streamlit.
01 Resumen
Sistema de visión artificial que clasifica imágenes de platos de comida como saludables o no saludables. Reorganiza las 101 categorías del dataset Food-101 en dos clases binarias y entrena una CNN diseñada desde cero (FoodNet, tres bloques convolucionales con BatchNormalization y Dropout) en TensorFlow/Keras. El pipeline cubre descarga desde Kaggle, limpieza de imágenes corruptas, balanceo por aumento de datos, entrenamiento con EarlyStopping y evaluación con matriz de confusión, alcanzando 71% de accuracy en validación. Incluye una interfaz web en Streamlit.
02 Resultados
Cifras verificables en el repositorio y su documentación:
03 Decisiones éticas
- La etiqueta saludable o no saludable es un juicio propio asignado categoría por categoría, no un dato nutricional medido. Queda escrita en el repositorio precisamente para que se pueda revisar, discutir o reemplazar.
- Food-101 está compuesto por platos de restaurante mayoritariamente occidentales, así que el modelo hereda esa noción cultural de lo saludable y no puede considerarse válido fuera de ella.
- El clasificador se presenta como demostración técnica y no como consejo nutricional o médico.
04 Aspectos destacados
- CNN propia (FoodNet) de 3 bloques convolucionales con BatchNormalization y Dropout, en lugar de transfer learning.
- Pipeline reproducible en 6 scripts: descarga desde Kaggle, reorganización de Food-101 en clases binarias, limpieza, aumento de datos, entrenamiento y evaluación.
- Entrenamiento con EarlyStopping y ModelCheckpoint; evaluación con reporte de clasificación y matriz de confusión sobre 22.117 imágenes.
- Interfaz web en Streamlit para clasificar imágenes subidas por el usuario en tiempo real, con demo en video.
- README con comparación justificada de arquitecturas (CNN propia vs. MobileNetV2) y una reflexión ética sobre sesgos del dataset.
05 Limitaciones
La etiqueta binaria colapsa información que la imagen no contiene: dos platos visualmente idénticos pueden diferir en porción, aceite o cocción. Ese ruido de etiqueta pone un techo al accuracy alcanzable que ninguna arquitectura puede superar. A eso se suman tres condiciones del montaje que conviene tener a la vista al leer el 0.71: las imágenes se reducen a 64x64 píxeles, resolución que borra detalles de textura relevantes; la validación es una partición aleatoria simple del mismo conjunto, sin validación cruzada ni conjunto de prueba independiente; y el aumento de datos se escribió en la misma carpeta que después se particiona, de modo que copias derivadas de una misma fotografía pueden quedar a ambos lados de la división y el accuracy queda algo optimista.