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.
Hablemos de los gráficos de Minecraft, porque seguramente todos los que alguna vez hayáis
visto a alguien jugando a este videojuego, os hayáis quedado fascinado por su gran apartado
gráfico.
Vale, sí, ya lo sé, Minecraft no pasará a la historia como el videojuego que logró
el apartado gráfico más fiel a la realidad, y aunque podría defender que esto no es necesario
para poder convertirlo en uno de los videojuegos más inmersivos a los que he jugado, sí podemos
encontrar diferentes técnicas para poder mejorar su apartado gráfico.
Desde que los modders son modders, existe una amplia comunidad de desarrolladores que
año tras año va desafiando el código de Minecraft para ir introduciendo mejoras que van mejorando
aspectos visuales del propio videojuego a través de lo que se conoce como shaders, dando
un aspecto cada vez más realista a Minecraft, simulando iluminaciones y sombras, reflejos
y transparencias que juegan con la luz, e incluso materiales que alcanzan un nivel de
fidelidad similar al que podemos conseguir con software de edición 3D profesionales.
Vamos, un logro técnico de la comunidad de desarrolladores que debemos aplaudir.
A tope, chicos. Pero claro, detrás de todo esto existe un montón de horas de trabajo
invertidas. ¿No podríamos automatizar esto? La respuesta es que sí, y hoy vamos a hablar
de esto. Y no solo vamos a hablar de este impresionante sistema que ha creado NVIDIA
para transformar tus mapas de Minecraft a entornos reales, sino que voy a explicar de
dónde aparece este estudio, de dónde se sitúa, cómo se relaciona con otros trabajos
que también hemos visto aquí en el canal, como por ejemplo Gaugan. Y mejor aún, ¿qué
tiene que ver todo esto con la conducción autónoma? Quedaos aquí porque al final os
lo voy a contar. ¿Estáis listos? Bien, comenzamos.
Vale, sí, lo reconozco. Cuando la semana pasada nos juntamos más de dos mil personas
en Twitch para ver la cobertura del evento de NVIDIA, la verdad que viví con muchísimo
entusiasmo muchas de las cosas que presentaron. Ahora, si algo atrajo mi atención, especialmente
fue esto de aquí. Y es que Minecraft, para muchos, es una institución. A ver, para el
que esté un poco desubicado. Mira, cuando hablamos de Minecraft estamos hablando ni
más ni menos del videojuego más vendido de la historia. Un videojuego de mundo abierto
que te sitúa en un mapa generado proceduralmente. Es decir, un mapa que se genera a partir de
la ejecución de un algoritmo y no a partir del diseño manual de algún game developer.
Y gracias a lo cual podemos generar infinitos mundos diferentes. Estos mundos se componen
de diferentes escenarios naturales, biomas, que reproducen entornos reales que también
nos podríamos encontrar en la tierra, desde junglas hasta desiertos, desde montañas hasta
océanos, desde entornos glaciares hasta zonas rocosas con preciosos bugs de iluminación.
Y claro, viendo esto, pues es normal que alguien se pregunte, oye, ¿no podríamos utilizar
alguno de estos algoritmos tan fancies que tenemos en el campo del deep learning para
poder transformar estos mundos voxelizados a algo que se parezca más al planeta tierra?
¿Es esto acaso posible? Veamos. En el campo de la inteligencia artificial ya llevamos unos
años viendo el potencial de utilizar a las redes neuronales para transformar una cosa
a otra cosa. Modelos como Pix2Pix nos han enseñado cómo podemos convertir una imagen
de este tipo a otra como esta, de cómo un boceto se puede convertir en un objeto real,
o de cómo podemos usar de manera práctica esto para crear, por ejemplo, esto de aquí,
lo que sería el mapa de segmentación de dicha imagen.
Y quiero hacer hincapié en esto del mapa de segmentación, porque cuando hacemos esto
lo que le estamos pidiendo a nuestra red neuronal es que aprenda a clasificar cada uno de los
píxeles que contiene nuestra imagen. Esto de aquí es sésped, esto de aquí es suelo,
esto de aquí es… bueno, lo que sea. Una tarea que en sí misma es muy interesante
y que podemos integrar en muchísimas aplicaciones diferentes, pero que cuando la invertimos
se vuelve en algo sorprendente. Y es que de la misma manera que podemos obtener un mapa
de segmentación a partir de una imagen dada, a la red neuronal le podemos pedir lo contrario.
A partir de este mapa de segmentación, générame una imagen realista que se corresponda con
ella. Esto existe y se llama Gauguin. Y, creedme, tiene muchísima relación con lo que vamos
a ver hoy. Porque, mirad, cuando Gauguin salió, lo que nos presentaron fue lo siguiente.
Una herramienta que te permitía a ti como usuario el poder dibujar estos mapas de segmentación,
pues cada uno desplegando sus habilidades artísticas de paint, para ir definiendo lo
que serían solas de cielo, de tierra, de mar, de rocas, todo. Y pudiendo generar automáticamente
una escena donde todo lo que había dibujado era convertido a una imagen real. Y no solo
esto, sino que además podías condicionar el estilo de tu imagen generada a diferentes
estilos de iluminación tomados de otras imágenes de referencia. Esto es la leche.
Ahora, a ver, claro, con esta tecnología así abierta disponible para todo el mundo,
pues rápidamente la gente de internet empezó a jugar con esto, encontrando algunos usos
interesantes de Gauguin. Por ejemplo, estos. Desde personas que encontraron en esto una
herramienta ideal para poder crear escenarios para proyectos artísticos, hasta personas
que utilizaron este sistema para potenciar sus procesos creativos. Hay incluso quienes
fueron más allá y manualmente fueron pintando fotograma fotograma para generar así una
secuencia de imágenes que renderizar con Gauguin. Estaban creando vídeos.
Y si en vez de a lo mejor pintar cada fotograma manualmente uno a uno, cogemos y creamos una
especie de entorno tridimensional con estas texturas en silla donde podamos movernos libremente
y cogemos estos fotogramas y automáticamente se los pasamos a Gauguin, qué resultado obtendríamos?
Pues el resultado sería el siguiente. Esto se estaría convirtiendo en el primer paso
para renderizar con Gauguin a nuestros videojuegos.
¿Veis a dónde nos está llevando todo esto? La idea está sobre la mesa. Podemos coger
a Minecraft, podemos coger sus fotogramas, pasarlos a través de Gauguin y obtener nuestros
fotogramas realistas. Fácil. Es un comienzo. Pero hay un problema. Y es que usar Gauguin
tiene sus limitaciones, donde una de ellas se hace bastante evidente cuando observamos
algunos resultados. El principal problema de Gauguin es que la imagen parpadea mucho.
Y esto se debe a que en realidad Gauguin no está pensado para vídeo y por tanto cada
vez que genera una imagen no está recordando, no tiene memoria de lo que ha generado previamente.
Se dice que no tiene consistencia temporal. Pero afortunadamente esto de la consistencia
temporal es un problema que se está trabajando y que se puede resolver con diferentes estrategias.
No sé si habréis visto este vídeo del canal sobre B2B, pero es increíble lo que consiguen.
Pasándole a este sistema como input, los mapas de segmentación y profundidad era capaz
de generar un vídeo realista como este. Sí, este vídeo que acabáis de ver estaba generado
artificialmente. Es impresionante y os voy a dejar al final un enlace para que podáis
ver más sobre este trabajo en el vídeo que tenemos aquí en el canal. Pero ahora solo
quiero que os quedéis con una idea. Y es que este trabajo B2B ya resolvía la consistencia
temporal. ¿Y cómo funcionaría si lo aplicáramos a nuestro problema de Minecraft? Pues el resultado
es el siguiente. Pues como vemos tampoco tan bien. Es decir, a ver, el parpadeo es cierto
que se soluciona, pero también es cierto que hay artefactos de errores que se van generando
a la hora de sintetizar las texturas y que se van sumando y propagando cuando nos vamos
moviendo por la pantalla. Y por si esto fuera poco, estos no son los únicos problemas asociados
a esta tarea. Por ejemplo, ya sabéis que a las redes neuronales le gusta trabajar a
partir de ejemplos y es aprendizaje supervisado, donde para cada input pues tenemos que tener
un output asociado. Claro, en este caso, cómo podemos conseguir pares de imágenes donde
se vea un mapa de Minecraft y su versión realista. No existe. Y otra cosa, si lo que
realmente queremos renderizar es un escenario en 3D, ¿por qué nos estamos empeñando en
utilizar técnicas que realmente están pensadas para imágenes en 2D? ¿No existen técnicas
mejores que se pueden dedicar a este tipo de escenas en 3D? Sé. Preparaos, porque si
soy fans del canal, esta solución os va a gustar.
Punto de partida. Tomas tu mapa de Minecraft y generas un conjunto de vistas desde diferentes
posiciones del mapa. Bien, las tenemos. En esta vista de aquí sabemos que, por ejemplo,
esto es suelo, esto es vegetación, esto es mar. Sabemos que es cada cosa y, por tanto,
esto lo podemos interpretar como un mapa de segmentación. Vale, bien, este será nuestro
input, pero ¿y nuestro output? No tenemos las imágenes reales. Vale, es cierto. Pero
ya que tenemos el mapa de segmentación, pues venga, sí, vamos a utilizar a Gauguin para
que nos genere una aproximación al resultado que estamos buscando. Unas pseudoetiquetas
que nos faciliten el proceso de generar nuestro dataset. ¿Lo ves? Uno de los problemas solucionado.
Ya tenemos output. Pero sé lo que estáis pensando. Oye, Carlos, en este punto ya hemos
pasado. ¿No era que Gauguin nos generaba parpadeos molestos a la hora de generar un
vídeo? Sí, es cierto. Y aquí es donde entra la segunda parte de nuestra solución. Aquí
es donde entra en juego Nerf. Y es que mucho hemos hablado de Nerf en este canal y de toda
la revolución de los Neural Radiance Fields, una tecnología que consigue que, a partir
de tomar un conjunto de imágenes en dos dimensiones de una escena, podamos reconstruir un volumen
tridimensional a través del cual movernos con toda libertad. Ya os digo, mucho hemos
hablado de Nerf en el canal y es por eso que os dejaré también un listado de vídeos
sobre esta impresionante tecnología abajo en la descripción. Recientemente incluso os
he explicado cómo vosotros mismos podéis utilizar esta tecnología para capturarlo
dentro de una red neuronal. Una pasada. Entendiendo que lo que puede hacer una tecnología como
Nerf, de tomar diferentes imágenes y poder comprender cuál es la tridimensionalidad de
una escena, nos damos cuenta de que tiene bastante sentido dentro de este trabajo. Podemos
usar nuestras pseudoetiquetas generadas con Gauguin para poder entrenar un sistema similar
a Nerf y así poder dejar que reconstruya la tridimensionalidad de nuestro mapa de Minecraft.
Es de la suma que nos da las capacidades de un sistema como Gauguin y la potencia de renderización
volumétrica de un sistema como Nerf del que surge Gauntrap. Un sistema que de manera consistente
es capaz de transformar nuestro mundo de Minecraft en terrenos con apariencia fotorealista, todo
aprendido de manera automática y sin necesidad de contar con un dataset para supervisar el
entrenamiento. Los resultados no son perfectos, pero es un avance bastante claro respecto
a lo que podíamos conseguir hasta ahora. Además, no solo podemos generar una versión
fotorealista del mundo, sino que al igual que podemos hacer con Nerf de ir variando
el estilo de la escena que estábamos renderizando, en esta ocasión también podemos interpolar
entre diferentes estilos, modificando por completo la apariencia de la escena.
Y… ¿todo esto para qué sirve? Pues es una muy buena pregunta. ¿Por qué dedicar
tantos recursos de investigadores a intentar mejorar la apariencia gráfica de un videojuego
mainstream? ¿Es esto una estrategia de marketing? En parte sí, evidentemente. Pero más allá
de eso, pues esto tiene una utilidad práctica que quiero que conozcáis. Porque donde hoy
estamos hablando de un videojuego, en otro contexto podríamos estar hablando de un simulador.
Es habitual que para entrenar a inteligencias artificiales a resolver determinados tipos
de tareas, como por ejemplo la conducción autónoma, utilicemos estos simuladores para
poder simular años y años de conducción en pocas horas, donde podamos generar pues
diferentes entornos de iluminación, diferentes carreteras, diferentes escenarios, diferentes
condiciones meteorológicas… todo. Pero aquí está lo importante. Para que el conocimiento
aprendido por estos vehículos dentro del simulador pueda ser transferible al mundo
real, es necesario que la fidelidad gráfica de estos simuladores sea máxima. Y ahí es
donde trabajos como el de hoy juegan un papel fundamental. Ya en el directo por ejemplo
de la semana pasada nos quedamos un rato perplejos intentando identificar si lo que estamos viendo
realmente eran gráficos generados por inteligencia artificial.
¿Esto es simulado, todo? Sí, es todo simulado. Sí, pero la vegetación es simulado. Sí.
Pero diría que hay algún tipo de proceso… Tipo GAN, ¿no? Sí, exacto. Que le añade
cierto realismo. Exacto. Yo no estoy tan seguro. Podrían ser texturas GAN tipo Narco que dices…
Tiene, tiene pinta, ¿no? O sea, las texturas… Además recordemos que mi ojito justo aquí
parece más real, ¿eh? Es que parece muy real. Aquí parece bastante real. Sí, sí,
sí, sí. Ahora, por fin voy a responder la pregunta
que posiblemente te estés haciendo. ¿Está esta tecnología disponible? ¿Podemos jugar
con ella? ¿Podemos empezar a transformar los increíbles mundos que la comunidad de
Minecraft ha ido creando a lo largo de los años? Ahora mismo te respondo. Pero antes
déjame recordarte que si te gusta este contenido, si te gusta especialmente, pues es muy importante
que lo compartas. Si conoces amigos o gente que le pueda interesar o compartirlo en redes
sociales, pues siempre ayuda al crecimiento de este canal y también a ti que vas a quedar
muy bien. Y si esto te gusta mucho, mucho, mucho, pues oye, si no lo has hecho, suscríbete
y activa las notificaciones de YouTube que a lo mejor no te está avisando de los vídeos.
Podréis echar un ojo al canal a ver si hay algún vídeo que no hayáis visto. Y también
podéis plantearos haceros Patreon. Es una forma de apoyar este contenido divulgativo
que traigo a YouTube. Esta forma de traeros la última novedad que sale en el mundo de
la tecnología e inteligencia artificial. Pues podéis apoyar este proyecto si estáis
orgullosos de que esto exista. Y ahora sí, respondiendo a tu pregunta, te digo que toca
esperar y es que de momento la página del proyecto nos avisan de que el código estará
próximamente disponible. Yo mentiría si dijera que no sea algo de información de
cuando podría estar. Pero como no sé nada, simplemente digo que cuando esté disponible,
como hacemos semanalmente, estaremos ahí en Twitch dando caña, jugando con esto, probando
inteligencia artificial, aprendiendo todos juntos y nada. Mientras tanto, pues podéis
echar un vistazo a alguno de estos vídeos que están por aquí, que son muy interesantes
y ya sabéis, seguiremos con más inteligencia artificial la próxima semana aquí. Entonces
adiós y nos vemos en el próximo video.