Skip to main content
Esta guía te llevará a través de todo el proceso de implementación del proyecto de clasificación de neumonía, desde la definición del problema hasta la ejecución del código.

Resumen Ejecutivo

Este proyecto cubre los siguientes pasos:

Paso 1

Problema definido: Clasificación de neumonía en rayos X

Paso 2

Modelo diseñado: CNN de 3 capas convolucionales

Paso 3

Dataset identificado: Kaggle Chest X-Ray

Paso 4

Código implementado: TensorFlow/Keras

Paso 1: Definición del Problema

Problema Biomédico

Detección automática de neumonía en radiografías de tórax usando Deep Learning

Justificación

  • La neumonía causa el 15% de muertes en niños menores de 5 años
  • Es una de las principales causas de mortalidad infantil a nivel mundial
  • El diagnóstico requiere radiólogos expertos no siempre disponibles
  • Puede haber variabilidad entre observadores
  • Tiempo de espera para interpretación en zonas rurales
  • IA puede ofrecer screening rápido y consistente
  • Disponible 24/7 sin fatiga
  • Apoyo a decisión médica en áreas con recursos limitados

Archivos Relacionados

  • PLANTEAMIENTO.md - Descripción completa del problema

Paso 2: Diseño del Modelo

Arquitectura CNN Seleccionada

La arquitectura implementada consta de 3 bloques convolucionales seguidos de capas densas:
INPUT (224×224×3)

Conv2D (32 filtros, 3×3, ReLU)

MaxPooling (2×2)

Conv2D (64 filtros, 3×3, ReLU)

MaxPooling (2×2)

Conv2D (128 filtros, 3×3, ReLU)

MaxPooling (2×2)

Flatten

Dense (128, ReLU)

Dropout (0.5)

Dense (2, Softmax)

[NORMAL, PNEUMONIA]

Justificación de CNN

Información Espacial

Mantiene información espacial 2D de las imágenes

Extracción Automática

Extrae características automáticamente sin ingeniería manual

Probada en Medicina

Arquitectura probada exitosamente en imagenología médica

Eficiencia

Menos parámetros que MLP tradicionales

Hiperparámetros

ComponenteValorDescripción
OptimizadorAdamLearning rate = 0.001
LossCategorical CrossentropyPara clasificación binaria
RegularizaciónDropout 0.5 + Data AugmentationPrevención de overfitting
MétricasAccuracy, Precision, Recall, F1Evaluación completa

Ver el Modelo

Puedes visualizar un resumen del modelo ejecutando:
pipenv run python src/model.py

Archivos Relacionados

  • DISEÑO_MODELO.md - Justificación completa del diseño
  • src/model.py - Implementación del modelo en src/model.py:1

Paso 3: Dataset

Dataset Seleccionado

Chest X-Ray Images (Pneumonia) - Kaggle
Este dataset contiene radiografías de tórax de pacientes pediátricos organizadas en categorías NORMAL y PNEUMONIA.

Estadísticas del Dataset

5,863 imágenes
~1.15 GB

Cómo Obtener el Dataset

2

Descargar el archivo

Descarga el archivo archive.zip (requiere cuenta de Kaggle)
3

Extraer en el proyecto

Extrae el contenido en la carpeta data/chest_xray/ del proyectoEstructura esperada:
data/chest_xray/
├── train/
│   ├── NORMAL/
│   └── PNEUMONIA/
└── test/
    ├── NORMAL/
    └── PNEUMONIA/
4

Verificar la instalación

Ejecuta el script de verificación:
pipenv run python verificar_dataset.py
Deberías ver:
✓ Dataset encontrado
✓ Train: 5,216 imágenes
✓ Test: 624 imágenes

Archivos Relacionados

  • INSTRUCCIONES_DATASET.md - Guía completa de descarga
  • verificar_dataset.py - Script de verificación
  • src/data_loader.py - Cargador de datos con augmentation en src/data_loader.py:1

Paso 4: Implementación

Scripts Implementados

El proyecto incluye 4 scripts principales en la carpeta src/:
Arquitectura CNNDefine la arquitectura de la red neuronal convolucional con 3 bloques convolucionales.
pipenv run python src/model.py
Output: Muestra un resumen del modelo con el número de parámetros

Ejecución Completa del Proyecto

1

Instalar dependencias

