Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas
Abstract
Grado en Ingeniería de Tecnologías de Telecomunicación
Full text
UNIVERSIDAD DE VALLADOLID E.T.S.I. TELECOMUNICACIÓN TRABAJO FIN DE GRADO GRADO EN INGENIERÍA DE TECNOLOGÍAS DE TELECOMUNICACIÓN Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas Autor: Antonio Ferreras Extremo Tutor: Dra. Isabel de la Torre Díez Valladolid, 31 de marzo de 2021
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 2 TRABAJO DE FIN DE GRADO TÍTULO: Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas AUTOR: Antonio Ferreras Extremo TUTOR Dra. Isabel de la Torre Díaz DEPARTAMENTO: Teoría de la Señal y Comunicaciones e Ingeniería Telemática TRIBUNAL PRESIDENTE: Dr. Miguel López Coronado VOCAL: Dra. Beatriz Sainz de Abajo SECRETARIO: Dra. Isabel de la Torre Díaz SUPLENTE: SUPLENTE: FECHA: 6 de abril de 2021 CALIFICACIÓN
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 3 Resumen Cada año mueren en el mundo más de 400.000 personas de malaria, a pesar de que la malaria es una enfermedad prevenible y relativamente fácil de tratar si se detecta de forma precoz. El objetivo principal de este trabajo es el de proponer un sistema de ayuda de soporte a las decisiones médicas para la detección de malaria a partir de imágenes de frotis de microscopio de células sanguíneas, utilizando un modelo de red neuronal convolucional (CNN) y otras técnicas de aprendizaje profundo. Esta CNN se ha creado utilizando como base una arquitectura EfficientNet. La contribución clave de este trabajo es presentar los resultados de un modelo CNN ensemble creado a partir de combinar los modelos base EfficientNet0 obtenidos durante un proceso de validación cruzada de 10 iteraciones. En este documento se presentan los resultados de clasificación de imágenes de pacientes infectados y pacientes sanos. Se ha obtenido una exactitud en la clasificación del 98,29%, significativamente superior al de trabajos similares encontrados en la literatura. El modelo propuesto CNN utilizando EfficientNet presenta unos resultados con valores comparables, e incluso superiores, a los obtenidos en el estado del arte actual: un valor de recall de 98,82%, un valor de precisión de 97,74%, un valor de F1-score de 98,28% y un valor para el AUC (Área bajo la Curva ROC) de 99,76%. Para concluir, el diseño propuesto ofrece un sistema para el diagnóstico automático de la malaria que ayuda a los profesionales médicos a realizar mejores decisiones. Palabras Clave Malaria, Diagnóstico, Redes Neuronales, Aprendizaje Profundo, Python, EfficientNet, Albumentations, Ensembled, Image Augmentation
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 4 Abstract Each year, more than 400,000 people die of malaria; surprisingly enough, malaria is a preventable and treatable disease if early detection is achieved. The key objective of this work is to propose a medical decision help system for detecting malaria from microscopic peripheral blood cells images, using the application of a convolutional neural network (CNN). This CNN has been created using an EfficientNet architecture. The key contribution is to introduce the findings of an ensemble CNN model created combining the base models obtained through a 10-fold stratified cross-validation of a EfficientNet0-based architecture. This paper presents the classification findings using images from malaria patients and normal patients. An accuracy value for binary classification of 98.29% is obtained. The proposed CNN model using EfficientNet presents state-of-the-art values: recall value of 98.82, a precision value 97.74%, F1-score of 98.28% and a ROC value of 99.76%. To conclude, the suggested design offers an automatic medical diagnostics system to assist malaria specialists to make enhanced decision. Keywords Malaria, Diagnosis, Neural Networks, Deep Learning, Python, EfficientNet, Albumentations, Ensembled, Image Augmentation
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 5 Agradecimientos Dedicado a mi madre
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 6 Contenido 1 Introducción ............................................................................................................ 10 1.1.1 La Malaria ................................................................................................. 10 1.1.2 Primeros modelos ..................................................................................... 12 1.1.3 Ensemble learning .................................................................................... 14 2 Fundamentos Teóricos ............................................................................................ 18 2.1 Redes Neuronales ............................................................................................ 18 2.1.1 El Perceptrón ............................................................................................ 18 2.1.2 La Neurona ............................................................................................... 21 2.1.3 Redes neuronales progresivas .................................................................. 23 2.1.4 Función de activación ............................................................................... 24 2.2 Entrenamiento de las redes neuronales .......................................................... 26 2.2.1 Gradient Descent ...................................................................................... 27 2.2.2 Función de pérdidas ................................................................................. 31 2.3 Redes Neuronales Convolucionales ................................................................. 33 2.3.1 Capa Convolucional .................................................................................. 35 2.3.2 Capas interiores ........................................................................................ 37 2.3.3 Capa de salida ........................................................................................... 38 2.3.4 Stride y Padding ........................................................................................ 39 2.3.5 Capas ReLU ............................................................................................... 40 2.3.6 Capas Pooling............................................................................................ 40 2.3.7 Capas Dropout .......................................................................................... 41 2.3.8 Capa Network in Network ........................................................................ 42 2.3.9 Aplicaciones de las redes neuronales convolucionales ............................ 42 2.3.10 Transferencia de aprendizaje ................................................................... 43 2.3.11 Técnicas de Data Augmentation ............................................................... 44 2.4 Modelo EfficientNet ......................................................................................... 44 2.4.1 Escalado del Modelo................................................................................. 46 2.4.2 EfficientNet-B0 ......................................................................................... 48 2.4.3 Escalado del modelo EfficientNet-B0 ....................................................... 49 2.4.4 Rendimiento EfficientNet ......................................................................... 50 2.5 Optimización .................................................................................................... 51 2.5.1 SGD ........................................................................................................... 51 2.5.2 SGD con momento .................................................................................... 51
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 7 2.5.3 Adagrad..................................................................................................... 52 2.5.4 Adadelta .................................................................................................... 53 2.5.5 RMSprop ................................................................................................... 53 2.5.6 Adam ......................................................................................................... 53 2.5.7 AdaMax ..................................................................................................... 54 2.5.8 Nadam ...................................................................................................... 54 2.5.9 AMSgrad ................................................................................................... 55 3 Trabajos relacionados ............................................................................................. 56 4 Métodos y materiales ............................................................................................. 59 4.1 Origen de los datos .......................................................................................... 59 4.2 Malaria Dataset ................................................................................................ 60 4.3 CNN propuesta ................................................................................................. 61 4.4 Configuración experimental y de validación ................................................... 64 5 Resultados ............................................................................................................... 67 5.1 Resultados experimentales de la clasificación binaria .................................... 68 5.2 Experimental validation results of classification ............................................. 71 5.3 Resultados experimentales del modelo ensemble .......................................... 73 6 Discusión ................................................................................................................. 76 7 Conclusión ............................................................................................................... 81 8 Referencias .............................................................................................................. 83 9 Anexo: Script PYTHON utilizado en las simulaciones .............................................. 89 10 Anexo: Artículo enviado a publicación ................................................................ 90
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 8 Índice de Figuras Figura 1-1. El mosquito anofeles es el principal transmisor de la enfermedad ............. 10 Figura 1-2. La malaria en datos ...................................................................................... 11 Figura 1-3. Distribución mundial de la malaria .............................................................. 12 Figura 1-4. Número de casos estimados de malaria y muertes asociadas .................... 13 Figura 2-1. Imagen de la colección de dígitos escritos a mos del conjunto MNIST ....... 18 Figura 2-2. Proceso de vectorización de una imagen ..................................................... 19 Figura 2-3. Datos de ejemplo para nuestro predictor del algoritmo perceptrón .......... 20 Figura 2-4. Datos complejos, donde el perceptrón lineal no puede ajustarse .............. 21 Figura 2-5. Descripción biológica de una neurona ......................................................... 22 Figura 2-6. Esquema de neurona en Inteligencia Artificial ............................................ 23 Figura 2-7. Ejemplo de una red neuronal progresiva ..................................................... 24 Figura 2-8. Funciones de activación no lineales. a) Sigmoide b) Tanh c) ReLu .............. 25 Figura 2-9. Error cometido por un neurona con dos entradas ...................................... 27 Figura 2-10. Esquema de la neurona para la notación de Gradient Descent ................ 29 Figura 2-11. Gradient descent puede encontrar un mínimo local ................................. 33 Figura 2-12. Imagen real; lo que "ve" el ordenador ....................................................... 34 Figura 2-13. Esquema de un filtro convolucional de 5x5 ............................................... 36 Figura 2-14. Extracción de características básicas de una imagen ................................ 36 Figura 2-15. Visualización de los filtros para capas convolucionales ............................. 37 Figura 2-16. Red neuronal convolucional completa ....................................................... 39 Figura 2-17. Ejemplo de maxpool con un filtro de 2x2 y un paso de 2 .......................... 41 Figura 2-18. Ejemplos de localización, detección y segmentación de objetos ............. 43 Figura 2-19. Comparativa de modelos en el estado del arte para Deep Learning ......... 46 Figura 2-20. Comparativa de los modelos EfficientNet con otros ................................. 50 Figura 4-1. Ejemplo de células positivas, infectadas, del conjunto de datos ................. 60 Figura 4-2. Ejemplo de células negativas, sanas, del conjunto de datos ....................... 60 Figura 4-3. Diagrama de bloques del algoritmo ............................................................. 64 Figura 5-1. Evolución de la exactitud y de las pérdidas en el aprendizaje ..................... 68 Figura 5-2. ROC para la iteración número 4 ................................................................... 72
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 9 Figura 5-3. Matriz de confusión para la iteración 4 ....................................................... 73 Figura 5-5. Matriz de confusión del modelo final (ensembled) ..................................... 74 Figura 5-4. ROC del resultado final (ensembled) ............................................................ 75 Figura 6-1. Imágenes de células con malaria clasificadas como normales. ................... 80 Figura 6-2. Imágenes de células normales clasificadas como con malaria. ................... 80 Índice de Tablas Tabla 2-1. Evolución de los modelos de Deep Learning ganadores de ILSVRC .............. 45 Tabla 2-2. Arquitectura de EfficientNet0 ....................................................................... 49 Tabla 3-1. Métodos de clasificación utilizados en el diagnóstico de malaria ................ 56 Tabla 4-1. Información del Dataset. ............................................................................... 61 Tabla 4-2. Capas, dimensiones y parámetros del modelo ............................................. 62 Tabla 4-3: Configuración Experimental .......................................................................... 66 Tabla 5-1. Resultados de la clasificación binaria para la clase malaria. ......................... 69 Tabla 5-2. Resultados de la clasificación binaria para la clase normal. .......................... 70 Tabla 5-3. Resultados de la clasificación binaria para ambas clases. ............................. 71 Tabla 5-4. Resultados del proceso de validación de la clasificación .............................. 72 Tabla 6-1. Comparativa con otros modelos para el diagnóstico de la malaria .............. 77
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 16 microscopio de glóbulos rojos utilizando como base un modelo EfficientNet [30] [31]. El modelo propuesto es un modelo ensemble compuesto por los 10 modelos parciales obtenidos en el proceso de validación cruzada de 10 iteraciones (10Fold) de un modelo base EfficientNet0. Hasta donde se ha podido investigar, no existe ningún estudio en la literatura que proponga una arquitectura EfficientNet para el diagnóstico automatizado de la malaria. Se han descrito numerosos experimentos y aplicaciones en la literatura, relacionados con este tema. Es importante liberar, y poner a disposición de la comunidad científica, los procedimientos y herramientas utilizados y permitir así que futuros investigadores puedan reproducir los resultados obtenidos y discutir sus conclusiones. Por tanto, en el trabajo se presentan todos los materiales y el código Python de los scripts utilizados compatibles con Jupyter notebook. El modelo EfficientNet se puede utilizar para transferencia de aprendizaje [32] y es más eficaz que la mayoría de los otros modelos de CNNs como VGG16 o VGG19 [33], ResNet50 [34] o InceptionV3 [35]. La arquitectura EfficientNet se compone de 8 modelos, enumerados desde B0 a B7, donde cada número sucesivo del modelo implica variaciones incrementales con más parámetros y complejidad que los anteriores y, habitualmente, una exactitud esperada mayor. Además, los modelos EfficientNet utilizan técnicas de transferencia de aprendizaje para mejorar la velocidad de aprendizaje y ahorrar potencia de procesamiento. Por tanto, habitualmente ofrece mejores exactitudes que otros modelos, debido al uso de un escalado inteligente de resolución, anchura y profundidad. Este trabajo utiliza el modelo B0, que tiene el mínimo número de parámetros que, no obstante, lo consideramos adecuado para nuestro trabajo, ya que las imágenes médicas no son tan complejas como las naturales y tienen menos variabilidad. El número de parámetros para los modelos B1-B7 se incrementa en gran medida [31]. Además, este estudio utiliza un dataset separado para realizar la validación del modelo CNN, utilizando imágenes que no se han utilizado durante el proceso de entrenamiento y testeo. Se ha evaluado el algoritmo utilizando una validación cruzada estratificada de 10 iteraciones. Finalmente, se ha compuesto el modelo ensemble, compuesto por los 10 modelos intermedios generados durante la fase de validación cruzada. Esta aproximación mejora significativamente la exactitud de la clasificación de cualquiera de los modelos individuales. Los experimentos garantizan
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 17 la ausencia de overfitting por la validación realizada con un dataset separado, formado por imágenes que no se han utilizado en el proceso anterior de aprendizaje. El código fuente se muestra en uno de los apéndices. El trabajo se articula como sigue: el apartado 2 realiza un estudio sobre la teoría en la que se fundamentan las redes neuronales, desde el perceptrón, pasando por las redes neuronales convolucionales, hasta llegar al modelo EfficientNet; también se explican las metodologías de optimización de las pérdidas y la “augmentación” de imágenes en el entrenamiento de las redes, procesos que han sido claves en los buenos resultados obtenidos. En el apartado 3 se resume el trabajo en el área encontrado en la literatura, haciendo foco en aquellos trabajos con los cuales más tarde se compararán los resultados de este trabajo. El apartado 4 describe los materiales y métodos utilizados en esta investigación. Los resultados del modelo EfficientNetB0 se presentan en el apartado 5, tanto de los modelos individuales como del modelo ensemble. En el apartado 6 se discute y compara los resultados del trabajo con otros disponibles en el estado del arte de la tecnología. Por fin, el apartado 6 presenta las conclusiones.
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 18 2 Fundamentos Teóricos 2.1 Redes Neuronales 2.1.1 El Perceptrón Los ordenadores son realmente buenos cuando se trata de realizar operaciones aritméticas o de realizar una lista de instrucciones secuencial. Pero si queremos hacer otras cosas, quizás más interesantes, como escribir un programa que lea un documento escrito a mano, las cosas se complican [36]. Figura 2-1. Imagen de la colección de dígitos escritos a mos del conjunto MNIST7 Aunque cada dígito de la Figura 2-1 está escrito de forma ligeramente diferente, los humanos podemos reconocer cada dígito de la imagen de forma correcta. Incluso podemos dar las características de cada clase, por ejemplo, un cero se caracteriza por un único bucle cerrado. Pero hay dígitos que no están completamente cerrados; además es más difícil distinguir un tres de un cinco, o entre un cuatro y un nueve. El proceso de especificar las características de cada número se va complicando. Muchos otros problemas son de este tipo: reconocimiento de objetos, comprensión del habla o traducción automática. Inicialmente no es nada sencillo escribir un programa que trate con estos problemas. 7 Fuente: LeCun, 1998
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 19 Para tratar estos últimos problemas de reconocimiento de imágenes en los últimos años se han popularizado un conjunto de tecnologías denominadas como Deep Learning. Deep Learning es un subconjunto del campo más general de inteligencia artificial denominado Machine Learning. En Machine Learning, en vez de enseñar a un ordenador un conjunto enorme de reglas para resolver un problema, le damos un modelo con el cual puede evaluar los ejemplos del problema, y un pequeño conjunto de reglas para que pueda modificar el modelo cada vez que se equivoque en la tarea solicitada. Se espera que, con el tiempo, consiga un modelo optimizado que sea capaz de resolver el problema de forma precisa. Para definir las anteriores afirmaciones de una manera matemática, definamos nuestro modelo como una función ℎ(𝐱,𝜃). La variable 𝐱 es un ejemplo del problema expresado en forma vectorial. Por ejemplo, si 𝐱 es una imagen en escala de grises, los componentes del vector sería la intensidad de cada píxel como se muestra en la Figura 2-2 [37]. Figura 2-2. Proceso de vectorización de una imagen8 La variable 𝜃 es el vector de parámetros del modelo. El programa de Machine Learning trata de ajustar los valores de esos parámetros a medida que se enfrenta a más y más ejemplos del universo del problema que trata de resolver. Para entender mejor el funcionamiento, veamos el modelo del perceptrón lineal que se viene usando desde la década de los 50’s [38]. Supongamos que queremos predecir el resultado de un encuentro de nuestro equipo de futbol en función del número de horas de entrenamiento físico y de horas de siesta realizadas durante la semana anterior. 8 Fuente: Patterson, 2016
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 20 Recogemos una multitud de resultados, 𝐱=[x,x], con el número de horas de entrenamiento (𝑥) y el número de horas de siesta (𝑥), y si el equipo ha ganado (1) o no (−1). Nuestro objetivo entonces podría ser el de optimizar un modelo ℎ(𝐱,𝜃) con un vector de parámetros 𝜃=[𝜃 𝜃 𝜃] tales que: ℎ(𝐱,𝜃)= ⎩ ⎨ ⎧ −1 si 𝐱∙𝜃 𝜃+𝜃<0 1 si 𝐱∙𝜃 𝜃+𝜃≥0 Técnicamente, nuestro problema así expresado es un clasificador lineal que divide nuestro espacio de coordenadas en dos mitades [39]. El objetivo es el de encontrar el vector de parámetros 𝜃 tal que nuestro modelo haga predicciones correctas (-1 si pierde, 1 si gana) dado su comportamiento 𝐱 durante la semana. Supongamos que nuestros datos son como los que se muestran en la Figura 2-3., donde + representan partidos ganados, y – los perdidos o empatados. Figura 2-3. Datos de ejemplo para nuestro predictor del algoritmo perceptrón9 Podría resultar, que si seleccionamos 𝜃=[−2 3 5], nuestro algoritmo de machine learning realiza una predicción perfecta en cada punto: ℎ(𝐱,𝜃)= −1 si 3𝑥+5𝑥− 2<0 1 si 3𝑥+5𝑥− 2≥0 9 Fuente: Buduma, 2017
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 21 La forma de calcular es parámetros de 𝜃 se realiza mediante la técnica de optimización. Un optimizador consigue maximizar el rendimiento del modelo por medio de un ajuste iterativo de los parámetros hasta que el error en la predicción se minimiza, habitualmente por un proceso denominado gradient descent (apartado 2.2.1). Por otro lado, parece que el modelo lineal propuesto de dos variables es bastante limitado con respecto a lo que puede aprender. Por ejemplo, las distribuciones de datos que se describen en la Figura 2-4 no pueden describirse con el modelo del perceptrón lineal. Si el problema es incluso más complejo, como el reconocimiento de objetos o el análisis de textos, las relaciones del modelo son extremadamente no-lineales. Figura 2-4. Datos complejos, donde el perceptrón lineal no puede ajustarse10 2.1.2 La Neurona Para tratar estos problemas más complejos, los científicos han desarrollado modelos que recuerdan las estructuras del cerebro humano. La unidad básica del cerebro es la neurona. Aunque el núcleo de la neurona solamente mide entre 5 y 135 µm, tiene una media de 6.000 conexiones con otras neuronas [40]. La neurona esta optimizada para recibir información de otras neuronas, procesa esta información en un único sentido y envía el resultado a otras células. 10 Fuente: Buduma, 2017
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 22 Figura 2-5. Descripción biológica de una neurona11 Como se muestra en la Figura 2-5, la neurona recibe sus entradas a través de las estructuras denominadas dendritas. Cada una de esas conexiones se refuerza o debilita de forma dinámica en función de la frecuencia de su uso (de esta forma se realiza el aprendizaje), y es la fuerza de cada conexión lo que determina su contribución al resultado de salida a través de un único axón. La suma de las contribuciones se realiza en el núcleo de la neurona. Podemos trasladar el concepto de neurona a un modelo matemático para representarlo en un ordenador [41]. Definamos un número arbitrario de entradas, 𝑥,𝑥,…,𝑥, cada una de las cuales se multiplica por un peso específico 𝑤,𝑤,…,𝑤, para sumarlas todas ellas y producir la salida o logit de la neurona, 𝑧= ∑𝑤∙𝑥 . En muchos casos, el modelo incluye una constante o bias en el sumatorio (que no se muestra en la Figura 2-6), el resultado o logit se pasa por una función, denominada de activación, para dar la salida que se pasa a las siguientes neuronas como entrada. 11 Fuente Wikipedia
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 23 Figura 2-6. Esquema de neurona en Inteligencia Artificial12 Reformulando el problema. Si 𝐱=[𝑥,𝑥,…,𝑥] es el vector de entrada, 𝐰= [𝑤,𝑤,…,𝑤] el vector de pesos, podemos expresar la salida como una función del producto escalar de esos vectores de la forma: 𝑦=𝑓(𝐱∙𝐰+𝑏) donde con 𝑏 expresamos el término constante o bias. 2.1.3 Redes neuronales progresivas Aunque es fácil intuir que la neurona vista anteriormente es más potente que el perceptrón lineal, está muy lejos de poder representar problemas complejos, al igual que le pasaría a nuestro cerebro si estuviera formado por una sola neurona. Para poder emular problemas más complicados podemos conectar múltiples neuronas en capas, donde la información fluye de las capas inferiores a las superiores sin bucles ni realimentaciones, como se muestra en la Figura 2-7, donde se muestra lo que hemos denominado una red neuronal artificial [41]. La capa de la izquierda o capa de entrada introduce los datos de entrada a la red. La capa de la derecha calcula la salida final del sistema. Las capas intermedias, también denominadas capas ocultas, conectan la entrada con la salida. Hay que notar que en nuestro ejemplo no hay bucles ni realimentaciones, siendo el flujo de información de izquierda a derecha, de forma progresiva. 12 Fuente: Wikipedia
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 24 Figura 2-7. Ejemplo de una red neuronal progresiva13 Podemos expresar de forma matemática el funcionamiento de la capa i-ésima de la red neuronal, considerando el vector de las entradas a esa capa como 𝐱=[𝑥,𝑥,...,𝑥] e 𝐲=[𝑦,𝑦,…,𝑦] l vector de las salidas resultante de propagar el vector de las entradas a través de esa capa. Podemos expresar de forma sencilla como un producto matricial si construimos la matriz de pesos 𝐖 de tamaño 𝑚×𝑛 y un vector bias de tamaño 𝑛: 𝐲=𝑓(𝐖∙𝐱+𝐛) donde 𝑓 es la función de activación. 2.1.4 Función de activación Las tres funciones de activación que se utilizan en la práctica introducen no-linealidades en el proceso de cálculo. La primera de ellas es la función sigmoide que tiene una forma: 𝑓(𝑧)=1 1+𝑒 De forma intuitiva, quiere decir que cuando el logit es muy negativo, la salida de la neurona es cercana a 0. Cuando el logit es grande, la salida de la neurona se aproxima a 1. Entre los dos valores intermedios la función adquiere una función de S como se ve en la Figura 2-8 (a). 13 Fuente: http://inteligenciaartificialespammfl.blogspot.com/
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 25 Figura 2-8. Funciones de activación no lineales. a) Sigmoide b) Tanh c) ReLu14 La segunda función es la de la tangente hiperbólica, tanh(), Figura 2-8 (b). Tiene una nolinealidad similar a la anterior, pero en vez de tener un rango de 0 a 1, la salida de la neurona recorre el rango de -1 a 1, con la característica deseable de estar centrada en el 0. 𝑓(𝑧)=tanh (𝑧) La tercera es la función denominada restricted linear unit (ReLU), Figura 2-8 (b), con forma de un stick de hockey, definida por la función: 𝑓(𝑧)=max (0,𝑧) La función ReLU es la función activación preferida para muchas tareas, a pesar de alguno de sus inconvenientes [42], como es que no es derivable en el origen. Una función más compleja se utiliza cuando la función de salida que se desea es una distribución de probabilidad sobre un conjunto de clases mutuamente exclusivos. Por ejemplo, clasificar los dígitos escritos a mano, donde las clases (0…9) son mutuamente exclusivos, y es difícil tener una confianza del 100% en la clasificación. Si se utilizan distribuciones de probabilidad, se da una mejor idea de la confianza en la predicción que se realiza; como resultado se obtiene un vector de probabilidades [𝑝,𝑝,…,𝑝], que cumplen: 𝑝 =1 14 Fuente: https://www.researchgate.net/
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 32 𝐸=1𝑛𝐸 El motivo es que el algoritmo de backpropagation calcula la función del error del gradiente para una única muestra de ejemplo, que necesita ser generalizada para la función de error total. La segunda condición es que pueda ser escrita en función de las salidas de la red neuronal. Como ejemplo, sean 𝑦, 𝑦 vectores de ℝ. Elijamos una función de error 𝐸(𝑦,𝑦) que mida la diferencia entre las dos salidas. La elección habitual es el cuadrado de la distancia euclídea entre los vectores 𝑦 e 𝑦′: 𝐸(𝑦,𝑦)=12‖𝑦−𝑦‖ La función de error sobre 𝑛 muestras de entrenamiento se puede escribir como el promedio del error de los ejemplos individuales: 𝐸(𝑦,𝑦)=1 2𝑛‖𝑦−𝑦‖ Como limitaciones del método de aprendizaje del Gradient Descent con Backpropagation podemos indicar las siguientes: No se puede garantizar encontrar el mínimo global de la función, sino sólo un mínimo local; por otro lado, tiene problemas para cruzar las “mesetas” de las curvas de las funciones de error, debido a posibles no-convexidades de esas curvas. El aprendizaje backpropagation no requiere una normalización de los vectores de entrada; sin embargo, en muchos casos la normalización mejora el rendimiento. Backpropagation necesita que las derivadas de la función de activación se conozcan cuando se diseña la red neuronal.
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 33 Figura 2-11. Gradient descent puede encontrar un mínimo local17 2.3 Redes Neuronales Convolucionales Este tipo de redes neuronales han supuesto una revolución en el campo de la visión artificial, desde que en el año 2012 Alex Krizhevsky [44] las usara para ganar la competición de ImageNet (también conocidas como las olimpiadas anuales de la visión por ordenador) mejorando el récord del error de clasificación desde el 26% al 15%. Desde entonces, la mayoría de las grandes compañías han venido utilizando esta tecnología: Facebook utiliza las redes neuronales para sus algoritmos de etiquetado automáticos; Google; para su búsqueda de fotos; Amazon para su recomendación de productos; Pinterest para la personalización de la página home; e Instagram para su infraestructura de búsqueda. Sin embargo, el caso de uso de estas redes más extendido es para el procesamiento de las imágenes, en concreto la clasificación de las imágenes. La clasificación de imágenes es la tarea de asignar cada imagen de entrada a una clase de salida (perro, gato) o a una probabilidad de clases de salida, que mejor describa la imagen. Para los humanos, esta tarea de reconocimiento es una de las primeras habilidades que aprendemos desde el momento que nacemos y es una que no requiere de ningún esfuerzo para los adultos. Incluso sin pensarlo dos veces, somos capaces de identificar en el entorno los objetos que nos rodean, rápidamente y de forma fluida. Estas capacidades de reconocimiento no son compartidas por las máquinas. 17 Fuente: Wikimedia
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 34 Cuando un ordenador ve una imagen (toma una imagen como entrada), ve una matriz de píxeles, cada una con un valor entero; se enfrenta a una matriz de 32x32x3 números (el 3 se refiere a los valores de color RGB). Por ejemplo, si suponemos que el ejemplo es una imagen a color en formato JPG con un tamaño de 480x480 píxeles. La correspondiente matriz es de 480x480x3. Cada uno de estos elementos es un número entero entre 0 y 255 que describe la intensidad del píxel en ese punto. Estos números, aunque son ininteligibles para nosotros, son la única entrada disponible para los ordenadores. La idea es que al dar a la red neuronal convolucional esta matriz de números y su salida sea la probabilidad de que la imagen pertenezca a una clase determinada (0,80 para gato, 0.20 para perro). Figura 2-12. Imagen real; lo que "ve" el ordenador18 Se pretende que el algoritmo diferencie entre todas las imágenes dadas, y encontrar cuáles son las características únicas que definen un perro, y cuáles otras definen un gato. Este es el proceso que discurre en nuestras mentes de forma inconsciente de forma natural; por ejemplo, cuando vemos una fotografía de un perro, inmediatamente conocemos sus características como que tiene cuatro patas. De forma similar, los ordenadores son capaces de realizar clasificaciones de imágenes examinando las características de bajo nivel como bordes y curvas, y a partir de ahí construir conceptos más abstractos a través de las capas convolucionales. 18 Fuente: https://dzone.com/
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 35 Siendo más específicos, las redes neuronales convolucionales (CNN) toman una imagen, la pasan a través de diferentes procesos como convoluciones, no-lineales, pooling (o downsampling) y fully connected layers; cada uno de estos procesos se realiza en una capa diferente de la red neuronal profunda. La salida puede ser una clase simple o un vector de probabilidades como se ha indicado anteriormente. 2.3.1 Capa Convolucional La primera capa de una CNN es siempre una capa convolucional. La entrada a esta capa es un array de valores de píxeles de mxnx3 (siendo el ancho y el alto de la imagen en píxeles, supongamos por claridad que sea 32x32x3 como en la Figura 2-13). Se define otra matriz más pequeña (llamada filtro o kernel), en el ejemplo de tamaño 5x5 que contiene un conjunto de números que son los parámetros de ese filtro. Si tenemos en cuenta que en realidad hay 3 capas de entrada, debido a los tres colores, el filtro es realmente una matriz de 5x5x3. Se comienza situando el filtro sobre la esquina superior izquierda y utilizamos ese filtro como convolución sobre toda el área de la imagen, multiplicando los valores de la imagen por los coeficientes del filtro, y cuya suma nos da un nuevo píxel de la salida (la primera capa “escondida”). Desplazando píxel a píxel el filtro por toda el área de la imagen, cada posición nos dará otro píxel de salida, con lo que tendremos una matriz de tamaño 28x28, que son precisamente las 784 diferentes posiciones en las que se puede situar un filtro de 5x5 sobre las 32x32 píxeles de la imagen de entrada. A esta matriz de salida se la denomina activation map o feature map.
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 36 Figura 2-13. Esquema de un filtro convolucional de 5x519 Si tuviéramos dos filtros diferentes de 5x5x3 entonces el tensor de salida tendría un tamaño de 28x28x2; al utilizar más filtros somos capaces de preservar mejor las dimensiones espaciales. Cada uno de estos filtros puede ser entendido como un identificador de características, entendiendo a este primer nivel las características como líneas rectas, colores simples o curvas. Modificando los valores de los coeficientes de manera adecuada en el filtro de 5x5, la salida dependerá de los valores de los píxeles subyacentes [45]. Figura 2-14. Extracción de características básicas de una imagen20 19 Fuente: Nielsen 2015 20 Fuente: Schutlz 2012
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 37 Básicamente el proceso consiste en implementar en el filtro la forma básica que queremos detectar, y cuando la zona de la imagen se parezca a esa forma, todos los coeficientes sumarán “en fase”, dando como salida un valor muy alto de salida. Evidentemente la explicación se ha simplificado mucho. En la Figura 2-15 se muestran algunos ejemplos de los valores reales de los filtros de la primera capa convolucional de una red ya entrenada; se ve que cada filtro trata de descubrir un patrón, sea línea, color o textura. No obstante, el argumento es el mismo: los filtros de la primera capa convolucionan con la imagen de entrada y se “activan” cuando la característica específica que tratan de detectar se encuentra debajo [46]. Figura 2-15. Visualización de los filtros para capas convolucionales21 2.3.2 Capas interiores En una arquitectura de red neural existen otras capas que se entremezclan con estas capas convolucionales. En general, su función es la de producir no-linealidades y preservar las dimensiones para mejorar la robustez de la red y prevenir el sobreentrenamiento. Una arquitectura clásica de red convolucional se parecería a: Input → Conv → ReLU → Conv → ReLu → Pool → Relu → → Conv → ReLU → Pool → FullyConnected Hemos visto que la primera capa convolucional (Conv) se utiliza para detectar características básicas como rectas y curvas. Pero se necesita detectar características de 21 Fuente: Zeiler 2013
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 38 alto nivel, como orejas, ojos o patas, para lo que necesitamos capas convolucionales adicionales dentro de la red neuronal. Pero la entrada de estas nuevas capas (pongamos la segunda) son precisamente la salida de las anteriores, por lo que podrán detectar características de nivel “superior”, como círculos, cuadrados o texturas básicas, más allá de las líneas, curvas y colores que detectaba la primera capa. Según progresamos en la red neuronal y atravesamos más capas convolucionales, obtendremos mapas de activación que representan características cada vez más complejas. Al final de la red, podremos tener diferentes filtros en los que cada uno se active sólo con una característica de alto nivel de entrada, como si tiene dos ojos o si tiene pelo en alguna parte. Otra característica interesante es que los filtros de las capas más profundas reciben la información de áreas cada vez más extensas de la imagen de entrada, es decir, responden a áreas de píxeles cada vez más grandes de la imagen de entrada. 2.3.3 Capa de salida Al final de la red neural existe lo que se denomina una fully connected layer (capa conectada completamente). Básicamente esta capa lo que hace es tomar como entrada la salida de la última capa convoluciones, con las características de más alto nivel detectadas en la red, y da como salida un vector N dimensional, donde N es el número de clases para la clasificación a la que ha sido entrenada. Por ejemplo, si queremos un programa de clasificación de dígitos, N sería 10. Y si el vector resultante es [0.1 0.75 0 0 0 0 0 0 0 0.15], entonces nos indica que hay un 10% de probabilidades de que sea el dígito 0, 75% de que sea el 1 y un 15% de que sea el 9.
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 39 Figura 2-16. Red neuronal convolucional completa22 2.3.4 Stride y Padding Hay dos parámetros fundamentales que podemos cambiar para modificar el comportamiento de cada capa convolucional, además del tamaño del filtro debemos elegir los parámetros conocidos como stride y padding. El stride controla como el filtro convoluciona con el tensor de entrada. En el ejemplo anterior, el filtro convolucionaba con un desplazamiento de un píxel cada vez. La cantidad o el salto con el que el filtro se desplaza se denomina stride. El stride se define habitualmente de forma que el tensor de salida sea un entero y no una fracción. Es fácil ver que, si el stride pasa de 1 a 2, el tensor de salida encoge y se producen tensores de menor tamaño. Generalmente, el stride se incrementa para que los campos de salida estén menos solapados y menores dimensiones espaciales. Por otro lado, hemos viso que, al aplicar los filtros, tal como los hemos definido, las dimensiones espaciales de salida disminuyen. Aplicando un filtro de 5x5 a una imagen de 32x32, nos da una salida de 28x28. Si aplicamos varias capas convolucionales sucesivas pudiera ser que el tamaño se redujera más de lo que quisiéramos. Esto se evita con el padding o relleno de bordes a la salida (con valores de 0) para restaurar aquellos píxeles “perdidos”. El tamaño del tensor de salida viene dado por la fórmula: 𝑂=𝑊−𝐾+2𝑃 𝑆+1 22 Fuente: StackOverflow
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 40 Con 𝑂 el ancho/alto de salida, 𝑊 el ancho/alto de la entrada, 𝐾 el tamaño del filtro, 𝑃 es el padding y S el stride. 2.3.5 Capas ReLU Después de cada capa convolucional, es habitual aplicar una capa de activación nolineal, como veíamos en las redes neuronales convencionales. El propósito de esta capa es el de introducir no-linealidades en el sistema lineal de las capas convolucionales. La capa más popular en redes convolucionales es la ReLU (apartado 2.1.4), frente a las más tradicionales sigmoide o tanh (), ya que es computacionalmente más eficiente (entrena las redes más rápido) y además ayuda a aliviar el problema del vanishing gradient23 por el que las capas más bajas de la red neuronal entrenan de forma muy lenta. La capa de activación ReLU aplica la función 𝑓(𝑥)=max(0,𝑥) a los valores de su entrada. Básicamente, esta capa simplemente cambia todos los valores de activación negativos a 0. Este tipo de capas ReLU incrementa las propiedades no-lineales del modelo y de la red completa sin afectar el campo de recepción de la capa convolucional. 2.3.6 Capas Pooling A continuación de algunas de las capas ReLU, muchos científicos de datos utilizan pooling layers. Se utilizan para realizar downsampling, o reducir el tamaño de los tensores que viajan por la red. Para este tipo de capas, existen varias opciones, siendo la más popular la denominada maxpooling: básicamente consiste en un filtro (normalmente de tamaño 2x2) con un stride de la misma longitud. Se aplica entonces al tensor de entra y como salida ofrece el valor máximo en cada subregión definida por el filtro. 23 https://en.wikipedia.org/wiki/Vanishing_gradient_problem
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 41 Figura 2-17. Ejemplo de maxpool con un filtro de 2x2 y un paso de 224 Otras opciones para las capas de pooling son el promedio o la normalización L2 [43]. La idea intuitiva que subyace para estas capas es que una de las capas de la red neuronal conoce que una característica específica se encuentra en el tensor de entrada (generalmente una de las capas de activación más altas); su localización exacta no es tan importante como su posición relativa con respecto a las otras características. Es fácil ver que este tipo de capas reducen drásticamente las dimensiones espaciales (el ancho y el alto, aunque no la profundidad). Con lo que se consigue que la cantidad de parámetros o pesos se reduzca un 75%, disminuyendo con ello los costes de computación. Además, se logra disminuir el overfitting25, o sobreentrenamiento de la red, que ocurre cuando las mismas muestras de entrada se han utilizado muchas veces durante el entrenamiento y el modelo no generaliza bien para otras muestras. 2.3.7 Capas Dropout Las capas dropout se utilizan precisamente para evitar el overfitting visto en el apartado anterior. Para evitar que los pesos de la red se sintonicen excesivamente a las muestras concretas que se utilizan durante el entrenamiento, y no a sus características, este tipo de capas descartan (dropout) un conjunto aleatorio de activaciones en esa capa asignándolas un valor de cero a la salida [47]. Este simple procedimiento fuerza a la red a ser redundante, es decir, la red debe ser capaz de dar la clasificación correcta incluso 24 Fuente: The Data Science Blog 25 https://elitedatascience.com/overfitting-in-machine-learning
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 48 profundidad:𝑑=𝛼 anchura:𝑤= 𝛽 resolución:𝑟= 𝛾 con: 𝛼∙𝛽∙𝛾≅2 𝛼≥1,𝛽≥1,𝛾≥1 - 𝜙 es un coeficiente propio del modelo que controla los recursos (por ejemplo, las operaciones en punto flotante, o FLOPS), que es el parámetro principal de escalado del modelo. - 𝛼, 𝛽, 𝛾 distribuyen la profundidad, ancho y resolución respectivamente. Los FLOPS consumidos en una red convolucional son proporcionales a 𝑑, 𝑤 y 𝑟, lo que se refleja en la primera restricción (los autores restringen 𝛼∙𝛽∙𝛾 a 2, e tal manera que para cada 𝜙, los FLOPS requeridos se multiplican por 2. 2.4.2 EfficientNet-B0 Las ecuaciones anteriores podrían sugerir que podemos escalar cualquier modelo CNN. Aunque es correcto, los autores han encontrado que la elección del modelo inicial influye en gran manera en los resultados finales que se obtengan. Por lo que desarrollaron su propia arquitectura básica llamada EfficientNet-B0. Como MnasNet, se entrenó con una arquitectura neuronal multi-objetivo, para optimizar tanto la precisión como FLOPS. Así, la arquitectura final (Tabla 2-2) es similar a MnasNet.
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 49 Tabla 2-2. Arquitectura de EfficientNet029 2.4.3 Escalado del modelo EfficientNet-B0 Comenzando por el modelo EfficientNet-B0, los autores usaron la siguiente estrategia de escalado: 1. Se comienza con 𝜙=1 2. Cada paso en el escalado supone duplicar la necesidad de recursos del paso anterior. 3. Se hace una búsqueda en grid, en el espacio de valores 𝛼, 𝛽 y 𝛾 para comprobar que se cumple el paso anterior. 4. Los autores encontraron que con 𝛼=1.2, 𝛽=1.1 y 𝛾=1.15 el modelo tenía un funcionamiento óptimo. 5. Fijadas 𝛼, 𝛽 y 𝛾 como constante y escalando EfficientNet-B0 para diferentes valores de 𝜙 obtuvieron las nuevas rede escaladas EfficientNet-B0 a EfficientNetB7. La razón por la que no se reevalúan 𝛼, 𝛽 y 𝛾 en cada paso es porque es muy costoso computacionalmente. 29 Fuente: Tan 2019
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 50 2.4.4 Rendimiento EfficientNet La Figura 2-20 muestra la curva de rendimiento de la familia EfficientNet, comparados con otros modelos populares en la literatura, cuando se enfrentan a la tarea de clasificación del conjunto de imágenes ImageNet. Figura 2-20. Comparativa de los modelos EfficientNet con otros30 Muestra que, para el mismo FLOPS, la precisión de EfficientNet es superior a cualquier otra arquitectura existente. Si estuviéramos planeando utilizar, por ejemplo, Inceptionv2 [54], deberíamos considerar el uso alternativo de EfficientNet-B1. Del mismo modo, es preferible el uso de EfficientNet-B2 frente a ResNet-50. En la mayoría de los casos prácticos, los científicos e investigadores comienzan con un modelo pre-entrenado y lo optimizan (sintonizan) para su aplicación específica. Cabría preguntarse si ya que EfficientNet supera a las otras arquitecturas con el dataset de ImageNet, entonces también lo superará en otras aplicaciones con conjuntos de datos de imágenes diferentes. Los autores, después de realizar diferentes experimentos, así lo 30 Fuente: Tan 2019
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 51 afirman, con lo que parece que estas mejoras generalizan para otras tareas de visión artificial. 2.5 Optimización Cada vez que una red neuronal termina un lote de procesamiento a través de la red, debe decidir como utiliza la diferencia de los resultados para ajustar los pesos de los nodos para que la red avance hacia la solución. El algoritmo que determina el paso que debe modificar los coeficientes se conoce como algoritmo de optimización. Repasamos en este apartado los algoritmos de optimización más conocidos y disponibles en la librería Keras [55]. 2.5.1 SGD Stochastic Gradient Descent, es el algoritmo clásico de optimización: se computa el gradiente de la función de pérdidas de la red con respecto a cada peso de la misma; se calculan los gradientes que se crean para cada uno de los pesos multiplicados por una tasa de aprendizaje, para mover los pesos en la dirección que apuntan sus respectivos gradientes. Es el algoritmo más simple, tanto conceptualmente como por su comportamiento. Dada una tasa determinada de aprendizaje, SDG simplemente sigue el gradiente de la superficie de costes. Los nuevos pesos se generan en cada iteración que siempre serán estrictamente mejores que los de las iteraciones previas. La simplicidad de SGD lo convierte en una buena opción para redes de pocas capas. Sin embargo, SGD converge significativamente más despacio que otros algoritmos más avanzados; además, en general no es capaz de escapar de los mínimos locales (“trampas”) que existen en la superficie de costes, por lo que SGD no se utiliza, o no es recomendado para su uso en redes neuronales profundas de múltiples capas. 2.5.2 SGD con momento El momento Nesterov fue una de las primeras innovaciones que mejoró la velocidad de convergencia del algoritmo de optimización anterior. Las técnicas de momentos utilizan información de los pasos previos en la determinación del paso actual. Mientras que SGD sigue estrictamente la superficie de costes en la medida que la tasa de aprendizaje se lo
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 52 permite, el uso de momento Nesterov, permite tener cierta “inercia” en el movimiento en el sentido en seguir en una determinada dirección, incluso frente a cambios bruscos en la dirección del gradiente, hasta que se acumula cierta energía en la nueva dirección para hacer cambiar el sentido. Se asemeja al momento inercial conocido de la física. El uso del momento tiene dos ventajas: por un lado, ayuda a evitar las trampas de mínimos locales; por otro lado, permite a los optimizadores aprender más deprisa, ya que soporta el uso de tasas de aprendizaje más elevadas. La forma más sencilla de aplicar momentos es, para cada iteración de aprendizaje, crear un vector cuyo valor medio sea una media decreciente de los valores anteriores, y sumar ese vector al gradiente actual para aplicar la corrección a los pesos. El momento Nesterov es una ligera variación del anterior, que funciona mejor en la práctica, ya que evita la tendencia a sobrepasar los valles (overshooting). Ahora, en el paso predictor se extrapola linealmente la trayectoria actual, para que luego, en el punto predicho, se evalúa el gradiente y se hace la corrección de la trayectoria. Con ello se logra una aproximación de segundo orden de la trayectoria con un costo computacional similar al del momento normal. Se mantiene el efecto de inercia, pero se reducen los sobrepasos. 2.5.3 Adagrad Adagrad es una técnica más avanzada que el SGD que realiza una gradient escent con una tasa variable de aprendizaje dependiendo de los nodos, es decir, se trata de programar la tasa de aprendizaje por nodo dentro del algoritmo, en vez de utilizar la misma tasa para todos los nodos. Se basa en la siguiente ecuación: 𝜃=𝜃−𝜂 (𝐺+𝜖)∙𝑔 Donde 𝜃 es el peso del nodo en el paso 𝑡; 𝐺 es una matriz diagonal que contiene los cuadrados de todos los gradientes previos; 𝜖 es un infinitésimo del orden 10, que se utiliza como término de regularización para prevenir las divisiones por 0; 𝑔 es el vector de gradientes para el paso actual; y 𝜂 es la tasa de aprendizaje. La clave del algoritmo se encuentra en el denominador que realiza la ponderación de los pesos; su inconveniente
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 53 es precisamente que la matriz 𝐺 crece continuamente, por lo que la tasa de aprendizaje tiende a cero, impidiendo convergencias adicionales. La literatura recomienda comenzar con una tasa de aprendizaje de 0,01 que funciona bien en la mayoría de los casos. 2.5.4 Adadelta Se trata de una adaptación del método Adagrad para impedir el problema del decrecimiento continuo de la tasa de aprendizaje. Adadelta utiliza una adaptación del gradiente en el que cada peso se pondera por la suma del gradiente actual y un promedio decreciente exponencialmente de un promedio de un limitado número de gradientes anterior. Como el denominador del gradiente no crece indefinidamente, el algoritmo es más robusto. Aunque Keras pide una tasa de aprendizaje en este modelo, técnicamente no lo necesita. 2.5.5 RMSprop En este caso es una corrección de Adagrad, independiente de Adadelta; es similar a Adadelta, con una diferencia: la tase de aprendizaje se divide adicionalmente por un promedio que decae exponencialmente de todos los gradientes al cuadrado, es decir, un parámetro global. 2.5.6 Adam El algoritmo de optimización Adaptative Moment Estimation, además utilizar el promedio de cuadrados anterior, también utiliza el promedio decreciente de los anteriores gradientes, similar al método de los momentos. En este caso se estiman los momentos de primer y segundo orden del gradiente con las siguientes fórmulas: 𝑚=𝛽𝑚+(1−𝛽)𝑔 𝑣=𝛽𝑣+(1−𝛽)𝑔 Donde 𝑣 es el promedio (exponencialmente decreciente) de los cuadrados de los gradientes anteriores y 𝑚 es el promedio (exponencialmente decreciente) de los gradientes anteriores. 𝛽 y 𝛽 son las tasas de decaimiento.
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 54 El problema al usar estas fórmulas es que están sesgadas hacia 0. Para evitarlo, este método utiliza una corrección adicional: 𝑚 = 𝑚 1+𝛽 𝑣 = 𝑣 1−𝛽 Con lo que finalmente. La fórmula para la actualización de la tasa de aprendizaje es: 𝜃=𝜃−𝜂 𝑣 +𝜖∙𝑚 Podemos visualizar este modelo como el de una bola sobre la superficie de costes, con momento y fricción. 2.5.7 AdaMax Adam, RMSProp y otros utilizan la varianza del gradiente en su formulación. El uso de la varianza, o de la norma 𝐿 del gradiente, estrictamente hablando es arbitrario, podríamos utilizar otros momentos definidos como: 𝐿=𝑔 𝐿= 𝑔 𝐿=𝑔 𝐿= 𝑔 siendo 𝑔 el vector de gradientes. Las normas superiores a 2 no son muy útiles porque no son numéricamente estables. Sin embargo, sorprendentemente, la norma infinita sí que lo es, y se puede simplificar como: 𝑣=max(𝛽∙𝑣,|𝑔|) AdaMax es un algoritmo de actualización de gradiente más robusto que Adam, y tiene una estabilidad numérica superior a Adam. 2.5.8 Nadam Nadam es Adam, pero con el momento Nesterov, en vez de un momento ordinario, con los mismos beneficios que se obtienen que en el caso de SGD.
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 55 2.5.9 AMSgrad Es una mejora reciente del método Adam. En algunos casos Adam no es capaz de converger hacia una solución óptima, como hace SGD. Parece ser que para algunos datasets (de imágenes principalmente), Adam tiende a bajar la prioridad de los gradientes más informativos, frente a otros gradientes espurios menos informativos, haciendo que el algoritmo se pase el punto óptimo sin explorarlo suficientemente. AMSgrad propone resolver este problema calculando el valor de 𝑣 , pero tomando como promedio en la fórmula: 𝑣=max(𝑣 ,𝑣) Al tomar ese máximo, la influencia de los gradientes más grandes se conserva. Este algoritmo se comporta sólo ocasionalmente mejor que Adam, pero esas ganancias no son generalizables y no ha conseguido desplazarle.
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 56 3 Trabajos relacionados Existen numerosas actividades de investigación en la literatura31 relacionadas con los métodos de optimización, tanto con métodos de clasificación como de agrupamientos (clustering). Siguiendo a Pootschi et al. [56] casi todos los métodos de clasificación se han empleado para el diagnóstico de malaria con muestras finas de frotis de sangre (thin blood smear), desde los métodos no supervisados de clustering K-Mean [57] hasta otras técnicas no supervisadas como el árbol Naïve Bayes [58], Ada-boost [59], Decision Tree [60], Support Vector Machine [61] o el Discriminante Lineal [62]. Tabla 3-1. Métodos de clasificación utilizados en el diagnóstico de malaria32 Tipo de frotis Metodología de Clasificación Fino No super v isado K - mean Clustering Quaternion Fourier Transform (QFT) Supervisado Thresholding Bayesian classifier Annular ring ratio method Naïve bayes Tree Logistic Regression Tree Linear Programming Euclidian Distance Classifier Decision Tree Template Matching Ada - boost Nearest Mean Classifier (NM) Fuzzy Interface System Normalized cross - correlation Support Vector Machine (SVM) Linear Discriminant (LD) Crow d Source Games Neural Network Deep Learning Grueso No supervisado K - Mean Clustering Supervisado Naïve Bayes Tree Randomized Tree Classifier Nearest Mean Classifier (NM) Thresholding Support Vector Machine (SVM) Neural Network Geneetic Algorithm 31 Para la búsqueda de los artículos referenciados en el texto no se ha utilizado ninguna herramienta concreta (Google Scholar, Science Direct…) sino búsquedas directas en Internet. 32 Fuente: Poostchi - 2018
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 57 Sin embargo, la mayoría de ellos están dedicados al estudio de la interacción entre la clasificación con las características de las imágenes o la segmentación de las mismas, y muy pocas de ellas están dedicadas explícitamente a la investigación de la detección del parásito en las imágenes de los glóbulos rojos. Resulta difícil comparar el rendimiento de todos esos estudios. Por un lado, principalmente porque la mayoría de los estudios no utilizan un dataset de imágenes común, ni siquiera un número de muestras comparable. Sin embargo, si se puede observar una contraposición entre el tiempo de proceso y la exactitud: cuanto mayor es el tiempo de proceso, mejor es la exactitud conseguida. Además, la arquitectura del algoritmo empleado tiene mucha influencia en la ejecución del proceso, por ejemplo, la clasificación mediante redes neuronales en más lenta que la que utiliza Support Vector Machine. Los algoritmos de aprendizaje profundo se han utilizado recientemente para aumentar el rendimiento en varias áreas relacionadas con la medicina. Liang et al. [20] fueron unos de los primeros investigadores que aplicaron CNN al diagnóstico de la malaria. Utilizaron un modelo clásico de transferencia de aprendizaje un modelo propio de CNN para clasificar automáticamente imágenes de células sanguíneas thin smear, obtenidas mediante muestras de microscopio óptico clásico. Sus resultados mostraron que el modelo propio CNN obtenía un mejor rendimiento (97,37% exactitud) que los métodos más tradicionales de transferencia de aprendizaje. Rajaraman et al. [21] evaluaron diversas CNN pre-entrenadas basadas en algoritmos de aprendizaje profundo como un extractor de características previo a la clasificación. Estudiaron hasta 6 arquitecturas diferentes (AlexNet, VGG16, ResNet50, Xception, DenseNet121 y un modelo propio) obteniendo unos resultados de exactitud que variaron desde el 91,50% hasta 95,9%. Los métodos VGG16 y ResNet demostraron ser superiores al resto de sus competidores en esta tarea. Concluyeron que las CNNs preentrenadas son una herramienta prometedora para la extracción de características. Rahman et al. [63] usaron el dataset del National Institute of Health, el mismo que el utilizado en el presente trabajo, y un esquema de validación cruzada de 5 iteraciones (5fold cross-validation scheme), para medir sus modelos: un modelo propio de CNN
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 64 imgaug y albumentations) [74]. Esta librería se configura de forma compatible con la librería albumentations para reducir el tiempo de ejecución. En el código, se implementa un data generator mediante el método constructor de la clase ImageDataAugmentator. Se necesitan dos parámetros, el primero es rescale, para el que se ha utilizado un valor de 1/255, utilizado para convertir cada píxel desde su valor en un rango comprendido entre [0, 255] para escalarlo a [0, 1]. El Segundo es el parámetro augment, el cual está diseñado para usarse como la salida del método compose del software albumentation. Este data generator se ha usado para preprocesar todas las imágenes del dataset. La Figura 4-3. muestra el diagrama de bloques del algoritmo. Figura 4-3. Diagrama de bloques del algoritmo 4.4 Configuración experimental y de validación El programa se ejecutó sobre un ordenador portátil DELL XPS 15 9560, Intel Core i7, 16GB RAM, equipado con una tarjeta gráfica NVIDIA GeForce GTX 1050 que permitió los cálculos en punto fijo, por el soporte a cálculos GPU. La fase entrenamiento del modelo EfficientNetB0 adaptado se realizó llevando la técnica de validación cruzada KFOLD con 10 iteraciones. En conjunto, cada iteración se compuso de un máximo de 33 epochs. De otra forma, cada iteración consistió en 1.240 pasosEl valor elegido como mini-batch fue de 16.
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 65 La validación del modelo se ha realizado en dos fases. En primer lugar, se ha utilizado una técnica de validación cruzada de 10 iteraciones para entrenar y testear el modelo; y, en segundo lugar, un dataset diferente, con imágenes que no han sido previamente utilizadas en la fase anterior se ha utilizado para validar el rendimiento del modelo. Después se ha calculado la matriz de confusión. A continuación, se han calculado los valores de exactitud, precisión, recall, y F1-score para cada una de las clases. Por fin, los valores promedios de las iteraciones se han calculado. La Tabla 4-3 muestra la configuración experimental práctica utilizada en el experimento.
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 66 Tabla 4-3: Configuración Experimental Entorno 1. Selección del entorno Google Colab o local e instalación de las librerías necesarias. Input 2. Descarga de las imágenes para las dos categorías. Configuración 3. Importación de las imágenes. Configuración de Directorios 4. Creación de dos directorios de imágenes con etiquetas acordes a cada una de las clases. 5. Configuración del entrenamiento, testing y validación utilizando una validación cruzada de 10 iteraciones. Muestra de imágenes aleatorias 6. Muestra algunas imágenes de cada tipo. Configuración del Data Generator 7. Definición del flujo de augmentation utilizando la función Compose de la librería albumentation. 8. Creación del data generator como un objeto de la librería ImageDataAugmentator y configuración del flujo augmentation obtenido en (7). Entrenamiento y Testing 9. Creación del modelo utilizando EfficientNetB0 y dense layers con una función de activación ReLu y una capa de salida con una función de activación softmax. Validación cruzada de 10 iteraciones 10. Compilación del modelo utilizando el optimizador ADAM con una tasa de aprendizaje de 0.0001 y una función Categorical_Crossentropy para el cálculo de las pérdidas. 11. Ajuste del modelo utilizando 33 epochs y una función ReduceLRonPlateau para reducir la tasa de aprendizaje cuando las métricas no mejoren. 12. Guardado del modelo para usarse en el proceso de validación y creación del modelo ensemble. 13. Configuración del dataset para testing. 14. Cálculo de los parámetros de rendimiento en cada iteración. a. Gráfico de la evolución de las pérdidas del modelo. b. Gráfico de la evolución de la exactitud del modelo. c. Informe del test de clasificación. d. Validación del modelo. e. Curva AUC-ROC. f. Matriz de confusión. g. Informe de la validación de la clasificación. Modelo Ensembled 15. Cálculo de los parámetros de rendimiento del modelo ensemble. a. Informe de la clasificación ensemble. b. Curva AUC-ROC. c. Matriz de confusión. Estudio de errores 16. Localización las imágenes mal clasificadas. 17. Dibujo de algunas imágenes de cada tipo.
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 67 5 Resultados El entrenamiento del modelo requirió un total de 409.200 iteraciones de imágenes individuales. El tiempo de ejecución para la fase de entrenamiento del modelo fue de 1 día y 23:38:44. La tase de aprendizaje inicial se estableció en 0,0001. El modelo utilizó la técnica del callback ReduceLROnPlateau ya que se precisa una reducción de la tasa de aprendizaje tan pronto como el modelo deja de mejorar de manera significativa; con una tasa de aprendizaje menor estos modelos buscan de forma más efectiva el óptimo. Esta función callback comprueba la tasa de mejora, y si no se confirma un progreso significativo durante un número= ‘PATIENCE’ de epochs, se reduce la tasa de aprendizaje. Se estableció el valor de PATIENCE a 6, y una tasa de aprendizaje mínima de min_lr=0.000001 antes de la finalización definitiva del programaSe eligió la técnica de optimización de ADAM [75] como el método para el cálculo del valor de pérdida en el mecanismo de backward propagation. En las figuras y tablas que siguen se da información detallada de los flujos de datos en el programa dentro de cada iteración, así como los valores obtenidos, como los valores de exactitud, precisión, recall o área bajo la curva de la gráfica ROC. Una vez que cada uno de los 10 modelos del proceso KFOLD se han entrenado, los modelos se utilizan en los test de validación, usando siempre un dataset separado de imágenes que no ha sido empleado para el entrenamiento. el rendimiento obtenido en las simulaciones es muy esperanzador. En los anexos se da información detallada, incluyendo el script Python utilizado. Estos anexos también incluyen información detallada de los resultados obtenidos.
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 68 Figura 5-1. Evolución de la exactitud y de las pérdidas en el aprendizaje 5.1 Resultados experimentales de la clasificación binaria En total, se utilizaron 22.046 imágenes diferentes para el entrenamiento y 5.512 imágenes para el testing. Se ofrecen los resultados obtenidos para cada una de las 10 iteraciones, junto con el valor promedio de todos ellos. Se han calculado los valores de exactitud, recall, precisión y F1-score tanto para cada clase por separado, como para ambas clases de manera conjunta. La Tabla 5-1 muestra los resultados de la clasificación relativos a la clase malaria. El rendimiento mínimo de la clase malaria se obtiene para las iteraciones 0, 1 y 4. El valor de precisión mínimo de 97,72% en la iteración 1. Además, el valor mínimo de recall fue de 96,19% en la iteración 8. El valor mínimo de F1-score fue de 97,02% también en la iteración. Los valores promedio de la precisión, recall, y F1-score fueron de 98,07%, 97,05% y 97,55%, respectivamente.
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 69 Tabla 5-1. Resultados de la clasificación binaria para la clase malaria. Iteración Precisión Recall F1-score 0 0,977231 0,971920 0,974569 1 0,978221 0,976449 0,977335 2 0,981702 0,971920 0,976787 3 0,978102 0,971014 0,974545 4 0,978042 0,968297 0,973145 5 0,984259 0,963735 0,973889 6 0,979909 0,972801 0,976342 7 0,985441 0,981868 0,983651 8 0,978782 0,961922 0,970279 9 0,985185 0,964642 0,974805 Promedio 0,980687 0,970457 0,975535 Los resultados de la ejecución del modelo respecto de la clasificación para la clase normal se muestran en la Tabla 5-2 El valor mínimo de recall es 97,72% obtenido en la iteración 0. De igual forma, el valor más bajo para la precisión es de 96,25% para la iteración 9. Por último, la iteración 4, presenta un valor mínimo de F1-score de 97,33%. Los valores promedios para la precisión, recall y F1-score son 97,07%, 98,08% y 97,66%, respectivamente.
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 70 Tabla 5-2. Resultados de la clasificación binaria para la clase normal. Iteración Precisión Recall F1-score 0 0,971996 0,977293 0,974638 1 0,976428 0,978202 0,977314 2 0,972122 0,981835 0,976954 3 0,971145 0,978202 0,974661 4 0,968525 0,978202 0,973339 5 0,964444 0,984574 0,974405 6 0,972949 0,980018 0,976471 7 0,981900 0,985468 0,983681 8 0,962500 0,979110 0,979734 9 0,965302 0,985468 0,975281 Promedio 0,970731 0,980837 0,976648 Los valores para la exactitud, precisión, recall y F1-score para la clasificación de ambas clases, consideradas de forma conjunta se presentan en la Tabla 5-3. La exactitud promedio obtenida es de 97,56%. Además, se obtuvieron unos valores promedio para la precisión de 97,57%, para el recall de 97,56% y para el F1-score de 97,56%.
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 71 Tabla 5-3. Resultados de la clasificación binaria para ambas clases. Iteración Exactitud Precisión Recall F1-score 0 0,974603 0,974617 0,974603 0,974603 1 0,977324 0,977326 0,977324 0,977324 2 0,976871 0,976919 0,976871 0,976870 3 0,974603 0,974628 0,974603 0,974603 4 0,973243 0,973290 0,973243 0,973242 5 0,974150 0,974356 0,974150 0,974147 6 0,976407 0,976432 0,976407 0,976406 7 0,983666 0,983672 0,983666 0,983666 8 0,970508 0,970649 0,970508 0,970506 9 0,975045 0,975253 0,975045 0,975043 Promedio 0,975642 0,975714 0,975642 0,975641 5.2 Experimental validation results of classification En esta fase, el objetivo es el de validar el rendimiento del algoritmo y verificar que no se ha producido overfitting. Para ello, en el trabajo se ha utilizado un dataset de imágenes que no se había utilizado en la fase anterior. Este dataset externo incluye 2.756 imágenes de la clase malaria y 2.756 de la clase normal. La fase de validación se realizó para cada uno de los 10 modelos obtenidos en la fase anterior de validación cruzada KFOLD. Estos resultados de validación se muestran en la Tabla 5-4, donde también se muestra el parámetro de “Área bajo la Curva” (ROC). El valor medio de la exactitud es de 97,70%. Además, los valores promedio para la precisión, el recall y el F1-score son 97.70%, 97,69% y 97,69% respectivamente. Se puede apreciar que la varianza de los valores entre los experimentos es mínima, tanto para la exactitud como para el ROC (≅4·10,1,5·10 para el ROC) y, por tanto, este trabajo demuestra la validez del método propuesto.
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 72 Tabla 5-4. Resultados del proceso de validación de la clasificación Iteración Exactitud Precisión Recall F1-score ROC 0 0,977142 0,977143 0,977141 0,977141 0,996143 1 0,978788 0,978801 0,978774 0,978773 0,997121 2 0,974084 0,974292 0,973875 0,973868 0,996094 3 0,978254 0,978278 0,978229 0,978228 0,996904 4 0,979563 0,979626 0,979499 0,979497 0,996379 5 0,973411 0,973491 0,973331 0,973328 0,996098 6 0,977894 0,977922 0,977866 0,977865 0,996798 7 0,978270 0,978310 0,978229 0,978228 0,996274 8 0,976499 0,976583 0,976415 0,976412 0,996893 9 0,975631 0,975754 0,975508 0,975504 0,996243 Promedio 0,976953 0,977020 0,976887 0,976884 0,996495 Con respecto a la exactitud, el modelo 4 demostró ser el mejor entre el conjunto de los 10. En la Figura 5-2 se muestra la Receiver Operating Characteristics (ROC) del modelo de la iteración 5 y la Figura 5-3 presenta la matriz de confusión para el conjunto de imágenes de validación. Figura 5-2. ROC para la iteración número 4
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 73 Figura 5-3. Matriz de confusión para la iteración 4 5.3 Resultados experimentales del modelo ensemble El paso final de mejora del modelo consistió en la elaboración de los resultados conjuntos (ensembled). El modo habitual de realizar un ensembled modelo es el de utilizar diferentes modelos teóricos. En este trabajo, el modelo ensembled se formó con cada uno de los 10 modelos previamente entrenados. Hay que resaltar dos puntos: Los diez modelos son realmente el mismo, EfficientNet0, pero entrenados con datasets ligeramente diferentes (una diferencia de imágenes del 20 % entre entrenamientos) No se realiza ningún entrenamiento adicional en esta fase. A pesar de utilizar el mismo modelo, y con una coincidencia del 80% en las imágenes entre los distintos entrenamientos, los resultados obtenidos han sido realmente buenos. La exactitud subió hasta 98,29% desde un valor promedio del 97,70%. Este valor representa una disminución de la tase de error de 25,75% error de los valores del ensemble respecto de los valores promedio de los modelos individuales. La Figura 5-4 presenta la matriz de confusión35 para este experimento final de este trabajo. Una matriz de confusión contiene información sobre los resultados de 35 http://www2.cs.uregina.ca/~dbd/cs831/notes/confusion_matrix/confusion_matrix.html
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 80 Figura 6-1. Imágenes de células con malaria clasificadas como normales. Por otro lado, la Figura 6-2 muestra las imágenes de tres células normales que se han clasificado erróneamente como infectadas. Esto ha podido ser debido a impurezas o artefactos en forma de manchas, las cuales tienen una apariencia muy similar al patógeno tintado. Figura 6-2. Imágenes de células normales clasificadas como con malaria. En resumen, este trabajo ha puesto de manifiesto los resultados prometedores del algoritmo EfficientNet como herramienta para el apoyo del diagnóstico de la malaria. Adicionalmente, en este trabajo se propone el uso de las librerías Albumentation y ImageDataAugmentator. El trabajo apoya el actual cuerpo de conocimiento científico, ya que da una respuesta efectiva al diagnóstico automatizado de la malaria, en el entendimiento de que este tipo de algoritmos no pretende sustituir el trabajo de los expertos médicos; en su lugar, estos métodos intenta apoyarlos y reducir su tiempo de contacto con la malaria.
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 81 7 Conclusión En este proyecto fin de grado se ha trabajado en un sistema automatizado, basado en un algoritmo de redes neuronales convolucionales, para la asistencia a la identificación de malaria en los glóbulos rojos de los pacientes. El método propuesto hace uso del modelo de EfficientNet y se ha verificado haciendo uso de la validación cruzada de 10 iteraciones (10-fold). Además, se ha utilizado un conjunto de datos independientes para validar. Los resultados finales se han obtenido por medio de un modelo ensembled compuesto de los 10 modelos previamente calculados en el proceso de validación cruzada. Se han obtenido muy buenos resultados. con una exactitud de 98,29%, un recall de 98,82%, una precisión de 97,74 % y un F1-score de 98,28% en el proceso de clasificación binaria de las células. El área bajo la curva (AUC) es de 99,76%. El autor de este trabajo no ha encontrado un estudio similar en la literatura con que utilice el método de EfficientNet como una técnica automática para detectar malaria. Se ha constatado muchas de las limitaciones comunes a todos los métodos de aprendizaje automático. A pesar de la inmensa cantidad de individuos infectados con malaria, las colecciones de imágenes accesibles para investigación no son lo suficientemente robustas. Sin embargo, por la experiencia que ya se tiene con las CNN es de esperar que el rendimiento de estas técnicas mejorará con el aumento de la cantidad de imágenes disponibles para usarlas como entrenamiento. Además, es importante estudiar detenidamente el comportamiento de esta clase de técnica tomando en consideración como parámetro la fase de la enfermedad en que se encuentre el paciente. Es posible que los algoritmos sean capaces de detectar la enfermedad en una fase avanzada de la misma, pero es incluso más importante enfocarse en las etapas tempranas de la enfermedad donde estas técnicas son más útiles y, sin embargo, presentan un rendimiento menor. Todo el código fuente utilizado en este proyecto, se ha puesto a disposición de la comunidad científica como un documento adjunto a una publicación enviada para su aprobación. Al compartir el software y los datos, la comunidad científica puede reproducir los resultados y, de esta forma, se apoya el desarrollo de futuras actividades
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 82 de investigación. Por supuesto, de esta forma se permite que los investigadores comprueben, actualicen, revisen y/o modifiquen diferentes parámetros para mejorar los resultados.
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 83 8 Referencias [1] WHO, World Malaria Report 2020, Geneva: World Health Organization, 2020, p. 299. [2] H. Carballo y K. King, «Emergency department management of mosquito borne illness: malaria, dengue and west nile virus,» Emergency medicine practice, , vol. 16, nº 5, pp. 123, 2014. [3] J. Muñoz, G. Rojo y G. Ramírez, «Diagnosis and treatment of import ed malaria in Spain: recommendations from the malaria Working group of the Spanish Society of tropical medicine and international health (SEMTSI),» Enfermedades Infecciosas y Microbiología Clínica, nº 33, pp. 1-13, 2015. [4] WHO, Malaria microscopy qual ity assurance manual , version 2, Ginebra: World Health Organization, 2016. [5] WHO, Guidelines for the Treatment of Malaria, 3 ed., Geneva: World Health Organization, 2015. [6] K. Makhija, S. Maloney y R. Norton, «The utility of serial blood film te sting for the diagnosis of malaria,» Pathology, vol. 47, nº 1, pp. 68-70, 2015. [7] K. Mitiku, G. Mengitsu y B. Gelaw, «The reliability of blood film examination for malaria at the peripheral health unit,» Ethiopian Journal of Health Development, vol. 1 7, nº 3, pp. 149-246, 2003. [8] T. Tokumasu, R. Fairhurst y G. Ostera, «Band 3 modifications in Plasmodium falciparum - infected AA and CC erythrocycles assayed by autocorrelation analysis using quantum dots,» Journal of Cell Science, vol. 118, nº 5, pp. 1091-1098, 2005. [9] D. Das, M. Gosh, M. Pal, A. Maiti y C. Chakraborty, «Machine learning approach for automated screening malaria parasite using light microscopic images,» Micron, nº 45, pp. 97-106, 2013. [10] C. Dong, C. Loy y X. Tang, «Accelerating the super - resolution convolution al neural network,» de Compuer Vision - ECC , Cham, Springer International Publishing, 2016, pp. 391-407. [11] S. Lawrence y C. C. T. A. Giles, «Face recognition: a convolutional neurl - network aproach,» IEEE Transactions on Neural Networks, vol. 8, nº 1, pp. 98-113, 1997. [12] D. Das, S. Koley, S. Bose, A. Maiti, B. Mitra, G. Mukherjee y P. Dutta, «Computer aided tool for automatic detection and delineation of nucleus from oral histopathology images for OSCC screening,» vol. 8, 2019. [13] X. Ji, Q. Y u, Y. Liu y S. Kong, «A recognition method for Italian alphabet gestures based on convolutional neural network,» de Intelligent Computing Theories and Application , Springer International Publishinf, 2019, pp. 663-664.
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 84 [14] A. Tavanei, M. Ghodrati, S. Kheradpiesheh, T. Masquelier y A. Maida, «Deep learning in spiking neural networks,» Neural Networks, pp. 47-63, 2019. [15] R. Karthik, M. Hariharan, S. Ananda, P. Mathikshara, A. Johnson y R. Menaka, «Attention embedded residual CNN for disease detection in tomato leaves,» Applied Soft Computing, vol. 86, nº 105933, 2020. [16] Y. Wang, X. Wei, H. Shen, L. Ding y J. Wan, «Ro bust fusion for RGB - D tracking using CNN features,» Applied Soft Computing, vol. 92, nº 106302, 2020. [17] J. Rangel, J. Martínez - Gómez, C. Romero - González, J. García - Varea y M. Cazorla, «Semi - supervised 3D object recognition through CNN labeling,» Applied Soft Computing, vol. 65, pp. 603-613, 2018. [18] C. Wang, Z. Zhao, Y. Xu y Y. Yu, «A novel multi - focus image fusion by combining simplified very deep convolutional networks and patchbased sequential reconstruction strategy,» Applied Soft Computing, vol. 91, nº 106253, 2020. [19] Y. Dong, Z. Jiang, H. Shen, D. Pan, L. Williams, V. Reddy, B. W. y A. Bryan, «Evaluations of deep convolutional neural networks for authomatic identification of malaria infected cells,» de IEEE EMBS international conference on biomedical and health informatics , Piscataway, 2017. [20] Z. Liang, A. Powell, I. Ersoy, M. Poostchi, K. Silamu, K. Palaniappan, P. Guo, M. Hossain, A. Sameer, R. Maude y e. al., «CNNBased Image Analysis for Malaria Diagnosis,» de International Conference on bioinformatics and biomedicine, Shenzhen, 2016. [21] S. Rajaraman, S. Antani, M. Pootschi, K. Silamut y M. Hossain, «Pre - trained convolutional networks as feature extractors toward improved malaria parasite detection in thin blood smear images,» PeerJ, vol. 6, nº 4, p. 4578, 2018. [22] O. Sagi y L. Rochard, «Ensemble learning: A survey,» Wiley Interdisciplinary Reviews Data Mining and Knowledge Discovery, vol. 8, nº 4, 2018. [23] T. Dietterich, «Ensemble Methods in Machine Learning,» de Proceedings of the First International Workshop on Multiple Classifier Systems, Cagliari, 2000. [24] G. Brown, «Ensemble Learning,» de Encyclopedia of Machine Learning , Boston, MA: Springer, 2011. [25] A. Sarwar, M. Ali, M. Jatinder y V. Sharma, «Diagnosis of diabetes type - II using hybrid machine learning based ensemble model,» International Journal of Information Technology, vol. 12, pp. 419-428, 2020. [26] D. Yadav y S. Pal, «To Generate an Ensemble Model for Women Thyroid Prediction Using Data Mining Techniques,» Asian Pacific Journal of Cancer Prevention, vol. 20, nº 4, pp. 1275-1281, 2019. [27] M. Kaur, A. Malhi y H. Pannu, «Machine learning ensemble for neurological disorders,» Neural Computing and Applications, vol. 32, nº 8, pp. 12697-12714, 2020.
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 85 [28] Y. Xiao, J. Wu, Z. Lin y X. Zhao, «A deep learning - based multi - model ensemble method for cancer prediction,» Computer Methods and Programs in Biomedicine, vol. 153, nº 1, pp. 19, 2018. [29] S. Rajaraman, S. Antani, M. Poostchi, K. Silamut, M. Hossain, R. Maude, S. Jaeger y G. Thoma, «Pretrained convolutional neural networks as feature extractors toward improved malaria parasite detection in thin blood smear images,» PeerJ, 2018. [30] L. Duong, P. Nguyen, C. Di Sipio y D. Di Ruscio, «Automated fruit recognition using efficientnet and mixnet,» Artículos académicos para comput. electron. agric., vol. 171, 2020. [31] M. Tan y Q. Le, «Efficcientnet: Rethinking model scaling for convolu tional neural networks,» de Proceedings of the 36th International Conference on Machine Learning , Long Beach, California, 2019. [32] M. Tan, «Efficientnet: Improving accuracy and efficiency through automl and model scaling,» 29 05 2019. [En línea]. Avai lable: https://ai.googleblog.com/2019/05/efficientnet-improving-accuracyand.html. [Último acceso: 24 01 2021]. [33] K. Simonyan y A. Zisserman, «Very Deep Convolutional Networks for Large - Scale Image Recognition,» arXiv 1409.1556, vol. 9, 2015. [34] Y. Tai, J. Yang y L. X., «Image Super - Resolution via Deep Recursive Residual Network,» de Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR) , 2017. [35] M. Al - Qizwini, I. Barjasteh, H. Al - Qassab y H. Radha, «Deep learni ng algorithm for autonomous driving using GoogLeNet,» de IEEE Intelligent Vehicles Symposium (IV) , Los Angeles, 2017. [36] Y. LeCun, L. Bottou, B. Y. y P. Haffner, «Gradient - Based Learning Applied to Document Recognition,» Proceedings of the IEEE, vol. 86, nº 11, pp. 278-2324, Noviembre 1998. [37] J. Patterson y A. Gibson, Deep Learning. A Practitioner’s Approach, Sebastopo l: O’Reilly Media, Inc., 2016. [38] F. Rosenblatt, «The perceptron: A probabilistic model for information storage and organization in the brain,» Psychological Review, vol. 65, nº 6, p. 386, 1958. [39] N. Buduma y N. Lacascio, Fundamentals of Deep Le arning, Sebastopol:, 2017., Sebastopol: O’Reilly Media, Inc., 2017. [40] R. G. D. Restak, The Secret Life of the Brain, Washington, D.C.: Joseph Henry Press, 2001. [41] W. McCulloch y W. W. Pitts, «A logical calculus of the ideas immanent in nervous activity,» The Bulletin of Mathematical Biophysics, vol. 5, nº 4, pp. 115-118, 1943. [42] N. Binod y G. Hinton, «Rectified Linear Units Improve Restricted Boltzmann Machines,» de Proceedings of the 27th International Conference on Machine Learning (ICML-10) , Haifa, 2020.
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 86 [43] M. Nielsen, «How the backpropagation algorithm works,» de Neural Networks and Deep Learning, New York, Determination Press, 2015. [44] A. Krizhevsky, G. Sutskever y G. Hinton, «ImageNet classification with deep convolutional neural networks,» Communications ACM, vol. 60, nº 6, pp. 84-90, 2017. [45] H. Shulz y S. Behnke, Deep Learning, Berlin: Springer, 2012. [46] M. Zeiler y R. Ferg us, «Visualizing and Understanding Convolutional Neural Networks,» de European Conference on Computer Vision,, Zurich, 2014. [47] N. Srivastava, G. Hinton, A. Krizhevsky, S. I. y R. Salakhutdinov, «Dropout: A Simple Way to Prevent Neural Networks from Overfitting,» Journal of Machine Learning Research, nº 14, pp. 1929-1958, 2014. [48] R. Shanmugamani, Deep Learning for Computer Vision: Expert techniques to train advanced neural networks using TensorFlow and Keras, Birmingham: Birmingham: Packt, 2018. [49] J. Deng, W. Dong, R. Socher, L. L. y L. Fei - Fei, «Image Net: a large - scale hier archical image database,» de IEEE conference on computer vision and pattern recognition , Piscataway, 2009. [50] C. Szegedy, L. Wei y J. Yangqing, «Going Deeper with Convolutions,» 17 09 2014. [En línea]. Available: https://arxiv.org/abs/1409.4842. [Último acceso: 2020 10 12]. [51] K. Okan, K. Meslihan, G. Ahmet y R. Gerhard, «Resource Efficient 3D Convolutional Ne ural Networks,» 4 4 2019. [En línea]. Available: https://arxiv.org/abs/1904.02422. [Último acceso: 12 10 2020]. [52] M. Tan, B. Chen, R. Pang, V. Vasudevan, M. Sandler y A. A. Howard, «MnasNet: Platform - Aware Neural Architecture Search for Mobile,» 31 7 2018. [En línea]. Available: https://arxiv.org/abs/1904.02422. [Último acceso: 12 10 2020]. [53] K. He, X. Zhang, S. Ren y J. Sun, «Deep Residual Learning for Image Recognition,» 10 12 2015. [En línea]. Available: https://arxiv.org/abs/1512.03385. [Último acceso: 12 10 2020]. [54] C. Szegedy, S. Ioffe, V. Vanhoucke y A. Alemi, «Inception - v4, Inception - ResNet and the Impact of Residual Connections on Learning,» 23 2 2016. [En línea]. Available: https://arxiv.org/abs/1602.07261v2. [Último acceso: 12 10 2020]. [55] A. Gulli y S. Pal, Deep learning with Keras, Packt Publishing Ltd., 2017. [56] M. Poostchi, K. Silamut, R. Maude, S. Jaeger y G. Thoma, «Image analysis and machine learning for detecting malaria,» Translational Research, vol. 194, nº 4, pp. 36-55, 2018. [57] Y. Purwar, S. Shah, G. Clarke, A. Almugairi y A. Muehlenbachs, «Automated and unsupervised detection of malarial parasites in microscopic images,» Malaria Journal, vol. 10, nº 364, 2011. [58] D. Das, C. Chakraborty, B. Mitra, A. Maiti y A. Ray, «Quantit ative microscopy approach for shape-based erythrocytes characterization in anaemia,» Journal of Microscopy, vol. 249, nº 2, pp. 136-149, 2013.
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 87 [59] J. Vink, M. Laubscher, R. Vlutters, K. Silamut, R. Maude, M. Hasan y G. Haan, «An automatic vision-based malaria diagnosis system,» Journal of Microscopy, vol. 250, nº 3, pp. 166178, 2013. [60] S. Sio, W. Sun, S. Kumar, W. Bin, S. Tan, S. Ong, H. Kikuchi, Y. Oshima y K. Tan, «MalariaCount: an image analysisbased program for the accurate determination of parasitemia,» Journal of Microbiological Methods, vol. 68, nº 1, pp. 11-18, 2007. [61] S. Savkare y S. Narote, «Automated system for malaria parasite identification,» de 015 International Conference on Communication, Information & Computing Technology (ICCICT), Mumbai (India), 2015. [62] L. Malihi, K. Ansari - Asl y A. Behbahani, «Malaria para site detection in giemsa - stained blood cell images,» de 2013 8th Iranian Conference on Machine Vision and Image Processing (MVIP), Zanjan (Iran), 2013. [63] A. Rahman, H. Zunair, M. Y. J. Rahman, S. Biswas, A. Alam, N. Alam y M. Mahdy, «Improving malari a parasite detection from red blood cell using deep convolutional neural networks,» 23 07 2019. [En línea]. Available: https://arxiv.org/abs/1907.10418. [Último acceso: 26 2 2021]. [64] D. Shah, K. Kawale, M. Shah, S. Randive y R. Mapari, «Malaria Parasite Detection Using Deep Learning (Beneficial to humankind),» de 2020 4th International Conference on Intelligent Computing and Control Systems (ICICCS), Madurai, India, 2020. [65] Q. Qu an, J. Wang y L. Liu, «An Effective Convolutional Neural Network for Classifying Red Blood Cells in Malaria Diseases,» Interdisciplinary Sciences: Computational Life Sciences, vol. 12, pp. 217-225, May 2020. [66] G. Huang, Z. Liu, L. Maaten y K. Weinber ger, «Densely Connected Convolutional Networks,» 25 8 2016. [En línea]. Available: https://arxiv.org/abs/1608.06993?source=post_page. [Último acceso: 26 02 2021]. [67] Y. Chen, J. Li, H. Xiao, X. Jin, S. Yan y J. Feng, «Dual Path Networks,» 6 07 2017. [E n línea]. Available: https://arxiv.org/abs/1707.01629. [Último acceso: 26 02 2021]. [68] F. Yang, M. Poostchi, H. Yu, Z. Zhou, K. Silamut, Y. J., M. R.J., S. Jaeger y S. Antani, «Deep Learning for Smartphone-based Malaria Parasite Detection in Thick Blood Smears,» IEEE J Biomed Health Inform, vol. 24, nº 5, pp. 1247-1438, May 2020 . [69] I. Ersoy, F. Bunyak, J. M. Higgins y K. Palaniappan, «Coupled edge profile active contours for red blood cell flow analysis,» de 9th IEEE International Symposium on Bi omedical Imaging (ISBI), Barcelona, 2012. [70] P. Yakubovskiy, «Implementation of EfficientNet model. Keras and TensorFlow Keras,» [En línea]. Available: https://github.com/qubvel/efficientnet. [Último acceso: 30 01 2021]. [71] A. Parinov, «albumentations,» albumentations - team, [En línea]. Available: https://github.com/albumentations-team/albumentations. [Último acceso: 30 01 2021]. [72] G. Marques, D. Agarwal y I. de la Torre, «Automated medical diagnosis of COVID - 19 through EfficientNet convolutional neural network,» Applied Soft Computing Journal, vol. 96, nº 106691, 2020.
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 88 [73] A. Buslaev, V. Iglovikov, E. Khvedchenya, A. Parinov, M. Druzhinin y A. Kalinin, «Albumentations: Fast and Flexible Image Augmentations,» Information, vol. 11, nº 2, p. 125, 2020. [74] M. Tukiainen, «ImageDataAugmentor,» [En línea]. Available: https://github.com/mjkvaak/ImageDataAugmentor. [Último acceso: 18 1 2021]. [75] I. Mohd Jais, A. Ismail y N. S.Q., «Adam Optimization Algorithm for Wide and Deep Neural Network,» Knowledge Engineering and Data Science (KEDS), vol. 2, nº 1, pp. 41-46, 2019. [76] R. Kohavi y F. Provost, «Glossary of terms,» de Editor ial for the Special Issue on Applications of Machine, Discovery Oress, 1998. [77] J. Swets, «Measuring the Accuracy of Diagnostic Systems,» Science, New Series, vol. 240, nº 4857, pp. 1285-1293, 1988. [78] N. Ali, G. Sarowar, L. Rahman, J. D. N. Chaki y T. J.M., «Adam Deep Learning With SOM for Human Sentiment Classification,» International Journal of Ambient Computing and Intelligence (IJACI), vol. 10, nº 3, pp. 92-116, 2019.
Trabajo Fin de Grado Ferreras Extremo, Antonio Estudio de algoritmos de redes neuronales convolucionales en dataset de imágenes médicas 89 9 Anexo: Script PYTHON utilizado en las simulaciones Incluye información detallada de los resultados de la ejecución. Este script se puede ejecutar directamente en la plataforma Google Colab36, disponible de forma gratuita. 36 https://colab.research.google.com/notebooks/intro.ipynb#recent=true
df_val =pd.concat([df_val, pd.get_dummies(df_val['label'])], axis=1) print("DataFrame Learn : {} files".format(len(df_learn))) print("DataFrame Learn : {} files".format(len(df_val))) DataFrame Learn : 22046 files DataFrame Learn : 5512 files 1.4 Display random images For testing purposes [ ]: import random import matplotlib.pyplot as plt N= 9 # Number of images of each class to display for tipo in TIPOS: ficheros =list(df_total['file'][df_total['label']==tipo]) images =random.sample(ficheros, N) print("\nImage Type: {}".format(tipo)) plt.figure(figsize=(8,8)) for iin range(N): plt.subplot(3,int(N/3),i+1) img =plt.imread(DESTDIR+images[i]) plt.imshow(img) plt.axis('off') plt.tight_layout() plt.show() del [ficheros, df_total] Image Type: Parasitized 7
Image Type: Uninfected 8
2 MODEL 2.1 Auxiliary functions for plotting [ ]: from sklearn.metrics import confusion_matrix import matplotlib.pyplot as plt import seaborn as sns from sklearn.metrics import roc_curve, auc from itertools import cycle # Plot confussion matrix # y_true: real values # y_pred: predicted values 9
# tipos: list with the names of the classes def plot_confussion_matrix(y_true, y_pred, tipos): cm =confusion_matrix(y_true.values.argmax(axis = 1), y_pred.argmax(axis =␣ ,→1)) plt.figure(figsize=(6.5,5)) sns.heatmap(cm, annot=True, fmt="d") plt.title('\nAccuracy:{0:.4f}'.format(accuracy_score(y_true, y_pred))) plt.ylabel('True Class') plt.xlabel('Predicted Class') plt.xticks(np.arange(len(tipos))+0.5, tipos) plt.yticks(np.arange(len(tipos))+0.25, tipos) plt.show() # Plot ROC (Area under the curve) # y_true: real values # y_pred: predicted values # tipos: list with the names of the classes def plot_roc_curve(y_true, y_pred, tipos): plt.style.use('ggplot') plt.figure(figsize=(6.5,5)) fpr =dict() tpr =dict() roc_auc =dict() n_classes=len(tipos) for iin range(n_classes): fpr[i], tpr[i], _ =roc_curve(y_true.values[:, i], y_pred[:, i]) roc_auc[i] =auc(fpr[i], tpr[i]) # Max. 6 classes colors =cycle(['blue','red','green','black','violet','brown']) for i, color in zip(range(n_classes), colors): plt.plot(fpr[i], tpr[i], color=color, lw=1.5, \ label='ROC curve - {0} (area = {1:0.6f})'\ .format(TIPOS[i], roc_auc[i])) plt.plot([0,1], [0,1], linestyle='--', color ='grey', lw=1) plt.xlim([-0.05,1.0]) plt.ylim([0.0,1.05]) plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') if n_classes == 2: plt.title('Receiver Operating Curve (binary-class)') else: plt.title('Receiver operating Curve (multi-class)') plt.legend(loc="lower right") plt.show() 10
# Plot history of the training # hist: data to plot # model: nName of the model # fold: number of the fold of the k-fold algorithm def plot_history(hist, model, fold): plt.figure(figsize=(8,5)) plt.plot(hist['accuracy'],'-o',label='Train ACC',color='#ff7f0e') plt.plot(hist['val_accuracy'],'-o',label='Val ACC',color='#1f77b4') x=np.argmax(hist['val_accuracy']); y =np.max( hist['val_accuracy']) xdist =plt.xlim()[1]-plt.xlim()[0]; ydist =plt.ylim()[1]-plt.ylim()[0] plt.scatter(x,y,s=200,color='#1f77b4'); plt.text(x-0.03*xdist,y-0.13*ydist,'max acc\n%.4f'%y,size=14) plt.ylabel('Accurary',size=14); plt.xlabel('Epoch',size=14) plt.legend(loc=2) plt2 =plt.gca().twinx() plt2.plot(hist['loss'],'-o',label='Train Loss',color='#2ca02c') plt2.plot(hist['val_loss'],'-o',label='Val Loss',color='#d62728') x=np.argmin(hist['val_loss'] ); y =np.min(hist['val_loss'] ) ydist =plt.ylim()[1]-plt.ylim()[0] plt.scatter(x,y,s=200,color='#d62728'); plt.text(x-0.03*xdist,y+0.05*ydist,'min loss\n%.4f'%y, size=11) plt.ylabel('Loss',size=14) plt.title('%s - FOLD : %i'%(model, fold), size=18) plt.legend(loc=3) plt.show() print('Functions created!') Functions created! 2.2 Auxiliary Functios for modeling [ ]: from tensorflow.keras.models import Model from tensorflow.keras.layers import Dropout, Dense, GlobalAveragePooling2D from tensorflow.keras.callbacks import ModelCheckpoint,ReduceLROnPlateau import tensorflow as tf # Create Keras model # fnctn : function application of the base model # wghs: pretrained weights to us in the model # wdth: input width of the model # hght: input heigh of the model # frz: (Boolen) ¿train base model parameters? def create_model(fnctn, wghs, wdth, hght, frz): 11
model =fnctn(weights =wghs, include_top=False, input_shape =(wdth, hght,3)) if frz: model.trainable =False # FIXING model x=model.output x=GlobalAveragePooling2D()(x) x=Dense(128, activation="relu")(x) x=Dropout(0.3)(x) x=Dense(64, activation="relu")(x) x=Dropout(0.3)(x) x=Dense(32, activation="relu")(x) x=Dropout(0.3)(x) predictions =Dense(len(TIPOS), activation="softmax")(x) model =Model(inputs=model.input, outputs=predictions) return model # Callbacks for the model # ReduceLROnPlateau: reduce the learning rate when learning dismishes # ModelCheckPoint: to store models for future use def create_callbacks(fold): return [ReduceLROnPlateau(monitor ='val_loss', factor = 0.5, patience =PATIENCE, min_lr = 0.000001), ModelCheckpoint('model_{}.hdf5'.format(fold), save_best_only =True, monitor ='val_loss', mode ='min',␣ ,→save_freq='epoch')] # Create custom_loss with smoothing parameter def custom_loss(y_true, y_pred): return tf.keras.losses.categorical_crossentropy(y_true, y_pred, label_smoothing=0.1) # Convert y_pred to 0 or 1, selecting the mximum value of softmax def binary_decission(y_pred, tipos): decission =np.zeros((len(y_pred), len(tipos)), dtype=int) for iin range(len(y_pred)): decission[i, int(np.where(y_pred[i] == np.amax(y_pred[i]))[0])] = 1 return decission print('Functions created!') Functions created! 2.3 Augmentation Use albumentations for image augmentation. The purpose of image augmentation is to create new training samples from the existing data. We use the following transformation in our model: 12
•Flip: Flip the input either horizontally, vertically or both horizontally and vertically. •Transpose: Transpose the input by swapping rows and columns. •IAAAdditiveGaussianNoise: Add gaussian noise to the input image. •GaussNoise: Apply gaussian noise to the input image. •MotionBlur: Apply motion blur to the input image using a random-sized kernel. •MedianBlur: Blur the input image using a median filter with a random aperture linear size. •Blur: Blur the input image using a random-sized kernel. •ShiftScaleRotate: Randomly apply affine transforms: translate, scale and rotate the input. •OpticalDistortion: Apply an optical distortion to the full image. •GridDistortion: Apply a grid distortion with padding. •IAAPiecewiseAffine: Place a regular grid of points on the input and randomly move the neighbourhood of these point around via affine transformations. •CLAHE: Apply Contrast Limited Adaptive Histogram Equalization to the input image. •IAASharpen: Sharpen the input image and overlays the result with the original image. This augmentation is deprecated. Please use Sharpen instead. •IAAEmboss: Emboss the input image and overlays the result with the original image. •RandomContrast: Randomly change contrast of the input image. •RandomBrightness: Randomly change brightness and contrast of the input image. [ ]: from albumentations import * aug=Compose([RandomRotate90(), Flip(), Transpose(), OneOf([IAAAdditiveGaussianNoise(), GaussNoise(),], p=0.2), OneOf([MotionBlur(p=.2), MedianBlur(blur_limit=3, p=.1), Blur(blur_limit=3, p=.1),], p=0.3), ShiftScaleRotate(shift_limit=0.0625, scale_limit=0.2, rotate_limit=45, p=.2), OneOf([OpticalDistortion(p=0.3), GridDistortion(p=.1), IAAPiecewiseAffine(p=0.3),], p=0.3), OneOf([CLAHE(clip_limit=2), IAASharpen(), IAAEmboss(), RandomContrast(), RandomBrightness(),], p=0.3), ], p=1) print('Ready!') Ready! 2.4 Training For each model: 13
• Define augmentation pipeline using Compose function of albumentation library. • Create the data generator as an object of the ImageDataAugmentator library and configure the augmentation pipeline obtained previously. Do this for train / test / vlaidation dataset. • Create the model using the appropriate function and dense layers with relu activation function and an output layer with a softmax activation function. • Compile the model using the ADAM optimizer and Categorical_Crossentropy function for loss calculation. • Model fitting using 33 epochs and ReduceLRonPlateau function to reduce the learning rate when the metrics stops improving. • Save the model to be used for validation testing and ensemble model. • Configure testing dataset. • Generate performance score values for each fold. 1. Model loss graph. 2. Model Accuracy graph. 3. Test Classification Report. 4. Validate Model. 5. AUC-ROC curve. 6. Confusion Matrix. 7. Validation Classification Report. • Generate performance score values dor ensembled model 1. Ensembled Classification Report. 2. AUC-ROC curve. 3. Confusion Matrix. [ ]: from ImageDataAugmentor.image_data_augmentor import * from tensorflow.keras.optimizers import Adam from sklearn.model_selection import StratifiedKFold import gc from sklearn.metrics import classification_report, accuracy_score, f1_score from datetime import datetime import pickle # To reproduce results. SEED defined in the PARAMETER section random.seed(SEED) # If saving results is desired if SAVE_RESULTS: total_results ={'epochs' : EPOCHS, 'batch_size' : BATCH_SIZE, 'filename' : FILENAME, 'KFOLD' : KFOLD} # Loop to simulate. modelos list defined in the parameter section 14
for (nombre, funcion, preproc, pesos, ancho, alto, freeze, procesar) in modelos: # Skip model if required if not procesar: continue else:# Presentation for starting simmulation print('#'*50) ; print('### ', nombre); print('#'*50); if freeze: print('Model frozen....') # Start point for Time measurement start_model =datetime.now() # List of result values initialization test_true ={}; test_pred ={}; val_true ={}; val_pred ={} # Define custom image data generator with support for albumentations data_gen =ImageDataAugmentor(rescale=1/255, augment =aug, preprocess_input =preproc) # Stratified K-Folds cross-validator. Provides train/test indices to split␣ ,→data # in train/test sets. KFOLD: number of folds; defined in PARAMETER section kf =StratifiedKFold(KFOLD, shuffle =True, random_state = 50) # Loop for K interations (from k-fold) for fold, (train_index, test_index) in enumerate(kf.split(df_learn, df_learn['label'])): # fine grain measurement for each fold start_fold =datetime.now() # presentation print('*'*50) ;print('** Model: {} fold: {} '.format(nombre, fold)) print('Training...') # Create sets of train and test images df_train =df_learn.iloc[train_index,:] df_test =df_learn.iloc[test_index,:] # Create data generator for train, test and validation # use de ImageDataAugmentor object previously defined train_generator =data_gen.flow_from_dataframe( df_train, directory='data', target_size=(ancho, alto), x_col ="file", y_col =TIPOS, class_mode ='raw', shuffle =True, batch_size =BATCH_SIZE) test_generator =data_gen.flow_from_dataframe( 15
df_test, directory='data', target_size=(ancho, alto), x_col ="file", y_col =TIPOS, class_mode ='raw', shuffle =False, batch_size =BATCH_SIZE) val_generator =data_gen.flow_from_dataframe( df_val, directory='data', target_size =(ancho, alto), x_col ="file", y_col =TIPOS, class_mode ='raw', shuffle =False, batch_size =BATCH_SIZE) # Create the model model =create_model(funcion, pesos, ancho, alto, freeze) # Compile the model model.compile(optimizer=Adam(0.0001), loss=custom_loss, metrics=['accuracy']) # Train results =model.fit(train_generator, epochs =EPOCHS, steps_per_epoch =train_generator.n/BATCH_SIZE, validation_data =test_generator, validation_steps =test_generator.n/BATCH_SIZE, callbacks =create_callbacks(fold), verbose =VERBOSE) # Plot history plot_history(results.history, nombre, fold) # Get best model of the training phase for this fold model.load_weights('model_{}.hdf5'.format(fold)) # Predict class for test images print('Predicting...') test_generator.reset() test_true[f'fold{fold}']=df_test.iloc[:,2::] test_pred[f'fold{fold}']=model.predict(test_generator, steps=test_generator.n/BATCH_SIZE, verbose=VERBOSE) # Get and print/plot results for testing decission =binary_decission(test_pred[f'fold{fold}'], TIPOS) print('Accuracy {:.6f}'.format(accuracy_score(test_true[f"fold{fold}"], decission))) print(classification_report(test_true[f"fold{fold}"], decission, target_names =TIPOS, digits = 6)) # Validate results with the appropriate set of samples print('Validating...') 16
precision recall f1-score support Parasitized 0.982372 0.974854 0.978599 2744 Uninfected 0.975260 0.982659 0.978945 2768 micro avg 0.978774 0.978774 0.978774 5512 macro avg 0.978816 0.978757 0.978772 5512 weighted avg 0.978801 0.978774 0.978773 5512 samples avg 0.978774 0.978774 0.978774 5512 End of Fold 1 - Elapsed Time: 4:43:37.369983 ************************************************** ** Model: EfficientNetB0 fold: 2 Training… Found 19841 validated image filenames. Found 2205 validated image filenames. Found 5512 validated image filenames. WARNING:tensorflow:Callbacks method `on_train_batch_end` is slow compared to the 23
batch time (batch time: 0.1007s vs `on_train_batch_end` time: 0.2453s). Check your callbacks. Predicting… Accuracy 0.976871 precision recall f1-score support Parasitized 0.981702 0.971920 0.976787 1104 Uninfected 0.972122 0.981835 0.976954 1101 micro avg 0.976871 0.976871 0.976871 2205 macro avg 0.976912 0.976877 0.976870 2205 weighted avg 0.976919 0.976871 0.976870 2205 samples avg 0.976871 0.976871 0.976871 2205 Validating… 345/344 [==============================] - 80s 231ms/step 24
25
precision recall f1-score support Parasitized 0.988355 0.958819 0.973363 2744 Uninfected 0.960351 0.988801 0.974368 2768 micro avg 0.973875 0.973875 0.973875 5512 macro avg 0.974353 0.973810 0.973866 5512 weighted avg 0.974292 0.973875 0.973868 5512 samples avg 0.973875 0.973875 0.973875 5512 End of Fold 2 - Elapsed Time: 4:38:21.031119 ************************************************** ** Model: EfficientNetB0 fold: 3 Training… Found 19841 validated image filenames. Found 2205 validated image filenames. Found 5512 validated image filenames. WARNING:tensorflow:Callbacks method `on_train_batch_end` is slow compared to the 26
batch time (batch time: 0.1017s vs `on_train_batch_end` time: 0.2464s). Check your callbacks. Predicting… Accuracy 0.974603 precision recall f1-score support Parasitized 0.978102 0.971014 0.974545 1104 Uninfected 0.971145 0.978202 0.974661 1101 micro avg 0.974603 0.974603 0.974603 2205 macro avg 0.974624 0.974608 0.974603 2205 weighted avg 0.974628 0.974603 0.974603 2205 samples avg 0.974603 0.974603 0.974603 2205 Validating… 345/344 [==============================] - 79s 230ms/step 27
28
precision recall f1-score support Parasitized 0.983063 0.973032 0.978022 2744 Uninfected 0.973534 0.983382 0.978433 2768 micro avg 0.978229 0.978229 0.978229 5512 macro avg 0.978298 0.978207 0.978227 5512 weighted avg 0.978278 0.978229 0.978228 5512 samples avg 0.978229 0.978229 0.978229 5512 End of Fold 3 - Elapsed Time: 4:35:22.530893 ************************************************** ** Model: EfficientNetB0 fold: 4 Training… Found 19841 validated image filenames. Found 2205 validated image filenames. Found 5512 validated image filenames. WARNING:tensorflow:Callbacks method `on_train_batch_end` is slow compared to the 29
batch time (batch time: 0.1007s vs `on_train_batch_end` time: 0.2443s). Check your callbacks. Predicting… Accuracy 0.973243 precision recall f1-score support Parasitized 0.978042 0.968297 0.973145 1104 Uninfected 0.968525 0.978202 0.973339 1101 micro avg 0.973243 0.973243 0.973243 2205 macro avg 0.973284 0.973249 0.973242 2205 weighted avg 0.973290 0.973243 0.973242 2205 samples avg 0.973243 0.973243 0.973243 2205 Validating… 345/344 [==============================] - 78s 227ms/step 30
31
precision recall f1-score support Parasitized 0.987403 0.971210 0.979239 2744 Uninfected 0.971916 0.987717 0.979753 2768 micro avg 0.979499 0.979499 0.979499 5512 macro avg 0.979659 0.979463 0.979496 5512 weighted avg 0.979626 0.979499 0.979497 5512 samples avg 0.979499 0.979499 0.979499 5512 End of Fold 4 - Elapsed Time: 4:40:23.665173 ************************************************** ** Model: EfficientNetB0 fold: 5 Training… Found 19841 validated image filenames. Found 2205 validated image filenames. Found 5512 validated image filenames. WARNING:tensorflow:Callbacks method `on_train_batch_end` is slow compared to the 32
batch time (batch time: 0.1037s vs `on_train_batch_end` time: 0.2443s). Check your callbacks. Predicting… Accuracy 0.983666 precision recall f1-score support Parasitized 0.985441 0.981868 0.983651 1103 Uninfected 0.981900 0.985468 0.983681 1101 micro avg 0.983666 0.983666 0.983666 2204 macro avg 0.983671 0.983668 0.983666 2204 weighted avg 0.983672 0.983666 0.983666 2204 samples avg 0.983666 0.983666 0.983666 2204 Validating… 345/344 [==============================] - 78s 228ms/step 39
40
precision recall f1-score support Parasitized 0.984490 0.971574 0.977990 2744 Uninfected 0.972183 0.984827 0.978464 2768 micro avg 0.978229 0.978229 0.978229 5512 macro avg 0.978336 0.978200 0.978227 5512 weighted avg 0.978310 0.978229 0.978228 5512 samples avg 0.978229 0.978229 0.978229 5512 End of Fold 7 - Elapsed Time: 4:43:31.059613 ************************************************** ** Model: EfficientNetB0 fold: 8 Training… Found 19842 validated image filenames. Found 2204 validated image filenames. Found 5512 validated image filenames. WARNING:tensorflow:Callbacks method `on_train_batch_end` is slow compared to the 41
batch time (batch time: 0.0998s vs `on_train_batch_end` time: 0.2533s). Check your callbacks. Predicting… Accuracy 0.970508 precision recall f1-score support Parasitized 0.978782 0.961922 0.970279 1103 Uninfected 0.962500 0.979110 0.970734 1101 micro avg 0.970508 0.970508 0.970508 2204 macro avg 0.970641 0.970516 0.970506 2204 weighted avg 0.970649 0.970508 0.970506 2204 samples avg 0.970508 0.970508 0.970508 2204 Validating… 345/344 [==============================] - 84s 242ms/step 42
43
precision recall f1-score support Parasitized 0.985513 0.966837 0.976085 2744 Uninfected 0.967730 0.985910 0.976736 2768 micro avg 0.976415 0.976415 0.976415 5512 macro avg 0.976622 0.976374 0.976411 5512 weighted avg 0.976583 0.976415 0.976412 5512 samples avg 0.976415 0.976415 0.976415 5512 End of Fold 8 - Elapsed Time: 4:48:50.469830 ************************************************** ** Model: EfficientNetB0 fold: 9 Training… Found 19842 validated image filenames. Found 2204 validated image filenames. Found 5512 validated image filenames. 44
Predicting… Accuracy 0.975045 precision recall f1-score support Parasitized 0.985185 0.964642 0.974805 1103 Uninfected 0.965302 0.985468 0.975281 1101 micro avg 0.975045 0.975045 0.975045 2204 macro avg 0.975244 0.975055 0.975043 2204 weighted avg 0.975253 0.975045 0.975043 2204 samples avg 0.975045 0.975045 0.975045 2204 Validating… 345/344 [==============================] - 86s 250ms/step 45
46
precision recall f1-score support Parasitized 0.986572 0.963921 0.975115 2744 Uninfected 0.965030 0.986994 0.975889 2768 micro avg 0.975508 0.975508 0.975508 5512 macro avg 0.975801 0.975458 0.975502 5512 weighted avg 0.975754 0.975508 0.975504 5512 samples avg 0.975508 0.975508 0.975508 5512 End of Fold 9 - Elapsed Time: 4:58:10.694449 Validate emsembled results… 47
Accuracy 0.982946 48
2 Related work Numerous researcher activities related to optimization methods, as well as classification or clustering methods. According to Pootschi et al. [32] almost every classification method has been used for malaria diagnosis with thin blood smear samples, ranging from the unsupervised K-Mean Clustering [33] to other supervised techniques, as Naïve Bayes Tree [34], Ada-boost [35], Decision Tree [36], Support Vector Machine [37] or Linear Discriminant [38]. However, most of them are devoted to the study of the interaction between classification with features and segmentation, and few of them investigate explicitly parasite detection in blood cell images. Comparing the performance of all different studies have limitations. On the one hand, most of the studies do not use the same image dataset set and number of samples. Nevertheless, a trade-off between processing time and accuracy is observed, the longer the run-time, the better the accuracy. Moreover, the algorithm architecture also influences the runtime of the process [32]. Deep learning algorithms have recently been used to increase performance in several healthcare domains. Liang et al. [39] were one of the first researchers who apply CNN to malaria diagnosis. They used a more classical transfer model and a custom CNN model to automatically classify thin blood smear image cells, obtained by traditional optical microscope slides. Their results showed that their custom CNN model obtained a better performance (97.37% accuracy) over the more “traditional” transfer models. Rajaraman et al. [40] evaluated several pre-trained CNN based deep learning algorithms as feature extractors toward classification. Up to 6 different architectures were used (AlexNet, VGG16, ResNet50, Xception, DenseNet121 and custom models) with accuracy results ranging from 91.50% to 95.9%. VGG16 and ResNet outperformed their competitors. They concluded that pre-trained CNNs are a promising tool for feature extraction. Rahman et al. [41] used the dataset from the National Institute of Health, and a 5-fold cross-validation scheme, to test their models. A custom CNN (96,29% accuracy), a VGG16 (97.77%) and a CNN extracted features applied to SVM (94.77%). They concluded that the use of different pre-processing practices such as normalization or standardization does not impact the final performance. However, data augmentation procedures used on the training images reveals encouraging results. Shah et al. [42] developed an image classification algorithm based on CNNs and tested it with a labelled image dataset. Their findings show 94.77% accuracy. They state relevant limitations related to computationally resources and suggest that the proposed results can be improved with higher computing power. Quan et al. [43] worked on a novel and lightweight model based on CNNs, combining concepts from dense and residual networks and employing attention mechanisms. The proposed method was entitled Attentive Dense Circular Net (ACDN). The findings have been compared with the related work in the literature as DenseNet121 [44] or DPN92 [45]. The results show higher performance with 97.47% versus 90.94% and 87.88% reported by DenseNet121 and DPN92, respectively. Moreover, the proposed ACDN model presents high precision and a fast convergence speed. Finally, Yang et al. [46] developed an interesting model, which uses thick blood smear images and was developed to run on smartphones. Their model involves fast screening of the images to detect parasite candidates. On the one hand, they classify the set of images publicly available by the community with a
customized CNNs and obtained a 97.26% accuracy. On the other hand, they compared their model with others in the literature, also applying the previous fast screening step. The proposed model outperformed the accuracy reported by other architectures such as ResNet50 (accuracy 93.88%), VGG19 (accuracy: 93.72%) and AlexNet (accuracy: 96.33%). 3 Methods and materials The authors aim to clearly present all methods and materials used in this work. Section 3.1 describes the Malaria image datasets. The proposed CNN algorithm is described in Section 3.2. Ultimately, Section 3.3 introduces the experimental setup and validation procedure. 3.1 Malaria Dataset The images used to test the proposed approach have been obtained from a open dataset offered by the USA National Institutes of Health (NIH). The red blood cell micrographs in the dataset were gathered from Giemsa-stained thin blood smear slides. In total 150 different malaria-infected and 50 healthy patients treated at Chittagong Medical College Hospital are included [47]. Every image was manually labelled, deidentified and archived by a professional in the Mahidol Oxford Tropical Medicine Research Unit in Bangkok [40]. The database includes 27,558 red blood cell images, half infected (labelled as positive samples) and half clean (negative samples). The parasitized images consist of red blood cells affected by plasmodium. However, the uninfected ones can include several noise factors such as stain interferences or dust impurities. Samples of infected cell images can be shown in Fig. 1, whereas Fig. 2 shows three normal cell images. Fig. 1. Three infected cells (positive samples) randomly selected from the dataset.
Fig. 2. Three normal cells (negative samples) randomly selected from the dataset We use an equal number of samples for both categories to correctly validate the system performance as suggested by [48]. In total, 22,046 samples have been used for “malaria” and “normal” classes (Table 1). Those images were utilized in the stratified cross-validation process. Moreover, the algorithm has been validated using a separate dataset. This dataset has 5,512 samples and contains 2,756 images for “normal” class and 2,756 images for “malaria” class. The later datasets were not employed neither in the training or in testing phase. This process was carried to guarantee the prove the non-existence of overfitting. Table 1. Dataset information. Type Training/testing images Validation images Normal 11,023 2,756 Malaria 11,023 2,756 3.2 Proposed CNN EfficientNetB0 model has been used, with a previous transfer learning process. To reduce overfitting by lowering the quantity of parameters a global_average_pooling2d layer was added. On top of that model, 3 inner dense layers with dropout layers and ReLu activation functions were added in sequence. To avoid overfitting, a 30% random dropout rate has been implemented. One final output dense layer with to output units were added for binary classification; in this case, the activation function is a softmax that provides the final computer-aided system. The order of the layers, the number of trainable and non-trainable parameters (weights) in each layer, and the output shape of each layer are shown in Table 2. The proposed model have 4,223,934 parameters.
Table 2. Layer types, output shape and parameters of the model. Layer (Type) Output shape Param # EfficientNetB0 (Model) 7 x 7 x 1280 4,049,564 global_average_pooling2d 1280 0 dense (Dense) 128 163,968 dropout (Dropout) 128 0 dense_1 (Dense) 64 8,256 dropout_1 (Dropout) 64 0 Dense_2 (Dense) 32 2,080 Dropout_2 32 0 Dense_3 (Dense) 2 66 Total Parameters: 4,223,934 Trainable Parameters: 4,181,918 Non-trainable Parameters: 42,016 We use open-source libraries and software in this experiment are. The readers can use the Google Colaboratory platform, selecting the GPU running environment to reproduce the findings. This platform can be used without cost since Google provides it for research purposes. The hardware is a Tesla K80 GPU of 12 GB. The EfficientNet architectures are scaled and pre-trained CNNs, that are used for image classifications applications by means of transfer learning. That model was developed by Google AI in 2019 and is ready for use from the GitHub platform [49]. Google AI developed the Albumentations library is also and is accessible from GitHub repositories [50]. The proposed model was successfully used to diagnosis of COVID-19 with X-Ray images [51]. The model uses three main different libraries such as EfficientNet as the base module, ImageDataAugmentator and the Albumentations. On the one hand, the EfficientNet algorithms are built with highly effective but simple compound scaling techniques. The method allows to scale up from baseline convolutional network to any required resource limitations whilst retaining model performance, acquired from transfer learning from external datasets. EfficientNet networks reach both better accuracy and superior efficiency over other CNNs such as MobileNetV2, GoogleNet, AlexNet, and ImageNet [27]. The current experiment implemented EfficientNetB0 than includes 4,049,564 parameters, as it is appropriate given the resources available and our objective. On the other hand, the Albumentations software is broadly utilized in engineering, deep learning investigation, artificial intelligence contests, and opensource developments. The library provides several image transformations well-optimized for execution. This software includes an augmentation methods for computer vision, comprising object detection, segmentation and classification. This study has employed the Compose function of the Albumentations package. It has been shown that Albumentations decreases overfitting, enhance the performance of classifiers and then reduce running time as suggested in [52]. Augmentation is implemented in each fold, the model accuracy of the model increases, and execution time decreased. ImageDataAugmentator library is an image data generator for Keras, a Python interface for artificial neural networks, backing the utilization of advanced augmentation libraries (imgaug and albumentations) [53]. The library configures the Image data generator in accordance with the albumentations library to reduce
execution time. A data generator is implemented by means of the constructor method of the ImageDataAugmentator class. Two parameters are needed, the first one is rescale, set as 1/255, used to convert each pixel value from a [0, 255] scale to [0, 1]. The second one is the augment parameter, which is designed to be used as the output of the compose method of the Albumentation software. Data generator has used further to process the image datasets. Fig. 3 shows an overview of the experiments conducted. Fig. 3. Overview of the experiments conducted. 3.3 Validation Process Two different phases were carried out to validate the model. First, the 10-fold cross-validation technique used the same dataset of images for training and testing; and second, a different dataset which includes images that were not used during the previous phase has been used to validate the model performance. Then the confusion matrix has been calculated. Precision, recall and F1-score have been computed for each one of both classes. At last, the averaged values for each fold were estimated. Algorithm 1 shows the practical setup utilised to carry out the experiment.
Algorithm 1: Experimental Setup Environment 1. Select Google Colab or local environment and install the required libraries. Input 2. Download Images of two categories. Configuration 3. Import the images. Directories Configuration 4. Create two directories of the images with their labels according to classes. 5. Configure training, testing and validate the model using stratified 10-fold cross-validation. Display random images 6. Display some image samples of each type Data Generator Configuration 7. Define augmentation pipeline using the Compose function of albumentation library. 8. Create the data generator as an object of the ImageDataAugmentator library and configure the augmentation pipeline obtained in (7). Training and Testing 9. Create the model using EfficientNetB0 and dense layers with ReLu activation function and an output layer with a softmax activation function. Apply 10-fold stratified cross-validation 10. Compile the model using the ADAM optimizer with a learning rate of 0.0001. Categorical_Crossentropy function for loss calculation. 11. Model fitting using 33 epochs and ReduceLRonPlateau function to reduce the learning rate when the metrics stop improving. 12. Save the model to be used for validation testing. 13. Configure testing dataset. 14. Generate performance score values for each fold. a. Model loss graph. b. Model Accuracy graph. c. Test Classification Report. d. Validate Model. e. AUC-ROC curve. f. Confusion Matrix. g. Validation Classification Report Ensembled model 15. Generate performance score values for the ensembled model. a. Ensembled Classification Report. b. AUC-ROC curve. c. Confusion Matrix. Examine Errors 16. Locate misclassified images. 17. Plot some samples of each type 4 Results The Python code was executed on a laptop notebook DELL XPS 15 9560, Intel Core i7, 16GB RAM, equipped with an NVIDIA GeForce GTX 1050 video card, GPU support. The training phase of the customized EfficientNetB0 model was carried out employing a stratified 10-fold cross-validation technique. Altogether, each fold run 33 epochs. Furthermore, each fold consisted of 1,240 steps. 16 was the value chosen for the mini-batch parameter. Model training required a total of 409,200 iterations. The time elapsed for the training model was 1 day, 23:38:44. The initial learning rate was set to 0.0001. The model used a ReduceLROnPlateau technique
since a reduction in the learning rate is required as soon as the improvement does not increase any longer. The callback function checks the enhancement, and if no progress is confirmed for a ‘PATIENCE’ value of epochs, the learning rate is lowered. PATIENCE level is set to 6, and min_lr=0.000001 as the minimum learning rate before definitely stopping. ADAM optimization [54] was chosen as the solver method. In the supplementary files, the detailed data and the training and validation graphs for each fold of the proposed model are provided. Moreover, loss, confusion matrix, and area under the curve of receiver operating characteristics are also included as supplementary material. Each of the 10-fold models is trained, the models are used for the validation testing, using separated datasets. The performance reported in the experiments is encouraging. Fig. 4 shows the history graph of the 8th integration of the 10-fold crossvalidation process. The usual learning pattern is clearly seen in the evolution of the graphs, both accuracy and losses. The learning process stops when it does not improve any longer. Detailed information, including the software scripts, relating to the experiments can be seen as supplementary material. Fig. 4. History graph (model loss and accuracy) for an iteration of the K-fold algorithm 4.1 Experimental results Overall, training data included 22,046 different samples and 5,512 samples have been used for testing. The findings are given for each one of the 10 folds, together with the average value. The precision, recall, F1score and accuracy are provided for each class and for the average between classes. Table 3 shows results related to the “malaria” class. Minimal performance values are obtained for the 0, 1, and 4-fold. The minimum precision values of 97.72% occurred in the 1-fold. Moreover, the minimum recall value is 96.19% in 8-fold. The minimum F1-score is 97.02% also at 8-fold. The average precision, recall, and F1-score are 98.07%, 97.05% and 97.55%, in that order.
Table 3. Binary classification for “malaria” class. Fold Precision Recall F1-score 0 0.977231 0.971920 0.974569 1 0.978221 0.976449 0.977335 2 0.981702 0.971920 0.976787 3 0.978102 0.971014 0.974545 4 0.978042 0.968297 0.973145 5 0.984259 0.963735 0.973889 6 0.979909 0.972801 0.976342 7 0.985441 0.981868 0.983651 8 0.978782 0.961922 0.970279 9 0.985185 0.964642 0.974805 Average 0.980687 0.970457 0.975535 The results regarding the normal class are shown in Table 4. The minimum recall value of 97.72% is reported in the 0-fold. The lowest precision value is 96,25% for 9-fold. Finally, 4-fold presents a minimum F1-score value of 97.33%. Average precision, recall, and F1-score values are 97.07%, 98.08% and 97.66%, respectively. Table 4. Binary classification for normal class. Fold Precision Recall F1-score 0 0.971996 0.977293 0.974638 1 0.976428 0.978202 0.977314 2 0.972122 0.981835 0.976954 3 0.971145 0.978202 0.974661 4 0.968525 0.978202 0.973339 5 0.964444 0.984574 0.974405 6 0.972949 0.980018 0.976471 7 0.981900 0.985468 0.983681 8 0.962500 0.979110 0.970734 9 0.965302 0.985468 0.975281 Average 0.970731 0.980837 0.976648 Accuracy, precision, recall and F1-score values between classes are presented in Table 5. The calculated average accuracy is 97.56%. Furthermore, a precision value of 97.57%, a recall value of 97.56% and an F1-score value of 97.56% are reported.
Table 5. Binary classification average between classes. Fold Accuracy Precision Recall F1-score 0 0.974603 0.974617 0.974603 0.974603 1 0.977324 0.977326 0.977324 0.977324 2 0.976871 0.976919 0.976871 0.976870 3 0.974603 0.974628 0.974603 0.974603 4 0.973243 0.973290 0.973243 0.973242 5 0.974150 0.974356 0.974150 0.974147 6 0.976407 0.976432 0.976407 0.976406 7 0.983666 0.983672 0.983666 0.983666 8 0.970508 0.970649 0.970508 0.970506 9 0.975045 0.975253 0.975045 0.975043 Average 0.975642 0.975714 0.975642 0.975641 4.2 Experimental validation In this phase, the objective is to ensure the non-existence of overfitting. Therefore, we used an image dataset with samples that are not been used during the previous phase. The external dataset includes 2,756 images of the “malaria” class and 2,756 for the “normal” class. The validation phase has been carried out with each of the 10 models obtained in the previous 10-fold cross-validation phase. These validation results for classification between classes are shown in Table 6, where the parameter “Area Under the Curve” or “Receiving Operating Characteristics” (ROC) is also presented. The average accuracy value is 97,70%. Moreover, the averaged valued for precision, recall and F1-score are 97.70%, 0.97.69% and 97.69% respectively. A minimum variance between experiments (≅ 4 · 10, 1,5 · 10 for ROC) is clearly shown in the table. Therefore, we can ensure the absence of overfitting. Table 6. Results of classification average between classes. Fold Accuracy Precision Recall F1-score ROC 0 0.977142 0.977143 0.977141 0.977141 0.996143 1 0.978788 0.978801 0.978774 0.978773 0.997121 2 0.974084 0.974292 0.973875 0.973868 0.996094 3 0.978254 0.978278 0.978229 0.978228 0.996904 4 0.979563 0.979626 0.979499 0.979497 0.996379 5 0.973411 0.973491 0.973331 0.973328 0.996098 6 0.977894 0.977922 0.977866 0.977865 0.996798 7 0.978270 0.978310 0.978229 0.978228 0.996274 8 0.976499 0.976583 0.976415 0.976412 0.996893 9 0.975631 0.975754 0.975508 0.975504 0.996243 Average 0.976953 0.977020 0.976887 0.976884 0.996495
Regarding accuracy, 4-fold has proven to be the best in class. Fig. 5 presents its receiver operating characteristics for binary data of 5-fold and Fig. 6 presents the confusion matrix for the cross-validation test. Fig. 5. ROC for 4-fold Fig. 6. Confusion Matrix for 4-fold 4.3 Experimental results of the ensemble model Finally, an ensemble model is proposed. The usual way to carry out an ensembled model is by using different models. However, the proposed ensemble model is composed of 10 trained models in each one of the 10-fold cross-validation. Therefore, there has not been necessary to conduct any additional training to build the ensemble. The results presented by the ensemble model obtained has been improved, despite the use of the same model, trained with almost the same set of images. The accuracy has risen to 98.29% from an averaged value of accuracy of 97.70%. This value represents a 25.75% error decrease of ensemble values over the averaged values of individual methods.