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:
- CBIS-DDDSM: Disponible en https://wiki.cancerimagingarchive.net/display/Public/CBIS-DDSM
- INBreast: Disponible en https://www.kaggle.com/martholi/inbreast?select=inbreast.tgz
- MIAS: Disponible en https://www.kaggle.com/kmader/mias-mammography/version/3?select=Info.txt
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íaPyqt5
. Entre estos destaca la carpetahooks
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 paquetedatabases
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 database_generator.py crea el set de datos utilizado por los algorítmos de deep learning utilizados uniendo cada base de datos individual contenida en el paquetedatabases
. 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ónPyqt5
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 01_CONVERTED) y procesadas (sub-directorio 02_PROCESED). Esta carpeta tiene el objetivo de reiterar el proceso de procesado de imagenes una vez realizado.