Conjunto de Datos

Descripción General

Descripción General

El dataset utilizado en este proyecto proviene de la plataforma Hugging Face: gymprathap/Breast-Cancer-Ultrasound-Images-Dataset

Este conjunto de datos contiene imágenes de ultrasonido de tejido mamario, categorizadas en tres clases: benign, malignant y normal, que corresponden a presencia de tumor mamario benigno, presencia de tumor mamario maligno o cancerígeno y ausencia de tumor.

Originalmente, el dataset incluía también máscaras binarias asociadas a cada imagen (útiles para tareas de segmentación), pero estas fueron descartadas en este proyecto al centrarnos exclusivamente en la clasificación de imágenes.

El dataset está formado por 780 imágenes en formato PNG provenientes de mujeres de entre 25 y 75 años. Para los procesos de entrenamiento y validación se dividió el dataset en 85% y 15%, respectivamente. Además, para el proceso de entrenamiento se manipularon las imágenes, reescalandolas todas a un tamaño común y aplicando Data Augmentation para introducir variabilidad y evitar overfitting.

Imágenes

Distribución de Clases

Ejemplos del Dataset

Modelo 1 - Detección de Tumores

Objetivo del Modelo

Objetivo del Modelo

El primer modelo del proyecto tiene el objetivo de detectar la presencia de tumores en imágenes de ultrasonido de tejido mamario. Se trata de un clasificador binario. Para ello, el conjunto de datos se ha reestructurado en dos categorías: Ausencia (0), que contiene las imágenes con label normal (2), y Presencia (1), que contiene aquellas tanto benign (0) como malignant (1). La distribución de clases se puede ver en la pestaña EDA. Para la construcción del modelo clasificador se ha utilizado una red convolucional previamente entrenada (transfer learning) que ha sido posteriormente entrenada con nuestro dataset. Además, se han entrenado dos modelos de complejidad diferente. En el primero (Modelo Base) solo se han refinado los parámetros de la última capa de la red neuronal. En el segundo (Modelo Tuned) se han refinado todos los parámetros de la red. El proceso de entrenamiento de ambos modelos puede verse en la pestaña Entrenamiento y las métricas de evaluación, las matrices de confusión y la curva ROC en el resto.

Pestañas

EDA

Entrenamiento

El Train Loss de los modelos tuvo la siguiente evolución durante los 5 epochs.

Métricas de Evaluación - Tabla

Métricas de Evaluación - Barplot

Confusion Matrix

Confusion Matrix Model 1 Base Confusion Matrix Model 1 Tuned

Curva ROC

Curva ROC Model 1

Modelo 2 - Clasificación de Tumores

Objetivo del Modelo

Objetivo del Modelo

El segundo modelo del proyecto tiene el objetivo de clasificar tumores a partir de imágenes de ultrasonido de tejido mamario. Se trata de un clasificador binario. En este caso se asume previamente la presencia de uno o varios tumores y se trata de clasificarlos entre benignos o malignos. Para ello, el conjunto de datos se ha reestructurado en dos categorías: Benigno (0), que contiene las imágenes con label benign (0), y Maligno (1), que contiene aquellas con malignant (1). La categoría normal (2) ha sido descartada en este caso. La distribución de clases se puede ver en la pestaña EDA. Para la construcción del modelo clasificador se ha utilizado una red convolucional previamente entrenada (transfer learning) que ha sido posteriormente entrenada con nuestro dataset. Además, se han entrenado dos modelos de complejidad diferente. En el primero (Modelo Base) solo se han refinado los parámetros de la última capa de la red neuronal. En el segundo (Modelo Tuned) se han refinado todos los parámetros de la red. El proceso de entrenamiento de ambos modelos puede verse en la pestaña Entrenamiento y las métricas de evaluación, las matrices de confusión y la curva ROC en el resto.

Pestañas

EDA

Entrenamiento

El Train Loss de los modelos tuvo la siguiente evolución durante los 5 epochs.

Métricas de Evaluación - Tabla

Métricas de Evaluación - Barplot

Confusion Matrix

Confusion Matrix Model 2 Base Confusion Matrix Model 2 Tuned

Curva ROC

Curva ROC Model 2

Modelo 3 - Clasificación de Tejidos Mamarios

Objetivo del Modelo

Objetivo del Modelo

El último modelo del proyecto tiene el objetivo de clasificar imágenes de ultrasonido de tejido mamario. Se trata de un clasificador multiclase. Es en esencia el modelo más general del proyecto y clasifica las imágenes entre las tres categorías originales del dataset: Benigno (0), Maligno (1) y Ausencia (2). La distribución de clases se puede ver en la pestaña EDA. Para la construcción del modelo clasificador se ha utilizado una red convolucional previamente entrenada (transfer learning) que ha sido posteriormente entrenada con nuestro dataset. Además, se han entrenado dos modelos de complejidad diferente. En el primero (Modelo Base) solo se han refinado los parámetros de la última capa de la red neuronal. En el segundo (Modelo Tuned) se han refinado todos los parámetros de la red. El proceso de entrenamiento de ambos modelos puede verse en la pestaña Entrenamiento y las métricas de evaluación y las matrices de confusión en el resto.

