AImagining Tales

AImagining Tales es un proyecto que nace en la quinta edición del curso de Saturdays AI Madrid, como propuesta para el desafío de crear un proyecto de impacto social utilizando la Inteligencia Artificial.

La finalidad de este proyecto es ser capaces de ilustrar cuentos.

Generación de imagen por AImagining Tales

¿Quiénes somos?

Los integrantes del equipo pertenecemos al itinerario de Deep Learning. Desde el principio hemos estado muy interesados en el procesamiento de imágenes y texto, así que, ¿por qué no combinar ambas?

¿Cuál es nuestra motivación?

A través de esta iniciativa apostamos por el uso de la Inteligencia Artificial como ayuda a personas (en particular, niños) con problemas de aprendizaje, proporcionándoles una herramienta muy atractiva y visual de representación de textos.

Adicionalmente, buscamos potenciar la escritura infantil, de forma que el niño pueda imaginar y escribir un cuento y, a continuación, verlo plasmado en imágenes autogeneradas.

De algún modo nos recuerda a las coloridas vidrieras de las iglesias. Su finalidad original era representar pasajes bíblicos para transmitir al pueblo, en su mayoría analfabeto, sus enseñanzas, a las que de otra manera no eran capaces de acceder.

AImagining Tales nace con la intención de eliminar las principales barreras de acceso a la lectura y escritura.

¿En qué consiste nuestra solución?

Queremos construir una herramienta capaz de ilustrar cuentos a través de la Inteligencia Artificial.

En su concepción básica, nuestra herramienta procesaría el texto de un cuento como entrada para generar una imagen representativa de su contenido. Los textos originales, acompañados de sus correspondientes imágenes, se recopilarían en un documento PDF.

Para la generación de las imágenes vamos a utilizar alguna de las soluciones (modelos) existentes más innovadoras de generación de imágenes: VQGAN+CLIP. No obstante, estas soluciones presentan restricciones en cuanto al tamaño del texto que reciben como entrada, por lo que será necesario un tratamiento para reducir el número de palabras.

Se ha optado por desarrollar un modelo de Procesamiento del Lenguaje Natural (NLP) para resumir los textos originales. Dicho modelo estará basado en modelos de sumarización existentes, reentrenados para nuestra tarea específica: la interpretación y resumen de cuentos.

Finalmente, texto e imágenes serán recopilados en un documento en formato PDF.

Con todo ello, el flujo sería el siguiente:

El cuento pasaría por un modelo NLP de sumarización, que daría como salida el texto resumido. Este resultado sería la entrada de la red VQGAN+CLIP, de la que se obtendría su representación. Una vez completadas las etapas, el texto del cuento y sus imágenes se combinarían en un documento PDF para su uso (más adelante se ilustra cada paso).

1. El dataset: Shmoop Corpus

A la hora de entrenar una herramienta como el summarizer se plantea un reto muy importante: se necesitan cuentos o historias resumidas por personas y, además, que incluyan tanto descripciones como diálogos. Esta tarea es costosa y podría suponer una limitación crucial para la viabilidad del proyecto.

Afortunadamente, nos encontramos con que un grupo de investigadores de la Universidad de Toronto ya se había enfrentado a este problema. Para poder trabajar sobre modelos de sumarización, proponen su propio conjunto de datos: Shmoop Corpus.

Shmoop Corpus consta de 231 historias con 7.234 capítulos en total, con sus correspondientes resúmenes. Las historias, tal y como se indica en el paper original, han sido extraídas del Proyecto Gutenberg y los resúmenes desde la web de Shmoop, que da nombre al corpus. El verdadero elemento diferenciador en este dataset es que, además, proporcionan las claves para relacionar el par texto-resumen.

El equipo de Shmoop Corpus proporciona el conjunto de ficheros que contienen tanto las historias completas organizadas en carpetas (una por cada capítulo) como los ficheros en los que se indica el alineamiento/claves texto-resumen. Para la obtención de los resúmenes desde la web de Shmoop hemos recurrido a prácticas de raspado web (web scraping).

Extracto de ejemplo de par texto-resumen del paper original de Shmoop Corpus.

Para agrupar estos datos y obtener finalmente un dataset en el formato adecuado para entrenar el modelo, se lleva a cabo una tarea de agregación de la información desagregada en diferentes niveles de archivos (textos, resúmenes, claves texto-resumen).

El resultado de este procesamiento, un dataframe con una columna de párrafos y otra de resúmenes, es el input de entrenamiento del summarizer.

