Análisis de radiografías para detectar neumonía en niños de 0 a 5 años con machine learning
Un proyecto educativo de Saturdays.AI La Paz explora el uso de redes neuronales para clasificar radiografías infantiles con y sin neumonía.
Proyecto de aprendizaje compartido por la comunidad. El artículo documenta el equipo, el método y los resultados; no acredita que el prototipo esté listo para su uso fuera del entorno de aprendizaje.

Nota editorial: este artículo documenta un proyecto educativo y sus resultados en los datos utilizados. No acredita validación clínica ni autorización para diagnosticar o tratar a pacientes. Las propuestas de aplicación sanitaria se conservan como objetivos del equipo, no como capacidades demostradas.
La Paz. Machine Learning. 2021
(La Paz, 2021) La elevada demanda de atención médica puede saturar los hospitales y retrasar la atención de casos urgentes. Entre ellos está la neumonía en niños de 0 a 5 años, que requiere una valoración rápida. En este proyecto exploramos cómo el aprendizaje automático podría apoyar el análisis de radiografías, sin sustituir el diagnóstico médico.
La neumonía infantil representa un importante problema de salud pública. El artículo de UNICEF citado por el equipo, publicado el 20 de enero de 2020, estimaba más de 800.000 muertes anuales de menores de 5 años, aproximadamente una cada 39 segundos, y señalaba que casi todas eran prevenibles. Estas cifras corresponden al contexto histórico del proyecto. La transmisión de los agentes que causan neumonía es solo uno de los factores implicados; no explica por sí sola esa mortalidad.
Problemática:
Teniendo en cuenta la cantidad enorme de casos de neumonía en niños menores de 5 años, ¿cómo podemos implementar una Inteligencia Artificial para que el diagnóstico de la neumonía infantil sea más eficiente?
Objetivo:
El objetivo del proyecto es desarrollar un prototipo que analice radiografías de niños de hasta 3 años para identificar patrones asociados a la neumonía. El equipo plantea que, con una validación adecuada, una herramienta de este tipo podría apoyar la priorización de casos. Los resultados de este proyecto no permiten diagnosticar a pacientes ni prescindir de la valoración médica.
Datasets:
Utilizamos el conjunto de datos “Chest X-Ray Images (Pneumonia)”, disponible en Kaggle. El equipo trabajó con 5.863 imágenes y describe una división en entrenamiento (89,4 %) y prueba (10,6 %). Cada grupo contiene dos clases: “NORMAL”, con radiografías sin neumonía, y “PNEUMONIA”, con radiografías etiquetadas como neumonía.

La segunda parte está denominada como: “PNEUMONIA” y es donde se encuentran las radiografías de los infantes que tienen neumonía:


Proceso de identificación de la neumonía:
Para preparar las radiografías, utilizamos la conversión a escala de grises de la biblioteca cv2. Este paso simplifica la representación de las imágenes para el modelo. La conversión no elimina por sí sola el ruido ni garantiza una mejora de la exactitud: esas decisiones de preprocesamiento deben evaluarse con los datos de validación.

La imagen anterior muestra el aspecto de los pulmones tras aplicar la conversión a escala de grises.
Después normalizamos los píxeles de cada imagen para que sus valores estuvieran entre 0 y 1.
También utilizamos Keras para aumentar los datos de entrenamiento mediante rotaciones, zoom y desplazamientos horizontales y verticales. Con ello buscamos aportar variedad al entrenamiento y mejorar la capacidad de generalización del modelo.
El modelo analiza las imágenes procesadas para aprender patrones que diferencien las dos clases. Las opacidades pulmonares son uno de los rasgos que el equipo pretendía estudiar; su interpretación clínica requiere personal especializado.
Modelos:
Implementamos una red neuronal convolucional (CNN), un tipo de red neuronal que puede aprender patrones visuales a partir de imágenes etiquetadas.
Las convoluciones aplican un kernel, o matriz pequeña, a distintas regiones de la imagen. La operación produce mapas de características que ayudan a la red a aprender patrones visuales.
Resultados
- Exactitud de entrenamiento, validación y prueba, y función de pérdida

- Matriz de confusión

Intentamos calcular la matriz de confusión, pero un problema de compatibilidad entre versiones impidió obtenerla.
- Exactitud:

- Pruebas con imágenes:

En la codificación utilizada, una salida cercana a 1 corresponde a la clase de pulmones sanos y una cercana a 0, a la clase de neumonía. Los ejemplos mostrados coinciden con sus etiquetas. Esta comprobación puntual no sustituye una evaluación completa del modelo.
Conclusiones y Recomendaciones
A partir de este trabajo, proponemos las siguientes recomendaciones:
- Evaluar si la conversión a escala de grises mejora el rendimiento del modelo.
- Al trabajar en Google Colab, redimensionar las imágenes para limitar el consumo de memoria y poder procesar el conjunto de datos.
- Evaluar técnicas de aumento de datos para mejorar la generalización.
- Aplicar la normalización de forma coherente durante el entrenamiento y la predicción.
Referencias:
https://www.kaggle.com/paultimothymooney/chest-xray-pneumonia
http://acodigo.blogspot.com/2013/05/procesamiento-de-imagenes-en-opencv.htmlCómo configurar el aumento de datos de imágenes en Keras. Una guía de Machine Learning Mastery sobre cómo ampliar un conjunto de entrenamiento mediante transformaciones de imágenes.
SyDoJa

Neumonía
“Análisis de radiografías para detectar neumonía en niños de 0 a 5 años con machine learning”
INTEGRANTES:
Dylan Chambi Frontanilla
Joseph Anthony Meneses Salguero
Samuel Matias Escobar Bejarano
CURSO:
Machine Learning
LA PAZ 10/09 — BOLIVIA-2021
¡Más inteligencia artificial!
Saturdays.AI acerca la IA a más personas a través del aprendizaje en comunidad y de proyectos con impacto social. Nuestro lema es AI4ALL IS AI4GOOD.
Una historia de la comunidad Saturdays.AI. Publicada originalmente el 11 nov 2021.
← Más historias de la comunidad


