scieee AI-readable full text Open interactive document viewer

Herramientas para la construcción de narraciones con apoyo gráfico

Llorente Hernando, Sergio; Romano Ramos, Isabella

Abstract

El mundo tal y como lo conocemos está avanzando cada vez más y en todos los aspectos que conocemos, entre estos avances podemos destacar la esperanza de vida y el uso de las nuevas tecnologías. Aunque en principio no veamos mucha relación entre ambos conceptos, están mucho más unidos de lo que pensamos. El aumento de la esperanza de vida se debe a las mejoras de los procesos y condiciones médicas y sanitarias que han sido de revolución en los últimos 100 años, gracias a ello podemos vivir mucho más tiempo y disfrutar de la vida unos años más. Sin embargo, hay consecuencias que sufren las personas que alcanzan los años más avanzados de edad, entre tantas, las más importantes son el deterioro de algunas capacidades sensoriales, como lo pueden ser la vista o el oído; y capacidades cognitivas como la orientación o la memoria. En esta última es en la que se basa la principal enfermedad que afecta a las personas de mayor edad, el Alzheimer, que ataca directamente a la memoria destruyendo lentamente su capacidad hasta llegar a las funciones más básicas. Aquí es cuando entran las últimas innovaciones tecnológicas realizadas, en dónde introducimos el concepto de Inteligencia Artificial para la realización de este trabajo. En concreto, la generación de imágenes a través de esta. Nuestro objetivo es crear recuerdos representados por imágenes generadas automáticamente y al momento, a través de palabras del propio afectado por el Alzheimer, para poder construir un libro de vida, que le ayudará a través de terapias de reminiscencia que favorecen que la enfermedad avance paulatinamente.

Full text

