Me he decidido a escribir este artículo sobre inteligencia artificial inspirado en Entrevista ficticia a Napoleón dónde una inteligencia artificial (GPT-3) toma el papel de Napoleón dondeJ.Kraken muestra resultados de la IA GTP-3, capaz de continuar o completar conversaciones o textos en lenguaje real a partir de un inicio.
La IA que voy a utilizar es diferente. Se llama VQGAN, y lo que es capaz de hacer es generar imágenes a partir de una sencilla descripción de texto. En este enlace Dot-CSV hace una muy buena explicación técnica de lo que hace y cómo lo hace. Y la ventaja importante de esta IA con la GTP-3 es que esta es accesible libremente, a través de Google Collab, donde todo el mundo puede usarla. Tan solo tienes que ir a este enlace e ir siguiendo las instrucciones, que no son más que correr cada uno de los módulos en orden, dando al botón de run y esperar hasta que se carguen, y cuando llegue al módulo de parámetros:
* meter en textos la descripción de la imagen que quieres, preferiblemente en inglés
* en alto y ancho las dimensiones de la imagen. Para la memoria que tiene asignada puede hasta 600 x 600
* en intervalo de imágenes se puede dejar el 50, es cada cuantas iteraciones muestra en pantalla la imagen que va obteniendo. La inicial, la primera, siempre es la imagen aleatoria que usa como partida
* en seed va la semilla aleatoria que usa para obtener la imagen de partida. -1 significa que cada vez que corre elige una al azar. Yo he usado 252525 en la mayoría. Si metes la misma que yo, con el mismo texto, deberías llegar al mismo resultado.
* en máx iteraciones se limita el número de repeticiones o mejoras sobre la imagen que va a realizar. Yo he usado 250. Prácticamente a partir de 150-200 ya la imagen está tan definida que apenas hay cambios. Incluso para valores más altos he notado pérdidas de calidad en los resultados.
Y ahora algunos de los ejemplos que he generado. La descripción del texto la pongo en español, aunque en la IA la he usado en inglés:
Pilotos de combate, celebrando la victoria
La primera imagen que he generado. No es demasiado buena, aunque se nota que más o menos pilla el concepto general. Recuerda que está completamente generada por un programa de redes neuronales, no hay ningún input humano.
Cerdito con un casco en la cabeza, fotorrealista
A las descripciones se les puede añadir palabras descriptivas que denoten el aspecto general que queremos obtener en la imagen. En esta imagen se nota claramente que la IA en realidad no comprende el concepto de lo que está dibujando. Aunque sabe dibujar un cerdo, con sus ojos, sus orejas, su hocico, no entiende la relación entre ellos ni por qué no pueden estar dibujados donde le dé la gana.
Árbol iluminado por los rayos de la tormenta, de noche, tenebroso, de aspecto de dibujos
Este y el siguiente son mis favoritos. Se nota claramente que cuando no tiene que dibujar rostros o conceptos con una posición espacial determinada y clara, lo hace mucho mejor.
El nombre de dios en llamas, sobre las nubes
Simplemente impresionante.
Mi vieja casa de pueblo en un pueblo español
Quería ir a algo más complejo. Se nota que comprende el concepto, aunque no tiene claro ni lo que es una casa, ni un pueblo, ni España, en esta imagen plasma de forma desordenada todos los tópicos que debería tener una imagen de este estilo.
Un orgulloso jefe vikingo de pie sobre un montón de cráneos, realista
Aquí quería meter conceptos más abstractos, como orgulloso, y relaciones espaciales. El problema que tiene al dibujar rostros es enorme. Pero se nota que se esfuerza incluso con los conceptos más rebuscados y les encuentra una solución, aunque no sea la esperada. En este caso, los huesos forman un barco, ¿por qué no iban a hacerlo si los vikingos usan barcos?
El paso está cerrado, épico, legendario, mítico
Una descripción muy vaga para que interprete libremente. Parece el resultado de un sueño, aunque no es todo lo épico y legendario que quería.
Un camaleón rosa mirando las estrellas
Esta podría ser perfectamente una pintura hecha por un humano. Jugando con los colores.
Una sola Elfa con una guirnalda de flores en la cabeza
El problema que tiene con la distribución espacial de ojos, orejas, etc., se puede solucionar en parte dándole en parámetros una imagen de partida, que se sube a la izquierda de la pantalla, donde pone files. En este caso, he usado como inicio una foto de una niña sacada de internet. El resultado, pues bueno, sabe todo lo que tiene que tener una elfa, pero no tiene muy claro donde situarlo. Gracias a la imagen de partida, solo hay dos ojos en vez de ser una aberración de pesadilla.
Un tren antiguo saliendo de la estación, colorido, nuboso, alta calidad
Le he dicho que sea colorido y se lo ha tomado muy en serio.
Dos grandes pirámides azules y rojas bajo la aurora boreal
Otra vez el problema de la distribución espacial. A ver, es que si nadie le ha dicho que las auroras boreales deben estar por encima de las pirámides y no al revés, ¿cómo va a saberlo?
Y para terminar, como yo no soy el autor de estas imágenes, es más, estas imágenes NO TIENEN AUTOR, creo que no me equivoco al declarar que quedan directamente en el dominio público, de forma que cualquiera las puede usar libremente para todo lo que quiera.
Comentarios
Una prueba con Ciudad de Frank Lloyd Wright. Curioso!
#0: wooden roller coaster over a lake
En vez de 150 como la anterior, puse 250 como tú, con los mismos parámetros en ambos casos.
Personalmente creo que no capta mucho el concepto, pero al menos no ha metido la vía de una Rocky Mountain Construction, que es de acero y NO cuentan como montaña rusa de madera.
#9: Cambiando el número aleatorio por CMXXV, la siguiente será quitando "over a lake", a ver qué tal sale.
#10: Aquí está, la siguiente en principio no tratará de montañas rusas, la semilla vuelve a XXVMMDXXV.
#0: high speed train over a bridge
Cualquier parecido con la realidad... en la siguiente probaré a no poner lo del puente, o bien especificaré el modelo de tren para que no se líe entre los Shinkansen, los ICE 1 y 2, los TGVs con el frontal de dos ventanas, los de una, los patos de Talgo, los Acela...
#12: velaro over a bridge
No está muy claro que haya cogido el concepto, quizás no haya imágenes registradas por marca comercial.
#13 spanish commuter train
Yo quería un tren de cercanías español, no uno con la bandera de España, pero bueno.
#14: renfe train
Recuerda a Renfe, pero por los colores y tal, quizás especificando algún lugar...
#15: Intercity express station
#0: icecream building
Ahora paso a mezclar conceptos diferentes a ver qué sale, y empiezo con icecream building, lo que hace es mezclar un cono de helado con bolas con un edificio, está chulo así que probaré con una ciudad, a ver qué sale.
#21: icecream city
Voy a probar con más iteraciones.
#22 icecream city
Ahora con 500 iteraciones.
#22: icecream planet
Probaré con la barra a ver si hace un planeta de helado y no una tienda que podría llamarse así.
#24: Subí la foto mal, con 250 iteraciones sería esta:
¡Voy corriendo a probarla!
#0: Esto va derechito hacia la próxima #Entartete_Kunst_Ausstellung.
Lo del autor va un poco a medias, una foto que subí a Flickr tenía licencia CC BY-SA 2.0, con lo que lo que haga la IA debería tener una licencia similar si usa esta foto. De hecho estaría guay que publicasen qué fotos en concreto se han tomado para hacer cada
collaje colachcollage.La primera foto, la de los pilotos, yo veo pingüinos. ¿Qué metieron en el input, una foto de Madagascar?
#2 Todas las imágenes, excepto la de la Elfa, usan ruido random como imagen de partida, generado a partir de la semilla aleatoria. Es decir, que no hay imagen de partida. La de la elfa sí que tendría algún problema, al ser un trabajo derivado de una imagen con copyright, no me fijé en la licencia de partida.
Y ahora veo pingüinos.
Pingüinos con rostro y brazos pseudo humanoides
#3: ¿Para usarlo se necesita mucha memoria
cabroRAM, o se ejecuta en el servidor?Porque me gustaría toquetear y compartir aquí lo que me salga.
#4 Se ejecuta en el servidor. El único problema que puede haber es que al seleccionar servidor virtual (!nvidia-smi) te adjudique uno con menos de 15109MiB o 15 GB. En ese caso no podrá correr al quedarse sin memoria y lo único que se puede hacer es cerrar la ventana y empezar de nuevo. Pero es raro que pase eso, solo me ha pasado una vez.
Y comparte lo que salga, claro que sí.
#6 Creo que CSV hizo un bucle que consumia memoria y le dio la oportunidad de ampliarla. No recuerdo en que video lo hizo.
#17 Parece que le han influido las imagenes de renfe. Usa estilos similares, no se te habra quedado como semilla o algo asi?
#29: Ni idea... solo parto de donde se pone el texto y reproceso hacia abajo, la primera imagen siempre es la misma, con las mismas manchas, creo que esa es la semilla.
#0: a panda bear eating bamboo
#7 el paraíso de los pandas
#19:
Me esperaba un tren, un molino, una lavadora, un enclavamiento ferroviario... pero la IA ha optado por ir a lo fácil: plantar el logo de la marca, que encima es texto.
Tenía pensado hacer una de Alstom, pero quizás en otro momento, voy a probar con los helados.
renault
Vamos con las marcas.
#17 volkswagen
Das Auto, die #Entartete_Kunst.
#18: Talgo
Cualquier parecido con la realidad es pura coincidencia, en el vídeo al principio iba mejor encaminada.
Yo ejecuto paso a paso todos los puntos y al llegar al que pone "Carga de bibliotecas y definiciones" me da este error:
ModuleNotFoundError: No module named 'taming'
¿Sabeis que puede pasar?
Yo ejecuto paso a paso todos los puntos y al llegar al que pone "Carga de bibliotecas y definiciones" me da este error:
ModuleNotFoundError: No module named 'taming'
¿Sabeis que puede pasar?
joder, la de la casa del pueblo me parece una puta genialidad... ha montado un cuadro semiastracto brutal...