Skip to main content
Esta página documenta la estructura completa del proyecto, explicando el propósito de cada carpeta y módulo.

Árbol de Directorios

proyectoia/
├── data/                           # Dataset (descargar de Kaggle)
│   └── chest_xray/
│       ├── train/
│       │   ├── NORMAL/
│       │   └── PNEUMONIA/
│       └── test/
│           ├── NORMAL/
│           └── PNEUMONIA/
├── models/                         # Modelos entrenados
│   ├── best_model.keras           # Mejor modelo según validación
│   └── final_model.keras          # Modelo al final del entrenamiento
├── results/                        # Gráficas y resultados
│   ├── training_history.png       # Evolución del entrenamiento
│   ├── confusion_matrix.png       # Matriz de confusión
│   ├── roc_curve.png              # Curva ROC y AUC
│   └── predictions.png            # Ejemplos de predicciones
├── src/                           # Código fuente
│   ├── model.py                   # Arquitectura CNN
│   ├── data_loader.py             # Carga de datos
│   ├── train.py                   # Entrenamiento
│   └── evaluate.py                # Evaluación
├── main.py                         # Script principal
├── verificar_dataset.py            # Verificador de dataset
├── PLANTEAMIENTO.md               # Paso 1: Definición del problema
├── DISEÑO_MODELO.md               # Paso 2: Arquitectura del modelo
├── INSTRUCCIONES_DATASET.md       # Paso 3: Instrucciones del dataset
├── GUIA_COMPLETA.md               # Guía completa de implementación
├── LEEME.md                        # Guía rápida en español
├── README.md                       # Documentación principal
├── Pipfile                         # Dependencias del proyecto
└── Pipfile.lock                    # Versiones bloqueadas

Carpetas Principales

data/

Dataset

Contiene las radiografías de tórax descargadas de Kaggle.Tamaño: ~1.15 GBNo incluido en el repositorio - Debes descargarlo manualmente
Estructura esperada:
data/chest_xray/
├── train/
│   ├── NORMAL/          # 1,341 imágenes
│   └── PNEUMONIA/       # 3,875 imágenes
└── test/
    ├── NORMAL/          # 234 imágenes
    └── PNEUMONIA/       # 390 imágenes
Total: 5,863 imágenes de rayos X de tórax en formato JPEG

models/

Modelos Entrenados

Almacena los modelos de Keras entrenados durante la ejecución.
Archivos generados:
ArchivoDescripciónCuándo se genera
best_model.kerasMejor modelo según validaciónDurante entrenamiento (checkpoint)
final_model.kerasModelo al finalizar todas las épocasAl terminar entrenamiento
El archivo best_model.keras es el que se usa para evaluación, ya que tiene el mejor desempeño en el conjunto de validación.

results/

Visualizaciones

Contiene todas las gráficas y resultados de evaluación.
Archivos generados:
Gráficas de evolución durante el entrenamiento:
  • Loss (pérdida) en train y validación
  • Accuracy (precisión) en train y validación
Útil para identificar overfitting o underfitting.

src/

Código Fuente

Módulos principales de la aplicación.
Esta carpeta contiene todo el código Python del proyecto, organizado en 4 módulos principales.

Módulos del Código

src/model.py

Arquitectura de la CNN
# Define la arquitectura de la red neuronal convolucional
# 3 bloques convolucionales + capas densas
Componentes:
  • 3 capas convolucionales (32, 64, 128 filtros)
  • MaxPooling después de cada convolución
  • Capa Flatten
  • Capa Dense (128 neuronas)
  • Dropout (0.5) para regularización
  • Capa de salida (2 neuronas, Softmax)
Ejecutar:
pipenv run python src/model.py
Muestra un resumen del modelo con el número total de parámetros.

src/data_loader.py

Cargador de Datos con Augmentation
# Carga las imágenes del dataset
# Aplica data augmentation para mejorar generalización
# Prepara los datos para entrenamiento
Data Augmentation aplicado:
  • Rotación aleatoria (±15 grados)
  • Desplazamiento horizontal/vertical (±10%)
  • Zoom aleatorio (±20%)
  • Flip horizontal
  • Rescalado a [0, 1]