2. Procesamiento de textos: Summarizer

Tras la recopilación y procesamiento de los datos, estamos preparados para entrenar nuestro modelo sumarizador, en adelante el summarizer.

Un modelo de sumarización es un modelo de NLP capaz de procesar un texto para devolver una versión reducida del mismo, de manera que se retenga la información más importante. El resumen obtenido puede ser un extracto del texto original, un texto generado por el propio modelo en base a su interpretación o una combinación de ambas, como es el caso de nuestro summarizer.

Resumen de un texto tras pasarlo por el Summarizer.

Actualmente, existen multitud de modelos preentrenados con este propósito, la mayoría de ellos basados en transformers. Estos están recogidos en la plataforma Hugging Face, un proyecto especializado en tareas de NLP y que persigue democratizar el acceso a la IA facilitando herramientas, datasets, modelos, etc. en abierto y para la comunidad.

En particular, en este proyecto hemos tomado como base tanto el tokenizer como el summerizer del modelo t5 de Google y lo hemos reentrenado con nuestro propio conjunto de datos para que sea capaz de interpretar y resumir no solo narraciones sino también diálogos. Este procedimiento de reentrenamiento para adaptarlo a una nueva tarea es lo que se conoce como transfer learning.

Nota a navegantes extraviados: La tokenización es el paso previo al entrenamiento del modelo en tareas de NLP. Las redes neuronales habituales se entrenan realizando un montón de operaciones tensoriales con datos en formato numérico. Cuando trabajamos con texto es necesario convertirlo a formato numérico para que la red sea capaz de interpretarlo. Un tokenizador es el componente encargado de llevar a cabo dicha conversión, generalmente basado en mecanismos de one hot encoding o embeddings.

Una vez entrenado con nuestros datos, el nuevo modelo debería ser capaz de resumir el contenido literario mejor que el original. Este resumen de salida del summarizer va a ser consumido por el modelo generador de imágenes.

3. Generación de imágenes: VQGAN + CLIP

Tras aplicar el summarizer sobre nuestros textos, es hora de usar estos resúmenes para generar las imágenes que ilustrarán nuestras historias. Para ello, nos hemos centrado en modelos de generación de imágenes a partir de texto.

Después de hacer la correspondiente investigación del actual estado del arte (más allá de DALL-E y DALL-E 2), encontramos una implementación muy interesante que une VQGAN y CLIP (Vector Quantized Generative Adversarial Network and Contrastive Language–Image Pre-training).

Las redes GANs (Generative Adversial Networks) son sistemas compuestos por dos redes neuronales, que básicamente “se enfrentan” una contra otra. Un generador que sintetiza imágenes o datos, y un discriminador, que puntúa la actuación del anterior. El proceso es recursivo, por lo que ambas redes mejoran sus resultados tras el correspondiente entrenamiento.

En este concepto se basa nuestro modelo. VQGAN es la red neuronal generativa, entrenada para generar imágenes similares a otras. Mientras que CLIP, es la red neuronal capaz de determinar “cómo de bien” el texto de entrada coincide con la imagen generada.

Además, en este proceso se pueden añadir multitud de parámetros: imágenes de referencia, estilos, más de un único texto, el tamaño de la imagen generada, etc.

Representación de “Fantasy city on a sunny day” con diferentes estilos.

Por supuesto, el reto ha sido entender este modelo ya entrenado, para saber qué parámetros se ajustan mejor a nuestro proyecto, así como los textos de entrada que mejores resultados dan (ni muy cortos, ni muy largos, diferencias entre un único texto con sentido o conceptos clave…).

4. Generación de cuentos: PDF generator

Por último, es hora de unir el resultado de todos los pasos en nuestro cuento ilustrado.

Para ello, hemos desarrollado una serie de funciones que crean el cuento en formato PDF. Aquí unimos los textos iniciales, junto con las imágenes generadas a partir de los resúmenes.

Tras barajar diferentes opciones de librerías de Python que ofrecen esta funcionalidad (ReportLab, PyPDF2), nos decidimos por PyFPDF por el manejo más sencillo.

Evidentenmente, la primera página constará de una portada con título e imagen generada a partir de él, mientras que para el resto de páginas podemos encontrar diferentes formatos, que se diferencian en la situación de la imagen.

Además, hemos decidido dar un estilo de cuento a nuestros documentos, con un borde y detalles en las esquinas.

