← Volver![]()
Clasificación de neumonía en radiografías de tórax
De una red densa a transfer learning con MobileNetV2 y datos sintéticos con GAN, con evaluación única en test
Problema
Clasificar radiografías como normales o con neumonía comparando, de forma controlada, las técnicas vistas en el curso.
Datos
Chest X-Ray Images (Pneumonia), Kaggle (paultimothymooney/chest-xray-pneumonia), descargado con kagglehub.
Métodos
- Manifiesto y auditoría de imágenes (dimensiones, corruptas, hashes)
- Eliminación de duplicados y protección del conjunto de test
- Pesos de clase
- Red densa, CNN, optimizadores, regularización y normalización
- Transfer learning con MobileNetV2 (fine-tuning de las últimas 30 capas)
- GAN para generar radiografías normales y comparación controlada
- Selección por ROC-AUC de validación y umbral por índice de Youden
Resultados
- Modelo ganador (por ROC-AUC de validación): MobileNetV2 con fine-tuning de las últimas 30 capas; umbral 0.6474 fijado con validación.
- Test reservado (618 imágenes, evaluado una sola vez): ROC-AUC 96.31 %, sensibilidad 99.74 % (386 de 387 neumonías), especificidad 51.95 %, accuracy 81.88 %.
- La caída de especificidad frente a validación (97.78 %) se documenta como brecha de generalización; el umbral no se reajustó con el test.
- GAN: 500 radiografías normales sintéticas subieron la especificidad de la CNN de 91.85 % a 93.70 % (falsos positivos de 22 a 17).
- Batch Normalization colapsó a la clase mayoritaria (100 % recall, 0 % especificidad): ejemplo documentado de por qué no basta el recall.
Galería
Herramientas
PythonTensorFlow / Kerasscikit-learnDatabrickskagglehub