Las librerías ya están configuradas en el Pipfile:
pipenv install
Esto instalará:
  • TensorFlow/Keras
  • NumPy
  • Matplotlib
  • scikit-learn
  • Pillow
2

Descargar dataset

Sigue las instrucciones del Paso 3 para descargar y verificar el dataset.
3

Entrenar el modelo

pipenv run python src/train.py
El entrenamiento ejecutará:
  • 20 épocas (puede detenerse antes con early stopping)
  • Batch size: 32
  • Validación: 20% del conjunto de entrenamiento
El proceso se detendrá automáticamente si no hay mejora en 5 épocas consecutivas.
4

Evaluar el modelo

pipenv run python src/evaluate.py
Esto generará todas las métricas y visualizaciones en la carpeta results/.
5

Revisar resultados

Los resultados estarán disponibles en results/:
  • training_history.png - Evolución del entrenamiento
  • confusion_matrix.png - Matriz de confusión
  • roc_curve.png - Curva ROC y AUC
  • predictions.png - Ejemplos visuales de predicciones

Resultados Esperados

Métricas Objetivo

Accuracy

> 85%Precisión general del modelo

Precision

> 80%De las predicciones de neumonía, cuántas son correctas

Recall

> 90%De todos los casos de neumonía, cuántos detecta el modelo

F1-Score

> 85%Media armónica entre precision y recall

AUC-ROC

Objetivo: > 0.90El área bajo la curva ROC mide la capacidad del modelo para discriminar entre clases.

Interpretación Clínica

  • Alta Recall (>90%): Minimiza falsos negativos - es crucial no perder casos de neumonía
  • Buena Precision (>80%): Evita alarmas falsas que generan procedimientos innecesarios
  • Balance: El modelo funciona como herramienta útil de screening, no como diagnóstico definitivo
Este modelo está diseñado para apoyo a la decisión médica, no para reemplazar el diagnóstico de un profesional de la salud.

Solución de Problemas

Error:
FileNotFoundError: data/chest_xray/
Solución:
  1. Verifica que descargaste el dataset de Kaggle
  2. Extrae el archivo en la carpeta data/
  3. Ejecuta pipenv run python verificar_dataset.py
Error:
ResourceExhaustedError: OOM when allocating tensor
Solución:
  • Reduce el batch_size en src/train.py de 32 a 16 u 8
  • Busca la línea: batch_size=32 y cámbiala a batch_size=16
Situación: El entrenamiento toma más de 1 horaSolución:
  • Es normal en CPU
  • Para acelerar:
    • Usa una GPU si está disponible
    • Reduce el número de épocas
    • Reduce el tamaño del dataset de entrenamiento
Error: Módulos no encontradosSolución:
pipenv install tensorflow keras numpy matplotlib scikit-learn pillow

Próximos Pasos

Después de completar los pasos 1-4, puedes:

Paso 5: Informe Técnico (6 páginas máx)

Estructura sugerida:
  1. Abstract - Resumen del proyecto
  2. Introducción - Problema y motivación
  3. Metodología - Arquitectura CNN y dataset
  4. Resultados - Métricas y gráficas
  5. Discusión - Interpretación y limitaciones
  6. Conclusiones - Logros y trabajo futuro

Paso 6: Presentación (7 minutos)

Diapositivas sugeridas:
  1. Título y equipo
  2. Problema biomédico
  3. Dataset y preprocesamiento
  4. Arquitectura CNN
  5. Resultados (métricas + gráficas)
  6. Demostración (predicciones)
  7. Conclusiones

Recursos Adicionales

Tutoriales

Papers Relacionados

  • CheXNet (Rajpurkar et al., 2017)
  • Dataset original (Kermany et al., 2018)

Mejoras Posibles

  • Transfer Learning (VGG16, ResNet)
  • Grad-CAM para visualización de activaciones
  • Clasificación multiclase (viral vs bacteriana)
  • Ensembles de modelos

Checklist Final

Antes de la entrega, verifica:
  • Dataset descargado y verificado
  • Modelo entrenado exitosamente
  • Accuracy >80% en test
  • Todas las gráficas generadas en results/
  • Código documentado
  • README.md actualizado
  • Informe técnico completo (Paso 5)
  • Presentación lista (Paso 6)

Build docs developers (and LLMs) love