Este proyecto persigue el objetivo de crear una herramienta que permita clasificar las lesiones presentes en imágenes mamográficas como benignas o malignas.
Para la realización de esta aplicación se han utilizado 4 arquitecturas que componen el estado del arte en tareas de clasificación de imagen como son: VGG16, ResNet50, DenseNet121 y InceptionV3. Las predicciones realizadas por cada arquitectura son combinadas en un Random Forest para obtener la predicción final de cada instancia (probabilidad de que un cáncer sea maligno)
Las bases de datos utilizadas para entrenar cada modelo son:
Este repositorio pretende servir de base para que otras personas puedan aprovechar el trabajo realizado y unirse en la causa para la lucha contra el cáncer de seno. De este modo, a continuación se detallará la estructura del repositorio así como los objetivos de cada módulo o paquete.
bin
: Contiene los archivos necesarios para crear una interfaz gráfica a partir de la librería Pyqt5
. Entre estos
destaca la carpeta hooks
con las dependencias necesarias a instalar en la aplicación.
notebooks
: Contiene algunos análisis adhoc para la realización de la herramienta (procesado de imágenes o creación
de la combinación secuencial de clasificadores).
src
: Contiene los paquetes y los scripts principales de ejecución de código. Este paquete se divide en:
algoriths
: Módulo utilizado para crear las redes neuronales de clasificación y de segmentación (on going).
En este módulo se deberían de añadir todas aquellas arquitecturas de red nuevas a incluir. Por otra parte,
también existen scripts para la creación secuencial de clasificadores a partir de un Random Forest. La generación
de nuevos algorítmos podría introducirse en este script.
breast_cancer_dataset
: Módulo que contiene los scripts utilizados para realizar el procesado de datos de
cada set de datos individual (CBIS, MIAS e INBreast). Estos scripts se encuentran en el paquete databases
del
módulo, de modo que para cualquier base de datos que se desee añadir, será necesario introducir su procesado en este
paquete. Por otra parte, el script _databasegenerator.py crea el set de datos utilizado por los algorítmos de
deep learning utilizados uniendo cada base de datos individual contenida en el paquete databases
.
Asimismo, se aplican técnicas de data augmentation y se realiza el split de datos en entrenamiento y validación.
data_viz
: módulo utilizado para generar visualizaciones de los resultados obtenidos por las redes.
preprocessing
: módulo que contiene las funciones de preprocesado genéricas aplicadas a todos los conjuntos de
datos. Además, contiene las funcionalidades necesarias para estandarizar las imágenes a formato png o jpg.
Cualquier procesado nuevo a añadir, deberá hacerse en este módulo.
static
: módulo que contiene los archivos estáticos utilizados para la creación de la interfaz gráfica del
programa como ficheros .css, .html e imágenes.
user_interace
: módulo utilizado para crear la aplicación Pyqt5
de clasificación de imágenes de seno.
utils
: módulo genérico en el cual configurar las rutas de las bases de datos dentro del entorno local desde
dónde se esté ejecutando el aplicativo, así como la configuración de los hiperparámetros de las redes neuronales.
main_train.py
: script utilizado para realizar generar el pipeline de entrenamiento, desde la obtención de datos
hasta la creación y el entrenamiento de cada modelo.
main.py
: script utilizado para lanzar la aplicación final realizada.
Juntamente con los módulos contenidos en esta descripción, se crearán un conjunto de carpetas adicionales. Estas carpetas no están contenidas en el repositorio por motivos de capacidad de almacenaje. A continuación se detallan los módulos y sus objetivos:
logging
: Carpeta que contendrá los logs de ejecuciones del programa, como por ejemplo los errores producidos durante
el procesado de las imagenes.
models
: Carpeta que contendrá los modelos almacenados juntamente con las predicciones realizadas durante el entrenamiento.
data
: Carpeta que contendrá las imagenes de cada set de datos convertidas (sub-directorio _01CONVERTED) y
procesadas (sub-directorio _02PROCESED). Esta carpeta tiene el objetivo de reiterar el proceso de procesado de imagenes
una vez realizado.