El data augmentation solo se aplica al conjunto de entrenamiento, no al de test.

src/train.py

Entrenamiento del Modelo
# Entrena el modelo CNN con el dataset
# Implementa early stopping y checkpoints
# Guarda el mejor modelo y visualizaciones
Callbacks implementados:
Guarda el mejor modelo según validation accuracy:
ModelCheckpoint(
    'models/best_model.keras',
    monitor='val_accuracy',
    save_best_only=True
)
Ejecutar:
pipenv run python src/train.py
Output esperado:
Epoch 1/20
163/163 [==============================] - 45s 276ms/step
loss: 0.3456 - accuracy: 0.8234 - val_loss: 0.2891 - val_accuracy: 0.8567
...
Entrenamiento completado
Mejor modelo guardado en: models/best_model.keras

src/evaluate.py

Evaluación del Modelo
# Evalúa el modelo entrenado en el test set
# Calcula métricas completas
# Genera visualizaciones de resultados
Ejecutar:
pipenv run python src/evaluate.py
Output esperado:
Evaluando modelo en test set...

Métricas de Evaluación:
========================
Accuracy:  0.8526
Precision: 0.8234
Recall:    0.9231
F1-Score:  0.8705
AUC-ROC:   0.9234

Gráficas guardadas en results/

Scripts Auxiliares

main.py

Script Principal de Ejecución

Punto de Entrada

Script unificado para ejecutar train y/o evaluate.
Uso:
python main.py all

verificar_dataset.py

Verificador de Dataset

Validación

Verifica que el dataset esté correctamente descargado y estructurado.
Ejecutar:
pipenv run python verificar_dataset.py
Output esperado:
Verificando dataset...
✓ Carpeta data/chest_xray/ encontrada
✓ Train set: 5,216 imágenes
  - NORMAL: 1,341
  - PNEUMONIA: 3,875
✓ Test set: 624 imágenes
  - NORMAL: 234
  - PNEUMONIA: 390

Dataset verificado correctamente!

Archivos de Documentación

Archivos Markdown

PLANTEAMIENTO.md

Paso 1: Definición del problema biomédico y justificación

DISEÑO_MODELO.md

Paso 2: Arquitectura CNN y justificación técnica

INSTRUCCIONES_DATASET.md

Paso 3: Cómo descargar y preparar el dataset

GUIA_COMPLETA.md

Pasos 1-4: Guía completa de implementación

README.md

Documentación principal del proyecto en inglés

LEEME.md

Guía rápida en español para empezar

Gestión de Dependencias

Pipfile

Dependencias del proyecto:
[packages]
tensorflow = "*"
keras = "*"
numpy = "*"
matplotlib = "*"
scikit-learn = "*"
pillow = "*"

[requires]
python_version = "3.9"

Instalación

1

Instalar pipenv

pip install pipenv
2

Instalar dependencias

pipenv install
3

Activar entorno

pipenv shell

Flujo de Trabajo

El flujo típico de trabajo con este proyecto es:
1

Setup inicial

git clone <repo>
cd proyectoia
pipenv install
2

Preparar datos

  • Descargar dataset de Kaggle
  • Extraer en data/chest_xray/
  • Ejecutar verificar_dataset.py
3

Entrenar

pipenv run python src/train.py
Espera 15-30 minutos
4

Evaluar

pipenv run python src/evaluate.py
Genera gráficas en results/
5

Analizar

Revisa:
  • results/training_history.png
  • results/confusion_matrix.png
  • results/roc_curve.png
  • results/predictions.png

Resumen

Esta estructura modular facilita:

Mantenibilidad

Código organizado en módulos claros y separados

Escalabilidad

Fácil agregar nuevas funcionalidades

Reproducibilidad

Dependencias versionadas con Pipfile.lock

Claridad

Documentación extensa en archivos .md

Build docs developers (and LLMs) love