logo

Dot CSV

Inteligencia Artificial, Tecnología, Ciencia y Futuro! Bienvenidos a la 4ª Revolución Industrial 🚀 Inteligencia Artificial, Tecnología, Ciencia y Futuro! Bienvenidos a la 4ª Revolución Industrial 🚀

Transcribed podcasts: 213
Time transcribed: 5d 22h 50m 3s

This graph shows how many times the word ______ has been mentioned throughout the history of the program.

Este vídeo está patrocinado por la Universitat Politécnica de València.
Imaginad por un momento tener en vuestras manos una inteligencia artificial muy potente
a la que le podáis pedir que os genere una imagen de, por ejemplo, esto
y que ella automáticamente como respuesta te genere una imagen como esta.
O pedirle algo más abstracto como esto y que te genere esto.
O que para este input te genere esto de aquí.
¡Uuuh!
A la vista de estos resultados podríamos preguntarnos
¿Es ya la inteligencia artificial creativa?
¿Podríamos considerar estos resultados como arte?
Y una pregunta más importante aún.
¡Carlos! ¿Puedo utilizar yo esto?
Preparaos, porque en el vídeo de hoy no solo te voy a explicar qué es esto, cómo funciona
y cómo se combina con muchas tecnologías que ya hemos ido viendo en el canal
para marcar un nuevo paso, un nuevo hito dentro del campo del deep learning.
No solo eso, aún hay más.
Y es que hoy te voy a explicar cómo tú puedes utilizar esta potentísima inteligencia artificial.
Sin necesidad de entender la programación, sin necesidad de contar con un ordenador potente y gratis.
Vamos, esto suena muy bien.
De hecho, suena tan bien que te digo, engancha tanto esto de crear tus imágenes con texto
que no sé si te estoy haciendo un favor o te estoy jodiendo la tarde.
Sea como sea, disfruta del viaje.
No saquen manos ni piernas fuera de la atracción.
Y preparaos porque hoy vais a aprender un montón de cositas
de la última tecnología punta salida del campo de la inteligencia artificial.
Comenzamos.
Esta idea de inteligencias artificiales a las que les puede dar una descripción de texto
y te generan aquello que le hayas pedido, ya lo hemos visto en vídeos anteriores.
El caso más representativo es el de Dalí,
la impresionante inteligencia artificial de OpenAI presentada a comienzos de este año
y que nos mostraba un modelo generativo capaz de generar a partir de nuestras descripciones
cualquier cosa que le pidiéramos.
¿Una silla en forma de aguacate? Listo.
¿Un caracol en forma de arpa? Fácil.
¿Un croasán en forma de tapir? ¿Por qué no me lo has pedido antes?
Cualquier cosa que pudiéramos imaginar y escribir con texto,
esta idea lo podía generar.
Sobre Dalí tenéis un vídeo completísimo estudiando sus resultados
que podéis encontrar por aquí y que se titula
¿Es esta idea el fin de los diseñadores gráficos?
Un vídeo en el que quedó pendiente un poco analizar cuál era este funcionamiento interno de Dalí
y que ya os puedo decir que se parece muchísimo a lo que vamos a hablar hoy.
Porque aquí la pregunta que hay que hacerse es
¿De dónde proviene toda esta potencia generativa?
¿Cómo es que contamos ahora con modelos con tal versatilidad, con tal expresividad
para poder generar tanto sillas en forma de aguacates como tapires para desayunar?
¿De dónde sale todo esto?
Pues amigos, la respuesta está en los Transformers.
Los Transformers son esta arquitectura de deep learning
que desde 2017 no han parado de revolucionar nuestro campo.
Partieron del mundo del procesamiento del lenguaje natural
una mejora sustancial a los modelos de redes recurrentes y el STM
que se estaban utilizando para aprender a modelar secuencias de datos, secuencias como texto.
Es gracias a esta arquitectura tan sorprendente
que hemos podido ver modelos tan impresionantes como es GPT-3
que resuelve la tarea de, para una secuencia de texto dada como input
ser capaz de predecir cómo debe de continuar dicha secuencia.
El ingrediente secreto tras este modelo GPT-3
más allá de su entrenamiento con absurdas cantidades de datos y computación
pues es el uso de Transformers.
De ahí viene el AT de GPT-3.
Pero si ya es sorprendente esta conquista de los Transformers
en el campo del procesamiento del lenguaje natural
más sorprendente aún es ver cómo esto poco a poco se ha ido moviendo
a otras áreas del campo del deep learning.
Por ejemplo, encontramos Transformers
tras el funcionamiento del modelo de AlphaFold 2.
Esta impresionante inteligencia artificial presentada por DeepMind
que ha supuesto un impacto brutal dentro del campo de la biomedicina
al resolver un problema tan importante como es
aprender a predecir cuál es la estructura tridimensional de las proteínas.
O por ejemplo, desde hace muy poquitos años
se viene trabajando con los Vision Transformers.
Una idea de Transformer que busca sustituir
a las actuales redes neuronales convolucionales
que típicamente se han venido utilizando con buen rendimiento
dentro del campo de la visión por ordenador.
Incluso esto de los Transformers es tan loco
que una de las aplicaciones más recientes que más me rompen a mí la cabeza
es el uso de estos Transformers de su capacidad de modelar secuencias de datos
para la creación de modelos generativos como los que contamos hoy en día
para generar caras, paisajes o coches.
Y es que al igual que con GPT-3 podemos usar los Transformers
para que aprendan a generar secuencias de texto a partir de un input dado,
también podemos utilizar a estos Transformers
para generar secuencias de píxeles que acaben generando una imagen.
Una imagen generada secuencialmente pixel tras pixel.
Como digo, esto a mí me rompe un poco la intuición
porque al final una imagen no deja de ser una matriz bidimensional
que nosotros percibimos como tal
y me cuesta entender un poco cómo se puede modelar
como una secuencia de píxeles vista unidimensionalmente.
Pero la cosa es que funciona, y funciona muy bien.
De las primeras propuestas que probaron esta idea encontramos a GPT Image,
de la cual también os hablé en el vídeo de Dali,
una tecnología también de OpenAI que ellos entrenaron
para que a partir de la secuencia de píxeles inicial de una imagen,
la IA pudiera aprender a generar como resultado la secuencia de píxeles restantes.
Vamos, que terminará de generar la imagen de la manera más coherente posible.
Y fíjate que los resultados son muy buenos.
Quiero que compruebes cómo cada completado de la imagen,
aunque muestre cosas diferentes,
son en todos los casos completados bastante coherentes
con lo que sería la imagen original.
Muy impresionante, ¿eh?
Ahora, hay otra cosa que quiero que os fijéis en estas imágenes,
y es, joder, qué mala calidad tienen.
¿Por qué tienen una resolución tan baja esto que es ahora 2005?
¿A qué se debe esto?
Por lo que tenéis que entender aquí es una de las principales limitaciones
de los Transformers.
Y es que internamente este tipo de arquitecturas
tienen que realizar un tipo de operación
donde cada elemento de la entrada tiene que procesarse
con cada otro elemento de la entrada.
Por ejemplo, dentro de una frase con N palabras,
cada palabra tendrá que procesarse consigo misma
y con cada una de las otras palabras que hay en esa frase.
En total, N cuadrado procesamientos.
Y en una imagen, como estamos hablando,
cada píxel tiene que ser procesado con cada otro píxel de la imagen.
En ambos casos estamos hablando que el número de procesamientos
que se tiene que realizar crece con el tamaño del input de manera cuadrática.
Significando esto que para tamaños de input muy grandes,
por ejemplo, imágenes en HD,
estos Transformers se ven altamente limitados.
Es por esto que modelos como GPT Image
no logran demostrar sus capacidades generativas
en imágenes de alta resolución.
Pues nada, hasta aquí el uso de Transformers para generar contenido.
Ha sido un paseo muy bonito, ha sido un viaje muy emocionante,
tenemos que seguir con nuestros modelos convolucionales y ya está.
¿A qué? ¿A qué? ¿Que hay una solución?
¿A qué justo es la solución del vídeo de hoy?
Claro, si no, pues vaya explicación.
Y es que hoy estamos hablando de este paper de aquí.
Un trabajo publicado a finales del año pasado
y que consigue resolver esta limitación de los Transformers
a la hora de generar contenido en alta resolución.
¿Cómo lo hace?
Bueno, pues para entender esta solución
tenemos que volver a repasar el concepto de autoencoder.
Y acuérdate que es esto, lo hemos hablado muchas veces.
Un autoencoder es un tipo de red neuronal que toma una imagen como input,
la procesa por una red neuronal que aprenderá a comprimirla
y otra red neuronal aprenderá a descomprimirla a la imagen original.
Un proceso de compresión y de compresión
que permitirá que nuestras redes neuronales de aquí
puedan aprender cuáles son los patrones que conforman a nuestra imagen.
Y que como hemos visto en el canal,
pues tienen muchísimas aplicaciones prácticas diferentes
como sería por ejemplo en su uso para la creación de deepfakes,
como ya vimos en este vídeo de aquí.
Pero no vamos a hablar del autoencoder que típicamente hemos visto en el canal.
Hoy vamos a hablar de una variación que introduce la siguiente modificación.
En este caso, igual que antes, nuestra imagen pasará por el encoder, sí.
Y de lo que tengamos aquí en medio,
el decoder también tendrá que aprender a generar una imagen resultante
que se parezca a nuestro input.
¿Qué cambia entonces?
Pues cambia lo que tenemos aquí en medio.
En el caso de la red neuronal que vamos a utilizar hoy,
lo que vamos a obligar a la red es a describir el contenido de la imagen
que ha procesado y comprimido
a través de una serie de elementos básicos que la red también deberá de aprender.
Es decir, por ponerlo muy sencillo,
nosotros podríamos restringir a este tipo de red
a que tuviera que definir cuáles son los elementos de esta imagen de aquí,
pero únicamente con 10 elementos visuales que ella decida aprender.
A lo mejor la red decida aprender que uno de los elementos que necesita
para representar esta imagen es el concepto de ojo de perro.
Y esta idea abstracta de ojo pues quedará almacenada como el primer elemento.
Otro a lo mejor será la representación de la nariz de perro.
O otro, por ejemplo, podría ser el pelaje animal.
Así poco a poco, cuando nos demos cuenta,
la red habrá aprendido su propia biblioteca de patrones y elementos
que serán necesarios para poder recomponer y representar
la imagen que le hemos pasado como input.
El encoder de esta red, por tanto,
tendrá que aprender a tomar una imagen como input
y aprender a predecir cuáles son los índices de los elementos de nuestra tabla
donde se encuentran aquellos componentes asociados con cada parte de la imagen.
Por lo que sea, a mí esto se me recuerda un poco a aquellos cuadernos de coloreado
donde tú tenías que ir coloreando con cada uno de los colores
que te marcaba el índice numérico de cada región de la página
y que cuando lo terminabas salía un dibujo de los 101 Dalmatas, por ejemplo.
Pero claro, en este caso la red neuronal es la que se va a encargar de,
por una parte, aprender a generar cuáles son los índices correctos
para que finalmente salga la imagen bien coloreada,
pero al mismo tiempo también tiene que aprender cuál es la paleta de colores a utilizar
y asociarla con cada índice.
De aprender ambas tareas es de lo que se ocupa esta red neuronal.
A nuestra paleta de colores, o a lo que estamos denominando nuestra tabla con componentes,
se le conoce como un codebook.
Y ya te digo, su tamaño es limitado, es finito.
Esto es un hiperparámetro que nosotros podemos ajustar
para poder establecerle a la red un número máximo de componentes que puede aprender.
Por continuar con la analogía de la paleta de colores,
entre mayor sea el tamaño de este codebook, mayor variedad cromática
podríamos tener para representar con mayor fidelidad a la imagen final.
¿Lo veis?
Y no, por hacerlo un poco más explícito, no quiero que os quedéis con esta idea
de que el codebook está almacenando trozos de imágenes
donde podemos ver que haya almacenado un ojo, una nariz o pelo de perro.
No es eso, lo que almacena el codebook son vectores comprimidos
en el espacio latente que cuando lo pasemos por el decoder
vendrán a representar esta idea de ojo, nariz o pelo.
Sé que esta idea puede sonar un poco compleja o abstracta,
pero hoy solamente estamos sobrevolando el concepto,
así que quiero que os quedéis con la idea intuitiva.
Lo que hace esta red es coger muchísimas imágenes,
comprimirlas, descomponerlas en diferentes patrones que la red haya detectado,
obligándose a aprender todo este codebook de patrones
que deberían de ser comunes a todas estas imágenes
y que le van a permitir poder recomponer la imagen final.
Así estaríamos obligando a la red a aprender cuál es la paleta de componentes básicos
que podrían recomponer a cualquier imagen.
Y fijaros ahora cómo tenemos una red neuronal
que es capaz de tomar una imagen en altísima calidad
y convertirlo a este mapa de índices de aquí,
donde cada índice nos estará indicando
qué se encuentra en cada región de píxeles de esa imagen.
Esto ahora sí se vuelve a convertir en el input ideal para nuestros transformers,
una versión reducida simplificada del contenido de nuestra imagen
que ahora nuestros transformers pueden aprender de nuevo
a combinar como secuencias, píxel tras píxel.
Lo que en este caso no lo estaríamos haciendo con píxeles,
sino con cada uno de los componentes que tenemos en nuestro codebook.
¿Lo veis?
Esta es la idea que a grandes rasgos se presenta en este trabajo,
una arquitectura denominada VQGAN.
Y que, ya lo digo, es muy impresionante porque, bueno,
realmente aquí yo os he estado enseñando esta animación
de cómo vamos completando la imagen con elementos del codebook,
pero quiero que veáis realmente qué pasa cuando vamos observando en tiempo real
cuál es la imagen resultante de este proceso.
Aquí lo que está viendo es el proceso de generación del transformer
cuando poco a poco y de manera secuencial
sigue añadiendo elementos de nuestro codebook en la imagen final.
El resultado es una pasada y quiero que os fijéis bien
en detalles como que cada trozo que se va añadiendo
en realidad no es un parche de píxeles superpuestos y ya está,
sino que fijaros cómo en ocasiones se modifican los píxeles contiguos
de las filas anteriores para que toda la relación con respecto
a la imagen total tenga la mayor fidelidad y coherencia.
Como digo, una auténtica pasada que además ahora sí nos permite
generar a través de los transformers imágenes en alta resolución.
Imágenes como estas.
Algo con lo que yo ya empiezo a fantasear y quiero ver implementado
en muchos de los sistemas que yo he ido contando aquí en el canal,
como por ejemplo, pensad, un Gauguin pero con esta tecnología.
Sería impresionante, ¿verdad?
Pues tal y como muestran los investigadores de este proyecto,
esta transformación de un mapa de segmentación a una imagen real
es algo que esta arquitectura sí puede hacer.
Puede generar contenido, se puede condicionar a mapas de segmentación,
a puntos clave de pose o incluso puede intentar hacer tareas
de super resolución.
Un trabajo super interesante.
Y más interesante aún porque los investigadores de este proyecto
han liberado su código, han puesto a disposición de todo el mundo
un notebook donde puedes probar a utilizar este tipo de arquitecturas
como quieras o dejar el enlace abajo en la caja de descripción.
Y que sirva esto un poco como demostración de la importancia
de ir liberando los modelos para favorecer la investigación
en el campo del deep learning.
O al menos para que nosotros podamos seguir jugando y cacharreando con esto.
Porque veréis, una cosa que ha sucedido es que al tener disponibilidad
de poder acceder a este modelo, otros usuarios de otras comunidades
han empezado a combinarlo con otros modelos de deep learning
consiguiendo resultados muy, pero que muy impresionantes.
Por ejemplo, combinándolo con Clip.
Y si no sabes por qué esto es importante, te aviso de que de Clip
ya hablamos en un vídeo al completo y os expliqué realmente
cuál era su funcionamiento, por qué nos podía interesar
y a partir de ese momento nos hemos parado de ver resultados
super impresionantes de esta tecnología.
Pero como idea básica, la idea que nos puede aportar Clip
en todo este sistema es de actuar como ojo supervisor
para comprobar si el resultado que se va generando
se aproxima a la descripción dada como texto con lenguaje natural
o una descripción que por ejemplo nosotros le podemos dar al sistema.
Estamos hablando que la combinación de VQGAN con Clip
nos deja un sistema en el que nosotros podemos escribir
exactamente lo que queremos y esta red neuronal
ya entrenada nos va a generar imágenes como estas.
Pues aquí lo tenemos.
Para generar nuestras obras de arte vamos a estar utilizando
el cuaderno de Google Collab. Para el que no lo conozca
Google Collab es una herramienta online que podemos utilizar
para ejecutar códigos de Python sobre la infraestructura
que nos va a ceder gratuitamente Google.
Con lo cual en este caso, pero no va a costar nada de dinero,
pues toda la computación que hay detrás de todo esto.
En este caso este cuaderno está generado por Catherine Krausson
que fue la creadora de esta fusión entre los dos modelos
y lo vais a ver que está en español porque en este caso
está traducido y adaptado por Eleiber
que es un usuario de nuestra comunidad de Discord.
¿Comunidad de Discord? Sí, ahora os comentaré sobre esto.
Pero bueno, vamos a lo importante.
En este caso, para poder trabajar con este cuaderno
si no sabéis nada de código, las únicas instrucciones
que tenéis que hacer es ejecutar todo.
Vamos a ir secuencialmente ejecutando cada una
de las celdas de código que vamos viendo por aquí.
Bueno, esa no sea falta. Tenemos que ir uno a uno
ejecutándolo todo sin saltarnos ningún paso
para que todo funcione correctamente.
Podéis ir leyendo todas las anotaciones que están escritas
explicando un poco qué es lo que va haciendo cada instrucción.
Lo importante lo vamos a encontrar abajo.
De todas las celdas, esta de aquí es la más importante
porque es con la que realmente vamos a poder interactuar
con nuestro modelo. De todo esto,
podéis ajustar diferentes parámetros,
pero quizás el que más os interesa es este de aquí.
Prompt. Aquí es donde podemos escribir la descripción
de aquello que queremos que genere nuestra VQ Gun.
Aquí, por ejemplo, está escrito a Fantasy World.
Podríamos poner a Fantasy World Full of Colors.
Y luego tenemos una serie de parámetros
que también podéis ajustar. Quizás de aquí
y otra cosa que os interesaría saber es
que existen dos tipos de modelos con los que podéis probar.
Uno es más lento, otro es más rápido.
Tienen diferentes características
que incluso podéis llegar a entender.
En este caso, hay un modelo que acaba con 16384
frente a otro modelo que podemos ver aquí
que acaba con 1024.
¿Qué representa este número?
Este número es el tamaño del Codebook.
Esto que hemos mencionado, el número de componentes
que puede aprender la red neural
a la hora de entender las imágenes
y generar imágenes, pues en este caso
este es un modelo más completo que tiene 16384
y este tiene 1024.
Para cambiarlo, pues simplemente tendréis que cambiar
esta extensión de aquí.
1024, esta de aquí también.
1024 y ya está.
Con eso podréis probar diferentes resultados,
diferentes modelos. Y ya os digo yo que
en realidad el número de componentes aquí
no afecta tanto a lo que puede generar,
sino que genera cosas diferentes.
Una vez esté todo listo, pues ya simplemente
sería ejecutar esta última celda de aquí
a trabajar. Ahora ya simplemente toca
esperar e ir viendo cómo poco a poco
se va a ir generando la imagen que queramos.
Nosotros podemos parar en cualquier momento la ejecución,
coger la imagen, descargarla y ya está
y compartirla por redes sociales. Podemos ver que ya
de primera siempre va a generar esta imagen de aquí,
es como la imagen inicial, y en muy poquito
tiempo vamos a empezar a ver resultados de
nuestro mundo de fantasía lleno de colores.
Se puede ver como en las primeras
iteraciones ya el resultado es una
cosa espectacular. Un mundo
de fantasía lleno de colores. Podríamos dejarlo
más iteraciones y poco a poco
este resultado se va a ir definiendo más, pero
yo ya con esto podría estar más
que satisfecho si lo comparamos con lo que
podíamos tener hace muy poquito tiempo.
Como veis, los resultados son impresionantes
y realmente si queréis ver muchos
más resultados de esto, os invito a que
os paséis por la comunidad oficial
de Discord del canal.ccv.
Por fin hemos creado ya una comunidad,
lo hemos ido creando a través de todos los
directos que hemos estado en Twitch. Era un
proyecto que de momento estaba en fase beta
por tanto era secreto, pero ya os lo puedo
anunciar. Si queréis formar parte de una comunidad
donde poder conocer a gente que le entusiasma
lo mismo que a vosotros, o gustarán los temas
de tecnología, ciencia, inteligencia
artificial, pues este es un lugar
muy bueno para empezar y aprender
entre todos. Es similar un poco al proyecto de
Machine Learning en hispano, pero en este caso
ligado a lo que sería mi canal de YouTube y el
resto de proyectos que hago en las redes sociales.
Ya os digo, ahí la comunidad pues es genial.
Por ejemplo, el usuario Leiber ha sido el que nos ha
introducido a toda esta tecnología de las UV
y ya os digo, ahí dentro pues hay un montón
de usuarios participando de esto,
mostrando sus resultados. Hemos creado incluso
un museo para mostrar los mejores resultados
y bueno, es una comunidad que sigue
creciendo y estamos construyendo entre todos.
Gran parte del mérito también se lo debemos a
los administradores que han tomado las riendas
y lo han montado para vosotros, así que os
invito a pasaros. Os voy a dejar abajo en la cajita
de descripción junto al enlace de este notebook,
pues un enlace para uniros a este
Discord nuevo, al
.hub, el centro neurálgico
de.csu.
Vamos a ver qué pasa si ponemos algo así como
a mixte
between
a youtuber and
an artificial
intelligence.
Una mezcla entre un youtuber
y una inteligencia artificial. A ver qué sale
de aquí. Bueno,
como nos va a tocar esperar, de hecho, mira, te voy a
dejar con un par de mensajes finales y ahora
te enseño el resultado. Si este video te ha
gustado, si has aprendido algo, si consideras
que este video te ha aportado valor, siempre
puedes apoyar todo este contenido a través
de Patreon. No sé si muchos
de vosotros sabréis qué es esto de Patreon, que siempre
estoy repitiendo, pero Patreon es una plataforma
donde vosotros podéis
contribuir, apoyar el contenido que recibí
gratuitamente a través de este canal o de otros
creadores de contenidos, pues simplemente
haciendo una aportación mensual. Parece una
tontería, pero simplemente el apoyo con
tres dólares, cinco dólares, diez dólares, lo
que queráis, se convierte en un apoyo monetario para
este canal que me da mayor libertad para seguir
creando cosas y seguir trayendo contenidos
aquí. Así que simplemente, si este canal
te aporta algo de valor a ti, pues
que sepas que tú también tienes en tu mano un mecanismo
para dar valor a este proyecto.
Por último, de nuevo, recordaros que tenéis disponible
este canal de Discord nuevo
y que también seguimos haciendo directos a través
de Twitch, directo donde programamos,
aprendemos cosas, leemos noticias,
respondemos preguntas y donde realmente
pues cada vez se suma más gente
y eso es algo que me gusta muchísimo
porque, bueno, es una forma de contacto
diferente y donde podéis aprender muchas cosas.
Así que si os interesa os dejo también el enlace de Twitch
abajo en la caja de descripción.
Y ahora sí, suena el timbre y ya parece que está
cocinada nuestra imagen final. Nos vemos con
más inteligencia artificial en el próximo
vídeo. Un placer como siempre.
Adiós.
Dios, ¿qué está saliendo de aquí?
Reconozco una cara, reconozco una persona
y reconozco cables interconectados.
Veo un ojo y el otro no.
Realmente es una mezcla entre un youtuber
que se parece un poco a PewDiePie.
Es impresionante.
Voy a dejar como pregunta final las mismas
preguntas con las que he empezado este vídeo. ¿Es este
resultado creativo? ¿Podríamos
considerar este resultado arte?
No sé.
Decídmelo vosotros abajo en la caja
de comentarios. Nos vemos en el próximo
vídeo, chicos.