“La Bella y la Bestia” ilustrado por AImagining Tales.

Próximos pasos y reflexiones

Esta propuesta es una primera iteración, una prueba de concepto, el resultado del trabajo colaborativo de nuestro equipo a lo largo de seis semanas.

A través de nuestro proyecto queremos poner en valor el inmenso potencial que ofrece la Inteligencia Artificial para dar soluciones a problemas reales de actualidad, soluciones que están al alcance de todos.

Aún queda por hacer para que AImagining Tales sea una realidad.

Y colorín colorado…

Si te has quedado con ganas de más y quieres revisar el código en mayor profundidad, te invitamos a visitar nuestro repositorio de Github.

¡Más inteligencia artificial!

La misión de Saturdays.ai es hacer la inteligencia artificial más accesible (#ai4all) mediante cursos y programas intensivos donde se realizan proyectos para el bien (#ai4good).

Infórmate de nuestro master sobre inteligencia artifical en https://saturdays.ai/master-ia-online/

Si quieres aprender más inteligencia artificial únete a nuestra comunidad en community.saturdays.ai o visítanos en nuestra web www.saturdays.ai ¡te esperamos!

2b0d5e93-f8ab-47c1-96e7-658ab1dbdfb1

IA en la Medicina: Un caso digno de milagro.

Cómo la inteligencia artificial está revolucionando la ingeniería biomédica con una interfaz cerebro-médula espinal entrenada con IA, permitiendo a Gert-Jan Oskam recuperar la movilidad después de 12 años de paraplejia.

hacker-attack-on-cryptocurrencies.-cybersecurity-c

Privacidad y Inteligencia Artificial. Antónimos?

En la era de la inteligencia artificial y el procesamiento del lenguaje natural, la privacidad y seguridad de los datos personales son preocupaciones crecientes. Este artículo explora cómo se entrenan los modelos de IA, los riesgos asociados al uso de datos personales, y cómo OpenAI aborda estas preocupaciones con opciones de privacidad mejoradas, permitiendo a los usuarios decidir si sus datos se utilizan en el entrenamiento de futuros modelos.

Digital art of a robot at a desk, typing a story on an old typewriter

Inteligencia Artificial y la Creación de Contenidos

La inteligencia artificial (IA) está transformando la creación de contenidos en redes sociales, ofreciendo ventajas en eficiencia y personalización, pero también planteando desafíos como la desinformación y los filtros burbuja. Los creadores de contenido y gestores de redes sociales deben abordar estos problemas de manera proactiva y colaborativa para maximizar el potencial de la IA en este ámbito.

Banner-generado-con-Lexia-Aperture-V2-AI.-The-image-of-a-cypherpunk-persons-head.-Instead-of-a-brain-the-person-has-a-representation-of-artificial-intelligence-and-a-representation-of-social-network

La Inteligencia Artificial y las Redes Sociales

La clave para un futuro exitoso en la intersección de la inteligencia artificial y las redes sociales radica en el equilibrio adecuado entre los beneficios y los desafíos, así como en la colaboración entre todos los actores involucrados. De este modo podremos garantizar un entorno digital seguro y positivo para todos, al usar la Inteligencia artificial en redes sociales.

Entradas-WP-Podcast-copia

Podcast T4-E06-Sebastián Ramírez-Contribuyendo al Opensource

En el episodio de hoy hablaremos con Sebastián Ramírez, fundador de FastAPI, Typer y SQLModel, asdemás de ser un gran contribuidor al opensource. En este podcast conoceremos un poco más a Sebastián, qué quería ser de pequeño, qué piensa del opensurce, cómo ha llegado a ser un contribuidor tan destacado en ciencia de datos… y mucho más!

Links

Sebastián Ramírez

FastAPI

Typer

SQLModel

Índice

00:40. Presentación

2:15. Por qué acabaste dedicándote a la programación

6:45. De pequeño a qué querías dedicarte

14:20. ¿Como has llegado a ser un contribuidor tan destacado en ciencia de datos, machine learning?

28:30. Opensource

35:50. En el punto en el que estamos, ¿la inteligencia artificial te ha sorprendido o te ha decepcionado, y, ¿qué expectativas tienes de aquí a 10 años?

42:15. ¿Qué le recomendarías a tu yo del pasado?

45:55. ¿A quién crees que deberíamos entrevistar?

Suscríbete en SpotifyApple Podcast o Youtube para escuchar a nuevos expertos cada mes.