scieee AI-readable full text Open interactive document viewer

Implementación basada en aprendizaje profundo (Deep Learning)para la segmentación de lesiones pigmentadas de la piel

Guillén Cano, Javier

Abstract

Las estrategias de detección precoz del melanoma maligno, es un punto de gran importancia para prevenir el riesgo del mismo. Son muchas las técnicas empleadas para ello como el mapeo corporal total, la dermatoscpía o el seguimiento dermatoscópico digital, pero no es suficiente, ya el número de muertes por este cáncer aumenta cada año.La motivación principal de este trabajo ha sido la búsqueda de una red neuronal convencional para la segmentación de imágenes que contienen lesiones pigmentadas enla piel, mediante algoritmos de Deep Learning.Esta exploración se ha llevado a cabo indagando en las redes neuronales usadas en segmentación, realizando pruebas sobre una red convolucional compleja empleando la técnica de transfer learning. Se ha desarrollado una red SegNet[1], basada en segmentación semántica, algoritmo de Deep Learning, que asocia una etiqueta o categoría a cada pixel en una imagen.

Full text

Trabajo Fin de Grado Ingeniería de la Telecomunicación Implementación basada en aprendizaje profundo (Deep Learning) para la segmentación de lesiones pigmentadas de la piel Autor: Javier Guillén Cano Tutoras: Begoña Acha Piñero Carmen Serrano Gotarredona Dpto. Teoría de la Señal y Comunicaciones Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla,2020 2 Portada Implementación basada en Deep Learning para la segmentación de lesiones pigmentadas de la piel 3 4 Trabajo Fin de Grado Ingeniería de Telecomunicación Implementación basada en aprendizaje profundo (Deep Learning) para la segmentación de lesiones pigmentadas de la piel Autor: Javier Guillén Cano Tutoras: Begoa Acha Piero Carmen Serrano Gotarredona Catedráticas Dep. Teoria de la Sen al y Comunicaciones Escuela Te cnica Superior de Ingenieria Universidad de Sevilla Sevilla, 2020 5 6 7 Trabajo Fin de Grado: Implementación basada en aprendizaje profundo (Deep Learning) para la segmentación de lesiones pigmentadas de la piel Autor: Javier Guillén Cano Tutoras: Begoa Acha Piero y Carmen Serrano Gotarredona El tribunal nombrado para juzgar el trabajo arriba indicado, compuesto por los siguientes profesores: Presidente: Vocal/es: Secretario: acuerdan otorgarle la calificacin de: El Secretario del Tribunal Fecha: 8 Agradecimientos Tras unos largos años de mi vida, de esfuerzo, rutina, perseverancia y sacrificio, he conseguido plasmar en este trabajo todos aquellos conocimientos que he ido adquiriendo durante todo este tiempo. Todo el apoyo y la ayuda recibida se la quiero agradecer a todos y cada uno de los docentes que me han formado en la escuela, de manera especial a mis tutoras del TFG, Begoña y Carmen, que me han estado aguantando durante toda la realización de este trabajo, y que agradezco mucho todo su tiempo dedicado. Todo esto no podría haber sido posible sin su ayuda. Agradecer también, el apoyo de mi familia, que nunca me ha faltado, sin olvidar a cada uno de mis amigos que se han preocupado por mí, apoyándome en las malas y en las buenas. Por todo esto y mucho más, gracias a todos. Javier Guillén Cano Sevilla,2020 9 16 Índice de Tablas Tabla 4.1: Diferencias entre Google Colab y Google Colab Pro ..................................... 53 Tabla 4.2: Especificaciones hardware (Google Colab Pro) ............................................. 54 Tabla 5.1: Parámetros de entrenamiento ...................................................................... 74 Tabla 5.2: Coste computacional del entrenamiento(Tabla 5.2) ..................................... 75 Tabla 5.3: Valores medios de las métricas finales de rendimiento de la red neuronal implementada (5.2) ........................................................................................................ 77 Tabla 5.4: Índices de valoración según el ISIC challenge 2018(5.4) ............................... 77 Tabla 5.5: Predicciones que cumplen superan el índice Jaccard ................................... 78 Tabla 5.6: ndice Jaccard de las 5 mejores predicciones ................................................ 78 Tabla 5.7: ndice Jaccard de las 5 peores predicciones .................................................. 79 Tabla 5.8: ndice Jaccard de las 5 primeras predicciones que superan el valor medio . 81 Tabla 5.9: ndice Jaccard de las 6 predicciones en torno al umbral de 0.65. ................. 82 17 Acrónimos ACS American Cancer Society ISIC International Skin Imaging Collaboration AI Artificial Intelligence CNN Convolutional Neural Network RNA Redes Neuronales Artificiales ROI Region Of Interest ISIC International Skin Imaging Collaboration GPU Graphics Processing Unit 18 1. Introducción El uso del conocimiento y la investigación, originó el desarrollo de la tecnología. Desde mediados del siglo XX [2] se han logrado grandes avances científico-médicos. En 1956, John McCarthy, al cual se le denomina padre de la inteligencia artificial, definió a la inteligencia artificial como “La ciencia e ingenio de hacer máquinas inteligentes, especialmente programas de cómputo inteligentes” [2]. Este hito junto con la incidencia de la tecnología y la informática en la medicina, originaron nuevos avances en los campos de la biomedicina, la biotecnología y la ingeniería de la salud. Algunos de estos grandes avances han sido las técnicas de diagnóstico basadas en aprendizaje automático y la implantación de redes neuronales en algoritmos para la detección de enfermedades como el cáncer de piel. En este apartado, se introduce la motivación médica del proyecto. La segmentación de lesiones y una breve introducción del melanoma. Por último, se presenta la organización precursora del ISIC (International Skin Imaging Collaboration) Challenge, en el cual está basado este proyecto. 1.1. Motivación Médica El melanoma es un tumor que tiene origen en las células del cuerpo humano llamadas melanocitos. Estas son las productoras de la melanina. Este pigmento proporciona color a nuestra piel, al mismo tiempo la protege de la radiación ultravioleta. [3] Cada año la Asociación Americana del Cáncer(ACS: American Cancer Society) trabaja en la investigación y recopilación de los casos sobre la incidencia, mortalidad y la supervivencia del cáncer. Se registran 1.762.450 de nuevos casos de cáncer y 606.880 muertes anuales en todo el territorio de los Estados Unidos a causa de esta enfermedad. Alrededor de un 1,91% de estas muertes son debidas al cáncer de piel o melanoma [4]. 19 Por este motivo, Estados Unidos es uno de los países del mundo que mas invierte e investiga acerca de este cáncer. 1.1.1. Detección del melanoma La detección temprana del melanoma es un punto clave a la hora de reducir el riesgo del mismo. Tras la detección, se realiza un proceso llamado estadificación, que consiste en averiguar si el cáncer se ha propagado. Es por esto que se puede clasificar el melanoma en 5 fases diferentes, dependiendo del tamaño, grosor, incidencia y expansión del mismo: • Etapa 0: El cáncer está confinado en la epidermis, no se ha propagado a los ganglios linfáticos ni a las partes del cuerpo. Recibe el nombre de melanoma in situ. • Etapa 1: El grosor del tumor mide menos de 1mm. Puede o no estar ulcerado. No se ha propagado aún a los ganglios linfáticos ni al resto del cuerpo. • Etapa 2: La única diferencia respecto a la etapa 1, es que el grosor del tumor es mayor, alcanzando entre 1 y 2 mm. • Etapa 3: El tumor alcanza un grosor entre los 2 y 4 mm. Puede estar o no ulcerado. A partir de esta etapa el tumor se extiende por algunos ganglios adyacente, pero sin llegar a propagarse por otras partes distintas del cuerpo. • Etapa 4: En esta etapa el tumor puede llegar a medir más de 4mm de profundidad. Como en el resto de etapas puede o no estar ulcerado. Se puede producir metástasis, provocando que el tumor se propague por ganglios linfáticos distantes o a órganos como pulmones, el hígado o el cerebro. [5] En la figura 1.1, se pueden observar las diferentes etapas del melanoma y el alcance de las mismas. Se observa que en las fases 0 y 1 que el melanoma no traspasa la epidermis (capa rosada). En cambio, en las fases 2, 3 y 4 el melanoma traspasa las capas subcutáneas (capa rosada), propagándose por los nódulos linfáticos (fases 3 y 4), para llegar a la dermis (capa amarillenta). En la fase 4 se puede ver que el melanoma está extendido a la epidermis (capa rojiza), lo que provoca la metástasis. [5] 20 Figura 1.1:Etapas del melanoma[6] El sistema usado con mayor frecuencia para la determinación de la etapa en la que se encuentra el melanoma es el sistema TNM: • T: Tumor. Se analiza la profundidad del melanoma y si esta ulcerado. • N: Lymph Nodes (Ganglios Linfáticos). Se analiza si se ha diseminado el cáncer a ganglios linfáticos cercanos. • M: Metástasis. Se analiza si se ha diseminado el cáncer a ganglios linfáticos u órganos distantes. El conocimiento y el correcto uso de los métodos de detección del melanoma, son factores muy importantes para aumentar la probabilidad de supervivencia del paciente. En fases 0, 1 y 2 la tasa de supervivencia relativa a 5 años se encuentra en torno al 98%, en cambio, a medida que el tumor se extiende por los ganglios linfáticos (fase 3), disminuye hasta un 64%. Una vez alcanzada la fase 4, la probabilidad de supervivencia relativa del paciente se reduce a un 23%. [4] 1.1.2. Dermatoscopia La dermatoscopia es una técnica de diagnóstico en vivo, no invasiva, desarrollada para el estudio de lesiones cutáneas. Se realiza directamente sobre la piel por medio de un instrumento llamado dermatoscopio, que proporciona al especialista un diagnóstico precoz junto con una mejor precisión en la detección de lesiones hiperpigmentadas, potencialmente malignas como lo es el melanoma.[3b] En la figura 1.2, se observan dos ejemplos de los dermatoscopios disponibles actualmente en el mercado. Por un lado, se muestra el dermatoscopio de contacto o inmersión. Este tipo de dermatoscopios requieren de la aplicación de un bálsamo directamente sobre la lesión para su posterior observación y permiten un aumento de 21 x10 de la lesión pigmentada. Por otro lado, se observa el dermatoscopio de luz polarizada. En estos instrumentos, al contrario que en los anteriormente explicados, no se necesita la aplicación del bálsamo ni el contacto directo con la lesión pigmentada. Este tipo de dermatoscopios permiten identificar estructuras más profundas como vasos sanguíneos y el colágeno. Ambos instrumentos permiten la detección de lesiones y estructuras superficiales como queratosis seborreicas, los nevos o áreas de regresión. [7] Figura 1.2: Dermatoscopio de inmersión (Izq.) y dermatoscopio de luz polarizada cruzada (Drcha.)[8] En el ámbito de la dermatoscopia, el proceso más extendido es el denominado “2-step process” o proceso de los dos pasos. Primero, se busca la diferenciación entre lesiones cutáneas melanocíticas o no melanocíticas. En segundo lugar, se lleva a cabo la diferenciación de las neoplasias melanocíticas benignas del melanoma. Para la realización de este segundo paso, se pueden utilizar diferentes tipos de algoritmos. [9] En la Figura 1.3, se muestra el proceso de los dos pasos. Figura 1.3: Representación gráfica del proceso "2-steps" [9] 22 El desarrollo de la tecnología dio origen a la dermatoscopia digital. Los dermatoscopios digitales permiten una mejor observación de las lesiones pigmentadas. Se pueden apreciar con diferentes aumentos y luces, tanto polarizadas como no polarizadas, y permiten ser almacenadas para su posterior estudio y evaluación. 1.2. Segmentación de lesiones El objetivo de este trabajo es, la segmentación de imágenes dermatoscópicas de lesiones pigmentadas. En este apartado, se explica en qué consiste la segmentación de imágenes y sus aplicaciones. En la siguiente sección, se introducen las técnicas usadas en segmentación y el estado del arte sobre las lesiones pigmentadas. 1.2.1. Introducción a la segmentación El análisis de imágenes es una extracción de información significativa en formato de dos o tres dimensiones, a través del análisis visual como digital (procesamiento digital de imágenes). Hay 4 fases en el análisis de imágenes. Una de estas fases es la segmentación de imágenes. Se explican a continuación y aparecen representados en la figura 1.4[10]: • Clasificación: Se categoriza la imagen con el objetivo de predecir las categorías o conceptos más relevantes. Figura 1.4(a). • Segmentación: Divide la imagen en regiones bien definidas o grupos de píxeles, para su identificación y clasificación. Figura 1.4(b). • Detección de Objetos: Detecta objetos dentro de una imagen. Dibuja un rectángulo a su alrededor y los clasifica. Por ejemplo, una persona, un perro o un gato. Figura 1.4(c). • Instanciación: Eleva la segmentación a un nivel superior de detalle. Identifica diferentes individuos de una misma categoría, como personas o vehículos. Figura 1.4(d).[10] 23 (a) (b) (c) (d) Figura 1.4: Niveles de análisis de las imágenes[10] La segmentación de imágenes consiste en dividir y separar una imagen en regiones para simplificar su análisis. Las regiones representan objetos o partes de objetos, que conforman conjuntos de píxeles o “superpíxeles” que pertenecen a una misma región/clase. Tras la segmentación, se logra conocer qué píxel pertenece a cada objeto y analizar sus propiedades como pueden ser el tamaño, ubicación, forma, composición, textura, amplitud de luminosidad, colores, bordes etc. La segmentación, delimita regiones de interés (RDE), para localizar estructuras anatómicas o regiones patológicas; la extracción de rasgos; medición de datos; la visualización de imágenes o la compresión de las mismas. [11] La segmentación de imágenes se puede llevar a cabo de 3 formas diferentes según el grado de interacción humana: • Segmentación manual: En este tipo de segmentación, se hace uso de la información de la imagen y del conocimiento adicional. • Segmentación semiautomática: La intervención humana es necesaria para inicializar el método, chequear o corregir los resultados. • Segmentación automática: La segmentación no necesita ningún tipo de interacción humana. Todo el proceso lo realiza un ordenador.[12] En este proyecto, la segmentación realizada es automática, ya que el proceso, una vez entrenada la red, no necesita la intervención humana. En resumen, el objetivo de la segmentación es simplificar o modificar la representación de una imagen en algo que sea más significativo y/o más fácil de analizar. [13] 24 1.2.2. Aplicación en imágenes médicas El rápido desarrollo de las tecnologías de digitalización de imágenes médicas está revolucionado la medicina. La información que contienen las imágenes se procesa a través de computadoras muy potentes que permiten mejorar su calidad. Esta mejora de la calidad, posibilita realzar y segmentar las zonas de la imagen en diferentes partes constituyentes, facilitando el diagnóstico por imágenes. Permite a los profesionales de la salud observar lesiones para buscar indicios de enfermedades o afecciones médicas. [14] El diagnóstico de imágenes médicas se realiza en 4 pasos: [15] 1. Pre-procesamiento: Resalta determinadas características de la imagen y elimina el ruido presente en la imagen. 2. Segmentación: Detecta diferentes segmentos o regiones de la imagen. 3. Búsqueda de características: Detección de características, mediante la localización y clasificación de patrones que sean de interés para el diagnóstico. 4. Clasificación: En base a las características obtenidas en el paso anterior, se clasifican los objetos segmentos en los tipos o clases a diferenciar. El uso de la segmentación en aplicaciones médicas es la combinación de dos tareas complementarias: el reconocimiento y la delineación. En aplicaciones médicas, el reconocimiento, es una tarea de alto nivel que consiste en la determinación a grandes rasgos del lugar o ubicación de la zona de interés estudiada. La delineación es una tarea de bajo nivel, que determina de manera precisa la extensión espacial de la zona de interés y su composición [15]. En nuestro trabajo emplearemos estas dos tareas complementarias para evitar elementos que no afecten a nuestra zona de interés, como vello, piel sana u objetos. De esta forma focalizaremos la segmentación únicamente en aquellas zonas donde exista lesión pigmentada. Podemos observarlas en la figura 1.5, un ejemplo de una imagen y su correspondiente segmentación, pertenecientes al dataset del ISIC archive. 25 Figura 1.5: Ejemplo de segmentación de lesión pigmentada[16] 1.3 International Skin Imaging Collaboration (ISIC) La International Skin Imaging Collaboration (ISIC) es una asociación entre el mundo académico y la industria destinada a facilitar la aplicación de las imágenes digitales de la piel para ayudar a reducir la mortalidad por melanoma. [16] El objetivo que persigue consiste en el desarrollo y ampliación de un archivo de acceso público y código abierto llamado (ISIC Archive), que contiene imágenes de lesiones pigmentadas de la piel. Se pretende hacer accesible estas imágenes, para poder educar a profesionales y al público en general en el reconocimiento del melanoma; de esta forma, ayudar directamente en el diagnóstico del melanoma a través de la teledermatología, facilitando la toma de decisiones clínicas y el diagnóstico automatizado. 1.3.1. El desafío del ISIC: Anlisis de lesiones cutneas para la deteccin del melanoma Este proyecto es una implementación del ISIC challenge de 2018. El reto propuesto por la ISIC tiene como objetivo reducir las muertes relacionadas por el melanoma. Evitando biopsias innecesarias, gracias a la mejora de la eficiencia y la precisión en la detección temprana del melanoma. El desafío de 2018 consistió en 3 tareas: 1. Segmentación de lesiones: El objetivo de esta primera tarea consistía en segmentar (calcular los bordes de la lesión) las imágenes dermatoscópicas de la base de datos. 2. Clasificación de características: Detección automática de características dermatoscópicas, mediante localización y clasificación de patrones. 32 En el caso de que se conozca el número de clusters, podremos emplear el algoritmo LGB o K-means (K-medias). Este algoritmo determina mediante iteraciones el centroide de cada uno de los K clusters y la partición del espacio de las K zonas, una para cada cluster. En la figura 2.7, se puede observar un ejemplo del algoritmo K-medias, agrupando los diferentes pixeles en grupos o clusters. [24][25] Figura 2.7: Ejemplo del algoritmo K-media[27] 2.1.2. Innovación en la segmentación de imágenes Las técnicas actuales usadas en segmentación de imágenes dermatoscópicas implementan el uso de redes neuronales convolucionales, un tipo de redes neuronales pertenecientes al aprendizaje profundo o Deep Learning. Se han desarrollado algoritmos y técnicas para segmentar imágenes. Estas mejoras han permitido su aplicación en diferentes campos, principalmente en relación con la inteligencia artificial. En el ámbito clínico se han desarrollado pruebas de diagnóstico, cirugía guiada por ordenador y hasta medida de volúmenes de tejido. A parte de estos usos, ha logrado avances como el sensor de huella digital o el reconocimiento de cara e iris. [25][26] 33 3. Aprendizaje profundo aplicado a la segmentación de imágenes La Inteligencia Artificial (IA), es una rama de las ciencias computacionales. Estudia modelos de cómputo, que se encargan de realizar actividades humanas en base a dos características fundamentales: el razonamiento y la conducta.[28] La clave de la IA se encuentra en el aprendizaje. Desde mitad del siglo XX la Inteligencia Artificial solo se desarrollaba en laboratorios de investigación o en películas de ciencia ficción. A finales del siglo XX, debido al incremento del poder computacional de las máquinas, origina un crecimiento en su uso y aplicación en la sociedad. Al no poder pre-programar las máquinas para las infinitas combinaciones de data sets de entradas, nos encontramos ante la necesidad de que las máquinas pueden autoprogramarse. Básicamente consiste en el aprendizaje de las máquinas a partir de su propia experiencia. Es aquí donde nace el Aprendizaje Automático o más conocido como Machine Learning, gracias a este aprendizaje automatizado podemos crear aplicaciones que aprendan de forma autónoma gracias a los datos que ingieren. Todos los grandes como Amazon, Microsoft o Google compiten actualmente por este nuevo mercado. Cada uno de ellos ofrecen sus servicios, dando lugar a plataformas como: Amazon Machine Learning (Amazon), Azure Machine Learning (Microsoft), Google Cloud (Google) y otras muchas como TensorFlow o BigML. A continuación, vamos a indagar un poco más en el Machine Learning aplicado a las ideas en las que se basa el proyecto: segmentación de imágenes de lesiones pigmentadas en la piel. En este 2º capítulo comenzaremos con la explicación del estado del arte en segmentación de lesiones pigmentadas. Explicaremos tanto las técnicas tradicionales como las más innovadoras. Posteriormente, contextualizaremos el proyecto en el marco de la IA y el Deep Learning. Finalizaremos esta sección explicando la arquitectura y la implementación del código utilizado, para lograr el objetivo. 34 3.1 Aprendizaje Automático La Inteligencia Artificial (IA) se define como la capacidad que posee una máquina o computadora de comportarse de forma inteligente como una mente humana con capacidad para aprender y resolver problemas. [29] Esta definición no es nueva ya que fue en el año 1950 a raíz de la Prueba De Turing, donde se fijaban los parámetros y habilidades por los cuales a una máquina se le podía otorgar la cualidad de inteligente. Se establecen diferentes tipos o categorías de sistemas de IA según su comportamiento[30]: a) Sistemas que piensan como humanos: Intentan imitar procesos basados en el pensamiento humano. Por ejemplo, las redes neuronales artificiales (las cuales son la base de este proyecto). b) Sistemas que actúan como humanos: Aquellos sistemas cuyo objetivo es imitar el comportamiento humano. Por ejemplo, la robótica. c) Sistemas que piensan racionalmente: Son sistemas de aprendizaje altamente profundo, los cuales intentan imitar el pensamiento lógico y racional del ser humano. d) Sistemas que actúan racionalmente: Va mucho más allá que la inteligencia artificial rudimentaria. Estos sistemas pretenden imitar el comportamiento del ser humano de forma racional, ya que toman decisiones en función de razonamientos. En la figura 3.1, se representan los tres campos de desarrollo de la inteligencia artificial, ordenados en orden de ascendencia, siendo ésta la madre de todos ellos, originada en la década de los 50. A partir de los años 80 nació el aprendizaje automático, con el objetivo de desarrollar técnicas capaces de permitir que las máquinas aprendieran de forma autónoma. Por último, en pleno siglo XXI, surgió un método destinado a la creación, entrenamiento y uso de redes neuronales llamado Deep Learning, el cual forma parte del Machine Learning y este a su vez de la IA.[31] 35 Figura 3.1: Campos de desarrollo de la inteligencia artificial [32] Un sistema de aprendizaje automático se divide en dos partes. Un sistema de aprendizaje y un sistema de predicción. En la figura 3.2, se representan las dos partes diferenciadas y se explica brevemente los procesos que se desarrollan en cada una. Figura 3.2: Estructura de un problema de aprendizaje profundo[31] • Sistema de aprendizaje: Procesa un conjunto de datos de entrada. Realizando una limpieza de datos, identificando datos incompletos, incorrectos, partes inexactas o irrelevantes, para posteriormente realizar una selección de características y convertir los datos originales en muestras. Para cada muestra genera un resultado conocido denominado etiqueta, también conocido como valor real. Una vez generadas las muestras, se entrenan, validan y testean los datos para generar un algoritmo de aprendizaje que compara la salida esperada (etiquetada) con la que predice el sistema. Para este proceso utiliza una función de coste, encargada de 36 optimizar los parámetros de la red neuronal, penalizando los fallos de predicción[31]. • Sistema de predicción: Emplea un modelo obtenido del sistema de aprendizaje. Predice la salida para nuevos datos, diferentes a los usados en el entrenamiento, de los cuales se desconoce la etiqueta. Ajusta una serie de parámetros, de forma que la diferencia entre las etiquetas predichas por el modelo, y las etiquetas reales sea mínima. En el sistema de aprendizaje se lleva a cabo una clasificación por estructuras, componentes, propiedades, etc. [33][31] 3.2. Metodología de modelado de una red neuronal La creación de una red neuronal, consiste en la estructuración de una arquitectura consistente y coherente formada por neuronas unidas entre sí constituyendo capas neuronales. Estas conexiones entre neuronas, se caracterizan por unos valores llamados pesos, que ponderan los valores que van a intercambiarse entre unas y otras. Estos pesos se ajustan en la fase de entrenamiento. En el siguiente paso, se valida la efectividad del modelo, y finalmente se testean la red con el dataset específico para comprobar que su funcionalidad es correcta. En los siguientes apartados se explica en detalle cada uno de estos. [34] 3.2.1. Entrenamiento (Training) En la fase de entrenamiento se proporciona un algoritmo para poder entrenar el modelo o la red que se haya creado. Los parámetros de un modelo de aprendizaje automático son estimados, aproximados y optimizados, usando un conjunto de datos previamente etiquetados con sus respectivas características de dominio y clase. Este conjunto de datos de entrenamiento tiene la propiedad de que posee etiquetas de clase para cada dato. Existen unos parámetros elegidos y ajustados a la hora de entrenar el modelo que rigen el proceso de entrenamiento, llamados hiperparámetros. Por ejemplo, son hiperparámetros, el número de capas ocultas de una red o la cantidad de nodos de cada capa.[35] 3.2.2. Validación (Validation) La fase de validación se encarga de proporcionar un algoritmo que valide la efectividad del modelo mediante la utilización de un conjunto de datos diferente al usado en la fase de entrenamiento. En esta fase los datos también se encuentran etiquetados. 37 Se toman medidas cuantitativas como la entropía o el error cuadrático medio, como parámetros de control, los cuales nos darán una estimación del rendimiento de nuestro modelo. En esta fase debemos volver a configurar nuestro modelo para que los resultados sean óptimos y no sea ni poco eficiente, ni sobreajustado [36]. 3.2.2.1. Overfitting y Underfitting En la fase de validación pueden ocurrir dos posibles errores en el ajuste del modelo que podemos ver representados en la figura 3.3. En el caso de proporcionar pocas características para entrenar el modelo, el modelo puede identificar de forma errónea datos desconocidos, de forma que tendremos que aumentar la selección de características para reducir este problema de desajuste o under-fitting. Figura 3.3: Aproximaciones en el ajuste del modelo[37] En cambio, por otro lado, el sobreajuste o overfitting ocurre cuando se entrena demasiado el algoritmo de aprendizaje con un conjunto de datos de entrenamiento, provocando que el resultado quede fuera de los rangos establecidos en el entrenamiento, de forma que sea poco fiable y preciso.[38] 3.2.3. Test (Testing) Es la fase final. Consiste en probar si el modelo que hemos entrenado previamente y al cual le hemos aplicado la validación, funciona con un conjunto de datos diferente al que se usó en el entrenamiento, o en la fase de validación. Hay varias medidas para este propósito, llamadas medidas cualitativas, que son utilizadas para medir el rendimiento del modelo: precisión, sensibilidad, especificidad y exactitud que serán explicadas exhaustivamente más adelante. [36] 38 Las 3 fases poseen una parte del conjunto de datos o dataset. Suelen destinarse un 60% del conjunto total de datos para el entrenamiento, un 20% para la validación y el 20% restante para el test. En la figura 3.4, vemos representados la división del dataset para cada una de las 3 fases, y las funciones que cumplen cada una de ellas. Figura 3.4: Relación entre el dataset y las fases de Entrenamiento, Validación y Test [39] 3.3. Tipos de aprendizaje automático 1. Aprendizaje supervisado: En el aprendizaje supervisado los algoritmos trabajan con datos etiquetados (labeled data). El objetivo es encontrar una función que, dadas unas variables de entrada (input data), les asigne las etiquetas adecuadas de salida. [40] [41] Los dos tipos de aprendizaje supervisado son: • Regresión: Tiene como resultado un número específico. Un ejemplo de regresión se observa en la izquierda de la figura 3.5. • Clasificación: En este caso, el algoritmo pretende encontrar diferentes patrones. Como objetivo clasifica los elementos en diferentes grupos. Se observa un ejemplo de clasificación en la gráfica de la derecha de la figura 3.5. 39 Figura 3.5: Los 2 tipos de aprendizajes supervisados[42] 2. Aprendizaje no supervisado: No se conoce las características de las entradas, por lo que será el propio algoritmo el encargado de catalogar el conjunto de datos. .[40][41] 3. Aprendizaje semi-supervisado: Combina un pequeño número de datos etiquetados, con un gran número de datos etiquetados. Mejorando así la exactitud del aprendizaje.[40][41] 4. Aprendizaje por refuerzo (Reinforcement Learning): El propio algoritmo aprende a actuar observando el entorno. Cada acción tiene un impacto en el entorno, que proporciona la información necesaria para aprender a actuar en base a ese comportamiento. .[40][41] En la figura 3.6, observamos un esquema del funcionamiento del aprendizaje por refuerzo. El agente (agent), realiza acciones dentro del entorno (environment). El entorno devuelve una recompensa (reward), que indica si lo hemos hecho bien o lo hemos hecho mal. Gracias al resultado que devuelve el entorno, el agente, es capaz de interpretar qué acciones realizar en base a los resultados obtenidos. Este conjunto de interacciones acción-recompensa va a permitir al agente aprender y saber qué acciones tomar, según el resultado que desee. 40 Figura 3.6 : Esquema del funcionamiento del aprendizaje por refuerzo.[43] 5. Transducción: Similar al aprendizaje supervisado, con la diferencia de que no construye una función clasificadora como tal, sino que en vez de eso, predice nuevas en base a entradas de entrenamiento, salidas de entrenamiento y nuevas entradas. .[40][41] 6. Aprender a aprender (Learning to learn): El algoritmo aprende su propio sesgo basado en experiencia previa. .[40][41] 3.4. Redes de neuronas Las redes de neuronas o redes neuronales son modelos matemáticos basados en el comportamiento fisiológico de las neuronas y en la forma de organización estructural que conforma nuestro cerebro. Su característica principal esta fundamentada en la capacidad del cerebro humano para aprender.[44] 3.4.1. La unidad neuronal básica: El perceptrón Las neuronas artificiales se diseñan de forma que se asimilen al comportamiento de una neurona cerebral. En la figura 3.7, podemos observar las similitudes entre las neuronas bilógicas y las neuronas artificiales. Tienen un núcleo o nodo que conforma la estructura central, llamado cuerpo, en el cual se realiza el sumatorio de la multiplicación de las entradas (𝒙𝒏) y los pesos (𝒘𝒏) de cada una de las dendritas. Las conexiones entre neuronas artificiales tienen el símil a la sinapsis de las neuronas del cerebro humano. [44] 41 Figura 3.7: Relación entre las neuronas biológicas y las neuronas artificiales [44] El científico Frank Rosenblatt, fue el encargado de desarrollar el perceptrón, unidad más simple de una red neuronal. El funcionamiento de las neuronas sigue una regla simple. Las neuronas tienen entradas x1, x2,…, que se multiplican por los pesos w1, w2,…, números reales que expresan la importancia de las entradas respecto a la salida. La salida de la neurona será un 0 o un 1. Se determina en función de si la suma ponderada representada a continuación, es mayor o menor que un valor umbral. [45] Y= f (∑𝑤𝑗 𝑛 𝑗=1 𝑥𝑗) El umbral es un parámetro de la neurona, al igual que los pesos, es un número real. La f(x), recibe el nombre de función de activación. En términos generales la podemos expresar como: 𝑓(𝑥)= { 0 𝑠𝑖 ∑𝒘𝒋 𝒏 𝒋=𝟏 𝒙𝒋 ≤ 𝑢𝑚𝑏𝑟𝑎𝑙 1 𝑠𝑖 ∑𝒘𝒋 𝒏 𝒋=𝟏 𝒙𝒋 > 𝑢𝑚𝑏𝑟𝑎𝑙 3.4.2. El cerebro humano convertido en red La búsqueda de modelos computacionales que se asimilan a la estructura del cerebro humano, originó la aparición de las Redes Neuronales Artificiales (RNA). Una RNA, se considera un modelo matemático basado en las actividades teóricas mentales y cerebrales. 48 Es difícil encontrar un valor óptimo para el learning rate. Un valor demasiado pequeño puede provocar un proceso de entrenamiento largo disminuyendo la velocidad de convergencia, con posibilidad de que el modelo acabe atrapado en un mínimo local. Por el contrario, un ritmo de aprendizaje demasiado grande puede provocar inestabilidades en la función de error, impidiendo que se alcance la convergencia debido a que se darán saltos alrededor del mínimo sin alcanzarlo. En la figura 3.15, se representan diferentes ritmos de aprendizaje respecto al tiempo de entrenamiento. En la gráfica de la parte inferior, el eje X representa otro hiperparámetro, la época. Una época es un periodo de tiempo conformado por una ejecución hacia adelante y hacia atrás (predicción + retropropagación) de todo el conjunto de datos completo por la red neuronal. El eje Y, representa el error. En las figuras del nivel superior, se muestran 4 representaciones de posibles comportamientos del modelo de entrenamiento para diferentes valores de tasas de aprendizaje. La de más a la izquierda, está atrapada ya que tiene una tasa muy baja. Por el contrario, la que está más a la derecha, al tener una tasa de aprendizaje muy alta, impide que se alcance la convergencia. La tasa de aprendizaje suele estar comprendida entre 0.001 y 0.5.[60] Figura 3.15: Comportamiento de una red ante diferentes ritmos de aprendizaje[61] Existe otro hiperparámetro en relación con la época, llamado lote o batch. El batch es el número de muestras de cada conjunto de datos que se hace pasar por la red en cada iteración de una época. Si tenemos un conjunto de datos de 10.000 muestras, y tomamos un batch de 500, en cada época, iteraremos hacia adelante y hacia atrás un total de 20 veces.[62] Obtenemos como resultado final, una red neuronal convolucional, que ofrecerá mayores prestaciones a medida que aumente su número de capas. A medida que aumentamos la profundidad de la red, se pueden afrontar problemas más complejos. 49 Figura 3.16: Red neuronal convolucional clasificadora[62] Las redes neuronales están cada vez más implementadas en todos los campos de la ciencia. La mayoría de sus aplicaciones consisten en realizar reconocimiento y clasificación de patrones de forma completamente automatizada. Aunque sea una tecnología muy avanzada que permite crear redes de un gran número de neuronas, todavía está muy lejos de obtener resultados y velocidades parecidas a las del cerebro humano, el cual posee alrededor de 86 billones de neuronas y una interconectividad muy compleja. 3.5. Dropout En ocasiones, el entrenamiento de una red puede provocar overfitting o sobreajuste. Esto provoca que, a la hora en testear la red, esta no ofrezca buenos resultados, ya que durante la fase de aprendizaje, se ha sobreajustado la red, provocando que no obtenga buenas predicciones cuando el dataset difiere en demasía respecto al dataset de entrenamiento. Este problema puede solucionarse gracias al método del dropout o deserción. En este método, neuronas seleccionadas al azar se eliminan durante la fase de entrenamiento, son "abandonadas" de forma completamente arbitraria, provocando que neuronas que se encuentran debajo de la neurona "abandonada", no reciban contribución de esta, y con ello que no puedan actualizarse sus pesos en el paso hacia atrás. Gracias a esta técnica, se consigue que las neuronas aprendan varias representaciones internas independientes entre ellas, de forma que optimicen mucho más su rendimiento.[63] En la figura 3.17, se representa una red neuronal de dos formas; a la izquierda, la red con todas sus neuronas activadas y las relaciones entre ellas; y a la derecha se aplica el 50 método del dropout, en el cual algunas neuronas han sido "abandonadas", con ello, las conexiones hacia arriba y abajo, dejan de estar presentes. Figura 3.17: Representación del método del dropout [63] Al realizar predicciones sobre nuevos datos de entrada, se necesita compensar aquellas neuronas que no han sido entrenadas durante la fase de entrenamiento, en la cual el método dropout estaba activo. Para ello se modifica la probabilidad de descarte de todas ellas por el valor nulo, para que no vuelvan a descartarse ninguna neurona.[63] ste método consigue que ninguna de las neuronas de la red memorice el dataset de entrada a la red, evitando el overfitting. 3.6. Aprendizaje transferido (Transfer Learning) Crear una red neuronal desde 0 para aplicaciones de Machine Learning o Deep Learning, es un trabajo muy costoso, debido a la dificultad que supone establecer las conexiones entre capas, y la disposición de estas en una arquitectura nueva. Existen una gran cantidad de arquitecturas ya diseñadas e implementadas, como las citadas en la sección anterior (VGG Net, U-Net, SegNet o ResNet), previamente entrenadas por un conjunto de imágenes como puede ser Imagenet; conjunto de datos de imágenes, diseñada para evaluación de redes y algoritmos de clasificación y reconocimiento de imágenes.[64] Se emplea mucha carga computacional y tiempo en el entrenamiento de redes con este conjunto de datos, por lo que trabajar con redes pre-entrenadas, permite aprovechar el conocimiento adquirido por estas, y aplicárselo a los filtros de las primeras capas de la red que estemos diseñando, capaces de detectar bordes, texturas, colores, sombras o elementos primarios. Por ello se desarrollo un proceso llamado Transfer Learning, por el cual se aprovechan los conocimientos aprendidos de un modelo para aplicarlos en otro del mismo ámbito.[65] Para usar una red pre-entrenada, hay que adaptarla a las necesidades del problema, este método se llama ajuste fino o fine tunning. 51 3.6.1 Ajuste fino de los pesos (Fine Tunning) Tras realizar Transfer Learning, existe un método de ajuste de los pesos mediante la "descongelación" del modelo obtenido o una parte de este, volviendo a realizar el entrenamiento de la red con el dataset de entrenamiento elegido para ello, llamado Ajuste Fino o Fine Tunning. Este método de ajuste, consigue mejoras significativas, adaptando de forma gradual aquellas capas entrenadas previamente. El requisito indispensable para ajustar los pesos de manera adecuada, consiste en optimizar la tasa de aprendizaje o learning rate (~0.001), permitiendo que toda la red ajuste sus pesos correctamente.[66] 52 4. Método Propuesto Tras presentar el método utilizado en este trabajo. Es el momento de hablar del método que hemos utilizado para resolver el problema a tratar. En los siguiente apartados se describen tanto el componente hardware como el componente software que han permitido segmentar las imágenes del dataset. De forma detallada, se explica como hemos llegado a la solución final, aplicando modificaciones al modelo de red neuronal elegido, que en este caso a sido una red SegNet [1]. 4.1 Componentes Los dos principales componentes implementados son, hardware, y software. La unión de ambos, han proporcionado los resultados finales tras una ardua tarea en la cual se han realizado multitud de pruebas, hasta que se ha conseguido alcanzar el resultado óptimo. 4.1.1 Componente 'Hardware' Las redes neuronales requieren de extensos datasets para su entrenamiento y su posterior uso. Estas redes requieren la implementación de librerías de Deep Learning. las cuales llevan mucho tiempo de procesamiento y por ello se usa la Unidad de Procesamiento Gráfico o (GPU), del inglés Graphics Processing Unit. Esta unidad se localiza en una tarjeta gráfica, permitiendo realizar cálculos complejos en un espacio corto de tiempo. El entrenamiento de redes neuronales complejas requiere un coste computacional alto. En ocasiones el uso de una sola tarjeta no es suficiente y es necesario varias tarjetas trabajando a la vez, lo cual requiere un coste económico elevado. A la hora de elaborar este trabajo, la necesidad de una GPU era necesario, por lo tanto podía disponer de ella a través de dos alternativas diferentes: 1. La primera opción sería usar una computadora con una GPU integrada capaz de poder soportar el entrenamiento de mi red neuronal. La gama de la GPU necesaria para la aplicación en cuestión, debía de ser media, ya que en caso contrario los tiempos de entrenamiento serían demasiado altos. La ventaja de usar una GPU, es poder ejecutar el entrenamiento en local, lo que permite la detección de errores de manera más rápida y eficiente. 53 2. Hacer uso de un servicio Cloud como Google Cloud basado en los Notebooks de Jupyter, que permite el uso de manera gratuita de GPUs y TPUs, y permite el uso de librerías como PyTorch, TensorFlow, Keras y OpenCV, y en lenguaje Python. En este caso, al no disponer de una computadora con GPU integrada, hubo que optar por la segunda opción, la cual ha proporcionado resultados realmente buenos y eficientes. El servicio de Google Colab, tiene la opción de potenciar las prestaciones del servicio, ofreciendo a los usuarios Google Colab Pro. Es un servicio de pago que permite el uso de memorias RAM más rápidas, y la disponibilidad plena de GPUs y TPUs. Este servicio solo está disponible en Estados Unidos y Canada. Es sencillo su uso en España sin restricción, haciendo uso de proveedores de VPNs gratuitos como el utilizado para este caso, ProtonVPN. El servidor de VPN permite establecer una relación cliente/servidor entre el dispositivo que actúa como cliente y un servidor localizado en el lugar que el cliente desee. En la tabla 4.1, se representa la comparación de las características de ambas versiones de Google Colab. La versión gratuita proporciona peores prestaciones que la versión PRO, especialmente en la velocidad de la memoria RAM, y en los modelos de GPU. Tabla 4.1: Diferencias entre Google Colab y Google Colab Pro Google Colab Google Colab PRO Duración de las sesiones 12 horas 24 horas Tiempo de inactividad Cortos Largos (variables) Disponibilidad de GPUs y TPUs Según demanda Siempre Lenguaje Python 2 o 3 Python 2 o 3 GPUs disponibles NVIDIA K80 o NVIDIA Tesla T4 NVIDIA Tesla T4, NVIDIA Tesla P100 o NVIDIA Tesla V100 Memoria RAM RAM-estándar (hasta 12,72 GHz) High-RAM (Hasta 25,51 GHz) 54 Las ventajas que ofrece la versión PRO, mejoraron notablemente las velocidades de entrenamiento, a pesar del gran número de datos de los que disponía el dataset. Se ha dispuesto de la GPU NVIDIA Tesla V100, que es la más potente ofrecida por el servidor cloud y la memoria High-RAM con hasta 25,51 GHz. Las especificaciones finalmente escogidas del servicio cloud proporcionadas por Google Colab PRO para el entrenamiento, validación y testeo de la red neuronal, son las siguientes: Tabla 4.2: Especificaciones hardware (Google Colab Pro) Parámetro Valor CPU Intel®Xeon® CPU CPU High-RAM 25.51 GHz Núcleos CPU 2 Velocidad CPU 2.30 GHz GPU NVIDIA Tesla P100 GPU RAM 16 Gb (hbm2) Duración máxima de una sesión 24 horas Tiempo ocioso máximo o tiempo sin inactividad máximo Tiempo variable 4.1.2 Componente 'Software' La parte con mayor carga en este proyecto ha sido la componente software. Ha requerido de mucho tiempo para estructurar la arquitectura de la red neuronal elegida, y un conjunto de funciones de apoyo a las cuales se recurre tanto en el proceso de entrenamiento y validación como en el de test. A continuación haremos un estudio previo de las diferentes alternativas de redes neuronales que se pueden implementar para segmentar imágenes, definiendo y desarrollando la arquitectura escogida, y finalizaremos la sección con la explicación de los frameworks escogidos para nuestra aplicación de Deep Learning. 4.1.2.1 Modelos de red para solucionar problemas de segmentación de imágenes 55 A la hora de crear una red neuronal, hay que elegir de manera adecuada el modelo que se quiere diseñar, para que mediante el método de Transfer Learning, los resultados obtenidos sean los óptimos. El objetivo de este trabajo es la segmentación de imágenes, y para ello las redes neuronales convolucionales usadas en segmentación tienen una particularidad, la entrada y la salida deben de ser del mismo tamaño. Esto se debe a que no se clasifica toda la imagen en una categoría, sino que se categoriza píxel a píxel. Los elementos que constituyen la red neuronal convolucional son fáciles de entender. La dificultad reside en el diseño de arquitecturas de modelos que utilicen estos elementos y mejoren sus prestaciones. En el año 1998, Yann LeCun, desarrollo con éxito la primera aplicación de las redes neuronales convencionales. Fue bautizada con el nombre de LeNet-5, logrando una precisión de clasificación del 99,2% [67]. En el año 2012, el interés en las redes neuronales y el dominio del aprendizaje profundo, dieron origen al reto de reconocimiento visual a gran escala de ImageNet o ImageNet Large Scale Visual Recognition Challenge ILSVRC). A raíz de este reto aparecieron nuevas arquitecturas de redes como AlexNet, ZFNet, VGG-16, GoogleNet (también conocida como Inception) o ResNet que fue creada por Microsoft. Todas ellas fueron ganadoras, menos la VGGNet16, que quedó en segunda posición, del reto de ImageNet, y que aparecen representadas en la tabla 4.2. Tabla 4.3: Redes neuronales más destacadas Año CNN Desarrollada por Posición en el reto ImageNet Top-5 error rate Nº de parámetros 1998 LeNet (8) Yann LeCun 60.000 2012 AlexNet (7) Alex Krizhevsky,Geoffrey Hinton, Ilya Sutskever 1º 15.3% 60 millones 2013 ZFNet () Matthew Zeiler and Rob Fergus 1º 14.8% 56 2014 VGG Net (16) Simonyan, Zisserman 2º 7.3% 138 millones 2014 Inception (19) Google 1º 6.67% 4 millones 2015 ResNet (152) Kaiming He 1º 3.6% La arquitectura más implementada en segmentación para una red neuronal consiste en tres bloques. Una red de codificadores conectada a una red de decodificadores, mediante una capa convolutiva 1 x 1. Esta estructura de red se ve representada en la figura 4.1. La primera parte corresponde al codificador, el cual btiene un mapa de características, dada una imagen de entrada. El segundo bloque es la capa convolutiva de 1×1. Este bloque consiste en sustituir la capa de neuronas completamente conectadas o Fully Connected de la CNN por una capa convolutiva de kernel 1×1. Permite generar una clasificación de la imagen, a la vez que se preserva la información espacial. La red de decodificadores se encarga de recuperar los detalles de los objetos, proyectando las características obtenidas (baja resolución) en el espacio de píxeles. Finalmente, mediante la proyección de las características, obtenemos una clasificación de los píxeles (alta resolución) [68][69]. Para realizar este tipo de redes, se parte de una de las arquitecturas ya creadas. Se reemplazan las capas completamente conectadas, por capas que realizan una interpolación o upsampling. Su objetivo es generar una salida con las mismas dimensiones que la entrada (requisito indispensable en segmentación). A este tipo de redes se les denomina redes completamente convolucionales o FCN (Fully Convolutional Networks) [69]. Figura 4.1 : Estructura de una FCN (Fully Convolutional Network)[69] En el proceso que hemos explicado anteriormente encontramos un problema de pérdida de resolución de los mapas de características de salida, debido a las capas convolucionales y de submuestreo, provocando bordes borrosos en las imágenes de salida. Como solución se han propuesto diferentes modificaciones avanzadas de las FCN 57 para proporcionar una mejora en la precisión en el camino de decodificación. Algunos ejemplos son la U-Net, SegNet y DeelLabv1, o algunas más actuales como la PSPNet, DeepLabv2 o la FPN, de 2016. 4.1.2.2 Arquitectura escogida La red utilizada en este trabajo es una red SegNet. Como hemos dicho en el apartado anterior, es necesario una red de segmentación basada en una arquitectura de codificador-decodificador, con mejoras en su arquitectura de decodificación, para conseguir mejorar la precisión en la fase de decodificación.[1] La arquitectura de la red SegNet se representa en la figura 4.2. Esta red se caracteriza por ser una red convolucional codificador-decodificador. Como hemos mencionado antes, son redes fully convolutional, es decir, cada capa está conectada a la siguiente capa, de manera que la información circula de izquierda a derecha mediante "feed forward". Figura 4.2 : Arquitectura de una red SegNet[70] 4.1.2.3 Desarrollo del modelo escogido La arquitectura de la red SegNet mantiene una relación codificador-decodificador con una capa final de clasificación de píxeles mediante una función de activación 'softmax'. En la fase del codificador se produce una contracción de la imagen, y por el contrario en la fase del decodificador se produce una expansión los datos de entrada: 1. Codificador o camino de contracción En esta etapa, mediante varios niveles sucesivos y conectados entre ellos, se somete a los datos de entrada a un proceso de reducción de sus tamaños mediante capas de submuestreo. 64 1. El primer cambio, es la introducción de la capa reshape tras acabar el camino de expansión. Esta capa transforma las entradas en la forma dada, en este caso el producto del ancho por el alto (128x128). Representamos la matriz como un vector de 128x128 = 16.384 números, de forma que las filas se encuentras concatenadas unas con otras. De esta forma es más sencillo procesar la imagen en la fase de entrenamiento. Sería equivalente el de aplanar la salida de la red, para luego aplicarle una función de activación. 2. El segundo punto a realizar es el de aplicar una función de activación 'sigmoid'. Al haber modificado la forma con la función reshape, a la salida solo tenemos un vector que contiene todos los píxeles de la imagen, por tanto no sería lógico usar la función de activación de la red SegNet, la función 'softmax', ya que aumentaría mucho las pérdidas. c) Proceso de 'congelado' de pesos. (Fine-Tunning) En la sección anterior, se ha explicado en lo que consistía el proceso de fine-tunning, cuyo objetivo consiste en adaptar los pesos de las capas de la red para optimizar el problema. Con ello incrementamos la capacidad del algoritmo de extraer características de la red sin necesidad entrenar el modelo durante un largo periodo de tiempo. Para este proyecto, no se han congelado los pesos, ya que los resultados que se obtuvieron al congelar los pesos, fueron deficientes, por lo que se optó por entrenar la red sin congelar los pesos, aumentando con ello el tiempo de entrenamiento y validación. d) Learning Rate Con el objetivo de reducir las pérdidas de la red, se debe encontrar el valor más apropiado. Para resolver este problema, la solución es encontrar el valor óptimo de Learning rate o ritmo de aprendizaje. Éste es un parámetro que reduce las pérdidas a medida que aumenta su valor, como se muestra en la figura 4.7. 65 Figura 4.7: Evolución de las pérdidas en función de la tasa de aprendizaje [Creación propia] Para este proyecto el learning rate, se ha ajustado hasta un valor de 0.0001, con lo que hemos introducido pérdidas a cambio de mejor el entrenamiento de la red. En la figura 4.8, se representa la línea de código en la cual se crea un optimizador 'Adam', con el learning rate modificado, respecto al que tiene por defecto (0.001). Figura 4.8: Optimizador Adam [Creación propia] 4.3. Modelo final Tras definir la arquitectura, a continuación se representa el código del modelo final, en el que aparece reflejado todo lo explicado en los puntos anteriores: desde la red SegNet, la CNN de clasificación VGG-19, hasta los parámetros que hemos modificado para conseguir los resultados obtenidos. A continuación se muestra el código del modelo: from tensorflow.keras.models import * from tensorflow.keras.layers import * from keras.applications import vgg19 import h5py import os file_path = os.path.dirname( os.path.abspath(__file__) ) VGG_Weights_path = file_path+"/weights/vgg19_weights_tf_dim_ordering_tf_kernels_notop.h5" def VGGSegnet(n_classes , input_height=128, input_width=128, vgg_level=3): img_input = Input(shape=(3,input_height,input_width)) #####Codificador o camino de compresión##### #bloque1 66 x=Conv2D(64, (3, 3), activation='relu', padding='same', name='block1_conv1', data_format='channels_first')(img_input) x=Conv2D(64, (3, 3), activation='relu', padding='same', name='block1_conv2', data_format='channels_first')(x) x=MaxPooling2D((2,2),strides=(2,2),name='block1_pool', data_format='channels_first')(x) f1=x #bloque2 x=Conv2D(128,(3,3), activation='relu', padding='same', name='block2_conv1', data_format='channels_first')(x) x=Conv2D(128,(3,3), activation='relu', padding='same', name='block2_conv2', data_format='channels_first')(x) x=MaxPooling2D((2,2),strides=(2,2),name='block2_pool', data_format='channels_first')(x) f2=x #bloque3 x=Conv2D(256,(3,3), activation='relu', padding='same', name='block3_conv1', data_format='channels_first')(x) x=Conv2D(256,(3,3), activation='relu', padding='same', name='block3_conv2', data_format='channels_first')(x) x=Conv2D(256,(3,3), activation='relu', padding='same', name='block3_conv3', data_format='channels_first')(x) x=Conv2D(256,(3,3), activation='relu', padding='same', name='block3_conv4', data_format='channels_first')(x) x=MaxPooling2D((2,2),strides=(2,2),name='block3_pool', data_format='channels_first')(x) f3=x #bloque4 x=Conv2D(512,(3,3), activation='relu', padding='same', name='block4_conv1', data_format='channels_first')(x) x=Conv2D(512,(3,3), activation='relu', padding='same', name='block4_conv2', data_format='channels_first')(x) x=Conv2D(512,(3,3), activation='relu', padding='same', name='block4_conv3', data_format='channels_first')(x) x=Conv2D(512,(3,3), activation='relu', padding='same', name='block4_conv4', data_format='channels_first')(x) x=MaxPooling2D((2,2),strides=(2,2),name='block4_pool', data_format='channels_first')(x) f4=x #bloque5 x=Conv2D(512,(3,3), activation='relu', padding='same', name='block5_conv1', data_format='channels_first')(x) x=Conv2D(512,(3,3), activation='relu', padding='same', name='block5_conv2', data_format='channels_first')(x) x=Conv2D(512,(3,3), activation='relu', padding='same', name='block5_conv3', data_format='channels_first')(x) x=Conv2D(512,(3,3), activation='relu', padding='same', name='block5_conv4', data_format='channels_first')(x) x=MaxPooling2D((2,2),strides=(2,2),name='block5_pool', 67 data_format='channels_first')(x) f5=x vgg= Model(img_input, x) vgg.load_weights(VGG_Weights_path) levels = [f1, f2 , f3 , f4 , f5] o=levels[vgg_level] #####Decodificador o camino de expansión###### o = (ZeroPadding2D((1,1) , data_format='channels_first'))(o) o = (Conv2D(512,(3,3),padding='valid', data_format='channels_first'))(o) o = (BatchNormalization())(o) o = (UpSampling2D((2,2) , data_format='channels_first'))(o) o = (ZeroPadding2D((1,1) , data_format='channels_first'))(o) o = (Conv2D(256,(3,3),padding='valid', data_format='channels_first'))(o) o = (BatchNormalization())(o) o = (UpSampling2D((2,2) , data_format='channels_first'))(o) o = (ZeroPadding2D((1,1) , data_format='channels_first'))(o) o = (Conv2D(128,(3,3),padding='valid', data_format='channels_first'))(o) o = (BatchNormalization())(o) o = (UpSampling2D((2,2) , data_format='channels_first'))(o) o = (ZeroPadding2D((1,1) , data_format='channels_first'))(o) o = (Conv2D(64,(3,3),padding='valid', data_format='channels_first'))(o) o = (BatchNormalization())(o) #que hace aqui con n_classes o = (UpSampling2D((2,2) , data_format='channels_first'))(o) o = (ZeroPadding2D((1,1) , data_format='channels_first'))(o) o = (Conv2D(64,(3,3),padding='valid', data_format='channels_first'))(o) o = (BatchNormalization())(o) o = Conv2D(1, (3,3) , padding='same', data_format='channels_first')(o) o_shape = Model(img_input, o).output_shape outputHeight = o_shape[2] outputWidth = o_shape[3] 68 o = (Reshape((-1, outputHeight*outputWidth)))(o) o = (Permute((2,1)))(o) o = (Activation('sigmoid'))(o) model = Model(img_input,o) return model Keras pone a disposición del usuario multitud de herramientas para verificar los resultados obtenidos por parte del usuario. En este caso, mediante la función summary(), podremos visualizar los siguientes parámetros: Las capas y su orden en el modelo La forma de salida de cada capa El número de parámetros (pesos) en cada capa El número total de parámetros (pesos) en el modelo A continuación se representa la salida de la línea de códido: print(model.summary() 69 4.4. Dataset utilizado Para este trabajo, el conjunto de datos de entrenamiento con el que se entrena a la red es el que se utilizó en el ISIC challenge de 2018, para el cual se disponían de un total de 2594 imágenes en color en formato JPEG. Cada imagen JPEG tiene una máscara asociada con formato PNG en blanco y negro. Los conjuntos de dataset para las fases de entrenamiento y validación, son los siguientes.[73] : 70 1. Dataset de entrenamiento: 2194 imágenes a color formato (.jpg), son la imágenes de entrada (input), con sus correspondientes 2194 imágenes con formato (.png), correspondientes a las máscaras o imágenes de segmentación (groundtruth). 2. Dataset de validación: 400 imágenes a color formato (.jpg), son la imágenes de entrada (input), con sus correspondientes 400 imágenes con formato (.png), correspondientes a las máscaras o imágenes de segmentación (groundtruth). De las 2194 imágenes repartidas entre ambos datasets, ninguna de ellas se repite. Todas las imágenes con formato (.jpg) son a color con dimensiones diferentes entre ellas, con sus correspondientes máscaras en blanco y negro con formato (.png). El total de imágenes es suficiente para obtener buenos resultados en las fases de entrenamiento, validación y test, por lo que no ha sido necesario modificarlo, para incrementar el número de datos con los cuales entrenar nuestra red. Los resultados de ambas fases se representan en la siguiente sección del trabajo. 71 5. Resultados En este capítulo se analizan los resultados obtenidos tras haber realizado el entrenamiento de la red neuronal explicada en el apartado anterior para el dataset proporcionado para su entrenamiento, validación y test. Los parámetros seleccionados para los cuales se han obtenido estos resultados, han proporcionado los mejores valores de medidas de rendimiento, como por ejemplo exactitud, especificidad, precisión o índice Jaccard. 5.1 Análisis de eficiencia del modelo Los sistemas basados en Machine Learning, son evaluados mediante métricas de precisión de clasificación binaria {0,1} o {false, true}, {negative, positive}. Las métricas de clasificación binaria, cuantifican los dos tipos de predicciones correctas {verdadero positivo o verdadero negativo } y dos tipos de errores {falso positivo o falso negativo}. Para la predicción píxel a píxel existen 4 tipos de predicciones. Considerando la presencia de lesión (píxel activo) como positivo y la no presencia de lesión (píxel no activo) como negativo: • Falso positivo (FP): Resultado negativo que se ha predicho como positivo. Error tipo I. • Verdadero positivo (TP): Resultado positivo que se ha predicho como positivo. • Verdadero negativo (TN): Resultado negativo que se ha predicho como negativo pero esta vez de forma correcta. • Falso negativo (FN): Resultado positivo que se ha predicho como negativo. Error tipo II. [20] 72 Figura 5.1 : Tipos de clasificaciones usadas en segmentación[74] Las métricas de clasificación se calculan en función de estos valores. En este aparatado se calculan la tasa de acierto, la especificidad, la precisión, la sensibilidad y el coeficiente de Sorensen-Dice. Para cada imagen, se realiza una comparación entre los píxeles de cada segmentación predicha y la segmentación real utilizando una métrica llamada índice Jaccard. Es una métrica utilizada en el challenge de la ISIC 2018. Exhaustividad o Sensibilidad (Recall): Es un medidor que indica cuál es la proporción de aquellos casos que son positivos y se han clasificado como tal. Esta tasa también se le denomina tasa de verdaderos positivos o TPR. 𝑅=𝑇𝑃𝑅= 𝑇𝑃 𝑇𝑃+𝐹𝑁 Especificidad (Specificity): Calcula la proporción de aquellos negativos que se han clasificado como tales. Recibe también el nombre de tasa de falsos negativos. 𝐸=𝑇𝑁𝑅= 𝑇𝑁 𝑇𝑁+𝐹𝑃 Exactitud o tasa de acierto (Accuracy): La exactitud o tasa de acierto, mide el porcentaje de casos en los que el modelo ha acertado. Tanto los verdaderos positivos como los verdaderos negativos. 𝐴= 𝑇𝑃+𝑇𝑁 𝑇𝑃+𝑇𝑁+𝐹𝑃+𝐹𝑁 73 Su uso no es muy adecuado, debido a que puede conducir a un problema de exactitud. Un modelo malo puede parecer mucho mejor de lo que realmente es, debido a que tiende a indicarnos el conjunto mayoritario. Por lo que un alto número de Verdaderos Positivos, produce una alta tasa de acierto. Precisión (Precision): Mide el número de verdaderos positivos que realmente son positivos. Nos proporciona un valor de la calidad del modelo. 𝑃= 𝑇𝑃 𝑇𝑃+𝐹𝑃 Índice Jaccard (Jaccard Index): El índice o coeficiente Jaccard es un coeficiente que mide el nivel de semejanza entre dos conjuntos a comparar, independientemente del tipo de elemento. Su rango de valores discurre entre 0 y 1, tomando el 0 como semejanza nula, por el contrario, el 1 caracterizaría los dos conjuntos como idénticos. 𝑇𝑃 𝑇𝑃 + 𝐹𝑁 + 𝐹𝑃 El umbral Jaccard o Jaccard Threshold, con un valor (~ 0,65), con una tolerancia de error adicional es el valor que determina la calidad del trabajo realizado, considerando una segmentación fallida si el coeficiente Jaccard para esa segmentación queda por debajo del umbral establecido. Es un parámetro de calidad indispensable para el ISIC challege de 2018. Coeficiente de Sørensen-Dice (Sørensen-Dice coefficient): También llamado índice de Sørensen o coeficiente de Dice, compara la similitud entre dos conjuntos de muestras A y B. Se calcula: 𝐷𝑆𝐶(𝐴,𝐵) = 2 ∙ |𝐴 ∩ 𝐵| |𝐴| + |𝐵| Si aplicamos la expresión a datos binarios o booleanos, encontramos la siguiente expresión: 𝐷𝑆𝐶 = 2 ∙ 𝑇𝑃 2 ∙ 𝑇𝑃 + 𝐹𝑁 + 𝐹𝑁 DSC es el coeficiente de similitud de datos y varía entre 0 y 1. 5.1.1 Matriz de confusión 80 Figura 5.6: Representación de las 5 peores predicciones Los resultados obtenidos son buenos, ya que como muestran las métricas correspondientes, y sus respectivas máscaras obtenidas, concuerdan con una gran tasa de acierto y exactitud en el resultado. Si apreciamos los resultados obtenidos de las 5 peores predicciones, observamos cómo en las imágenes de entrada, es dificultoso apreciar las lesiones, ya que o estas son muy pequeñas, o el fondo es de la misma tonalidad que la lesión, lo que hasta para el ojo humano resultaría casi inapreciable. Por ello los malos resultados son coherentes con estas imágenes, que llegan hasta a coincidir en algún punto de la máscara predicha con la máscara original, pero sin buenos resultados. Los siguientes resultados adicionales, muestran las 5 predicciones que más se ajustan al valor medio (0,6675), inmediatamente por encima. Los resultados obtenidos se representan en la tabla 5.8, y en la figura 5.7. 81 Tabla 5.8: ndice Jaccard de las 5 primeras predicciones que superan el valor medio ID de la imagen Tasa de acierto (accuracy) Índice Jaccard ISIC_0014944.jpg 0.9427490234 0.6845998655 ISIC_0014989.jpg 0.8900756836 0.6922419686 ISIC_0015013.jpg 0.7490844727 0.6759419833 ISIC_0015447.jpg 0.7166748047 0.6806549257 ISIC_0015993.jpg 0.9856567383 0.6793997271 Figura 5.7: Representación de las 5 primeras predicciones que superan el valor medio Para terminar de representar las predicciones, a continuación representamos las 3 predicciones inmediatamente superiores e inmediatamente inferiores al valor umbral establecido por el ISIC challenge. 82 Tabla 5.9: ndice Jaccard de las 6 predicciones en torno al umbral de 0.65. ID de la imagen Tasa de acierto (accuracy) Índice Jaccard ISIC_0014851.jpg 0.9105834961 0.6583488806 ISIC_0014987.jpg 0.9075927734 0.6544167998 ISIC_0014855.jpg 0.8814697266 0.6526560544 ISIC_0015481.jpg 0.9526367188 0.6493447808 ISIC_0015015.jpg 0.8331298828 0.647453256 ISIC_0015057.jpg 0.8288574219 0.6416613419 Figura 5.8: Representación de las 6 predicciones en torno al umbral de 0.65 83 6. Conclusiones del trabajo El uso de una tecnología como el Deep Learning, está generando una revolución en cuanto a la creación de nuevas herramientas muy versátiles que cubren multitud de campos. En el ámbito de la medicina, su potencial es aún mayor, ya que los resultados obtenidos tienen en muchos casos una calidad y precisión mayor a la que el ser humano puede llegar a proporcionar. Estas herramientas no tratan de sustituir en ningún caso la presencia humana en áreas como la medicina, sino ofrecer herramientas de ayuda a los especialistas. En un futuro, el desarrollo de la tecnología permitirá que los entrenamientos de las redes sean mucho más rápidos mediante GPUs y TPUs más potentes, capaz de tratar con datasets más grandes permitiendo ajustar aún más los parámetros de la red, obteniendo de esta forma resultados muy precisos. 6.1 Conclusiones El modelo de red neuronal implementado para este proyecto junto con sus modificaciones desarrolladas durante la fase de entrenamiento, clarifica unos resultados que se podrían catalogar de éxito, ya que como se ha representado en el apartado 5.3, se ha conseguido una tasa de acierto media en las predicciones de hasta un 84% Por tanto se concluye que la red neuronal SegNet, preentrenada con una CNN VGG19, ha sido una decisión acertada a la hora de desarrollar una implementación basada en Deep Learning para la segmentación de lesiones pigmentadas en la piel. Un punto importante a señalar es la línea de trabajo desarrollada para este trabajo. De la misma manera que se ha aplicado el Deep Learning para segmentación, el flujo de trabajo que se ha seguido puede implementarse en otras muchas áreas con similar o distinta aplicación, realizando siempre un estudio previo de cuál podría ser la mejor solución para el problema a tratar, y conseguir con ello optimizar los resultados. 84 6.2 Líneas futuras En el campo de la medicina, el Deep Learning, según los expertos, avanza hacia un futuro próximo de aprendizaje no supervisado, o lo que es lo mismo, aprendizaje sin necesidad de presencia humana que ratifique lo que es correcto o lo que no, de forma que obtengan esas conclusiones a partir del conjunto de datos ingerido por la red. Una posible mejora para la segmentación de lesiones de la piel sería utilizar ensambladores de redes neuronales profundas que permitan obtener las ventajas de éstas a la hora de clasificar un píxel como perteneciente o no a la lesión. Por último, la inclusión de información adicional a la imagen de entrada a la red, como podría ser el tipo de lesión o características del paciente, podría ayudar a obtener mejores resultados. 85 Referencias [1] Badrinarayanan, V., Kendall, A., & Cipolla, R. (2017). Segnet: A deep convolutional encoder-decoder architecture for image segmentation. IEEE transactions on pattern analysis and machine intelligence, 39(12), 2481-2495. [2] Takeyas, Bruno López. "Introducción a la inteligencia artificial." Instituto Tecnológico de Nuevo Laredo. Web del autor: http://www. itnuevolaredo. edu. mx/takeyas (2007). [3] Braeuer RR, Watson IR, Wu CJ, Mobley AK, Kamiya T, Shoshan E, Bar-Eli M. Why is melanoma so metastatic? Pigment Cell Melanoma Res. 2014 Jan;27(1):19-36. doi: 10.1111/pcmr.12172. Epub 2013 Oct 17. PMID: 24106873. [4] Siegel RL, Miller KD, Jemal A. Cancer statistics, 2019. CA Cancer J Clin. 2019;69(1):7- 34. [5] The American Cancer Society, “Melanoma Skin Cancer Early Detection, Diagnosis and Staging, 2020 [6] https://elhexagono.wordpress.com/2018/06/16/melanoma-el-asesino- silencioso/[imagen] [7] Lee JB, Hirokawa D. Dermatoscopy: Facts and controversies. Clin Dermatol. 2010;28(3):303-310. [8] https://www.dhmaterialmedico.com/dermatoscopio-dermlite-dl200-hybrid [imagen] [9] Chen LL, Dusza SW, Jaimes N, Marghoob AA. Performance of the First Step of the 2- Step Dermoscopy Algorithm. JAMA Dermatol. 2015;151(7):715-721. [10] Palomino, N. L. S., & Concha, U. N. R. (2009). Técnicas de segmentación en procesamiento digital de imágenes. Revista de investigación de Sistemas e Informática, 6(2), 9-16. [11] ] IBÁÑEZ, L., SCHROEDER, W., NG, L. & CATES, J. 2005. The ITK Software Guide. Insight Software Consortium 86 [12] YAO, J. 2006. Image Processing in Tumor Imaging. New Techniques in Oncologic Imaging. 79-102. [13] A. Masood and A. A. Al-Jumaily, “Computer Aided Diagnostic Support System for Skin Cancer: A Review of Techniques and Algorithms,” International Journal of Biomedical Imaging, vol. 2013 (Article ID 323268), 2013. [14] Herold-García, S., & Escobedo-Nicot, M. (2007). Segmentación de imágenes médicas con la aplicación de snakes. Ciencia en su PC, (4), 12-22. [15] H.D. Cheng, X.H. Jiang, Y. Sun, Jingli Wang,Color image segmentation:advances and prospects,Pattern Recognition,Volume 34, Issue 12,2001,Pages 2259-2281,ISSN 0031-3203. [16] International Skin Imaging Collaboration, “International Skin Imaging Collaboration,” 2020. [Online]. Disponible : https://www.isic-archive.com/. [Accessed 7 Nov 2020]. [17] Palomino, N. L. S., & Concha, U. N. R. (2009). Técnicas de segmentación en procesamiento digital de imágenes. Revista de investigación de Sistemas e Informática, 6(2), 9-16. [18] Marcos Martín, Tecnicas Clásicas de Segmentación, 21 Mayo 2002 [imagen] [19] Ruifrok, A. C., & Johnston, D. A. (2001). Quantification of histochemical staining by color deconvolution. Analytical and quantitative cytology and histology, 23(4), 291- 299. [20] Kittler, J., & Illingworth, J. (1986). Minimum error thresholding. Pattern recognition, 19(1), 41-47. [21] Sahoo, P. K., Soltani, S. A. K. C., & Wong, A. K. (1988). A survey of thresholding techniques. Computer vision, graphics, and image processing, 41(2), 233-260. [22] Jiménez Hernández, S. (2016). Aplicación de técnicas de procesado de imagen para las segmentación de núcleos en muestras histológicas humanas (Doctoral dissertation). [23] José Porras, Anotnio Morán, Clasification System Based On Computer Vision. [24] Lorca, G., Arzola, J., & Pereira, O. (2010). Segmentación de Imágenes Médicas Digitales mediante Técnicas de Clustering. Rev. Aporte Santiaguino, 108-116. [25] Drozdowicz, B., Bernasconi, G., Reyes, M., Saba, F., & Simón, G. (2005). Segmentación semiautomática de imágenes de resonancia magnética, basada en redes neuronales artificiales. Ciencia, Docencia y Tecnología, 16(30), 117-155. 87 [26] KAYALIBAY, Baris; JENSEN, Grady; VAN DER SMAGT, Patrick. CNN-based segmentation of medical imaging data. arXiv preprint arXiv:1701.03056, 2017. [27] http://exponentis.es/ejemplo-de-clustering-con-k-means-en-python [imagen] [28] Takeyas, Bruno López. "Introducción a la inteligencia artificial." Instituto Tecnológico de Nuevo Laredo. Web del autor: http://www. itnuevolaredo. edu. mx/takeyas (2007). [29] Kaplan, J. (2016). Artificial intelligence: What everyone needs to know. Oxford University Press. [30] Lake, B. M., Ullman, T. D., Tenenbaum, J. B., & Gershman, S. J. (2017). Building machines that learn and think like people. Behavioral and brain sciences, 40. [31] Alpaydin, E. (2020). Introduction to machine learning. MIT press. [32] https://datos.gob.es/es/documentacion/tecnologias-emergentes-y-datos- abiertos-inteligencia-artificial [imagen] [33] Liu, Y., Zhao, T., Ju, W., & Shi, S. (2017). Materials discovery and design using machine learning. Journal of Materiomics, 3(3), 159-177. [34] Salas, R. (2004). Redes neuronales artificiales. Universidad de Valparaıso. Departamento de Computación, 1. [35] Wang, B., & Gong, N. Z. (2018, May). Stealing hyperparameters in machine learning. In 2018 IEEE Symposium on Security and Privacy (SP) (pp. 36-52). IEEE. [36] Suthaharan S. Decision tree learning. In: Machine Learning Models and Algorithms for Big Data Classification: Thinking with Examples for Effective Learning. Boston, MA: Springer (2016). p. 237–269. [37] https://rubialesalberto.medium.com/qu%C3%A9-es-underfitting-y-overfitting- c73d51ffd3f9 [imagen] [38] J. Kolluri, V. K. Kotte, M. S. B. Phridviraj and S. Razia, "Reducing Overfitting Problem in Machine Learning Using Novel L1/4 Regularization Method," 2020 4th International Conference on Trends in Electronics and Informatics (ICOEI)(48184), Tirunelveli, India, 2020. [39] Lucía Moreno González-Páramo, Universidad de Cantabria, 2017, Herramientas avanzadas de análisis de datos de aplicación en Ingeniería Civil. 88 [40] Portugal, I., Alencar, P., & Cowan, D. (2018). The use of machine learning algorithms in recommender systems: A systematic review. Expert Systems with Applications, 97, 205-227. [41] Taiwo Oladipupo Ayodele (February 1st 2010). Types of Machine Learning Algorithms, New Advances in Machine Learning, Yagang Zhang, IntechOpen. [42]https://medium.com/@juanzambrano/aprendizaje-supervisado-o-no-supervisado- 39ccf1fd6e7b [imagen] [43] https://es.wikipedia.org/wiki/Aprendizaje_por_refuerzo[imagen] [44] Hertz, J. A. (2018). Introduction to the theory of neural computation. CRC Press. [45] Hecht-Nielsen, R. (1992). Theory of the backpropagation neural network. In Neural networks for perception. Academic Press. [46] Rico, C., Paredes, M., & Fernandez, N. (2009). Modelación de la estructura jerárquica de macroinvertebrados bentónicos a través de redes neuronales artificiales.Acta Biológica Colombiana,14(3), 71-96. [47] Flórez-Lpez, Raquel and J. F. Fernndez. “Las redes neuronales artificiales: fundamentos tericos y aplicaciones prcticas.” (2008). [48] Sarle, W. S. (1994). Neural networks and statistical models. [49] Araujo, A., Pérez, J., & Rodriguez, W. (2018). Aplicacion de una Red Neuronal Convolucional para el Reconocimiento de Personas a Través de la Voz. In Sexta Conferencia Nacional de Computación, Informática y Sistemas (Vol. 11). [50] Süsstrunk, S., Buckley, R., & Swen, S. (1999, January). Standard RGB color spaces. In Color and Imaging Conference (Vol. 1999, No. 1, pp. 127-134). Society for Imaging Science and Technology. [51] https://www.aprendemachinelearning.com/como-funcionan-las-convolutional- neural-networks-vision-por-ordenador/ [imagen] [52] Edwards, M., & Xie, X. (2016). Graph based convolutional neural network. arXiv preprint arXiv:1609.08965. [53] https://bootcampai.medium.com/redes-neuronales-convolucionales- 5e0ce960caf8 [imagen] 89 [54] Zhang, H., Weng, T. W., Chen, P. Y., Hsieh, C. J., & Daniel, L. (2018). Efficient neural network robustness certification with general activation functions. In Advances in neural information processing systems (pp. 4939-4948). [55] Albawi, S., Mohammed, T. A., & Al-Zawi, S. (2017, August). Understanding of a convolutional neural network. In 2017 International Conference on Engineering and Technology (ICET) (pp. 1-6). IEEE. [56] Y-Lan Boureau, Jean Ponce, and Yann Lecun. A theoretical analysis of feature pooling in visual recognition. In Proc. Int. Conf. Mach. Learning, 2010. [57] https://medium.com/@cleverpysolutions/red-convolucional-en-pytorch- c499ae8af6ca [imagen] [58] Robert Hecht-Nielsen ,Theory of the Backpropagation Neural Network, which appeared in Proceedings of the International Joint Conference on Neural Networks 1, 593–611, June 1989,Pages 65-93,9780127412528 [59] Chauvin, Y., & Rumelhart, D. E. (Eds.). (1995). Backpropagation: theory, architectures, and applications. Psychology press. [60] JACOBS, Robert A. Increased rates of convergence through learning rate adaptation. Neural networks, 1988, vol. 1, no 4, p. 295-307. [61] http://www.bdhammel.com/learning-rates/ [imagen] [62] HUTTER, Frank; HOOS, Holger; LEYTON-BROWN, Kevin. An efficient approach for assessing hyperparameter importance. En International conference on machine learning. PMLR, 2014. p. 754-762. [63] Baldi, P., & Sadowski, P. J. (2013). Understanding dropout. Advances in neural information processing systems, 26, 2814-2822. [64] Russakovsky, O., Deng, J., Su, H., Krause, J., Satheesh, S., Ma, S., ... & Berg, A. C. (2015). Imagenet large scale visual recognition challenge. International journal of computer vision, 115(3), 211-252. [65] Torrey, L., & Shavlik, J. (2010). Transfer learning. In Handbook of research on machine learning applications and trends: algorithms, methods, and techniques (pp. 242-264). IGI global. [66] Anderson, G. W., & Castano, D. J. (1995). Measures of fine tuning. Physics Letters B, 347(3-4), 300-308. [67] Juan, R. Q., & Mario, C. M. (2011). Redes neuronales artificiales para el procesamiento de imágenes, una revisión de la última década. RIEE&C, Revista de Ingeniería Eléctrica, Electrónica y Computación.