Herramientas para la construcción de narraciones con apoyo gráco Tools for the construction of narrations with visual support Trabajo de Fin de Grado Curso 20232024 Autor Sergio Llorente Hernando Isabella Romano Ramos Director Gonzalo Mendez Pozo Pablo Gérvas Gómez-Navarro Doble Grado en Ingeniería Informática y ADE Facultad de Informática Universidad Complutense de Madrid Herramientas para la construcción de narraciones con apoyo gráco Tools for the construction of narrations with visual support Trabajo de Fin de Grado en Ingeniería Informática Autor Sergio Llorente Hernando Isabella Romano Ramos Director Gonzalo Mendez Pozo Pablo Gérvas Gómez-Navarro Convocatoria: Junio 2024 Doble Grado en Ingeniería Informática y ADE Facultad de Informática Universidad Complutense de Madrid 14 de mayo de 2024 Dedicatoria A todas aquellas personas que han visto como sus recuerdos o los de un ser querido se desvanecían. v Agradecimientos A todas las personas que han apoyado este proyecto y durante nuestra etapa universitaria. vii Resumen El mundo tal y como lo conocemos está avanzando cada vez más y en todos los aspectos que conocemos, entre estos avances podemos destacar la esperanza de vida y el uso de las nuevas tecnologías. Aunque en principio no veamos mucha relación entre ambos conceptos, están mucho más unidos de lo que pensamos. El aumento de la esperanza de vida se debe a las mejoras de los procesos y condiciones médicas y sanitarias que han sido de revolución en los últimos 100 años, gracias a ello podemos vivir mucho más tiempo y disfrutar de la vida unos años más. Sin embargo, hay consecuencias que sufren las personas que alcanzan los años más avanzados de edad, entre tantas, las más importantes son el deterioro de algunas capacidades sensoriales, como lo pueden ser la vista o el oído; y capacidades cognitivas como la orientación o la memoria. En esta última es en la que se basa la principal enfermedad que afecta a las personas de mayor edad, el Alzheimer, que ataca directamente a la memoria destruyendo lentamente su capacidad hasta llegar a las funciones más básicas. Aquí es cuando entran las últimas innovaciones tecnológicas realizadas, en dónde introducimos el concepto de Inteligencia Articial para la realización de este trabajo. En concreto, la generación de imágenes a través de esta. Nuestro objetivo es crear recuerdos representados por imágenes generadas automáticamente y al momento, a través de palabras del propio afectado por el Alzheimer, para poder construir un libro de vida, que le ayudará a través de terapias de reminiscencia que favorecen que la enfermedad avance paulatinamente. Palabras clave Inteligencia articial, generación de imágenes, prompt, Alzheimer, Stable Diusion, redes neuronales. ix Índice de guras 1.1. Obstrucción de neuronas por la vitamina tau (Extremadura, 2020) . . 2 2.1. Estructura del perceptrón (Pavithra, 2023) . . . . . . . . . . . . . . . 12 2.2. Red neuronal feedforward (Berzal, 2019b) . . . . . . . . . . . . . . . 13 2.3. Red neuronal recurrente (Sensio, 2020) . . . . . . . . . . . . . . . . . 14 2.4. Función matemática del gradiente (Hernández, 2020) . . . . . . . . . 15 2.5. Red neuronal Long Short Term Memory (Ferro et al., 2020) . . . . . 16 2.6. Red neuronal convolucional (Andrade et al., 2021) . . . . . . . . . . . 18 2.7. Red neuronal generativa antagónica (Franco, 2014) . . . . . . . . . . 20 2.8. Red neuronal Transformer (Sotoquirá, 2020) . . . . . . . . . . . . . . 22 2.9. difusión directa de una imagen de un cachorro de Shiba Inu comiendo 23 2.10. difusión inversa de una imagen de un cachorro de Shiba Inu comiendo 24 2.11. Representación gráca del proceso de conversión al espacio latente (Rombachetal.,2022).......................... 24 2.12. Arquitectura de una red U-Net (Zhang, 2019) . . . . . . . . . . . . . 26 2.13. Representación gráca del funcionamiento de Stable Diusion (Patil etal.,2022)................................ 27 3.1. Dataset seleccionado para el entrenamiento de personas con Lora . . 35 3.2. Procedimiento del entrenamiento mediante Dreambooth . . . . . . . . 36 3.3. Resultados de entrenamiento de una persona con aplicación NMKD GUI .................................... 37 3.4. Resultados de entrenamiento de una persona con diferentes estilos . . 38 3.5. Dataset seleccionado para el entrenamiento con lugares . . . . . . . . 38 xvii 3.6. Dataset seleccionado para el entrenamiento con animales . . . . . . . 39 3.7. Parámetros relevantes del entrenamiento con LoRA . . . . . . . . . . 41 3.8. Mismo prompt con 1000, 2000 y 10.000 pasos de entrenamiento . . . 41 3.9. Mismo prompt y pasos para la generación de un perro con las técnicas deDreamboothyLORA......................... 43 3.10. Aplicación SDGUI, utilizada para probar todos los modelos generadoresdeimágenes ............................ 45 3.11. La basílica en primavera, en un día nublado y lluvioso . . . . . . . . . 55 3.12. La basílica junto con árboles y personas . . . . . . . . . . . . . . . . 55 3.13. Resultados de imagenes del lugar entrenado al estilo Van Gogh y viñeta 56 3.14. Una fotografía de Hachiko con un gorro . . . . . . . . . . . . . . . . . 57 3.15. Una fotografía de hachiko con una persona . . . . . . . . . . . . . . . 57 3.16. Dataset del entrenamiento con el salón de Friends (frndslivro) . . . . 58 3.17. Resultados de la generación de imágenes con el modelo frndslivro . 59 3.18. Mismo prompt con 20, 40 y 50 steps al mezclar dos elementos: persona ylugar................................... 59 3.19. Duplicidad de elementos . . . . . . . . . . . . . . . . . . . . . . . . . 61 3.20. Conguración de los parámetros en la técnica de inpainting . . . . . . 63 3.21. Ventana de la WEBUI implementada para realizar el painting . . . . 64 3.22. Evolución de una imagen con la técnica de inpainting aplicada . . . . 65 4.1. Prototipo de la aplicación en Python . . . . . . . . . . . . . . . . . . 68 4.2. Aplicación generadora de imágenes . . . . . . . . . . . . . . . . . . . 70 4.3. Ejecucióndelaapp............................ 71 4.4. Portada de la aplicación . . . . . . . . . . . . . . . . . . . . . . . . . 71 5.1. Resultados obtenidos bajo un mismo prompt en las 3 fases . . . . . . 74 5.2. Dataset seleccionado para el entrenamiento con Juan de joven . . . . 75 5.3. Dataset seleccionado para el entrenamiento con Juan de adulto . . . . 77 5.4. Dataset seleccionado para el entrenamiento con Juan de anciano . . . 79 5.5. Portada visual del libro de vida en la aplicación . . . . . . . . . . . . 81 5.6. Capítulo 1 del libro de vida en la aplicación . . . . . . . . . . . . . . 82 5.7. Capítulos 2 y 3 del libro de vida en la aplicación . . . . . . . . . . . . 82 6.1. Clogging of neurons by vitamin tau (Extremadura, 2020) . . . . . . . 88 Índice de tablas 3.1. Tabla comparativa de entrenamientos mediante Dreambooth. . . . . . 48 3.2. Tabla comparativa de entrenamientos mediante Dreambooth. . . . . . 50 3.3. Tabla comparativa CFG Scale . . . . . . . . . . . . . . . . . . . . . . 53 5.1. Tabla de resultados obtenidos del Capítulo 1 de juventud del paciente 76 5.2. Tabla de resultados obtenidos del Capítulo 2 de adultez del paciente . 78 5.3. Tabla de resultados obtenidos del Capítulo 3 de vejez del paciente . . 80 xxi Cap´ ıtulo 1 Introducción Todo se hunde en la niebla del olvido pero cuando la niebla se despeja, el olvido está lleno de memoria  Mario Benedetti 1.1. Motivación Nuestra existencia se compone esencialmente de vivencias, momentos únicos y personales que marcan el recorrido en la vida de cada uno. Nuestra identidad se forma con el conjunto de los eventos que vamos experimentando en el camino y para preservarlos, el cerebro los va almacenando en forma de recuerdos a lo largo de toda nuestra vida. Desde nuestro primer recuerdo, que normalmente está comprendido entre los 2 y 4 años, debido a que la formación de nuevas neuronas impide que el hipocampo almacene recuerdos hasta esa edad, fenómeno que se conoce como amnesia infantil (Freud, 1895). Hasta el último, el cual puede darse el caso de ser distorsionado o borrado completamente debido al deterioro de nuestro cerebro y la imposibilidad de nuestras neuronas a realizar las conexiones posibles para ello. Este último caso incluye a una enfermedad degenerativa comúnmente conocida como Alzheimer, que actualmente afecta a más de 55 millones de personas en todo el mundo. Sin embargo, no son sólo estas personas quiénes la sufren, sino todos sus allegados también. 1.2. ¾Qué es el Alzheimer? El Alzheimer es una enfermedad que destruye lentamente la memoria y que, además, también va deteriorando los pensamientos y la conducta, hasta que poco a poco se ven afectadas las funciones más básicas. El Alzheimer es la principal causa de la demencia (on Aging, 2023). 1 2 Capítulo 1. Introducción El cerebro envía estímulos químicos a través de las neuronas creando conexiones cerebrales, y mediante miles de millones de estas conexiones, se obtienen nuestros recuerdos, sentimientos, pensamientos y capacidades locomotoras. Aunque todavía no se sabe con certeza el motivo que causa esta enfermedad en el cerebro, se ha investigado que hay dos proteínas en el cerebro que con el tiempo se vuelven tóxicas, tau y beta-amiloide, que se acumulan hasta obstruir la conexión entre las neuronas y provocar que estas mueran, como se puede ver en 6.1. Con la destrucción de las neuronas, el cerebro se va encogiendo y con él también severamente, el hipocampo, que es una parte clave fundamental en nuestro cerebro a la hora de formar nuevos recuerdos y para el aprendizaje, lo que causa que nuestra memoria, nuestra capacidad para tomar decisiones y el habla, fallen. Para ayudar a combatir esta enfermedad existen métodos farmacológicos y no farmacológicos. En este proyecto nos centraremos en el segundo grupo, más concretamente, en la terapia de reminiscencia. Figura 1.1: Obstrucción de neuronas por la vitamina tau (Extremadura, 2020) 1.3. La terapia de reminiscencia Afortunadamente, existen terapias que ayudan a mejorar la calidad de vida de las personas que padecen esta enfermedad. Entre ellas la estimulación cognitiva, orientación a la realidad, ejercicio terapéutico, musicoterapia, y estimulación multisensorial, entre otras (Andreu, 2020). Nuestro proyecto está ligado a la terapia de reminiscencia, que es un proceso que ayuda a la persona a evocar momentos y experiencias emocionales e integrarlos en el presente, lo cual puede mejorar la autoestima y la calidad de vida (González- 1.3. La terapia de reminiscencia 3 Arévalo, 2015). En concreto, la técnica consiste en mostrar a la persona una herramienta o material visual, musical o incluso, olfativo, vinculado a su propia experiencia o hechos históricos. De esta manera se promoverá una revisión de la vida de la persona, de modo que se consiga una conexión con sus vivencias, con el n de reconstruir un libro de vida y reforzar su identidad como persona. Esta terapia se puede clasicar como un tipo de ensoñación que los lleva a su pasado, lo que les permite entrar en un estado de concentración con el n de poder reforzar su memoria general, lo cual fortalece al cerebro y desarrolla sus capacidades sociales, estimula recuerdos a través de órganos sensoriales y activa su sentido de la identidad. Algunos de los benecios de la creación del libro de vida y la terapia ocupacional de reminiscencia, entre muchos otros, son: Bienestar emocional: Se permite que las personas puedan recordar experiencias positivas y signicativas de sus vidas, lo cual puede generar sensaciones satisfactorias, de alegría y felicidad. Autoconocimiento: Cuando una persona revisa y reexiona sobre eventos pasados y logros personales, puede obtener una comprensión de sí misma. Mediante la interacción de sus recuerdos, ayudado de la guía de cuidadores y terapeutas, puede evocar aspectos de sus valores, fortalezas y debilidades que de otra manera no serían accesibles. Sentido y propósito personal: Mediante la rememoración de escenas signicativas, las personas pueden encontrar una guía emocional que permite dar sentido y dirección a sus vidas, especialmente en momentos de confusión o desorientación. Reducción del estrés: Al enfocarse en recuerdos positivos, las personas experimentan una sensación de calma, de tranquilidad y de bienestar emocional, y encuentran un espacio para escapar del estrés y tensiones del presente. Favorecer las relaciones sociales: El hecho de compartir recuerdos y experiencias con otras personas, puede fortalecer los lazos sociales y fomentar una mayor conexión con cuidadores, familia y amigos, lo cual es altamente satisfactorio para el paciente. Aumentar el desarrollo del lenguaje y la persona: Al relatar experiencias pasadas, las personas mejoran su capacidad para comunicarse de manera efectiva, así como su expresión verbal, lo cual impulsa un crecimiento personal signicativo a nivel emocional e intelectual. 10 Capítulo 2. Estado de la Cuestión tarse a una amplia variedad de tareas, con el n de percibir su entorno y aplicando los conocimientos y datos almacenados, tener la capacidad de tomar decisiones para lograr la consecución de objetivos proporcionados. Al hablar sobre inteligencia articial, es muy importante mencionar los conceptos de aprendizaje automático ( machine learning ) y aprendizaje profundo ( deep learning ), que son subconjuntos de la inteligencia articial que comparten la meta común de permitir a las máquinas aprender y mejorar su rendimiento en tareas especícas sin intervención humana. El aprendizaje automático es un enfoque que abarca diferentes técnicas en las que se crean modelos de entrenamiento a partir de datos para aplicar los conocimientos adquiridos con el n de realizar predicciones o tomar decisiones en función de nuevos datos. Es decir, se utiliza para mejorar el rendimiento de la inteligencia articial en tareas especícas a medida que se expone a mayor cantidad de datos, que en general requiere intervención humana de forma manual (Microsoft, 2024). Algunas categorías dentro del aprendizaje automático son: Aprendizaje supervisado: Un algoritmo se entrena con un conjunto de datos etiquetado, donde se le proporcionan ejemplos de entrada y la salida esperada. El modelo aprende a realizar predicciones o tomar decisiones basándose en estos ejemplos. Aprendizaje no supervisado: El algoritmo se enfrenta a datos no etiquetados y debe encontrar patrones o estructuras por sí mismo. Esto se utiliza comúnmente para la clasicación o agrupación de datos. Aprendizaje por refuerzo: El modelo aprende a través de la interacción con un entorno. Recibe recompensas o castigos según las acciones que realiza, lo que le ayuda a aprender qué comportamientos son más beneciosos. El aprendizaje profundo, a lo que respecta, es una disciplina dentro del aprendizaje automático que utiliza redes neuronales profundas con múltiples capas, que contienen datos de entrada y salida, de manera que cada capa puede aprender de la anterior a partir de los datos transformados para realizar predicciones y aprender de manera automatizada, reduciendo gran parte de la intervención humana y permitiendo aumentar el conjunto de los datos a tratar (Microsoft, 2024). 2.2. Redes neuronales 11 2.2. Redes neuronales Las redes neuronales fueron creadas con el objetivo de simular el comportamiento del cerebro humano para que las máquinas pudieran ser capaces de aprender tareas computacionales de forma similar a las neuronas de nuestro sistema nervioso (González y Hernando, 1995). La forma más básica de una neurona articial se puede denir a través del concepto de perceptrón. El concepto de perceptrón fue visto por primera vez en 1956 por Frank Rosenblatt, psicólogo estadounidense. Un perceptrón es una unidad de red neuronal que funciona a través de un algoritmo de clasicación que realiza determinados cálculos en el que se ponderan las entradas, sumándolas y generando así una salida binaria, de manera que permite separar los datos en dos categorías (Rosenblatt, 1958). Para ello, cada entrada tiene asignada un peso que determina la relevancia de esta para su cálculo posterior en la suma ponderada, es decir, cada entrada se multiplica por su peso correspondiente para determinar su importancia relativa. La salida, además, se calcula aplicando una función de activación al resultado de la suma ponderada previamente calculada para así dictaminar la salida nal (Berzal, 2019b). Es decir, la función de activación es un método mediante el cual se decide la salida de la neurona teniendo en cuenta sus entradas. El perceptrón puede constar de una sola capa, que se compone de entrada y salida, o puede constar de múltiples capas, más conocidos como MLP ( Multilayer Perceptrons ). A diferencia de los perceptrones simples, los MLP constan de unas capas ocultas adicionales, componiéndose así de múltiples neuronas conectadas que se dividen típicamente en tres capas: capa de entrada, capa oculta y capa de salida. En resumidas cuentas, los perceptrones son la forma más simple de una red neuronal. La primera imagen generada por Inteligencia Articial fue en 1957, por el propio creador del perceptrón, Frank Rosenblatt, quien entrenó al propio perceptrón con una serie de imágenes de rostros humanos para que éste aprendiera e identicara un patrón y reprodujera una nueva imagen. La imagen fue generada a través de una matriz de puntos de luz que aunque no se asemejara a lo que realmente era una fotografía de una persona real, hizo que este fenómeno marca un antes y un después en el desarrollo de la inteligencia articial generativa. ¾Qué tipos de redes neuronales existen? La variedad de redes neuronales es considerablemente grande, y cada una de ellas se han ido desarrollando y diseñando para elaborar tareas especícas. De esta manera, las diferentes redes neuronales han ido adoptando diferentes arquitecturas para tratar diferentes tipos de datos. Entre ellas, mencionaremos las más relevantes hoy en día y, analizaremos el funcionamiento de cada una para tener claro cuál es la más adecuada para el modelo de inteligencia articial generativa de imágenes, haciendo una comparación entre unas 12 Capítulo 2. Estado de la Cuestión Figura 2.1: Estructura del perceptrón (Pavithra, 2023) y otras. 2.2.1. Redes Neuronales Feedforward (FNN) Son un tipo de redes multicapa, que como hemos visto, están formadas por conjuntos de neuronas agrupadas en varios niveles o capas, en los que cada neurona está conectada y recibe señales de otras neuronas pertenecientes a la capa anterior, que a su vez, se encargan de transmitir información por señales a las neuronas de la capa posterior, en dirección a la salida de la red. De esta forma, las salidas de cada capa constituyen la entrada a la capa inmediatamente posterior (Russell y Norvig, 2016). En todo caso, las conexiones de la red uyen exclusivamente en una sola y única dirección, de ahí el nombre feedforward, que traducido es hacia delante. Por norma general, la arquitectura típica que sigue una red neuronal multicapa consta de tres capas: capa de entrada, capa oculta y capa de salida (Berzal, 2019b). Sin embargo, cabe la posibilidad de que haya más de una capa de cada tipo, y cuando se da el caso de que la red consta de más de una capa oculta, la red se calica como profunda, traducida al inglés como deep neural network . Concretamente, añadir más de una capa oculta a la red permite crear un modelo interno que reconoce patrones y proporciona un mayor rendimiento en la interpretación y estructuración de diferentes propiedades de objetos. Por ello, estas redes fueron diseñadas especí- 2.2. Redes neuronales 13 camente para resolver problemas de clasicación, regresión y por supuesto, como hemos visto, realizar reconocimiento de patrones. Figura 2.2: Red neuronal feedforward (Berzal, 2019b) 2.2.2. Redes Neuronales Recurrentes (RNN) Como hemos visto, las redes neuronales feedforward están habilitadas para que la información uya en una sola dirección. Sin embargo, cuando se les proporciona una memoria, el resultado que se obtiene son las redes neuronales recurrentes, o Recurrent Neural Networks (RNN) en inglés. El origen de estas redes se popularizó en 1982 por el físico americano John Hopeld, en las que se destacan por su comportamiento dinámico y estable (Berzal, 2019b). ¾Y cómo es posible añadir memoria a las propias conexiones? Simplemente generalizando sus conexiones, es decir, alimentar a sus propias entradas o inputs con las salidas o outputs generados previamente por las conexiones anteriores provocando que el modo en el que uyen las conexiones sea bidireccional. Es decir, incluyendo conexiones hacia atrás con las que se trabaja en una serie de pasos de tiempo, conocidos como timesteps , donde se procesan los elementos de la secuencia uno por uno, manteniendo una memoria de los estados anteriores a medida que avanzan en la secuencia. El entrenamiento de redes neuronales de estas características se realiza contando con diferentes algoritmos y técnicas, la más básica y conocida en este tipo de red neuronal es el algoritmo de propagación de errores ( back-propagation en inglés) formalizado en 1986 por Rumelhart, Hinton y Williams (Berzal, 2019b). Este método, en concreto, consiste en aplicar un patrón a la primera capa de la red, el cual se va 14 Capítulo 2. Estado de la Cuestión propagando hacia las capas superiores con el objetivo de generar una salida que se pueda comparar con la salida deseada y así poder calcular el error para cada neurona de la salida obtenida en función de los diferentes parámetros de la red. En otras palabras, cómo varía el error en relación con la variación de los parámetros de la red neuronal. Si a este fenómeno le sumamos la variable del tiempo, se obtiene la técnica de retropropagación a través del tiempo ( backpropagatio n through time, BPTT), en la que después de analizarse la secuencia completa, calcular el error y cambiar los parámetros para minimizar el mismo, se propaga el error a través del tiempo desde la última capa hasta la superior en cada paso de tiempo con el n de que la red aprenda de las secuencias y mejore su predicción futura. Este método combinado con la técnica del gradiente descendente (en inglés gradient descent ) encargada de la optimización del error buscando los parámetros adecuados para poder reducirlo al mínimo es el modo de aprendizaje supervisado más popular que existe. Aunque, como hemos visto anteriormente, no es el único, ya que coexiste con técnicas de entrenamiento como el aprendizaje no supervisado y el aprendizaje por refuerzo. Así que podemos concluir en que las redes neuronales son idóneas para tareas de modelado de datos secuenciales y con dependencias temporales, como lo pueden ser el procesamiento de lenguaje natural, la generación de texto o la traducción automática, entre muchas otras. Figura 2.3: Red neuronal recurrente (Sensio, 2020) 2.2.3. Redes Neuronales LSTM Las redes neuronales Long Short-Term Memory surgen a partir de las redes neuronales recurrentes cuyo principal objetivo y propósito es raticar el problema del 2.2. Redes neuronales 15 desvanecimiento del gradiente o conocido en inglés como vanishing gradient problem (Hochreiter y Schmidhuber, 1997). En primer lugar y para entender en qué consiste este problema, es necesario saber qué es exactamente un gradiente y a qué nos referimos cuando hablamos del desvanecimiento del mismo. Un gradiente es una medida que determina la variación de una función con respecto al cambio que se produce en sus variables, ya sea en términos de optimización, rapidez o maximización de la función objetivo (Sanderson, 2017). Matemáticamente, se puede entender como un vector multivariable cuyas variables son las derivadas parciales de dicha función. Se puede ver en el ejemplo de la gura 2.4. Geométricamente hablando, el gradiente indica la dirección en la que la función crece a mayor velocidad y, de esta manera, podemos concluir que el uso de algoritmo del gradiente descendente ( gradient descent ) se hace con el n de ajustar los parámetros para reducir al mínimo la diferencia entre los valores obtenidos y los deseados. Un claro ejemplo de ello son los modelos de predicción, en los que se busca reducir dichas predicciones con respecto a los valores reales. Figura 2.4: Función matemática del gradiente (Hernández, 2020) Ahora bien, cuando hablamos del desvanecimiento del gradiente ( vanishing gradient problem ) nos referimos al fenómeno que ocurre en la propagación hacia atrás, cuando a medida que se va produciendo la propagación en capas cada vez más profundas, el gradiente va disminuyendo hasta llegar a ser tan pequeño que las capas superiores sean incapaces de aprender de manera efectiva. Este tipo de problema es común en redes conformadas por una gran cantidad de capas, dado que se disminuye exponencialmente a medida que va recorriendo cada capa hasta impedir que los pesos se actualicen de manera correcta y que puedan tener un aprendizaje lo su- cientemente eciente para ser capaces de resolver patrones complejos. La solución a este problema se abordó introduciendo nuevos componentes a la red que ayudan y controlan el ujo de información de la red, consiguiendo aumentar la memoria del conjunto de la red al almacenar la información durante periodos más largos de tiempo. Los componentes principales son los siguientes: Memory cells o celdas de memoria: contienen la información relevante y actualizada a lo largo del tiempo. Input gates o puertas de entrada: son las encargadas de controlar la cantidad 16 Capítulo 2. Estado de la Cuestión de información que entra a las celdas de memoria. Forget gates o puertas de olvido: seleccionan la información que debe ser eliminada de la celda, al no ser de utilidad. Output gates o puertas de salida: su tarea radica en seleccionar la información de la celda que va a pasar a la siguiente capa de la red, basándose en el estado oculto actual. De este modo, se consigue erradicar el problema del desvanecimiento del gradiente ( vanishing gradient problem ) y se consigue procesar grandes secuencias de datos durante largos periodos de tiempo. Es especialmente útil en tareas que requieren capturar grandes dependencias de datos temporales, ejemplo de ello son el procesado y/o reconocimiento de lenguaje natural, en la traducción automática y en la generación de texto. Figura 2.5: Red neuronal Long Short Term Memory (Ferro et al., 2020) 2.2.4. Redes Neuronales Convolucionales (CNN) Las redes neuronales convolucionales se introdujeron por primera vez en la década de los 50 por David Hubel y Torsten Wiesel cuando experimentaron con las 2.2. Redes neuronales 17 neuronas biológicas, lo que le sirvió de inspiración a Kunihiko Fukushima en la década de los 80 para desarrollar el Neocognitron, una red neuronal que se conoce como la primera CNN. Este concepto fue cobrando forma con el paso de los años y el modelo tal y como lo conocemos hoy en día, fue obra de Yann LeCun en 1998 al introducir el aprendizaje a través de la técnica de backforwarding (Berzal, 2019b). Las redes neuronales convolutivas están formadas por una secuencia de capas que podemos clasicar en tres tipos: capas convolutivas, capas de pooling y capas completamente conectadas. Capas convolutivas: suponen la capa principal de la red, y el papel que desempeña en el procesamiento de imágenes, es realizar la gran parte de los cálculos que se necesitan para extraer características de las imágenes. Para ello, hace falta la intervención de tres elementos principales: datos de entrada, un ltro y un mapa de características. Los datos de entrada son el elemento que se trata de analizar, por ejemplo, en el caso de una imagen de color que estuviera compuesta por una matriz de píxeles en 3D, las dimensiones serían la altura, la anchura y la profundidad de la misma. Por otro lado, el ltro o kernel, se trata de un detector de características, que va pasando por cada área de la imagen para identicar diferentes características, este proceso se denomina convolución. El siguiente paso es representar mediante una matriz bidimensional de pesos, que al aplicarse en cada área calcula un producto escalar a partir de los píxeles de los datos de entrada y del ltro. El producto escalar se utiliza como input en la matriz de salida para que el ltro sea capaz de repetir el proceso por toda la imágen. La nalidad del ltro es ser capaz de distinguir diferentes patrones, como lo pueden ser texturas, bordes o guras. Finalmente, la suma de los diferentes productos escalares y el o los ltros utilizados, da como resultado nal lo que se conoce como mapa de características. Después de cada capa de convolución, se aplica una función de activación no lineal al mapa de características, a través de la ReLU ( Rectied Linear Unit ). El n de esta función es introducir no linealidad a la red, lo que le permite mejorar la complejidad entre las diferentes características (Krizhevsky et al., 2017). Capa de agrupación o pooling: son capas dedicadas a reducir la dimensión del mapa a través de la disminución del número de parámetros de entrada. Comúnmente, se utilizan dos técnicas conocidas como max pooling y average pooling . Max pooling consiste en seleccionar el pixel con mayor valor a medida que el ltro recorre la imagen para enviar el máximo a la matriz de salida, en cambio, average pooling lo que busca es calcular el valor medio del campo. El inconveniente que presenta esta capa es la gran pérdida de información que existe, sin embargo, presenta una gran ventaja a la hora de reducir la complejidad computacional y concentrarse en las características más importantes, lo 18 Capítulo 2. Estado de la Cuestión que claramente, mejora el rendimiento del modelo y evita el riesgo de que se produzca un sobreajuste. *explicar sobreajuste Capa totalmente conectada: en las últimas capas de la red los nodos están conectados con los de la capa anterior para producir la salida nal incorporando las características extraídas y aprendidas de los procesos realizados en las capas anteriores. Las capas totalmente conectadas se preocupan de realizar las funciones de clasicación de la imagen y de regresión para producir el resultado deseado (Krizhevsky et al., 2017). Las principales funciones y tareas que abarcan las redes neuronales convolucionales son el reconocimiento de imágenes identicando y detectando objetos, personas o animales; análisis de imágenes para diferentes propósitos, por ejemplo, médicos; reconocimiento facial; segmentación semántica; y por supuesto, generación de imágenes. Figura 2.6: Red neuronal convolucional (Andrade et al., 2021) 2.2.5. Redes Generativas Adversarias (GAN) Las redes GAN, del inglés, Generative Adversarial Networks son un tipo de redes neuronales profundas relativamente novedosas, ya que surgieron en el año 2014 por primera vez por Ian Goodfellow y sus compañeros en la Universidad de Montréal (Goodfellow et al., 2014). El funcionamiento de este tipo de redes involucra a dos redes neuronales diferentes, en las que cada una se encarga de realizar una tarea especíca y competir contra la otra, para así, cada vez ir mejorando más los resultados obtenidos. 2.2. Redes neuronales 19 La primera red neuronal de este sistema se conoce como Generador y se encarga de producir y crear datos totalmente nuevos basándose en los datos aportados en el entrenamiento de la red. Se le asigna como entrada un vector de ruido y es responsable de crear datos que se asimilen a los datos originales. El entrenamiento del Generador es constante y siempre busca mejorar los resultados a medida que los va produciendo para alcanzar el máximo realismo posible. La segunda red neuronal de la que se compone este sistema es el Discriminador, se dedica a analizar los resultados producidos por el Generador e identicar si son los reales o los creados por la red. A medida que va avanzando su entrenamiento, la capacidad del discriminador en distinguir entre un resultado real o falso dada una cierta entrada va mejorando cada vez más, haciendo que su predicción sea más certera. Un clásico ejemplo llevado a la vida real de esto puede ser el caso de un falsicador de billetes y un detective, en el que el primero tiene como muestra cierta cantidad de billetes e intenta replicarlos para que más adelante el segundo agente intente detectar la copia del original. A medida que pasa el tiempo, cada uno de los dos individuos van mejorando en su tarea llegando a un nivel de equilibrio. Matemáticamente, el discriminador tiene que generar una salida, expresada como D(x), basándose en la probabilidad de que la entrada sea sintética o real, suponiendo que en cuanto más cercana a 1 sea, la entrada es original. Y por el contrario y dada una muestra aleatoria z en función de cierta distribución de probabilidad, el generador tiene que producir una muestra, expresada como G(z), que el discriminador tiene que clasicar como cercana a 0, produciendo una salida del tipo D(G(z)) en la que el generador tiene que intentar que su probabilidad se aproxime a 1, justo al contrario que el discriminador. Suponiendo que entre todas las muestras del modelo, una mitad son auténticas y la otra mitad son falsas, se tiene que alcanzar el conocido como equilibrio de Nash en el que las muestras del modelo son igual a los datos y en las que la probabilidad del discriminador es D(x) 0,5 para todo x ((Berzal, 2019a). Por último, cabe destacar que para el entrenamiento de este tipo de red se utilizan los métodos del gradiente descendente ( gradient descent ) y backpropagation, vistos en redes neuronales anteriores. Este tipo de redes son ideales para tareas que requieren creación de datos realistas y artísticos, como lo pueden ser la generación de imágenes, de música o incluso, síntesis de voz. 2.2.6. Redes Neuronales Transformer Las redes neuronales Transformer son las más actuales tratadas en este trabajo, surgieron en 2017 a través del artículo Attention is all you need elaborado por Vaswani et al.. El artículo trata una mejora de las redes recurrentes y convolucionales 26 Capítulo 2. Estado de la Cuestión Figura 2.12: Arquitectura de una red U-Net (Zhang, 2019) Autocodicador variacional VAE: es un tipo de red neuronal que al igual que las redes U-Net consta de dos componentes: un codicador y un decodicador, sin embargo sus funciones distan mucho las unas de las otras. El primer componente del autocodicador variacional se encarga de uno de los primeros pasos que realiza Stable Diusion, que es convertir el espacio de píxeles de la imagen en un tensor dentro del espacio latente de menores dimensiones sustrayendo las características más relevantes de la imagen original y comprimiéndolas en el tensor latente. Y al nal del proceso de difusión, se parte del tensor del espacio latente con el que se ha trabajado, para transformarlo en la imagen nal generada en una escala de 512x512 píxeles. 2.3.2. Herramientas de Inteligencia articial generadoras de imágenes El mercado de la generación de imágenes a través de inteligencia articial es cada vez más amplio a medida que van surgiendo nuevas compañías y laboratorios independientes que tratan de implementar esta tecnología al mismo tiempo que tratan de diversicarse en el sector. Sin embargo, entre todas las existentes hay 3 que han adquirido gran importancia, presentando a su vez todas ellas características diferentes: Stable Diusion, DALL-E y Midjourney. 2.3.2.1. DALL-E DALL-E surge del acrónimo entre Dalí, por el famoso pintor español y WALL-E, el robot de la película de Disney Pixar. La herramienta fue lanzada por la empre- 2.3. Stable Diusion 27 Figura 2.13: Representación gráca del funcionamiento de Stable Diusion (Patil et al., 2022) sa OpenAI en 2021, y se creó de manera que representa el funcionamiento de una red neuronal cuyo modelo de lenguaje sigue el comportamiento de un decodicador Transformer y una red GAN, como hemos visto recientemente en el apartado que explica el funcionamiento de este tipos de redes neuronales. DALL-E incorpora la tecnología GPT para generar imágenes acorde con el texto pedido y es capaz de interpretar el texto y crear contenido jamás visto a partir de este. Entre las habilidades que presenta se incluyen la combinación de conceptos y mezcla de todo tipo 28 Capítulo 2. Estado de la Cuestión de texturas, formas geométricas, cualidades y características, además de incorporar cierto conocimiento geográco (Ramesh et al., 2021). Actualmente existen actualizaciones sobre el sistema de DALL-E, habiéndose alcanzado la versión 3 que incluye una mejora en la interpretación y representación de conceptos, de forma más detallada y precisa. Entre los principales benecios que presenta el uso de DALL-E se incluye la rapidez en la generación de las imágenes y el alto realismo que presentan las mismas. El modo de uso es mediante una versión Beta a través de su página web utilizando lo que se conoce como "Playground", es decir, una web que funciona a través de un número limitado de peticiones, o mediante el modo diseñado para los desarrolladores que requiere la incorporación de una API, es decir, fragmentos de código en python que permiten implementar funciones de DALL-E que permiten generar imágenes en local. Ambas opciones son de pago en las que se cobra por cada generación y el código fuente no está disponible para los usuarios. 2.3.2.2. Midjourney Midjourney es un laboratorio independiente que surge cuando profesionales de éxito pertenecientes a diferentes campos se unieron para crear un servicio que pretende potenciar la creatividad a través de técnicas de inteligencia articial (Midjourney, 2022). A diferencia de otras, tiene un modo particular de uso ya que funciona a través de la aplicación Discord. Discord es una aplicación de mensajería instantánea cuyo cometido es conectar a las personas a través de conversaciones de texto, voz o vídeo. Además, existen "servidores"que son comunidades de varias personas para cualquier propósito como grupos de trabajo o de videojuegos (Discord, 2015). Discord tiene la capacidad de añadir bots a los chats, un bot es un programa software diseñado para automatizar la ejecución de determinadas tareas de forma repetitiva y rápida, además tiene la capacidad de adaptarse a los cambios que puedan suceder en estas en función de lo que se necesite. Ahora bien, se dice que el modo de funcionamiento es diferente al de otras plataformas generativas de imágenes porque utiliza e implementa un bot en la aplicación Discord que es el encargado de procesar las peticiones de imágenes y generarlas a partir del comando imagine . Midjourney, por defecto, te mostrará 4 imágenes en la salida que se corresponden con lo pedido por el prompt . Si se desea escoger una de ellas para seguir adaptándolo a lo que se quiere exactamente, es posible. Además, se puede elegir la escala de la imagen e incluso, seleccionar únicamente un área en especíco de la misma para poder modicar y moldearla según se desee. 2.4. Conclusiones del estado de la cuestión 29 Lo que caracteriza a Midjourney es la gran calidad y creatividad que presenta el contenido de sus imágenes, lo que sirve de gran ayuda como herramienta de apoyo para profesiones como los diseñadores grácos. Incluso, se ha llegado a armar que Midjourney es la que más incluye al usuario en el proceso de creación de las imágenes (Jaruga-Rozdolska, 2022). Los inconvenientes que presenta es el plan de pago al que hay que suscribirse en cualquier tipo de membresía mensual para poder utilizarla siendo la más básica de 10 dólares mensuales y la más avanzada de 120 dólares. Adicionalmente, al ser de código cerrado, no se puede acceder a su funcionamiento interno para realizar entrenamientos propios, al igual que en el caso de DALL-E. 2.4. Conclusiones del estado de la cuestión Una vez expuestos los recursos que teníamos a considerar para la elaboración más adecuada del proyecto atendiendo al propósito del mismo. Hemos reparado en que la mejor opción nalmente es el software de Stable Diusion que funciona a través de un conjunto sincronizado de varias redes neuronales. Hemos podido ver la evolución que ha llevado a las redes neuronales a implementar diferentes técnicas para conseguir los mejores resultados en una gran amplitud y variedad de tareas como predicción, procesamiento del lenguaje natural y de imágenes, e incluso generación de contenido, que es en lo que se centra este proyecto. Desde los inicios de las redes neuronales a partir del perceptrón hasta la actualidad, con redes neuronales capaces de analizar texto y convertirlo en una representación visual, hemos comprendido que los avances que se están produciendo en el campo de la inteligencia articial son cada vez más grandes, consiguiendo alcanzar resultados que suponen que la vida para el ser humano sea cada vez más sencilla a través de la automatización de procesos y simplicación de tareas. Estos avances pueden suponer un antes y un después, no solo en el campo de la informática, sino en campos como la medicina, el derecho o en nuestro caso, la terapia. Con la elección de los recursos ya decidida, en el capítulo 3 que viene a continuación, abordaremos como hemos explotado las herramientas que disponíamos para poder generar los mejores resultados posibles y acordes con los objetivos que teníamos establecidos al inicio de este proyecto. Para ello, veremos aspectos relevantes en el proceso de generación de imágenes como los diferentes modelos de Stable Diffusion disponibles, interfaces y elementos importantes como la buena especicación de un prompt o la correcta jación de los pasos o la escala CFG. Cap´ ıtulo 3 Generación de imágenes con Stable Diusion 3.1. Elección del modelo Como hemos podido ver, Stable Diusion es una herramienta potente y ecaz con una buena estructura que cuenta con una gran base de datos en la que podemos encontrar una inmensa variedad de imágenes. Estas características la convirtieron en nuestra elección nal, pero veamos más en profundidad el proceso de elección de esta Inteligencia Articial generativa en comparación con la amplia variedad de las que hay presentes actualmente en el mercado. En primer lugar, para entender nuestra elección es necesario poner en contexto el gran abanico de posibilidades de técnicas de inteligencia articial generativa que hay hoy en día, sus prestaciones, características, y sobre todo, su accesibilidad. Los modelos generadores de imágenes más potentes del mercado y los que consideramos para desarrollar la base de nuestro trabajo son Midjourney, DALL-E, Leonardo AI y Stable Diusion, todos ellos producen unos resultados bastante satisfactorios. Sin embargo, descartamos rápidamente los dos primeros: Midjourney producido por un laboratorio independiente y, DALL-E producido por la famosa empresa creadora de ChatGPT, OpenAI. El motivo fue que al ser ambos de pago, no podíamos tener acceso a su modelo de forma tan amplia como los demás, siendo prácticamente imposible acceder a ellos y mucho menos a poder entrenarlos. Para acceder a los modelos utilizamos Hugging Face 1 , la plataforma que cuenta con una amplia gama de datasets todo tipo y de modelos de inteligencia articial generativa de texto a imagen, imagen a imagen, imagen a texto y un largo etcétera. Intentamos buscar modelos de DALL-E y Midjourney en la plataforma sin éxito ya que lo máximo que encontramos eran imitaciones o pequeñas demos que no alcanzaban el nivel de calidad requerido. 1 https://huggingface.co 31 32 Capítulo 3. Generación de imágenes con Stable Diusion Leonardo AI sí que es una opción algo más accesible ya que la plataforma sí que cuenta con un plan gratuito que te deja probar el modelo con una limitación de 150 imágenes a generar al día, lo cual está muy bien. Además, la calidad es bastante buena y permite ajustar gran variedad de parámetros, como por ejemplo, el número de imágenes que deseamos que se generen al mismo tiempo, el estilo, la paleta de colores que deseamos, tamaño e incluso la resolución. El inconveniente era la accesibilidad al modelo y la información sobre este mismo, ya que era escasa y en Hugging Face no había acceso. En comparación con Stable Diusion, la incertidumbre era mucho más alta y había muchísimas limitaciones a la hora de utilizarlo. Todo ello nos llevó a elegir Stable Diusion rápidamente, una herramienta open source, es decir, de código abierto que nos facilita mucho el entrenamiento de personas para obtener imágenes personalizadas de forma rápida y con alta calidad. Además, sus diferentes versiones nos permitían explorar aún más a fondo el modelo y saber cuál era el que encajaba con las características que presentaban las prestaciones de nuestros equipos. Stable Diusion resultó ser la candidata ideal para que la creación de imágenes destinadas a los libros de vida fuera lo más sencilla, familiar y creativa posible. Ahora expuestos todos los motivos de elección de Stable Diusion, tanto en comparación con otras redes neuronales vistas en el Capitulo 2 como en comparación con otros modelos de inteligencia articial generativa, expondremos cómo implementamos la herramienta a lo largo de todo el trabajo y las dicultades a las que nos enfrentamos durante el proceso. 3.2. Entrenamiento con Stable Diusion 3.2.1. Versiones y métodos de entrenamiento Stable Diusion cuenta, hasta el momento, con 3 grandes versiones que, paulatinamente, han ido mejorando la calidad en las imágenes generadas. Todas ellas son totalmente gratuitas y de libre acceso. La primera versión que se presentó fue Stable Diusion 1 (en sus variaciones 1.4 y 1.5), seguida por Stable Diusion 2 (con sus respectivas variaciones 2.0 y 2.1) y por último, Stable Diusion XL (que cuenta con su variación XL Turbo). La diferencia principal entre las dos primeras versiones es el tamaño de resolución de las imágenes ya que las primeras versiones trabajaban en un espacio de 512x512 píxeles y en la versión 2 dicho tamaño aumentó a 768x768. Además, se introdujeron algunas correcciones y mejoras como la técnica de inpainting, que se trata de la restauración de algunas partes de la imagen mejorando la calidad y los detalles de 3.2. Entrenamiento con Stable Diusion 33 la misma o incluso, reemplazando ese área por lo especicado por el usuario en el prompt . Con la última versión Stable Diusion XL, se generan imágenes con una calidad excepcional, lo que supuso una gran mejora en el modelo al contar con un dataset mucho más extenso. El inconveniente con la versión XL, en nuestro caso, era la limitación de que requiere una tarjeta gráca demasiado potente, con la que, por desgracia, no contamos en nuestro equipo. Respecto a la versión 2, si bien es verdad que no requiere tanta GPU (memoria gráca) como la versión XL, sí que requiere más que en la primera versión, al ser las imágenes con mayor resolución y, viendo la comparación en la calidad que presentaban los resultados de ambas, optamos por utilizar la versión 1.5 ya que era la que mejor se adecuaba a nosotros en términos de calidad y tiempo. Ahora bien, existen varios métodos a través de los cuales se puede utilizar esta herramienta y hemos probado sus funcionalidades de diferentes maneras. En primer lugar, se puede utilizar mediante código escrito en Python a través de Google Colab, ya que la plataforma ofrece cuadernos en los que se trabaja de manera online y que además, proporciona una GPU en la nube a la que Google te da acceso. En concreto, esta GPU es la T4, que es la única opción que nos deja Google entre las que hay (A100 GPU, L4 GPU, V100 GPU) ya que las demás son de pago. Otra alternativa es mediante la propia página de Stable Diusion, que ofrece una demo para utilizar esta avanzada versión. Por último, ejecutar el modelo en local, consiguiéndolo descargar en la página Hugging Face, que incluye multitud de modelos de todo tipo, bases de datos, librerías y licencias para descargar y utilizar, por lo que hemos podido comprobar,presenta muy buenos resultados. El hecho de probar un modelo de inteligencia articial en un servidor no es concordante con nuestros objetivos del proyecto, puesto que necesitamos entrenar un modelo e incluirlo en una aplicación, de manera que el usuario pueda interactuar y conseguir imágenes personalizadas en un tiempo aceptable, por ello descartamos la opción de utilizar la demo que se encuentra en la página de Stable Diusion. Una vez que tenemos el modelo de generación de imágenes elegido, se debe ejecutar en nuestro ordenador y ver cuál es el rendimiento real. Esto quiere decir que la imagen debe generarse de manera correcta y sin deformaciones, y debe incluir todos los elementos solicitados en la descripción introducida. Además, debe realizar esta generación en un tiempo adecuado. Para ello, el proceso más ecaz y que nalmente elegimos llevar a cabo tras gran cantidad de pruebas es, en primer lugar, realizando el entrenamiento de imágenes personales a través de la plataforma de Google Colab en internet y en segundo lugar, para la generación de imágenes desde nuestro ordenador optamos por la instalación de una interfaz, llamada NMKD Stable Diusion GUI 2 . Esta herramienta nos per2 https://nmkd.itch.io/t2i-gui 34 Capítulo 3. Generación de imágenes con Stable Diusion mite ejecutar localmente cualquier modelo de generación de imágenes a partir de texto, e incluso permite aceptar imágenes como input , es decir, generaciones de tipo imagen a imagen. El principal de los objetivos que establecimos en la realización del proyecto era generar imágenes personalizadas del paciente en cuestión, y para ello es estrictamente necesario entrenar el modelo elegido. Como se ha dicho anteriormente, el método elegido fue un cuaderno en Google Colab mediante Dreambooth 3 , un modelo de generación de aprendizaje profundo, y que fue desarrollado en 2022 por un grupo de investigadores de Google Research y la Universidad de Boston. Este modelo nos permite añadir capas de entrenamiento a la inteligencia articial para que reconozca objetos concretos. Esto es muy importante, porque es el mecanismo que consigue mejores resultados y con una velocidad aceptable, que era la utilización que queríamos otorgarle. Por consiguiente, podemos decir que la misión de esta tecnología es la de poder entrenar a modelos de inteligencia articial para personalizarlo según tus necesidades. 3.2.2. Requisitos en las imágenes de entrenamiento Para realizar el entrenamiento de una forma correcta, lo primero que tenemos que tener claro es el elemento o token al que queremos dar una identidad. Por ejemplo, si seleccionamos una persona, debemos elegir unas imágenes en las que aparezca, de tal manera que, tras el entrenamiento, el modelo pueda identicarla. Lo ideal es que se elija un número suciente de fotografías, un mínimo de 10, las cuales tienen que cumplir ciertas características. Deben ser fotografías de buena calidad, bajo diferentes ángulos, escenarios y luces. Se recomienda que, como mínimo haya 1 o 2 fotografías en las que la persona aparezca de perl, mostrando 3 cuartos de la cara y de frente. Si es posible, se debería incluir alguna en la que esté sonriendo (para que la inteligencia articial pueda reconocer la expresión), de cuerpo entero, de cintura para arriba y del rostro de cerca. Además, es importante que la ropa no sea siempre la misma. De ser así, el modelo podría interpretar que la ropa forma parte de la persona y siempre se la generaría con la misma, lo cual no queremos que ocurra. Idealmente, las fotografías deberían alternar la luz y estar hechas tanto en interiores como en exteriores. Por último, y esto es fundamental, estas deberán tener un tamaño igual o mayor a 512 x 512 píxeles, y deberán llamarse exactamente de la misma manera, con el identicador del token al que hagamos referencia. Además, es preferible que todas las imágenes tengan la misma extensión, ya sea .jpg o .png. 3 https://colab.research.google.com/github/TheLastBen/fast-stable-diffusion/ blob/main/fast-DreamBooth.ipynb#scrollTo=A4Bae3VP6UsE 3.2. Entrenamiento con Stable Diusion 35 3.2.3. Entrenamiento con la técnica de Dreambooth En el ejemplo de la gura 3.1 elegimos como persona de entrenamiento una que no fuese reconocida por nuestro modelo (al contar con un dataset de 5 mil millones de imágenes, ya de por sí reconoce a varias personas famosas sin necesidad de entrenarlas). En este caso, se trata de una actriz coreana llamada Jung Hoyeon, y el token que le otorgamos, como se puede ver, respondía bajo el nombre de sqgkhoju. Lo ideal es que la etiqueta no sea nombrada bajo una palabra que el modelo pueda reconocer, es decir, que el token no tenga signicado. Si por un casual llamasemos al token mujer, seguramente el modelo de inteligencia articial no logre ni identicar ni asociar a la persona que hemos entrenado, y probablemente acabe generando la imagen de una mujer que no existe, que es justamente lo que queremos evitar. Figura 3.1: Dataset seleccionado para el entrenamiento de personas con Lora Una vez que las imágenes cumplan con todos los requisitos, debemos utilizar el código abierto en la plataforma Google Colab 4 para realizar el entrenamiento. El proceso que sigue el cuaderno es muy sencillo, en él sólo hace falta seguir una serie de pasos para completarlo. El primero es conectar el cuaderno a una cuenta de Google, para que se pueda guardar en el Drive asociado a esa cuenta una carpeta llamada Fast-Dreambooth, en la que se guardaran todos los archivos que se generen durante el proceso. El siguiente paso es instalar las dependencias necesarias para ejecutar el código en Python, seguido de establecer un nombre a la sesión en la que estamos trabajando, para que en un futuro cuando se hagan entrenamientos diferentes, se puedan distinguir unos de otros. En este paso se crea una carpeta llamada  Sessions  dentro de la carpeta mencionada recientemente. A su vez, esta carpeta contendrá otra bajo el nombre de la sesión que hayamos especicado en el cuaderno, y es ahí donde se guardarán todos los archivos que se creen en la ejecución. A continuación, es turno de subir las imágenes previa y cuidadosamente seleccio4 https://colab.research.google.com/github/hollowstrawberry/kohya-colab/blob/ main/Lora_Trainer.ipynb#scrollTo=OglZzI_ujZq- 42 Capítulo 3. Generación de imágenes con Stable Diusion Dreambooth y LORA. Por ello, quisimos analizar la diferencia que existe en cuanto a resultados utilizando ambas técnicas por separado. En la gura 3.9 se puede ver los diferentes resultados que produce cada técnica bajo las mismas características. Es decir, el prompt especicado fue " a happy hachiko in the woods, hd ", el número de pasos fueron 20 y la escala CFG fue jada a 8. A la derecha de la gura podemos ver el resultado que se generó con la técnica de LORA. Como se puede ver tiene menos calidad y correspondencia al animal entrenado a partir de las fotos proporcionadas en el dataset de hachiko de la gura 3.6, ya que el color del pelaje del perro entrenado es diferente al del perro generado en la fotografía, la falta de detalle en la cara del canino es notable e incluso, se puede ver la ausencia de la pata trasera derecha y un fondo que no se sabe con exactitud lo que es. En cambio, en la imagen de la izquierda de la gura 3.9, la cual fue generada con la técnica de Dreambooth, resulta totalmente identicable el animal con el especicado en el dataset. El pelaje es muy similar y con texturas bastante detalladas, no se aprecia ninguna deformidad y cumple exactamente con todo lo especicado en el prompt de entrada, ya que se puede apreciar claramente cómo se encuentra en el bosque con árboles de fondo, césped y sentado sobre un trozo de madera con trozos de musgo que se aprecian a simple vista. Por ello, y a la vista de los resultados, la técnica de Dreambooth es notablemente mejor en términos de calidad y tiempo. Es por este motivo por el que decidimos descartar la técnica de LORA para la generación de todas las imágenes a crear durante la etapa de pruebas del modelo de Stable Diusion y continuar con Dreambooth para crear los recuerdos de forma visual a través de una descripción de los mismos. Se ha demostrado que Dreambooth es capaz de generar imágenes representativas a la realidad y con gran cantidad de detalles a partir de prompts muy sencillos y es por ello que continuamos elaborando imágenes con esta técnica durante todo el proyecto. Ahora podemos decir que hemos logrado entrenar un modelo de generación de imágenes incluyendo fotografías propias, y eso es algo que puede ser realmente útil para nuestros siguientes propósitos. Esto es porque podemos lograr que cualquier persona pueda incorporar las imágenes que considere oportunas para servir de apoyo al paciente. Lo cual consideramos un éxito en el desarrollo de nuestro trabajo. 3.3. Interfaz de Stable Diusion 43 Figura 3.9: Mismo prompt y pasos para la generación de un perro con las técnicas de Dreambooth y LORA 3.3. Interfaz de Stable Diusion 3.3.1. Requisitos de instalación Respecto a los requisitos que debe cumplir un equipo para que pueda funcionar la aplicación NMKD Stable Diusion GUI, es fundamental que tenga un mínimo de 8 GB de memoria RAM, siendo lo más recomendable que sea de 16 GB. También es muy importante el almacenamiento, donde además de tener un mínimo de 10 GB de espacio disponible, es conveniente que haya 5 GB extras, debido a que se van a guardar multitud de archivos temporales a medida que se utiliza la aplicación. Adicionalmente, para nuestro caso, que hemos utilizado la aplicación para comparar diferentes modelos, es necesario conocer que cada uno de ellos tiene un tamaño de alrededor de 5 GB, y los modelos entrenados derivados de Stable Diusion ocupan 2 GB de almacenamiento cada uno. Por lo tanto, el espacio es algo que hay que tener muy en cuenta previamente a la instalación de este programa, ya que puede comprometer seriamente el funcionamiento del equipo. La característica principal que debe cumplir un equipo y sin la cual no sería válido para utilizar la aplicación es el hecho de tener una tarjeta gráca. Además, no sirve cualquier GPU, dado que el mínimo de memoria VRAM que debe tener el equipo es 4 GB, siendo la tarjeta de Nvidia. Más allá de que este sea el mínimo para que la aplicación funcione, a medida de que la tarjeta gráca sea de mayor calidad y espacio, el rendimiento mejora exponencialmente. Para contextualizar, la tarjeta gráca de nuestro equipo, una Nvidia GeForce GTX 1050, con una memoria de vídeo dedicada de 3072 MB y una memoria virtual disponible de 8 GB, tarda alrededor de varios minutos en generar una fotografía con cierta calidad. Mientras 44 Capítulo 3. Generación de imágenes con Stable Diusion tanto, tarjetas grácas como la RTX 4090, genera las imágenes en 1 segundo, lo cual es bastante signicativo. No obstante, esta tarjeta tiene un precio en el mercado de alrededor de 2000 euros, por lo que en nuestro nivel, mejorar el rendimiento es algo que se antoja complicado, y que la duración que va a tener nuestro proceso de generación de imágenes será siempre de varios minutos. 3.3.2. Funcionamiento y detalles de la interfaz Respecto al funcionamiento de SDGUI, esta plataforma tiene una interfaz muy sencilla para el usuario, a pesar de que hay que tener conocimientos previos acerca de ciertos parámetros para poder llevar a cabo la generación de de imágenes, además de realizar múltiples pruebas para saber qué función cumple cada elemento. La aplicación se presenta tal y como aparece en la gura 3.10, y permite generar imágenes con modelos de Stable Diusion, con modelos obtenidos de Hugging Face, con modelos entrenados y con LoRA. Esto ofrece una gran ventaja para nuestro trabajo, ya que ha sido el programa que nos ha permitido probar qué modelo era el más adecuado para nuestro estudio, y posteriormente testar los entrenamientos realizados. Ha sido fundamental, porque han sido multitud de pruebas, ajustando todos los parámetros de múltiples maneras diferentes, y sin esta aplicación, avanzar y obtener resultados habría sido realmente complicado. Respecto a la estructura del programa, cuenta con una parte derecha de la pantalla, donde aparecen las imágenes generadas en un gran recuadro, se puede acceder a un historial de descripciones introducidas y se puede acceder a una carpeta que incluye todas las imágenes que han sido generadas por esta aplicación. Además, en la parte superior, se puede acceder a ajustes, donde es posible instalar nuevas versiones del programa u obtener nuevos modelos que poder utilizar para la generación de imágenes. En la parte izquierda de la pantalla, podemos encontrar los parámetros realmente importantes que condicionan la manera en la que se creará la siguiente fotografía. En primer lugar, la técnica de inteligencia articial utilizada. Esto es realmente relevante porque hace una distinción de cuatro tipos de técnicas de inteligencia articial generativa: dos son versiones estándar de Stable Diusion (una para los sistemas que utilicen CUDA o Nvidia, y otra para los que utilicen AMD como tarjeta gráca), la tercera es la versión XL de Stable Diusion, que como recordatorio, requiere una tarjeta gráca muy superior a la que dispone nuestro equipo, y por último, un modelo imagen a imagen. Resulta muy relevante hablar sobre esta técnica de inteligencia articial, dado que a partir de una imagen de archivo, y una descripción, se puede generar una nueva imagen adaptada a esta petición. A pesar de que nuestro objeto de estudio abarca la inteligencia articial generativa de imágenes a partir de texto, hemos realizado pruebas sobre el tipo de resultado obtenido, pero la calidad de la imagen de este modelo en concreto, resulta inferior a la que nos han otorgado modelos de texto a imagen. Centrándonos en el modelo básico de Stable Diusion, en el apartado de model / architecture , se debe incluir el modelo, que puede ser uno pre entrenado o uno personalizado en formato checkpoint . En este segundo, cabe 3.3. Interfaz de Stable Diusion 45 Figura 3.10: Aplicación SDGUI, utilizada para probar todos los modelos generadores de imágenes destacar que tarda medio minuto más en generar la fotografía debido a la carga, pero no afecta de ninguna manera a la calidad de la imagen. A continuación, se debe indicar la descripción, que se divide en dos partes en este caso. La primera es el prompt , que guía a la inteligencia articial para que incluya los elementos que se deseen. Un apunte relevante es que si se quiere hacer referencia a un elemento entrenado, se debe mencionar el nombre exacto del ítem para que se pueda realizar la generación de manera correcta. Por ejemplo si queremos generar una imagen del animal entrenado en el campo se tendría que especicar en el prompt hachiko corriendo feliz en el campo . En segundo lugar, existe un negative prompt , donde se deben indicar aquellos elementos que, a petición del usuario, se desee que no se vean reejados en la creación de la fotografía. Cuando se desee testar un entrenamiento de LoRA, se debe hacer click en el archivo deseado, e introducir ese nombre en el prompt . Por último, se deben ajustar unos parámetros explicados con anterioridad, como son los steps o pasos de generación, la escala CFG y la seed . Una vez conocidos estos pasos a seguir y cumplidos los requisitos mencionados, cualquier usuario debería tener la capacidad de generar imágenes con este programa. La escala CFG, o Classier Free Guidance , es un parámetro de Stable Diusion que controla la medida en la que la generación de imágenes se ciñe a la descripción introducida por el usuario. Esto signica que, si se establece un CFG más bajo, la inteligencia articial tiene una mayor libertad para ser más creativa, mientras que un nivel más alto obliga a seguir en mayor medida las indicaciones (Sanz, 2024). A 46 Capítulo 3. Generación de imágenes con Stable Diusion nivel de calidad de imagen puede tener diversos efectos. Este nivel debe ajustarse en función del prompt indicado. Para indicaciones breves es preferible elegir un CFG más bajo, de entre 2 y 6, mientras que en el caso en el que se pretenda una descripción muy precisa, se necesitará un nivel algo más alto, de entre 10 y 15. No obstante, lo más recomendable es ajustar este nivel entre 7 y 10, puesto que se encontrará un equilibrio entre creatividad y precisión. 3.4. Resultados de generación de imágenes Visto el funcionamiento de la aplicación, vamos a analizar los resultados obtenidos en comparación con los prompts especicados y bajo las posibles diferentes técnicas y parámetros que se han contemplado. 3.4.1. Maximización del rendimiento con Dreambooth Una buena manera de mostrar el mejor resultado posible de una generación de imágenes personalizadas es estudiar cuál es el método que genera mejores fotografías. Para ello, hemos realizado un análisis comparativo de resultados con diferentes pasos de entrenamiento. El objetivo es comprobar cuál es el número de pasos del entrenamiento mediante Dreambooth que genera las imágenes con mayor calidad y precisión posible. Para ello, hemos realizado cuatro entrenamientos del mismo elemento, con el mismo dataset de 10 fotografías, pero con un número de pasos diferente. Este número ha sido de 1600, 2000, 2400 y 3000 steps . El tiempo de generación aproximada es de 1,38 iteraciones por segundo, lo cual conlleva una duración total de entrenamiento de 19, 24, 29 y 35 minutos aproximadamente, y es algo a tener en cuenta para seleccionar un modelo u otro. Para poder llegar a resultados concluyentes, se han de jar todas las variables de la generación de imágenes en la aplicación SDGUI. Estas variables son la descripción de la fotografía, los pasos de generación, la escala CFG y la semilla de aleatoriedad. De esta manera, se tiene la capacidad de realizar una comparación precisa y de elegir el número más adecuado de pasos de entrenamiento. En este caso, dada nuestra experiencia al generar imágenes con Stable Diusion, establecimos el número de pasos en 20 y la escala CFG en 7. Respecto a la semilla de aleatoriedad, tras la primera fotografía generada se jaría para el resto, para que permanezca constante en nuestro análisis. Hemos optado por utilizar varios tipos de fotografía diferente para poder ampliar 3.4. Resultados de generación de imágenes 47 la calidad de la conclusión. La primera descripción de imagen trataba de generar un retrato de la persona lo más detallado posible, de manera que se pudiera comparar con qué pasos la capacidad de identicar al elemento entrenado era mayor. Con el segundo prompt , se pretendía analizar la generación de las imágenes de la persona haciendo una acción determinada. En este caso, se optó por la lectura de un libro. De este modo, se podría armar cuál de los modelos tendría la capacidad de generar fotografías personalizadas de múltiples elementos, lo cual es algo bastante relevante para nuestro trabajo. Por tanto, en la siguiente tabla se reeja la imagen generada con cada número de pasos de entrenamiento, con las dos descripciones mencionadas. Tras generar todas las fotografías, en primer lugar, se aprecia falta de entrenamiento en las dos imágenes con 1600 steps , debido a que no se identica bien a la persona, ni en el retrato, ni en la imagen con el libro. En la primera fotografía se puede observar una gran calidad, con mucho detalle y un ligero parecido con la persona entrenada, pero no es el nivel de similaridad que estamos buscando. En la imagen con el libro, la persona generada no se puede identicar con la real, y, además de eso, se aprecia deformidad en las manos, por lo que la fotografía generada no tiene el nivel de calidad deseado. En segundo lugar, al incrementar los steps de entrenamiento a 2000, se puede apreciar una clara mejoría. En el retrato, existe un gran parecido con la imagen generada con 1600 pasos, pero se aprecia como la forma de la cara se asemeja más a la persona real. Respecto a la fotografía con el libro, en esta ocasión se han solucionado los errores de deformidad, y se ha generado a una persona de la edad correspondiente, aunque no se puede identicar a la persona real. Con 2400 pasos de entrenamiento, se puede decir que los resultados muestran calidad. En la primera fotografía, se puede identicar un gran parecido con la persona real. La imagen muestra un gran detalle y una denición muy buena, por lo que mejora en gran medida a los números de pasos menores. En la segunda fotografía, existe cierto parecido con la persona, pero se puede mejorar, debido a que falta detalle y denición y se muestra a alguien mucho más joven. A pesar de esto, sí que la forma de la cabeza y de la cara parecen ser correctas, por lo que lo único que faltaría para que la generación fuera adecuada es la edad, lo cual se podría arreglar con una descripción más precisa. Al incrementar los steps a 3000, se puede apreciar sobreentrenamiento, debido a que en ambas imágenes se ha perdido el parecido con la persona real y se puede percibir algo de deformidad, sobre todo en la segunda fotografía. Respecto al retrato, ha variado la forma y el color de los ojos, y han aparecido más marcas que empeoran la calidad. En la imagen con el libro, se ha generado a una persona aún más joven que con 2400 pasos, y ha cambiado por completo la forma de la cara, por lo que la similitud con la persona real se ha desvanecido por completo. Además, si se amplía en detalle se puede apreciar deformidad en los ojos, por lo que se hace evidente el 48 Capítulo 3. Generación de imágenes con Stable Diusion Pasos de entrenamiento a portrait of 80alp, highly detailed, happy, old a picture of 80alp reading a book, serious, high denition 1600 2000 2400 3000 Tabla 3.1: Tabla comparativa de entrenamientos mediante Dreambooth. 3.4. Resultados de generación de imágenes 49 sobreentrenamiento. En conclusión, podemos decir que el entrenamiento que ha producido mejores resultados es el de 2400 pasos, que con menos se aprecia falta de entrenamiento y que con más steps se percibe sobreentrenamiento y no se permite identicar a la persona real. En este estudio también se ha podido aprender que el prompt ha de ser lo más preciso posible para poder obtener imágenes de gran calidad, sobre todo cuando se trata de incluir más elementos. En este caso, la escala CFG debería ser mayor, para dar algo menos de libertad al modelo y que se centre más en lo que se pide en la descripción. 3.4.2. Comparativa de resultados Diferentes steps Una vez se ha demostrado que la mejor forma de realizar un entrenamiento con Dreambooth es con 2400 pasos, el siguiente estudio consistió en valorar los resultados de imágenes generadas variando los steps y la CFG Scale . El objetivo era identicar una combinación de estos valores que garantizase buenos resultados, de manera que cualquier usuario pueda generar las mejores imágenes posibles para utilizarlas en el libro de vida. Las fotografías han sido obtenidas a partir de nuestra aplicación, véase en el Capítulo 4, lo cual también es una manera de mostrar los resultados en cuanto a calidad y tiempo que el programa puede ofrecer. Para el análisis comparativo, se han generado dos fotografías diferentes. La primera es un retrato donde únicamente se ha generado la persona como elemento, siendo el prompt el siguiente: a close up portrait of sqgkhoju, highly detailed, beautiful, fantastic . La segunda es una imagen en la que aparecía la persona con múltiples elementos, con el objetivo de determinar si el hecho de que se solicite una imagen más diversa requiere un mayor número de pasos. El prompt utilizado para esta imagen es el siguiente: a happy sqgkhoju playing tennis, sunny day, hd, full details . La persona utilizada para este estudio ha sido entrenada mediante Dreambooth, siendo el dataset el que se muestra en la gura 3.1. En primer lugar, se jó la escala CFG para poder estudiar cómo el aumento y la disminución de pasos modica la calidad y el tiempo de generación. Según la teoría, un valor de CFG estándar que genera resultados de manera correcta es el 7, por lo que es el valor elegido para la primera fotografía. De otro modo, al aumentar los elementos de la imagen, también se debe aumentar este valor, por lo que hemos optado por un valor de 10 para el segundo grupo de fotografías. No obstante, después se jaría el número de pasos para poder analizar la variación de la calidad de la imagen con la escala. 50 Capítulo 3. Generación de imágenes con Stable Diusion Pasos de generación a close up portrait of sqgkhoju, highly detailed, beautiful, fantastic a happy sqgkhoju playing tennis, sunny day, hd, full details Tiempo 28 7 minutos y 3 segundos 24 5 minutos y 29 segundos 20 4 minutos y 18 segundos 16 3 minutos y 34 segundos 12 2 minutos y 27 segundos Tabla 3.2: Tabla comparativa de entrenamientos mediante Dreambooth. 3.4. Resultados de generación de imágenes 51 En esta tabla, para 12, 16, 20, 24 y 28 steps , se muestran los dos tipos de imágenes generadas y la duración que ha tenido cada proceso. Podemos apreciar cómo, generalmente, la calidad y el detalle aumenta en la medida en que lo hacen los pasos, pero también lo hace el tiempo de generación. Esto hace que no se pueda denir un resultado como mejor o peor, dado que la calidad es algo más subjetivo que el tiempo. Por lo tanto, lo que se podría realizar sería una valoración de hasta qué punto un aumento de pasos justica el correspondiente aumento de tiempo. Comenzando por el retrato, se puede ver un aumento de la calidad y del parecido con la persona real desde los 12 pasos hasta los 24. No obstante, en este caso, desde los 24 hasta los 28, el salto de calidad no es tan signicativo como sí lo es el tiempo de un minuto y medio que aumenta la generación. Con 12 steps , la imagen es poco detallada y tan solo se puede apreciar un ligero parecido con la realidad. Cuando los pasos aumentan a 16, la mejora es signicativa, y tanto la calidad de la imagen como la similitud se hacen evidentes. La imagen con 20 steps muestra un parecido aún mayor con la persona real, y el tiempo solo ha aumentado en aproximadamente 45 segundos, por lo que es un buen resultado. Con 24 pasos de generación, la calidad de la imagen es bastante buena, siendo la imagen que muestra una mayor similitud con la persona real. En este caso, el tiempo de espera sería el único inconveniente para que el usuario decida no llevar a cabo esta opción. Habiendo analizado todas estos resultados para el retrato, y de manera completamente subjetiva, nuestra elección para generar una imagen de estas características sería de entre 20 y 24 pasos. Esto se debe a que por debajo de esta franja, consideramos que el parecido con la persona real no es el que debería, y esto es lo que se busca con este tipo de fotografías. Por encima de esta franja, no podemos evidenciar un aumento de calidad que justique el elevado tiempo de espera. Por tanto, se podría decir que teniendo en cuenta la calidad y la duración, el número de steps se recomienda ajustar entre 20 y 24, lo cual daría como resultado una imagen de alta calidad entre 4 y 5 minutos de tiempo estimado. Respecto a la fotografía con múltiples elementos, se puede apreciar que la calidad de la imagen aumenta conforme lo hacen los pasos de generación desde los 12 hasta los 28. En este caso, a diferencia de lo que ocurre con los retratos, se requiere algo más de esfuerzo para poder generar buenas fotografías, precisas, de calidad y sin errores ni deformidades. Los resultados con 16 y 20 steps producen imágenes con la cara poco desarrollada, y se hace evidente la falta de pasos, por lo que para imágenes que requieren más precisión en un número mayor de elementos, recomendaríamos un aumento en el número de steps , a pesar de que el tiempo se incremente. A partir de 24 pasos, se generan imágenes de buena calidad, en las que se identica mucho mejor a la persona y aparece lo que se ha pedido en el prompt con cierta claridad. Por tanto, se puede decir que el aumento de tiempo se ve justicado en este caso para aumentar la calidad y reducir la deformidad. Esto se explica porque, con la descripción, se está pidiendo detalle tanto en la cara de la persona como en su entorno, lo cual supone una doble tarea para Stable Diusion en la generación de la 58 Capítulo 3. Generación de imágenes con Stable Diusion 3.4.4. Resultados con múltiples capas de entrenamiento Una parte muy importante de nuestro trabajo es generar imágenes que puedan contener diferentes elementos de manera simultánea, puesto que consideramos que para crear un libro de vida de calidad, se deberían incluir fotografías de una persona en un determinado lugar, o que combinen varias personas diferentes. Durante la mayor parte del tiempo en la que realizamos este proyecto, teníamos la idea de que esto no sería posible, porque siempre que realizábamos pruebas, obteníamos resultados en los que se deformaban los elementos, o simplemente solo incluía uno de los dos elementos, o ninguno de los dos. A pesar de esto, decidimos resistirnos a aceptar que no podía ser posible una generación de imágenes en la que se combinasen varios elementos. Como hemos armado en apartados anteriores, nuestro modelo de entrenamiento Dreambooth permite realizar un entrenamiento sobre otro previo, por lo que decidimos hacer la prueba y añadir una capa. Para el entrenamiento, utilizamos como base el archivo sqgkhoju.ckpt, el cual entrenó a la actriz Jung Hoyeon, y se entrenó con el salón de la serie Friends . Como en el resto de pruebas con las que obtuvimos un resultado satisfactorio, incluimos un conjunto de 10 imágenes y realizamos el entrenamiento con 2400 pasos. Figura 3.16: Dataset del entrenamiento con el salón de Friends (frndslivro) Una vez realizado el entrenamiento, en primer lugar, se comprobó que se podían generar buenas fotografías que incluyesen únicamente el salón, antes de crear imágenes con ambos elementos. Como se puede apreciar, las imágenes generadas son de calidad, están creadas con 20 pasos de generación, 8 de CFG scale y con diferentes estilos. Viendo que el modelo genera las fotografías de manera exitosa, es el momento de crear imágenes de la persona en el salón. Siguiendo la tendencia de 20 pasos y 8 de CFG, se producían errores en la generación, creándose imágenes en las que aparecía la persona duplicada y no aparecía el lugar. Ateniéndonos a la denición de CFG scale , subimos este valor, de 8 a 14, para que la inteligencia articial se guiase en mayor medida por el 3.4. Resultados de generación de imágenes 59 Figura 3.17: Resultados de la generación de imágenes con el modelo frndslivro prompt . Con solo subir este valor no fue suciente, pues generaba fotografías en las que la persona aparecía entre 3 y 4 veces. Por tanto, también decidimos aumentar los pasos de generación, de manera sucesiva hasta que la generación produjera un resultado satisfactorio. La combinación perfecta fue de 40 pasos y 14,5 de CFG scale . Con un número menor de steps , la imagen aparecía con múltiples personas, y con un número mayor, no generaba ninguna persona. La descripción de la imagen era la siguiente: a  sqgkhoju in the frndslivro, hd, high quality . Figura 3.18: Mismo prompt con 20, 40 y 50 steps al mezclar dos elementos: persona y lugar 3.4.5. Logros y fallos en resultados A lo largo de la variedad de entrenamientos realizados hemos hecho pruebas exhaustivas sobre la generación de las imágenes en comparación con los prompts especicados y hemos sacado en claro que hay 3 aspectos fundamentales que hay 60 Capítulo 3. Generación de imágenes con Stable Diusion que tener en cuenta para la generación óptima de estas: el número de pasos realizados en el entrenamiento, en el número de pasos para la generación de la foto y la escala CFG. En los tres aspectos, hemos identicado dos posibles situaciones que se pueden dar y que presentan fallos en cuanto a la calidad de los resultados: exceso y falta de pasos en el entrenamiento. Peligros con el sobreentrenamiento: Se produce cuando el modelo no se puede generalizar y se ajusta demasiado al conjunto de datos entrenados. Se debe principalmente a que el tamaño de los datos es demasiado pequeño y no contiene sucientes muestras de datos para poder representar con precisión la totalidad de datos de entrada posibles. Otra razón es que el modelo se entrena durante demasiado tiempo en un solo conjunto de datos de muestra. En nuestro modelo, encontramos sobreentrenamiento cuando elegimos un número de steps muy elevado para un número de fotografías que no es lo sucientemente alto. Una manera de detectar que nuestro modelo está sobreentrenado es cuando no genera bien la cara de la persona, y se aprecian fallos en determinadas facciones, como en los ojos y la boca, en los cuales se aprecia deformidad. Falta de pasos en el entrenamiento: En este caso, se produce cuando el modelo de datos no tiene la capacidad de capturar de forma precisa la relación entre las variables de entrada y de salida, de manera que existe un elevado índice de errores en el conjunto de datos de entrenamiento y en los datos no vistos. Se debe a que el modelo es demasiado simple, porque el tamaño de los datos es demasiado pequeño, o bien porque se necesita más tiempo de entrenamiento. En este caso, cuando generamos las imágenes, se evidencia que el modelo aún no ha aprendido lo suciente acerca del elemento o token del que se ha realizado el entrenamiento, pues el resultado de la generación reeja una persona que no muestra ningún parecido con la realidad. Mezcla de personas: Para ampliar los horizontes de nuestro entrenamiento, hemos entrenado a una persona, asociando un token a ella para su identicación, sobre un modelo que previamente ya había sido entrenado con una persona y su token asociado, para comprobar si efectivamente se podía generar en una sola imagen una representación de las dos personas entrenadas, una junto a la otra. Es aquí donde se ha detectado una peculiaridad, ya que, a pesar de que un modelo genere buenos resultados de cada una de las dos personas, en el mismo momento que se solicita en un determinado prompt o descripción que se vean reejados una o varias personas entrenadas en la misma fotografía, ningún modelo de los que se haya probado, ha generado buenos resultados de esta manera. Lo que nalmente se aprecia en la imagen generada como se puede ver en la gura 3.19, es que aparecen dos personas pero sus rostros son una mezcla de las características faciales y siológicas de ambas, produciéndose una deformidad en muchos de los casos y que los rostros aparezcan 3.4. Resultados de generación de imágenes 61 prácticamente duplicados. Figura 3.19: Duplicidad de elementos 3.4.6. Soluciones: Técnica Inpainting Debido a la importancia que consideramos que tiene en el desarrollo de unas adecuadas historias de vida la mezcla de elementos personales con la propia persona, consideramos métodos para arreglar la poca certeza que nos otorga el modelo de Stable Diusion con múltiples capas de entrenamiento, ya que a la luz de los resultados, el modelo es, por el momento, inválido en este aspecto. Por ello, decidimos profundizar en las opciones que ofrece la interfaz de Stable Diusion y dimos con la opción img2img, es decir, imagen a imagen. Esto es, como su nombre indica, un método en el que la entrada, en vez de ser texto como lo venía siendo hasta ahora, es una propia imagen. Sin embargo, el prompt sigue siendo un elemento fundamental que sigue formando parte del modelo, ya que de esta manera, se le especica a la técnica de inteligencia articial lo que se desea en la imagen futura y el modelo se encargará de crearlo, teniendo en cuenta la estructura y objetos ya dispuestos en la imagen original. Incluso, el propio modelo de Stable Diusion con el método de img2img tiene sus propias técnicas, de las cuales, una particularmente llamó nuestra atención: la técnica Inpainting . Entre los problemas que se encontraban en el contenido nal de las imágenes pedidas bajo un prompt que integraba dos elementos entrenados, podíamos distinguir 62 Capítulo 3. Generación de imágenes con Stable Diusion 3 casos principales: contenido aleatorio no especicado, falta completa de uno de los dos elementos o un elemento y el concepto del segundo elemento sin llegar a ser el especicado. Es decir, si pedimos que genere en una imagen a la actriz coreana sqgkhoju y el salón de la serie Friends, puede pasar que genere contenido aleatorio, que genere solamente a la actriz coreana o que genere a la actriz coreana en un salón que no es el de la serie de Friends que se ha especicado. Ejemplo de ello, se puede ver en la gura 3.18. Por tanto, podemos llegar a armar que el último caso es el que más se asemejaba a lo que queríamos llegar a conseguir. Por ejemplo, si en el prompt especicábamos que apareciera el token que se asocia a una persona entrenada junto al token asociado a un animal entrenado, la gran mayoría de los resultados era el perro entrenado a la perfección junto a una persona que no se asemejaba de ninguna manera a la entrenada. Lo que nos llevó a pensar que realmente la imagen generada de por sí, no era del todo errónea, ya que tan solo necesitábamos cambiar una pequeña porción de la misma: la persona de la imagen por la entrenada por nosotros en el modelo. Y es precisamente lo que logra la técnica de inpainting . Esta novedosa técnica debe su nombre a que el protagonista es un pincel virtual. Para ejecutarla, necesitamos como entrada una imagen, en nuestro caso, la imagen recién generada por el modelo que presenta una carencia. Con el pincel, dibujamos el área de la imagen que deseamos sustituir por otro elemento. Y a través del prompt , especicamos aquello que solamente queremos que aparezca en el área trazada, en este caso, el token que representa a la persona entrenada. De esta manera, el modelo de inteligencia articial genera lo especicado en el prompt solamente en el área indicada sustituyéndolo por lo que había anteriormente. En este ejemplo, el área que dibujaríamos correspondería a la persona de la foto y el resultado nal serían los dos elementos diferentes integrados a la perfección en una sola imagen. Debido a la novedad de la técnica, los parámetros que estábamos acostumbrados a cambiar, también se han ampliado para poder emplear la técnica con los mejores resultados posibles y de la manera más eciente. Entre ellos, los más importantes y que se pueden ver en la gura 3.20 señalados, son 5, con los cuales dos ya estamos familiarizados, que son los steps y cfg scale . Por lo tanto, nos centraremos más en los 3 restantes. El primer parámetro es  Mask Mode  y antes de continuar, es importante espe- 3.4. Resultados de generación de imágenes 63 Figura 3.20: Conguración de los parámetros en la técnica de inpainting cicar que en Inpainting , cuando se habla de  mask  se reere únicamente al área que hemos marcado con el pincel para su posterior modicación. Como podemos ver en la gura 3.20, en este parámetro se encuentran dos opciones: inpaint masked e inpaint not masked . A lo que se reere es al área que se va a ver sustuida por el prompt , ya que habrá casos en los que se quiera conservar la imagen en su totalidad a excepción de una parte y casos que por el contrario, se desearía modicar la imagen en su totalidad, a excepción de una porción, como lo puede ser en el caso de un cambio de fondo. El segundo parámetro es  Masked content  y las opciones que presenta son un poco más extensas que en el parámetro anterior, siendo estas ll , original , latent noise y latent nothing . Lo interesante de estas opciones es el funcionamiento que lleva a cabo Stable Diusion en la generación de contenido en el área especicada. Como ya hemos podido ver en el Capítulo 2, Stable Diusion necesita o bien ruido o bien nuevos datos para generar una imagen, y al tener la opción a original, se trabajará a partir del contenido de la foto original, es decir, se coge de referencia la forma y colores originales para la generación. En general, se recomienda no cambiar estas opciones y siempre mantener la que está por defecto, es decir, original. Por último, el tercer parámetro Denoising Strength es un valor entre 0 y 1 que explica la fuerza en la que cambiará el área seleccionada en comparación la imagen original, siendo el 0 que no cambie nada y el 1 algo completamente diferente. Cabe destacar que la técnica de inpainting implementada a través del método de imagen a imagen no está incorporada en la aplicación NMKD SD GUI y por ello, se han tenido que buscar alternativas para acceder a ella. En concreto, hablamos 64 Capítulo 3. Generación de imágenes con Stable Diusion de un cuaderno de trabajo hecho en Google Colab en el que se ha importado código de GitHub de Automatic1111 5 , una conocida interfaz gráca destinada a usar herramientas avanzadas de Stable Diusion. La principal ventaja que presenta este cuaderno es que permite cargar un modelo propio ya entrenado, como se puede ver en la gura 3.21 que el modelo cargado es el archivo frndslivro.ckpt visto en este mismo capítulo anteriormente. Lo cual es perfecto para el objetivo que queremos conseguir. Figura 3.21: Ventana de la WEBUI implementada para realizar el painting En la gura 3.21 se puede ver a la derecha la imagen original, la cual previamente ya había sido pasada por esta técnica para poner la cara de 80alp en la persona anteriormente generada. En la misma gura se puede ver el área masked seleccionada con el pincel y el parámetro  Mask mode  establecido a  Inpaint not masked . Finalmente, podemos ver en el prompt que solamente se especica el token frdslivro debido a que lo que se quiere conseguir es que sustituya lo que no está seleccionado por la brocha en la imagen, por el salón entrenado del modelo. El resultado puede verse en la parte derecha de la imagen, el cual podemos armar que es todo un éxito, al haber conseguido incorporar 3 tokens entrenados diferentes, la persona, el animal y el lugar. En el siguiente ejemplo de la gura 3.22 podemos ver la evolución que sigue una misma imagen bajo diferentes peticiones de prompt en la fase de inpainting . En la primera imagen que se ve en la gura, el prompt especicado fue  a happy 80alp walking with his dog hachift80alp in the forest next to the mountains, day light, full hd, high quality  y podemos ver como generó todo a la perfección excepto a la persona entrenada. En la segunda foto, se partió de la primera imagen y trazando el área del rostro de la persona, se puso como prompt  a close up picture of 80alp face, hd . Finalmente, para que el cuerpo de la persona generada al principio encajara con el 5 https://colab.research.google.com/github/TheLastBen/fast-stable-diffusion/ blob/main/fast_stable_diffusion_AUTOMATIC1111.ipynb#scrollTo=p4wj_txjP3TC 3.5. Evolución de los modelos del proyecto 65 de una persona de la edad de la foto, se seleccionó la ropa como área y nalmente el prompt fue  old man clothes  y el resultado nal fue excepcional. Figura 3.22: Evolución de una imagen con la técnica de inpainting aplicada 3.5. Evolución de los modelos del proyecto Este apartado muestra los pasos que se han llevado a cabo durante la realización del proyecto. Resulta signicativo porque el contraste de lo que se podía hacer al principio con lo que se puede hacer ahora es muy elevado, y pone en valor el trabajo realizado. 1. No se podían generar imágenes en local. No estaba instalado CUDA en el equipo, además de otras herramientas necesarias como Diusers. 2. Generación de imágenes en local por consola en Anaconda mediante el modelo de Stable Diusion 1.5. Resultado generado en un archivo. Ejecución lenta y de poca calidad. 3. Generación de imágenes en SDGUI. Buena interfaz que permite la ejecución de imágenes con Stable Diusion 1.5. Mejor tiempo y calidad. Ya sabemos el modelo más óptimo para desarrollar nuestro proyecto. 4. Se descubre que se pueden utilizar más modelos provenientes de Hugging Face en SDGUI. Se utiliza el Lykon Dreamshaper, basado en LCM, que proporciona alta calidad con muchos menos pasos. No obstante, tiene la limitación de que no se puede personalizar y desarrollar. 5. Intento de generar imágenes personalizadas. Se probarán en SDGUI. Resultados aceptables con LORA. Se puede identicar al elemento entrenado, pero se puede mejorar. 6. Nuevas vías de entrenamiento de modelos. Entrenamiento de Stable Diusion con Dreambooth. Se identica el elemento pero se aprecia deformidad. 66 Capítulo 3. Generación de imágenes con Stable Diusion 7. A base de prueba y error, se llega a la conclusión de que el mejor rendimiento se consigue con 2400 pasos de entrenamiento y un dataset de 10 imágenes. Buena calidad en las personas entrenadas, sin deformidad. 8. Se consiguen buenos resultados también en lugares y animales, además de en personas. Se llega a la conclusión de que se puede entrenar cualquier elemento. 9. Se quiere crear una aplicación que utilice esta técnica de inteligencia articial generativa. Al principio se llega a una app con una interfaz poco visual, pero que genera buenas fotografías con el modelo Stable Diusion 1.5. 10. Versión mejorada de la aplicación, con un backend en Python y un frontend en HTML. Buena interfaz y buenos resultados con modelos pre entrenados, pero no con modelos personalizados. 11. La aplicación ya puede utilizar cualquier modelo entrenado por nosotros mismos. Buenos resultados, con calidad y tiempo comparables a SDGUI. 12. Creación de un libro de vida para la aplicación. Sirve de conexión entre la técnica de inteligencia articial generativa de imágenes desarrollada por nosotros y la creación de historias narrativas con apoyo visual para la terapia de reminiscencia. 3.6. Conclusiones respecto a la generación de imágenes Una vez comprobada la utilización de los distintos parámetros para la generación de imágenes, cabe resaltar que tanto la escala CFG como el número de pasos deben aumentar conforme la imagen generada sea más compleja, es decir, que tenga un mayor número de elementos. Con estos parámetros, podemos decir que hemos obtenido imágenes de alta calidad. Después de haber utilizado varias técnicas de entrenamiento del modelo de Stable Diusion, el que ha dado mejores resultados y el que vamos a utilizar en los siguientes apartados es el de Dreambooth. Dentro de este modelo de entrenamiento, se recomienda que siempre se indiquen mínimo 2400 pasos, y que se aporte un conjunto de 10 imágenes, en los que se puedan apreciar todos los elementos importantes de la persona, animal o lugar, desde todos los ángulos posibles. Es importante mencionar que en ocasiones la generación de una imagen con varios elementos principales se puede ver dicultada, por lo que puede producir duplicidad, deformidades o ausencia de elementos. No obstante, es algo que se le puede encontrar solución con la técnica Inpainting. Cap´ ıtulo 4 Aplicación generativa de imágenes 4.1. Back-end El código de la aplicación en su totalidad se encuentra en el enlace a pie de página 1 . Una parte muy importante de nuestro trabajo es crear una aplicación con la que cualquier usuario tenga la capacidad de utilizar nuestros modelos entrenados, es decir que pueda generar imágenes personalizadas de cualquier elemento que desee. El objetivo es aportar un valor añadido a nuestro trabajo, para que los destinatarios puedan no solo obtener la mejor manera de crear imágenes personalizadas, sino que dispongan de una plataforma donde poder obtener todos los resultados deseados. Para la creación de la aplicación optamos por realizar el código de diferentes formas, la primera de ellas siendo todo en lenguaje Python. Con esto se logró un buen resultado a nivel de funcionalidad, pues generaba las imágenes deseadas en el mismo tiempo en el que se generan en la aplicación SDGUI. No obstante, no logramos que la aplicación tuviese una interfaz atractiva e intuitiva para el usuario. De este modo, decidimos utilizar una vía mejor para poder centrarnos por un lado en el estilo, y por otro lado en la funcionalidad. Para la lógica o funcionamiento de la generación de imágenes, realizamos un script en Python (app.py), lo que sería el backend del programa. Por otro lado, para el diseño y para solicitar al usuario los datos de entrada, creamos un script en html (index.py). En esta parte del código, se hizo un diseño de la interfaz de la aplicación, es decir, de qué manera queríamos que el usuario genere las imágenes y obtuviese los resultados. Como hemos mencionado con anterioridad, existen una serie de parámetros que son fundamentales para generar una imagen, que son: la descripción (qué queremos que se muestre en la 1 https://github.com/NILGroup/TFG-2324-ImagenesHistoriasVida 67 74 Capítulo 5. Libro de vida El prompt es cuestión fue  Close up studio photo of jovenalp/adultalp/80alp, detail, studio lighting.  Figura 5.1: Resultados obtenidos bajo un mismo prompt en las 3 fases El objetivo principal de esta tarea es simular una generación de imágenes para un libro de vida de un paciente. Por lo tanto, no solo necesitamos generar fotografías de la propia persona, si no con diversos elementos para cada etapa, para comprobar cómo puede funcionar en la terapia de reminiscencia, cuando se incluyan imágenes personales del paciente, de lugares, personas y otros elementos importantes de su vida. Para la elaboración del libro de vida se necesita una cantidad considerable de recuerdos y momentos entrañables que conforman la vida de una persona en diferentes etapas y épocas. Nosotros quisimos elaborar un ejemplo de lo que podría ser el libro de vida de un paciente, sin embargo, al no poder contar de primera mano con una persona que padeciera esta enfermedad que nos pudiera relatar estos recuerdos, decidimos construir un relato de una persona cticia a modo de ejemplicar el resultado nal de la generación de un libro de vida completo generado a partir de Inteligencia Articial generativa, de modo que representara el trabajo que hemos realizado durante todo el proyecto. En cuestión, la persona del ejemplo se trata de Juan Pacheco, un hombre nacido en Madrid en 1944 y que actualmente tiene 80 años. Para contar su historia, hemos decidido proporcionar detalles que explican su personalidad, entorno y el rumbo que tomó su vida con el paso de los años, como sus intereses, estudios, trabajo y lugar de residencia. Para asegurar una continuidad temporal y poder ubicar los acontecimientos vividos por Juan en una línea de tiempo, hemos diferenciado 3 categorías, como ya se ha mencionado antes. 5.1. Fase de la vida 1: Juventud 75 5.1. Fase de la vida 1: Juventud Juan nació en Madrid, en 1944 y sus padres residían en una localidad situada al norte de la comunidad madrileña, llamada Colmenar Viejo. Juan fue hijo único y sus padres eran Ana, una profesora de Química en la universidad Complutense de Madrid y Alfredo, un agente inmobiliario. Juan creció en Colmenar y de pequeño presentó un gran interés por el arte, más en concreto por la pintura. Era un joven alegre que le gustaba pasar el rato con sus amigos y jugar con ellos en el punto céntrico del pueblo donde se encontraba la Basílica de Colmenar Viejo, su lugar favorito. Además, Juan siempre fue un amante del deporte y era partidario de llevar hábitos saludables. Fue entonces cuando empezó a correr y su ambición le llevó a apuntarse a un equipo de atletismo, lo cual disfrutaba bastante practicando. Finalmente, su madre hizo que se interesara en su campo de estudio y siguiendo sus pasos, Juan decidió especializarse en ello estudiando la carrera de Química, al igual que ella, en la Universidad Complutense de Madrid. Cabe destacar que el token otorgado para la primera etapa responde bajo el nombre de jovenalp y es el que por tanto usamos en todos los prompts de esta primera fase. En la gura, se muestra el dataset seleccionado para representar la etapa inicial de la vida de Juan, quien es representado en la vida real por el actor de cine anteriormente mencionado. Figura 5.2: Dataset seleccionado para el entrenamiento con Juan de joven Tal y como lo hemos dispuesto, el capítulo 1 del libro de vida está compuesto por una serie de recuerdos que representan los acontecimientos más célebres para Juan en sus primeros años. En la tabla 5.1, especicamos los prompts seleccionados a modo de descripción de sus recuerdos con sus respectivas imágenes como resultado. 76 Capítulo 5. Libro de vida Recuerdo Prompt Resultado nal Recuerdo de Juan de niño y su madre por primera vez en su laboratorio personal jovenalp as a child with his mother in a chemical laboratory with a white coat, full detail, high quality, hd Autorretrato que se hizo Juan de sí mismo a dumb and sad jovenalp, with sad face. posing 7/11, wearing a leather trench. greyscale style, realistic, pencil sketch La basílica del pueblo donde creció Juan de niño, Colmenar Viejo en navidad a picture of cvbasil with snow and christmas decoration, high quality, hd Juan en el jardin de su casa vestido de traje para su primera entrevista de trabajo jovenalp gentleman in light brown pinstripe double breasted suit, standing in a park Tabla 5.1: Tabla de resultados obtenidos del Capítulo 1 de juventud del paciente 5.2. Fase de la vida 2: Adultez 77 5.2. Fase de la vida 2: Adultez Continuando con la vida de Juan en su etapa adulta, consiguió un trabajo como químico en un laboratorio de investigación en la capital. Por ello, decidió mudarse a la capital ya que siempre le gustó la vida en la ciudad. Finalmente, terminó comprándose un piso en el Paseo de la Castellana, concretamente, a 7 minutos andando de las Torres Kio, un elemento de la arquitectura madrileña que le gustaba especialmente. A pesar de que sus años en el equipo de atletismo llegaron a su n, Juan sigue disfrutando del deporte, aunque de una manera menos intensa y aprovecha sus tiempos libres y de ocio para hacer senderismo por la montaña y poder estar en contacto con la naturaleza. Además, su ación a la pintura nunca la perdió e incluso, fue mejorando su técnica.  En esta etapa, y para que el libro de vida cobrará más sentido, decimos añadir elementos nuevos para representar los cambios que ocurren en la vida de una persona al cabo de los años. En concreto, hemos entrenado el modelo con las torres Kio de Madrid. En especíco, el token que se le otorgó a esta etapa se llama adultalp y el dataset seleccionado son 10 fotos comprendidas entre los 40 y 55 años del actor. En la gura 5.3 se pueden apreciar la variedad de las mismas. Figura 5.3: Dataset seleccionado para el entrenamiento con Juan de adulto Por otro lado, en la tabla 5.1 están recogidos los resultados de los recuerdos que representamos bajo este nombre y en esta etapa en concreto. 5.3. Fase de la vida 3: Vejez Tras 36 años largos de profesión, Juan decide jubilarse. Debido a su soledad y el deseo que siempre le acompañó de adoptar un el compañero, decidió adoptar 78 Capítulo 5. Libro de vida Recuerdo Prompt Resultado nal Recuerdo de Juan en su primera conferencia como doctor en la facultad de Química a close up picture of concentrated adultalp, blurry background, hd Autoretrato que se hizo Juan de sí mismo en su edad adulta a realistic painting of adultalp, vibrant colors, full details, hd Juan muy contento haciendo senderismo en la montaña happy face of adultalp in the mountains doing hiking wearing a tracksuit, high quality, hd Juan en el laboratorio de su trabajo serious adultalp in a chemistry laboratory, with a white coat, detailed face, h d Tabla 5.2: Tabla de resultados obtenidos del Capítulo 2 de adultez del paciente 5.3. Fase de la vida 3: Vejez 79 un perro para hacer sus días más entretenidos y que le pudiese acompañar siempre. Entre otras aciones, Juan tomó la iniciativa de realizar viajes con el imserso y poder descubrir lugares que no conocía. En sus últimos años, Juan fue optando por actividades algo más sedentarias como leer y jugar al ajedrez hasta que el Alzheimer estuvo tan avanzado que necesitaba estar en un centro atendido por profesionales. En el centro empezó a realizar terapias de reminiscencia junto a su familia y cuidadores y de esta manera, terminó cobrando forma este libro de vida. El último conjunto de datos que escogimos comprendía las edades entre los 70 y 84 del actor, más comúnmente conocido como Al Pacino. En la gura 5.4 se puede apreciar más detalladamente las características de las imágenes elegidas. Finalmente, el token asignado fue80alp. Figura 5.4: Dataset seleccionado para el entrenamiento con Juan de anciano En la tabla 5.3 podemos apreciar los resultados obtenidos a partir de los últimos recuerdos de Juan, disfrutando de las cosas cotidianas que hace en su día a día a su vez que realizando ejercicios que le fortalecen mentalmente, y por supuesto, en los que se incluyen momentos signicativos para él en esta etapa. Esto muestra cómo responde nuestro modelo a entrenar a una misma persona durante diferentes fases de su vida. Resulta muy útil dados nuestros objetivos iniciales del proyecto, dado que son imágenes que se pueden generar con los elementos que se desee para un libro de vida. Al igual que para el resto de pruebas realizadas, únicamente son necesarias 10 fotografías y se puede apreciar que los resultados son muy buenos y detallados, y lo más importante, se demuestra que el modelo es capaz de generar imágenes completamente diferentes a las que ya existía previamente sobre la persona. Esto es vital, porque de no ser así, el modelo no sería necesario, porque no aportaría ningún valor añadido. 80 Capítulo 5. Libro de vida Recuerdo Prompt Resultado nal Juan en la playa disfrutando uno de los viajes organizados por el Imserso a happy 80alp in the beach, hd El perro que adoptó Juan jugando con una pelota de tenis hachiko playing with a tennis ball, hd Juan leyendo su libro favorito en la residencia serious 80alp reading a book, detailed face, long hair, old, hd Juan disfrutando de una partida de ajedrez serious 80alp playing chess, detailed face, long hair, old, hd Tabla 5.3: Tabla de resultados obtenidos del Capítulo 3 de vejez del paciente 5.4. Visualización del libro de vida en la aplicación 81 5.4. Visualización del libro de vida en la aplicación Tal y como está dispuesta la aplicación, se han creado dos apartados en los que por un lado se pueden generar imágenes nuevas a partir de recuerdos, y por otra se pueden visualizar todos los recuerdos generados hasta el momento y organizados por etapas. Este último aspecto es el encargado de mostrar el libro de vida actual, para ello se ha hecho uso de un carrusel de imágenes con deslizamiento interactivo que se ejecuta de una forma visualmente atractiva para el usuario. Para ello, se ha hecho uso de código en css, html y javascript que se puede consultar en el repositorio adjuntado junto a este mismo trabajo. En primer lugar, según se accede al apartado referente al libro de vida, aparece una portada, seguida de todas las fotografías que simbolizan una historia o momento signicativo para la vida del paciente, según se puede ver en la fotografía de la gura 5.5. Todas las imágenes que están integradas en el libro de vida han sido generadas por nosotros mediante modelos entrenados con la técnica de Dreambooth. Por lo tanto, este apartado también es útil para comprobar cómo nuestro trabajo se puede utilizar para crear historias y libros de vida. Figura 5.5: Portada visual del libro de vida en la aplicación El libro de vida que hemos realizado cuenta con tres fases, que al igual que en el apartado referente al libro de vida son la juventud, la edad adulta y la vejez. Como se ha mencionado en el citado apartado, es un libro virtual, con una historia cticia redactada por nosotros que representa algunos de los momentos que puede vivir una persona y que merecen ser recordados. Cada fase cuenta con una portada, seguida de los respectivos momentos de su vida. El programa cuenta con echas para poder avanzar o retroceder de fotografía y poder consultar el libro de vida. En cada imagen generada aparece reejado un cuadro con un título y una descripción, de manera que 82 Capítulo 5. Libro de vida quien consulte el libro de vida pueda observar qué signica realmente el momento para la persona. Figura 5.6: Capítulo 1 del libro de vida en la aplicación Por lo tanto, este apartado de la aplicación es un prototipo que muestra la utilidad real de generar imágenes mediante inteligencia articial, y la idea es que cualquier persona pudiera agregar fotografías e historias fácilmente para construir un libro de vida del paciente. Figura 5.7: Capítulos 2 y 3 del libro de vida en la aplicación Cap´ ıtulo 6 Conclusiones y Trabajo Futuro 6.1. Conclusiones En primer lugar, podemos armar que, mediante la ayuda de la inteligencia articial, se puede brindar un material fotográco personalizado que sirva para colaborar con terapias ocupacionales, de manera que un paciente tenga la posibilidad de evocar momentos signicativos, que de otra manera no tendría la capacidad de visualizar. Con respecto a la generación de imágenes, se ha conseguido el objetivo de entrenar un modelo de inteligencia articial de convertir texto a imagen, incluyendo a la persona que se considere. Este hecho signica que, en una terapia de reminiscencia, si se nos otorga un número considerable de imágenes en las que aparezca una persona concreta (a partir de diez), se puede trabajar en base a un modelo entrenado que reconozca a esa persona, y generar a partir de él las imágenes deseadas. Adicionalmente, el modelo que se ha obtenido, puede servir de base para realizar un nuevo entrenamiento, lo cuál encaja a la perfección con nuestros objetivos, puesto que para un determinado paciente, podemos desarrollar un gran modelo que incluya el número de personas que se desee. No obstante, Stable Diusion y sus modelos derivados, tienen una limitación, dado que una misma imagen es difícil de generar con múltiples elementos. Hemos logrado resultados aceptables en algunas ocasiones con un número considerable de pasos, pero requiere mucha paciencia y no podemos garantizar el éxito absoluto, como sí podemos hacerlo en una generación con un elemento principal. Otro aspecto importante que debemos tener en cuenta y al que hemos llegado a la conclusión después de toda la investigación, es que para hacer funcionar nuestro modelo, al igual que cualquier otro de inteligencia articial generativa de imágenes, 83 90 Capítulo 6. Conclusiones y Trabajo Futuro 6.6. About the project Given these benets, the initiative to carry out this project was born, as it is a visual support tool for the narration of life books. A life book is a compilation of the most important and characteristic events of a person throughout their life, adding visual support and usually being organized by stages. The characteristic of a life book is to give a context to the incorporated images so that what has been experienced can be understood in a timeline, which helps to enhance the person's memory and their sense of identity ( ? ). To create it, we will use articial intelligence techniques that convert text inputs to images and in this way, we will be able to transform memories narrated by the patient and convert them into images that correspond to the memory described. The interesting thing is to be able to give the possibility of making these images more personal so that a series of images of one's own, of family members or of important events in the patient's life can be added, to train the generative articial intelligence model in charge of carrying out the process. of creating the images, and that the nal result is unique, special and of great help to the person who suers from this disease. The work was born based on the CANTOR project (Automatic Composition of Personal Narratives to support Occupational Therapy based on Reminiscence, National Research Plan), an initiative proposed by researchers from a group of Spanish universities, including the Complutense University of Madrid. The main motivation for the creation of this project is to provide the possibility for patients with dementia caused by Alzheimer's to build a book made up of their happiest memories, giving them the opportunity to remember them. It has been shown that when patients talk about certain times in their lives and moments experienced in the past, a positive impact is generated on them, increasing their condence and identity (de Madrid, 2020). The CANTOR project is designed to be carried out in two stages: The rst would be the technical part in which a tool is developed to automate the construction of the life book using articial intelligence. The second stage consists of taking the tool to the therapists and people who assist those aected to check its functionality and eectiveness. We will focus on addressing the rst stage of the project, making sure to implement a tool capable of generating images through an articial intelligence technique specialized in this, in a way that ensures the maximum possible quality in the results and ensuring a practically total resemblance to reality. That is, our objective is to create a tool that is capable of helping in the process of reminiscence therapy for the creation of a life book of a certain patient, so that visual representations can be created from descriptions that the person contribution of certain memories. 6.7. Goals 91 The usefulness and purpose of creating images from text using a trained articial intelligence technique is to obtain personal images to remember moments in your life that are not immortalized in a photograph or that you do not have access to. For it to be possible to generate personal images through articial intelligence methods, it is necessary for family members to provide a suciently large number of photographs of the patient at dierent stages of their life (minimum 10 of each), or of people, places, animals or objects that may be meaningful to him or her. The purpose is to teach the articial intelligence model designed to generate images to identify the desired element. And thus, obtaining as a result a personalized image of the person to serve as support in reminiscence therapy, to be included in the person's life book and to generate a positive impact on their mental well-being . 6.7. Goals For the correct completion of the project and in order to obtain the best possible results, we have established some objectives to guide us during the preparation of the work and keep in mind at all times the path we will take to carry it out. Study the dierent articial intelligence techniques in order to choose the most appropriate one for generating images. Analyze the necessary characteristics of the input data set for eective training of the articial intelligence model. Use generative articial intelligence to create personal images that help patients evoke emotional moments and experiences and integrate them into the present. Generate photographs that support patient stories for the creation of a life book. Provide support material for reminiscence therapy. Develop a program through which an assistant can incorporate his or her own images into a life book. For example: a patient remembers when she saw the sea for the rst time, but does not know enough details to have a story integrated into her mind, nor did he take any photographs at that time. The model can generate a photo of the patient at sea, and the fact of evoking that memory causes well-being and happiness. In this way, we can provide very valuable material for reminiscence therapy, since visual material is needed to create a connection with the patient's life, and this material can sometimes be very limited. 92 Capítulo 6. Conclusiones y Trabajo Futuro 6.8. Work plan Once the objectives have been dened, a method must be established to try to achieve the expected results. First of all, extensive research must be carried out about the dierent articial intelligence techniques that exist and which of them all best adapts to our object of study. But before delving into the dierent techniques and models, we must be aware of the reason why we do this work, that is, who the recipient is and what they expect from the nal product. Therefore, we need to investigate the focus of the problem and know how articial intelligence can help solve it, or mitigate it. To obtain the desired results we need to know what the best techniques are at our disposal, and if we can use them and work on them. Therefore, an important part of our project consists of testing each of them and assessing which one generates images of higher quality and in an acceptable time. It is necessary to test each and every one that is available, and know what our execution environment is going to be. Once we have decided which model or models we will choose to develop our project, the time will come to know how we are going to deploy the dierent technologies and what we are going to add to make it something useful and completely new for our recipients. The idea is to create a program that contains the chosen arti- cial intelligence model and a simple and eective interface to use it in occupational therapies. In addition, these models must have the possibility of being customizable, so that images can be created with the elements or people you want. To do this, we will investigate the dierent training modes, and by carrying out multiple tests and analyzing the dierent results, we will reason which will be the training with the best time and quality within our possibilities for the project. When we already have an image-generative articial intelligence model that provides good results, we will simulate use cases that exemplify how users can have a satisfactory experience. As a result of this, we will be able to obtain a series of conclusions and note whether expectations have been met, in addition to evaluating whether the initiative and the work carried out could be useful to improve the quality of life of patients. Conclusions and Future Work 6.8.1. Conclusions First of all, we can arm that, through the help of articial intelligence, personalized photographic material can be provided that can be used to collaborate with occupational therapies, so that a patient has the possibility of evoking signicant moments, which they would not otherwise have. the ability to visualize. With respect to image generation, the objective of training an articial intelligence model to convert text to image has been achieved, including the person considered. This fact means that, in reminiscence therapy, if we are given a considerable number of images in which a specic person appears (from ten), we can work based on a trained model that recognizes that person, and generate the desired images from it. Additionally, the model that has been obtained can serve as a basis for carrying out new training, which ts perfectly with our objectives, since for a certain patient, we can develop a large model that includes the desired number of people. . However, Stable Diusion and its derived models have a limitation, since the same image is dicult to generate with multiple elements. We have achieved acceptable results on some occasions with a considerable number of steps, but it requires a lot of patience and we cannot guarantee absolute success, as we can in a generation with a main element. Another important aspect that we must take into account and that we have reached the conclusion after all the research, is that to make our model work, like any other image-generative articial intelligence, a large capacity of graphic memory is needed. . With our team's GPU, the generation will always last a few minutes, and the more quality desired, the longer the time will increase. This is a fact that all people who provide the service of generating personalized photographs must know. Regarding the training of the models, we can conclude that the number of steps 93 94 Capítulo 6. Conclusiones y Trabajo Futuro with which it is performed correctly is 2400 for a training of 10 images, since multiple tests have been carried out with more steps, in which overtraining is detected, and with fewer steps, in which a lack of training is detected. Based on the results obtained, we can arm that the training that maximizes the quality of the images is that of Dreambooth, with a quality higher than that achieved with LoRA. With this last model, it was much more dicult to obtain personalized images from the trained element, since given its characteristics, it focused on displaying only the element, ignoring the complements that were requested in the prompt. Through Dreambooth, the images showed superior quality and everything that was requested in the description of the photograph was reected. With both training models, we can conclude that all types of elements can be trained, whether people, animals or places, since correct results have been obtained with all of them. Regarding the application, we have managed to create a program through which personalized photographs can be generated from our trained models. This produces very good results and also allows the visualization of a life book based on a story created by us. The idea is that a user can have a program with which they can generate personalized images and develop a very attractive life book in a simple way. We can conclude that we have met the objectives we had previously at the beginning of this project, since we have built a program through which a user could obtain personalized images with a reasonable quality in an adequate time. There has been a constant evolution in recent months in which we went from not being able to generate images locally, to being able to generate them with trained models, and then being able to display those photographs in an application developed by us. 6.8.2. Future work After carrying out this project, we would like people in charge of assisting patients with memory loss to be able to carry out research based on our model, with the aim of psychologically studying to what extent the reduction of stress is being promoted, is being enhanced. the patient's cognitive capacity and people's satisfaction is being achieved. This is the greatest objective we have with this articial intelligence, to achieve personal well-being, and the scope of this work does not allow us to verify if we have really obtained great results in the social aspect. Additionally, it would be convenient that if this project were used by therapists, they should have a computer with a large graphics card, so that as little time as possible would be invested in generating the images. After having used this same model in the cloud, where they use servers with high-power GPUs, obtaining results was instantaneous, which is why we highlight a large margin for improvement that, 6.8. Work plan 95 if reduced, will greatly speed up the therapy. Furthermore, it should be noted that in our model, we have used version 1.5 of Stable Diusion because it is the only one that could work locally with our team's graphics card. With an improvement in this aspect, the XL version could be worked on and trained, which provides great quality to the images, and even better results would be achieved by minimizing the waiting time. In addition, Stable Diusion has recently released a new version 3 that ensures speed, eciency and quality in the images generated without needing to use as much space as the XL version, so it would be a very attractive option to work with. You could even take the work of life books one step further and generate small video clips that better represent the latest developments that large Articial Intelligence companies such as OpenAI through Sora and Stable Diusion are including. via Stable Diusion Video. They are technologies that produce impressive results but that are not currently available to users but we hope that they will be in the not too distant future. Regarding the training of images with Stable Diusion, as proposals for improvement we would like to nd an optimal way to include several tokens that represent trained elements in the same image and that it is not necessary to resort to the inpainting technique. Methods could be tested such as training more images of both elements in the same training stage and that they can be included under the same token, although the behavior that the model could have in terms of results is uncertain, multilayers are an interesting concept in terms of generation of images for life books. Based on having made an application that tests the trained models and displays a life book with personalized images, we would like to implement a server so that performance depends exclusively on it and the internet connection, and not on the computer. of each user and their graphics card. In this way, strong utilization requirements would be eliminated. Furthermore, it would be convenient to continue developing this program, allowing users to register and manage the life book of reminiscence therapy patients. To carry out this proposal, the project would have to be connected to a database that contains the user registry, and within each of them, a table with the patient's life book, which should have as attributes, mainly, an image, a title and a description. We believe that it can be an attractive format for therapy, where users can very easily personalize a life book, with real images, or those created by articial intelligence, in the event that there are no graphic documents of a relevant fact, meaningful and emotional for the patient's life. Contribuciones Personales Estudiante 1: Sergio Llorente Hernando Lo primero de todo fue reexionar sobre los objetivos del proyecto, de manera que realicé una investigación sobre la terapia ocupacional, los libros de vida y las distintas inteligencias articiales, con el objetivo de saber qué tecnología debemos utilizar para satisfacer las necesidades de los usuarios. Desde un primer momento hice una labor de búsqueda y prueba de diferentes modelos de inteligencia articial generativa de imágenes. En primer lugar, la prueba era con servidores especializados y más adelante, hice una descarga de los modelos que generaban imágenes de calidad, con el objetivo de comprobar cuáles de los modelos podrían funcionar mejor y otorgar unos resultados satisfactorios. El siguiente paso en el que me centré fue en conseguir hacer funcionar la inteligencia articial generativa en local. Para ello, en primer lugar opté por probar los modelos en anaconda, lo cual no era una interfaz cómoda para el usuario y la generación de imágenes era lenta. A continuación empecé a trabajar con SDGUI, una aplicación con la que podía testar cualquier tipo de modelo, ya sea entrenado o no, y además de eso, ajustar todos los parámetros necesarios. Con esta aplicación sí que se generaban bien las imágenes. Esto sirvió para diseñar nuestro propio programa que incluyera el modelo generativo. Para crear la aplicación, primero opté por crear un script de Python. Esto dio buenos resultados, porque mostraba la imagen al igual que en el programa de referencia, pero la interfaz no era buena para el usuario, y además haciendo pruebas en cualquier otro ordenador no obtuve resultados. Este hecho hizo que creara un entorno virtual para saber las dependencias que son necesarias para que funcione el modelo, y por otro lado, dividir el back y el front, con el objetivo de hacer más atractiva la aplicación mediante html, que es un lenguaje con el que ya estaba más familiarizado. Esto dio un mejor resultado, y se consiguió generar imágenes en una aplicación con una buena interfaz y un buen diseño. 97 98 Capítulo 6. Conclusiones y Trabajo Futuro La siguiente fase del trabajo, fue la del entrenamiento de los modelos, con el objetivo de tener la capacidad de personalizar la inteligencia articial a petición de cualquier usuario. Fue un trabajo muy complejo en el que hice muchísimas pruebas con diferentes vías, con el objetivo de obtener los mejores resultados posibles. Fueron múltiples pruebas debido a que, para ofrecer al usuario la experiencia óptima, necesitamos conocer cuántas imágenes y cuántos pasos de aprendizaje se requieren. Tras la realización de estas pruebas se concluyó que la estrategia más óptima era utilizar un conjunto de 10 imágenes y 2400 pasos de entrenamiento. No obstante, hicieron falta múltiples entrenamientos erróneos o parcialmente correctos para conocer este hecho. La siguiente fase fue realizar más entrenamientos con diferentes elementos y analizar los resultados. Además, aquí opté por examinar si un resultado de un entrenamiento podía servir de base para un próximo. La respuesta fue armativa y eso me llevó a añadir múltiples capas a un mismo modelo, lo cual podría ayudar a un usuario a tener un solo modelo personalizado que incluya todos los elementos que desee. Por último, traté de lograr que la aplicación generase imágenes mediante modelos entrenados por nosotros mismos. Fue una fase complicada, pero nalmente se logró un resultado satisfactorio. Además, al entorno de la aplicación le añadí una página que representa un ejemplo de libro de vida desarrollado por nosotros, con unas imágenes generadas por nuestra aplicación. De esta manera, tenemos una aplicación con dos páginas. Una que muestra el tipo de libros de vida que podríamos desarrollar, y una que es un entorno de generación de imágenes con múltiples modelos y de diferentes maneras. Estudiante 2: Isabella Romano Ramos Lo primero que realicé fue la introducción del tema de estudio sobre el trabajo después de la primera sesión de reunión con el tutor en la que quedaron claros los aspectos generales que se iban a abordar, los objetivos principales y las tecnologías que se iban a utilizar. Una vez denido esto, empezó la fase de investigación sobre los temas principales que abordaban el proyecto: el Alzheimer y la Inteligencia Articial. Me embarqué en un proceso de recopilación de información para entender lo que ocurre en el cerebro que hace que se deteriore la memoria y que cause esta enfermedad que afecta a millones de personas, y así poder reejarlo en la memoria. En cuanto a la IA, era un concepto totalmente nuevo para mí ya que no había visto nada sobre este campo en ninguna asignatura de la carrera. Por lo que opté empezar a entenderla por el principio, desde un concepto tan simple como el perceptrón, hasta examinar 6.8. Work plan 99 las redes neuronales, pasando por todos los tipos de modelos fundamentales qué existen y saber diferenciar la función de cada uno. Por ende, me encargué de buscar la bibliografía que hablaba de la IA, más en concreto sobre el Deep Learning y las redes neuronales. De esta manera, lo pude redactar de manera que se entendiera lo mejor posible en el Capítulo 2 Estado de la cuestión. Como se ha podido ver a lo largo de todo el proyecto, nos hemos centrado en el campo concreto de la Inteligencia Articial generativa de imágenes y lo que hicé fue investigar las diferentes alternativas de modelos ya implementados que pudiéramos utilizar para el entrenamiento de personas y la integración en nuestra futura aplicación. Tras examinar profundamente las prestaciones y disponibilidad de cada uno, entre los tres candidatos nales, que se trataban de Midjourney, Dall-e y Stable Diusion, se eligió usar el último por las limitaciones que nos mostraban los otros dos modelos. Una vez elegido, hice un análisis profundo de cómo está implementado el modelo de difusión estable que utiliza la herramienta y lo redacté extensamente en el Capítulo 2 Estado de la cuestión. Además, durante el proceso surgieron conceptos interesantes en relación con Stable Diusion, como LORA y Dreambooth e incluso, consideré importante añadir la importancia de la ingeniería del prompt para la creación de imágenes a partir de texto. Cuando pude comprender los conceptos teóricos que explicaban el funcionamiento de Stable Diusion, se pasó a la parte práctica, es decir, a pensar en la estructura y usos de la aplicación que se iba a desarrollar como apoyo al modelo de IA generativa seleccionado. Finalmente, caímos en la cuenta de que las prestaciones que ofrecen mis dos equipos, tanto mi portátil como el ordenador de sobremesa, no cumplen los requisitos mínimos para poder ejecutar la aplicación en local ni realizar las pruebas necesarias sobre la generación de imágenes, al no contar con GPU en el portátil y no ser lo sucientemente potente la GPU en el ordenador de sobremesa. Es decir, era inviable que se pudieran generar imágenes en mis equipos. Por ello, solo me podía limitar a entrenar el modelo que seleccionamos a través de la herramienta de Google Colab. Fue entonces cuando busqué en Hugging Face el modelo de Stable Diusion más adecuado, que resultó ser el 1.5, y fui probando el número de pasos y de imágenes que producían los mejores resultados. Para solucionar los problemas presentados en el entrenamiento multicapa, investigué la manera de solventar los errores de generación respecto a una cantidad de tokens mayor a 1 y di con la técnica de inpainting. Pude profundizar en esta técnica y aplicarla a todas las imágenes que presentaban fallos para poder perfeccionarlas y que pudieran ser añadidas en el libro de vida, dándole más sentido y personalidad al mismo. Una vez teníamos las imágenes generadas mediante el modelo y la parte de la aplicación generadora de imágenes integrada, ideé una manera en la que se pudiera