Pestañas

EDA

Entrenamiento

El Train Loss de los modelos tuvo la siguiente evolución durante los 5 epochs.

Métricas de Evaluación

Modelo Base

Accuracy: 0.60

Modelo Tuned

Accuracy: 0.89

Confusion Matrix

Confusion Matrix Model 3 Base Confusion Matrix Model 3 Tuned

Acerca del Proyecto

Este proyecto ha sido elaborado como trabajo final de la asignatura Inteligencia Artificial y Estadistica de la Universidad de Sevilla por Mario Pantoja Castro. Los contenidos y archivos utilizados para el mismo pueden encontrarse en el siguiente repositorio de GitHub: breastCancer.

Objetivo del Proyecto

El objetivo principal de este proyecto era aplicar las técnicas y herramientas relacionadas con IA que se han ido impartiendo durante el curso de la asignatura para llevar a cabo un proceso completo de Ciencia de Datos. En mi caso particular, decidí trabajar con un conjunto de datos formado por imágenes, en lugar del clásico análisis con datos tabulares.

Más allá y debido a mi interés por la medicina y el diagnóstico preventivo, decidí trabajar con imágenes de ultrasonido de tejido mamario para construir un modelo clasificador de las mismas. Más sobre los datos puede encontrarse en la sección Conjunto de Datos El modelo final de este proyecto clasifica los tejidos en tres categorías: benigno, maligno y normal. Para ello se usaron redes convolucionales. Así pues, el objetivo final del proyecto era construir un modelo basado en redes convolucionales que fuera capaz de clasificar las imágenes de ultrasonido para detectar tumores mamarios y su naturaleza.

Sin embargo, antes de este objetivo final, se establecieron otros objetivos menos ambiciosos pero igualmente interesantes. El primero fue detectar tumores en los tejidos mamarios, ausencia/presencia. Más sobre este objetivo y los modelos clasificadores contruídos para alcanzarlo puede encontrarse en la sección Modelo 1 - Detección de Tumores. El segundo fue clasificar los tumores mamarios detectados entre benignos y malignos. Más información en la sección Modelo 2 - Clasificación de Tumores. Y ya por último, el tercero es el objetivo principal del proyecto, clasificar tejidos mamarios. La información completa puede encontrarse en Modelo 3 - Clasificación de Tejidos Mamarios.

Herramientas Utilizadas

Para este proyecto, primero de todo, se usó Git/GitHub para el control de versiones. Para el análisis exploratorio de los datos se usó R. Para la manipulación/transformación de datos, creación y entrenamiento de redes neuronales y evaluación de los modelos se utilizó Python, concretamente la librería PyTorch. Por último, para la presentación y comunicación de resultados se usó R, concretamente su librería flexdashboard, junto a Markdown, para crear la página web que ahora mismo está leyendo.

Transformación de los Datos

El conjunto de imágenes sufrió una serie de transformaciones para hacerlo adecuado para el entrenamiento y validación de los modelos. Se reescalaron todas las imágenes a un tamaño fijo ( 256x256 ), se aplicaron transformaciones de Data Augmentation para introducir variabilidad en el dataset y se dividió todo el conjunto de datos en un 85% para entrenamiento y un 15% para validación. Entre las transformaciones de Data Augmentation se encuentran: Giro Horizontal Aleatorio, Rotación Aleatoria, Variaciones Aleatorias del Color de la Imágen (Brillo y Contraste). Por último, para el entrenamiento, se balancearon los batches debido a la desigual distribución de clases en el conjunto de datos.

Creación y Entrenamiento de los Modelos

Para los modelos clasificadores, se utilizaron redes convolucionales preentrenadas, en concreto la red neuronal ResNet18 de PyTorch. Posteriormente se entrenaron de nuevo estas redes con nuestro conjunto de datos. Es decir, se llevó a cabo un proceso de Transfer Learning. Como funciones de coste se utilizaron Binary Cross-Entropy Loss para clasificación binaria y Cross-Entropy Loss para clasificación multiclase. El optimizador para todos los modelos fue Adam (Adaptive Moment Estimation). Los datos se organizaron en batches de 32 unidades y el proceso de entrenamiento consistió en 5 epochs para todos los modelos.

Para los tres objetivos, se entrenaron dos modelos. Un primero más sencillo, ajustando tan solo los parámetros de la última capa de la red convolucional, y un segundo más complejo, refinando todos los parámetros de la red.

Evaluación de los Modelos

Para la evaluación de los modelos se usó el módulo metrics de la librería sklearn de Python. Las métricas que se obtuvieron fueron: accuracy, precision, recall, F1 Score, ROC AUC Score… Además se construyeron matrices de confusión y curvas ROC.