Este blogpost forma parte de una serie de 4 blogs, orientados a mostrar el impacto y aplicación de la IA. Esta segunda entrada presentará a nivel mundial las soluciones de la detección del cáncer y luego se describirá el desarrollo de un modelo de predicción de cáncer.
El cáncer es una enfermedad compleja que involucra el crecimiento incontrolado y anormal de células en el cuerpo, con la facultad de propagarse dañando tejidos y órganos sanos. Hoy en día el cáncer es una de las principales causas de mortalidad en todo el mundo, impactando profundamente la sociedad y la calidad de vida de quienes lo padecen, así como a su círculo cercano. Es por ello, que la detección temprana y precisa se ha convertido un desafío critico en la medicina moderna para mejorar las tasas de supervivencia.
Con los avances de la tecnología e investigación en el campo de la Inteligencia Artificial (IA), múltiples organizaciones, institutos, universidades, y hospitales están trabajando en conjunto utilizando esta poderosa herramienta para detectar la enfermedad en imágenes médicas, como radiografías, resonancias magnéticas y tomografías computarizadas, pudiéndose complementar con otros exámenes e historial médico. De forma particular, las Redes Neuronales Convolucionales (CNN por sus siglas en inglés), que son un tipo especializado de arquitectura de red para aprendizaje profundo, detallado en el blog anterior, han demostrado ser una herramienta que predice con altos valores de efectividad la detección de diversas enfermedades, incluido el cáncer, siempre y cuando se tenga un gran volumen de imágenes médicas utilizados para el entrenamiento del modelo.
En este artículo, se presentarán las herramientas que ofrecen bibliotecas y librerías abocadas al aprendizaje profundo. Se mostrará el paso a paso el desarrollo de un modelo de predicción de cáncer a través de imágenes médicas, utilizando la biblioteca PyTorch para construir y entrenar una CNN. Además, se abordará el uso del módulo torchvision.transforms de PyTorch utilizado para preprocesar y mejorar las imágenes médicas antes de alimentarlas a una CNN, lo que ayuda a mejorar la precisión y robustez del modelo.
La adopción de la IA aplicado al área de la salud, y en particular de la detección temprana del cáncer ha avanzado rápidamente en los últimos años, gracias a los avances en poder de cómputo de los procesadores dedicado a este tipo de aplicación como así los procesadores gráficos (GPUs). Varias empresas e instituciones alrededor del mundo están trabajando en el desarrollo y la implementación de IA para mejorar la detección temprana del cáncer. Un ejemplo de estas es la empresa Google Health donde se han desarrollado algoritmos para detectar cáncer de pulmón y mama en imágenes médicas.
A continuación, se mencionan algunos centros de investigación, empresas e instituciones que presentan importantes avances en la adopción de IA para la detección de cáncer:
País |
Ejemplos |
Estados Unidos | Centros de investigación: MD Anderson Cancer Center y Memorial Sloan Kettering Cancer Center. Empresa: PathAI |
China | Empresas: Ping An Good Doctor y Yitu Healthcare |
Reino Unido | Institutos: Servicio Nacional de Salud (NHS) y The Institute of Cancer Research (ICR) |
Israel | Startup: Ibex Medical Analytics |
Japón | Startup: AI Medical Service (AIM) |
Alemania | Empresa: Siemens-healthineers |
Tabla 1: Ejemplos de las empresas y organizaciones que están desarrollando IA aplicado a la detección de cáncer
La IA ha demostrado ser una herramienta valiosa para ayudar en la detección temprana del cáncer y en la toma de decisiones de los especialistas del área. Algunos de los principales beneficios de utilizar IA son:
Independiente de todos estos beneficios, la IA no reemplaza el juicio clínico y la experiencia médica. Es importante mencionar que el desarrollo de modelos y su implementación deben llevarse a cabo en colaboración con los profesionales especializados para garantizar robustez en las herramientas creadas. Estas herramientas deben servir como apoyo para los profesionales especialistas, y con la validación rigurosa de los resultados por parte de ellos, se logre garantizar la confiabilidad del diagnóstico preliminar entregado por la IA. Esto ayuda a prevenir interpretaciones incorrectas, como falsos negativos o falsos positivos, siendo fundamental que la toma de decisiones final la realicen los especialistas del área.
Además, en el proceso de adopción de la IA en el sector de la salud es fundamental incorporar las regulaciones correspondientes a modo de garantizar la seguridad de los datos de pacientes.
En Chile también se están desarrollando investigaciones para la detección temprana del cáncer ocupando herramientas de IA. Si bien la adopción de la IA en Chile está por debajo de los países mencionados en la tabla 1, ya cuenta con avances importantes.
Algunas universidades, como la Pontificia Universidad Católica de Chile y Universidad de Chile, se están realizando investigaciones de IA aplicadas al diagnóstico temprano de cáncer logrando desarrollar modelos de aprendizaje profundo para el diagnóstico de cáncer de piel, de mamas, entre otros. Algunos avances de sus investigaciones son:
En este blog, dentro del contexto de los avances de la IA en la identificación temprana del cáncer, nos centraremos en abordar el uso de las redes neuronales convoluciones (CNN) y las diversas herramientas que permiten predecir el cáncer ocupando únicamente imágenes médicas.
Las Redes Neuronales Convolucionales (CNN) son una clase de algoritmos de aprendizaje profundo utilizados ampliamente para el procesamiento de imágenes y patrones visuales. Estas redes neuronales pueden aprender automáticamente características relevantes de las imágenes, lo que las convierte en una opción poderosa para el análisis de imágenes médicas. Para mayores detalles, le invitamos a visitar el blog anterior «Introduciendo Redes Neuronales» donde se explicó qué es una CNN.
Existen diversas herramientas y bibliotecas que facilitan construir, entrenar y evaluar modelos de aprendizaje profundo. Entre las más importantes están PyTorch, Tensorflow, Caffe, MXNet, Chainer, CNTK, TensorRT. La elección de la herramienta o biblioteca dependerá de múltiples factores, como la familiaridad del usuario, limitantes en recursos de memoria, si se desea escalabilidad, requisitos de rendimiento, etc.
En el desarrollo de nuestro proyecto utilizaremos PyTorch dado que esta biblioteca proporciona una amplia flexibilidad y eficiencia en la construcción y entrenamiento de modelos de CNN. Contiene una API dinámica llamada tensorboard que facilita la experimentación y depuración. Además, su módulo torchvision facilita el preprocesamiento y transformación de imágenes, lo que es especialmente útil para aumentar la cantidad de datos ocupados en la etapa de entrenamiento.
Se procede a desarrollar un modelo de predicción de cáncer ocupando imágenes médicas. Para ello se entrenará una CNN utilizando la biblioteca PyTorch. A continuación, se presenta los pasos a seguir para este proyecto:
Paso 1 – Adquisición de Datos:
El primer paso es recopilar un conjunto de datos de imágenes médicas que contenga casos positivos (imágenes con cáncer) y casos negativos (imágenes sin cáncer). Los datos recopilados en este proyecto corresponden a imágenes médicas de secciones de ganglios linfáticos provenientes de una competencia de Kaggle (Histopathologic Cancer Detection | Kaggle). En la Figura 1 se presentan algunas imágenes médicas de casos positivos y en la Figura 2 de casos negativos.
Figura 1: Imágenes médicas de casos positivos (con cáncer)
Figura 2: Imágenes médicas de casos negativos (sin cáncer)
Observando las imágenes médicas de la Figura 1 y 2, resulta extremadamente difícil detectar la presencia de cáncer si no fuera porque están marcadas, especialmente en las etapas tempranas de la enfermedad cuando la presencia de cáncer es imperceptible a primera vista, y sobre todo para las personas que no son especialistas en el tema. Es por esto que el uso de la IA aplicada en datos de imágenes médicas resulta beneficioso, ayudando a detectar patrones sutiles y características en imágenes médicas que pueden ser complejas de diferenciar a primera vista por el ser humano, permitiendo reducir errores humanos y mejorando la precisión en el diagnóstico.
Paso 2 – Preprocesamiento de Datos:
A modo de garantizar la uniformidad y calidad de las imágenes médicas del conjunto de datos es necesario preprocesarlas. Esto puede incluir la normalización de intensidad, redimensionamiento y eliminación de artefactos, para ello es posible ocupar el módulo torchvision.transforms de PyTorch que proporciona una variedad de transformaciones que pueden aplicarse a las imágenes. Estas transformaciones cumplen varios propósitos:
A continuación, se presenta un ejemplo de transformación:
La descripción de cada transformación es la siguiente:
Tabla 2: Descripción de algunas transformaciones del módulo torchvision.transforms
En la Figura 3 se muestran 10 imágenes médicas originales y en la Figura 4 los resultados de aplicar la transformación, donde es posible notar como las imágenes presentan rotación, cambio de color y algunas presentan cambios de enfoque.
Figura 3: Imágenes médicas sin transformaciones aplicadas
Figura 4: Imágenes médicas con transformaciones aplicadas
En Kaggle se entregaron dos conjuntos de datos, uno para el entrenamiento del modelo y otro para testear. Se dividirá el conjunto de entrenamiento en 80% para entrenar modelo de predicción de cáncer y el 20% restante para validar el rendimiento de la CNN. Para los tres conjuntos de datos, entrenamiento, validación y testeo se aplicó normalización, y solo en el conjunto de entrenamiento se aplicaron transformaciones para aumentar la cantidad de imágenes y mejorar su calidad.
Paso 3 – Construcción de la CNN con PyTorch:
En esta etapa se debe crear la arquitectura de la CNN mediante el uso de la herramienta PyTorch que ofrece módulos y funciones que facilitan la construcción de redes neuronales, lo que agiliza el proceso de diseño y configuración de sus capas.
Para esto, se hacen diversas pruebas de entrenamiento para explorar y comparar arquitecturas de CNN. Se prueban arquitecturas profundas y complejas como VGG11 y ResNet18, ampliamente utilizadas en la literatura por su excelencia en la clasificación de imágenes, incluyendo la detección de patrones sutiles y con buenos resultados en conjunto de datos grandes y complejos. Aparte de las arquitecturas clásicas, se diseña una CNN más simple que sirve como punto de referencia para evaluar si un modelo más pequeño podría lograr resultados competitivos en términos de precisión y eficiencia. Esta CNN simple se diseña como capa convolucional – capa activación ReLu – capa de agrupación – capa convolucional – capa activación ReLu – capa de agrupación – capa completamente conectada – capa activación ReLu – capa completamente conectada.
Paso 4 – Entrenamiento de la CNN:
Para proceder a entrenar el modelo de la CNN es importante establecer las funciones de optimización y pérdida adecuada lo que ayudara a mejorar la precisión del modelo. Estas funciones consisten en lo siguiente:
Posteriormente, se procede a entrenar las diferentes arquitecturas de CNN con el conjunto de imágenes ya preprocesadas, y se compararon modelos con y sin capas Dropout. Dropout es una técnica de regularización que consiste en desactivar aleatoriamente un porcentaje de neuronas, las cuales no contribuirán a la propagación hacia atrás (backpropagation) y al ajuste de pesos durante esa iteración, ayudando a prevenir el sobreajuste en el entrenamiento. Cabe mencionar que una vez el modelo esté entrenado y se utilice para hacer predicciones en datos reales, todas las neuronas tienen que estar activas.
Otra técnica de regularización que se aplicó es la de parada temprana (early stopping), que consiste en detener el entrenamiento antes que el modelo alcance el número máximo de épocas (iteraciones) cuando se observa que su rendimiento en el conjunto de validación deja de mejorar o empeora, lo que indica que el modelo ha alcanzado un punto óptimo y adicionar más imágenes al entrenamiento podría conducir al sobreajuste. Aportando además al ahorro de tiempo de ejecución al detener anticipadamente el entrenamiento.
Además, se aplicaron dos enfoques al entrenar con las arquitecturas y Resnet18: el primero consiste en utilizar el aprendizaje por transferencia para aprovechar el conocimiento previamente adquirido por estos modelos en tareas generales de clasificación de imágenes. En el pre-entrenamiento, se utilizan pesos pre-entrenados en el backbone de la red, que es la parte central encargada de extraer características visuales generales. En los modelos pre-entrenados de las arquitecturas VGG11 y Resnet18, estos pesos han sido entrenados en un conjunto de datos masivo, ImageNet, que abarca 1000 categorías y contiene 1.2 millones de imágenes, donde han aprendido patrones visuales genéricos. Luego es necesario adaptar la red a nuestra tarea de detección de cáncer ya que pasaremos de 1000 categorías a 2 (presencia de cáncer o no), para ello se agregan capas adicionales y se ajustan sus pesos al entrenar con nuestros datos. En el segundo enfoque, se entrena el modelo desde cero, sin utilizar pesos pre-entrenados, lo que significa que la red se inicia con pesos aleatorios. Entre las principales ventajas del aprendizaje por transferencia está la mayor capacidad para generalizar nuevos datos y el ahorro de tiempo de ejecución dado que los modelos pre-entrenados suelen converger en menos tiempo que aquellos modelos entrenados desde cero.
Paso 5 – Validación cruzada y ajustes de hiperparámetros:
En esta etapa se procede a realizar la validación cruzada que permite evaluar el rendimiento del modelo de manera robusta, para ello usamos la librería StratifiedKfold, técnica empleada en la validación cruzada que asegura que la proporción de clases sea similar para cada iteración del procedimiento, de esta forma se evitan sesgos en la evaluación del modelo dado que contamos con desequilibrio entre las clases (imágenes con cáncer 40.5%, imágenes sin cáncer 59.5%).
A través del ajuste de hiperparámetros podemos mejorar el rendimiento del modelo ya sea probando distintos valores en la tasa de aprendizaje, número de capas y tamaño de lote.
Paso 6 – Evaluación del modelo y predicción de nuevas imágenes:
Se procede a evaluar el rendimiento de las CNN creadas utilizando el conjunto de datos de validación. Para medir el rendimiento y efectividad de los modelos, se utilizan las métricas de pérdida (explicada en el paso 4), precisión (Accuracy: métrica que evalúa la proporción de predicciones correcta realizadas por el modelo en relación con el total de predicciones) y AUC (área bajo la curva ROC: métrica que mide la capacidad del modelo para diferenciar entre la clase positiva y clase negativa, relacionando la tasa de verdaderos positivos y la tasa de falsos negativos). Desde la figura 5 a la 14 se presenta las gráficas de las métricas mencionadas obtenidas en los diferentes experimentos, y en la Tabla 3 un resumen de las mejores métricas:
Figura 5: Métricas de pérdida, precisión y AUC de la arquitectura SimpleCNN aplicando la técnica de dropout. En azul los resultados obtenidos con el conjunto de entrenamiento y en naranjo con el conjunto de validación
Figura 6: Métricas de pérdida, precisión y AUC de la arquitectura VGG11 pre-entrenada y con tamaño de lote=256. En azul los resultados obtenidos con el conjunto de entrenamiento y en naranjo con el conjunto de validación
Figura 7: Métricas de pérdida, precisión y AUC de la arquitectura VGG11 pre-entrenada y con tamaño de lote=128. En azul los resultados obtenidos con el conjunto de entrenamiento y en naranjo con el conjunto de validación
Figura 8: Métricas de pérdida, precisión y AUC de la arquitectura ResNet18, con tamaño de lote=256 y aplicando la técnica de dropout=0.5. En azul los resultados obtenidos con el conjunto de entrenamiento y en naranjo con el conjunto de validación
Figura 9: Métricas de pérdida, precisión y AUC de la arquitectura ResNet18 pre-entrenada con tamaño de lote=64 y aplicando la técnica de dropout=0.5. En azul los resultados obtenidos con el conjunto de entrenamiento y en naranjo con el conjunto de validación
Tabla 3: Resumen de las métricas en los diferentes experimentos ejecutados
Con una arquitectura de CNN simple, se tiene un buen punto de inicio al conseguir un AUC de 0.864 en entrenamiento y 0.863 en validación, conseguida en la época 6, pero desde ahí en adelante el modelo baja su rendimiento al sobre ajustarse a los datos de entrenamiento. Al agregar la técnica dropout a la arquitectura simple se consigue una mejora en las métricas sin sobre ajustarse (ver Figura 5).
Con los dos experimentos realizados para una arquitectura VGG11 no pre-entrenada, si bien no hay un sobreajuste notorio, con aplicar la técnica dropout=0.5 se consigue disminuir la pérdida de validación, pero disminuye levemente el valor AUC (en 0.01).
Al utilizar la arquitectura VGG11 pre-entrenada con el mismo tamaño lote de las pruebas anteriores (tamaño de lote = 256), se observa que el rendimiento del modelo es deficiente. En cambio, si bajamos el tamaño de lote a 128 logra un AUC de 0.924 en entrenamiento y 0.939 en validación, ver tendencia de métricas en las Figuras 6 y 7.
Dentro del grupo de experimentos con arquitectura ResNet18 sin pre-entrenar, se observa que el modelo a partir de la época 3 baja su rendimiento por sobreajuste de los datos el cual es posible mejorar al aplicar dropout=0.5 (ver Figura 8) consiguiendo un modelo entrenado con mayor cantidad de épocas y un leve aumento de AUC en validación (0.016), convirtiéndolo en un modelo estable en comparación al no ocupar la técnica dropout.
Al utilizar arquitectura ResNet18 pre-entrenada con un tamaño de lote=64 se observa un sobreajuste del modelo a partir de la época 3 y al aplicar dropout=0.5 se consigue una mejora en el modelo (ver Figura 9), aumentando el AUC en validación en 0.02 y siendo más estable dado que el modelo es entrenado con 15 épocas sin sobre ajustarse.
Tras todos los experimentos, el mejor modelo encontrado es ocupando la arquitectura VGG11 pre-entrenada sin dropout y entrenada con tamaño de lote=128, donde se obtuvo un AUC del 92.4% en el conjunto de entrenamiento, y del 93.9% en el conjunto de validación, un buen resultado dado que ambos porcentajes son altos, y porque el sobreajuste es ínfimo ya que la diferencia entre la precisión de validación y la de entrenamiento es pequeño (1%). En cuanto a la validación cruzada de este modelo, se usaron 3 pliegues cuyo resultado promedio de las métricas se presentan en la Figura 10, donde se puede observar que el rendimiento es robusto hasta la época 7, desde allí en adelante hay un leve sobreajuste que se podría seguir mejorando, ajustando los hiperparámetros del modelo. Finalmente se utiliza el modelo seleccionado para predecir la presencia de cáncer en las imágenes médicas de prueba.
Figura 10: Métricas promedio de pérdida, precisión y AUC de validación cruzada de 3 pliegues usando la arquitectura VGG11 pre-entrenada y con tamaño de lote=128. En azul los resultados obtenidos con el conjunto de entrenamiento y en naranjo con el conjunto de validación
Bajo el contexto de la detección de cáncer utilizando imágenes médicas, es importante analizar el impacto de los resultados erróneos de la detección de cáncer usando IA. Por una parte, que el modelo tenga un porcentaje de falsos negativos más bajo significa que el sistema tiene una alta sensibilidad para detectar casos positivos de cáncer. Esto es especialmente crucial en la detección temprana del cáncer, donde se busca minimizar los casos en los que se pasa por alto la presencia de la enfermedad, ayudando a identificar pacientes que requieren atención médica temprana. Y, por otra parte, tener un porcentaje de falsos positivos más alto puede dar lugar a un número significativo de casos en los que el sistema informa erróneamente que hay cáncer cuando no lo hay, afectando emocionalmente al paciente con un resultado erróneo y económicamente con costos adicionales para pruebas y evaluaciones extras, y una carga adicional para el sistema de atención médica. Por eso se requiere que el modelo tenga un alto valor de AUC (área bajo la curva ROC) para evitar falsos negativos y positivos en el diagnostico, pero como es imposible obtener un AUC = 1 (todas las imágenes correctamente clasificadas) es preciso alcanzar un modelo que detecte más falsos negativos que falso positivos (es decir, enfocarse en obtener un mejor resultado de la métrica recall o tasa de verdaderos positivos por sobre la precisión) y que la de las imágenes médicas de los pacientes estén respaldados por los especialistas para evitar diagnósticos erróneos.
Los avances internacionales y nacionales respecto a la investigación, desarrollo de modelos y pruebas en la detección temprana de cáncer han presentado resultados alentadores para continuar aportando a la salud mundial.
El uso de Redes Neuronales Convolucionales para la predicción de cáncer a partir de imágenes médicas representa un avance significativo en la detección temprana de esta enfermedad. La flexibilidad y versatilidad de la herramienta PyTorch facilitan el proceso de diseño, entrenamiento y evaluación de la CNN. La aplicación de transformaciones en las imágenes médicas como la normalización, el aumento de datos y el preprocesamiento específico del modelo contribuyen en gran medida a mejorar la precisión y robustez del modelo.
A medida que las técnicas de aprendizaje profundo sigan evolucionando, es probable que continuemos viendo mejoras en la precisión de los modelos, impactando positivamente como apoyo a la toma de decisiones médicas y en las tasas de supervivencia de los pacientes con cáncer dado una detección temprana.
Es importante destacar que profesionales de la salud capacitados deben tomar las decisiones clínicas finales, y la IA debe usarse como herramienta de apoyo y no como reemplazo absoluto. La combinación de la experiencia clínica con las capacidades de la IA puede mejorar significativamente la detección y el diagnóstico de enfermedades como el cáncer en imágenes médicas.