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.

Cuando hablamos de gráficos en 3D, posiblemente venga a tu cabeza imágenes como esta, de
videojuegos en tiempo real, o de alguna película de animación 3D que has visto en el cine,
o de alguna impresionante escena fotorrealista arquitectónica donde casi casi la escena
parece indistinguible de la realidad.
Pero, cuando ves una imagen como esta, lo último que te imaginas es que en realidad
se trate de una escena 3D.
Sí, esto que estáis viendo es una escena tridimensional donde puedes mover libremente
la cámara para observarla desde distintas perspectivas.
Una escena recreada solo a partir de imágenes, o de los fotogramas de un video, y en la que
ahora tendrás toda la libertad de moverte por donde quieras.
Esto es impresionante.
Y como podréis imaginar, tras esto hay técnicas compartidas con la temática principal de este
canal, la inteligencia artificial.
Pero, no.
Si estabas pensando que este es otro caso más de la famosa tecnología Nerf que tantas veces
hemos hablado aquí en el canal, tienes que saber que no.
Esto es algo nuevo.
Una nueva técnica que salió a la luz este pasado verano bajo el nombre de Gaussian Splatting,
y que mejora en varios aspectos lo que Nerf podía ofrecer.
Una nueva técnica que promete revolucionar la forma en la que generamos y vemos 3D.
Y hoy vamos a hablar de ello.
Comenzamos.
Pero si tenemos que hablar de herramientas útiles y prácticas que integren inteligencia
artificial, dejadme que os hable del patrocinador de este video que no es ni más ni menos que
Hostinger.
Y es que muchos conoceréis a este excelente servicio de hosting por todos los servicios
que te ofrecen, desde registrar tu dominio, hasta alojar tu página web, hasta poder crearla.
Pero a lo mejor no estáis tan familiarizados con todas las novedades de inteligencia artificial
que están metiendo para hacer todo este proceso de creación de páginas webs cada vez más
sencillo.
Con una cuenta de Hostinger podéis configurar y crear vuestro propio sitio web en cuestión
de minutos.
Por ejemplo, vamos a crear rápidamente un sitio web y como ya os he enseñado en ocasiones
anteriores que tan bien funciona su creador de páginas webs con inteligencia artificial,
vamos a probar ahora hacerlo con WordPress.
Podemos elegir el diseño que mejor nos represente de una gran galería de plantillas.
Y aquí viene lo interesante y es que aprovechándonos de los servicios de inteligencia artificial
que están incluidos en el business plan de Hostinger, pues podemos dejar que la inteligencia
artificial configure toda nuestra página de WordPress, creando contenido relacionado
con nuestra marca para nuestra página web y que además van a ser post optimizados para
SEO.
Podéis ver qué tan sencillo en minutos hemos lanzado nuestra página web con contenido optimizada,
con un diseño excelente y todo esto potenciado por inteligencia artificial.
Si tenéis en mente lanzar vuestra página web y queréis contar con todos estos servicios,
tendréis un código de descuento que también tendréis abajo en la caja de descripción.
Muchas gracias a Hostinger por patrocinar y seguimos con el vídeo.
Ya lo hemos hablado en otras ocasiones en el canal, el campo de estudio en el que nos
estamos centrando hoy sería el de la renderización neural, el uso de redes neuronales o técnicas
relacionadas con ellas para la generación de gráficos por ordenador.
Y en este caso concreto el problema que se intenta resolver es el de usar como input un conjunto
de imágenes que podemos darle a la inteligencia artificial para que ésta pueda aprender a
reconstruir una representación tridimensional por la cual poder mover la cámara, moverla
libremente incluso a perspectivas que no estaban contenidas en tu dataset de imágenes original.
Vamos, que a partir de unas cuantas imágenes podemos reconstruir nuestra escena 3D.
Y desde que en 2020 apareció la famosa técnica de inteligencia artificial NERF, Neural Radiant
Fields, cada vez son más las opciones que tenemos para capturar una escena 3D pues tomando unas
cuantas fotos o grabando un vídeo con nuestro móvil, con aplicaciones como Luma Labs o haciendo
uso de librerías más avanzadas como NERF Studio.
Todas ellas basadas en este paper de aquí.
Inicialmente entrenar a una de estas escenas NERF llevaba su tiempo y la calidad no estaba mal,
pero es que además con el paso de los años 2021-2022 esto se fue perfeccionando con mejores tiempos
y calidades cada vez mejores, pasando de horas de entrenamiento a solo minutos y con resultados que
se veían con esta calidad. Y si parecía que NERF había llegado para revolucionar el mundo de los
gráficos 3D, pues parece que su época dorada podría llegar a su ocaso.
Y es que dicen que hay por la ciudad una nueva técnica llamada Gaussian Splat.
Y buenas noticias, me parece que esta tecnología es más sencilla de entender en su funcionamiento
que la propia tecnología NERF. Así que acepto el reto de explicarosla, pero vosotros aceptáis
el reto de entenderla. Vamos a ello.
El nombre de Gaussian Splatting hace referencia a la distribución gaussiana. Ya sabéis,
la típica distribución estadística en forma de campana que comúnmente conocemos como
distribución normal. En este caso esto es una distribución normal univariable, de una
única variable en una única dimensión. Y si añadimos otra distribución normal en una
segunda dimensión, ahora lo que tendríamos sería una gaussiana bidimensional, que podríamos
visualizar desde arriba por la combinación de ambas distribuciones. Y donde nos aparecería una
silueta como esta, una circunferencia. Vale, cero unidades de espectacularidad, lo sé, pero
quedaos conmigo. Solo indicaros que toda la teoría estadística y matemática que envuelve a trabajar con
distribuciones gaussianas como esta para modelizar datos no nos interesa, la podemos tirar a la basura.
Y es que la cosa es más sencilla. Mirad, aquí lo que nos interesa es este círculo, que como digo,
es la silueta que surge de combinar las dos distribuciones gaussianas univariables de aquí,
y que voy a dejar representadas por un lado para que las podáis visualizar. Ahora, por si no lo
sabíais, la forma de estas dos distribuciones las podemos variar como queramos, solo usando dos
parámetros, dos numeritos, la media y la varianza. Mirad, si yo modifico el valor de la media de esta
distribución, lo que estoy actualizando es su posición. Y fijaos como la circunferencia de abajo
también cambia su posición en uno de los ejes. Al mover la media de la distribución,
muevo la posición del círculo en una dirección. ¿Y qué pasaría ahora si modifico la media de la otra
distribución? Pues lo que estaré cambiando será la posición del círculo en este otro eje. Y si muevo
ambas, pues puedo modificar la posición del círculo. Y luego tenemos la varianza, que lo que va a
modificar es el ancho, la escala de nuestras distribuciones. Si modifico este valor de aquí,
veréis como en uno de los ejes la circunferencia se puede hacer más ancha o más estrecha. Y lo mismo
ocurriría en el otro eje modificando la otra varianza. Así que ya lo veis, con estos cuatro valores
puedo ir modificando pues la posición o el ancho y el alto de la circunferencia. Pero no solo eso,
en una gaussiana 2D también puedo jugar no solo con la varianza, sino también con las covarianzas,
que van a permitirme sesgar la forma del círculo, pudiendo modificarla de esta forma o de esta forma.
Y ahora sí, con todos estos valores, con estos parámetros, tenemos control total de la forma de
esta circunferencia. Divertido, ¿verdad? Pero ya oigo el incesante tecleo de vuestros dedos
sobre el teclado preguntando, Carlos, ¿y esto para qué? Pues mirad, a estos parámetros que controlan
la forma de nuestra circunferencia vamos a añadirle otro parámetro más que nos sirva
para controlar el color del área del círculo. Esto no es un parámetro habitual de las distribuciones
gaussianas bivariables, pero no va a ser útil. ¿Por qué? Bueno, porque si os dais cuenta,
echándole imaginación, ¿esto de aquí no se parece acaso a un manchurrón de pintura sobre un lienzo?
La idea es la siguiente. Hemos conseguido armar lo que sería un trazo de pintura cuya forma podemos
controlar con estos parámetros de aquí. Podemos mover la posición y alargar el trazo y cambiar su
color a verde si busco pintar una hoja, o hacerla más redonda y amarilla para pintar lo que sería un sol.
Es decir, controlando con unos pocos números podemos cambiar el comportamiento de este trazo.
Estaríamos trabajando, como lo hacemos en los softwares de edición donde podemos controlar el
tamaño y la forma del pincel, haciendo trazos con una distribución gaussiana.
Estaríamos haciendo manchurrones gaussianos, o lo que sería su traducción más cercana al inglés,
Gaussian Splattings. Pero por ahora solo tenemos un manchurrón y ningún cuadro se
puede pintar con un solo manchurrón. Necesitamos más splattings, necesitamos más manchas.
Claro, el problema es que ahora con 10 manchas, pues el número de parámetros que tendríamos que
controlar manualmente se hace mucho más difícil. Tener que ir dando forma, posición y color a cada
manchurrón manualmente sería una tarea bastante difícil de realizar. ¿Cómo lo solucionamos? Pues con
técnicas de Deep Learning. En realidad, si os dais cuenta, este es uno de los problemas típicos del
mundo del Deep Learning. Cuando entrenamos a una red neuronal, vamos modificando numeritos,
parámetros, que hacen que cambie el comportamiento y resultado de la red neuronal para acercarnos poco
a poco al resultado que queremos, minimizando el error. Y bajo esta idea, pues con el concepto que hemos
visto antes, también podemos hacer lo mismo. Podemos aplicar las mismas técnicas del descenso del gradiente y
backpropagation que hacen funcionar a las redes neuronales y usarlas para ir ajustando estos
numeritos, los parámetros de nuestro sistema, que en este caso serían la posición, forma y color de
cada una de las manchas. Todo esto con el fin de minimizar el error, la diferencia entre la imagen
generada y la imagen real. Imaginad por ejemplo que queremos generar esta imagen de aquí. Yo puedo
calcular la diferencia entre esta imagen y nuestro lienzo y cuantificar así cuántos se parecen. Este
sería nuestro error. Y ahora puedo usar este error y mediante backpropagation ir modificando poco a
poco estos parámetros para que este error, la diferencia, se vaya reduciendo. Para que paso a
paso, de forma iterativa, nuestro lienzo se fuera pareciendo más y más a la imagen resultante. Tras
terminar el proceso de entrenamiento deberíamos de tener una imagen similar. Mola, eh? Y esto es chulo
realmente porque con un número suficiente de manchas, de trazos, podemos llegar a aproximar casi
cualquier imagen que nos propongamos o escena 3D. De hecho, os cuento un secreto y es que incluso vamos
a poder darle movimiento a estas escenas para poder codificar vídeos en cuatro dimensiones. Pero esto lo vamos
a ver luego. Pero la idea es esta. Podemos utilizar distribuciones gaussianas a modo de trazos que se
van colocando automáticamente en el lienzo, aprovechándonos de que estas son estructuras
diferenciables que podemos controlar con backpropagation y el descenso del gradiente para
modificar valores como su posición, su escala o su color. Y si has entendido esto, pues ya tienes una
intuición, ya controlas cuáles son los principios tras la técnica de gaussian splatting. Todavía nos
quedarían algunos detallitos técnicos a precisar, pero que creo que vais a entender mejor con un
ejemplo de esta técnica. Fijaos, en mis últimas vacaciones grabé este vídeo de aquí, donde el
cámara, mi hermano, tuvo que ingeniárselas esquivando ramas, esquivando árboles para hacer esta toma que
estáis viendo, donde más o menos se intentaba capturar a mi figura entre los árboles y donde
tenemos una iluminación que varía, una geometría súper compleja y bueno, un vídeo que cuando se lo
pasamos al algoritmo de gaussian splatting, lo que consigue es recrear esto.
Lo que estamos viendo ahora es una escena recreada con gaussian splatting, donde yo ahora puedo mover
libremente la cámara, incluso a perspectivas que nunca fueron grabadas por mi hermano. Pues, por ejemplo,
él nunca se metió a esta parte de los árboles para grabarme con la cámara, pero sin embargo, como
tenemos ya una reconstrucción 3D hecha, pues la escena, como vemos, puede recrear incluso
cómo se vería la cámara grabando desde este punto de vista. Si os dais cuenta, según nos acercamos a
esta rama del árbol, veréis que ésta está conformada por pequeñísimas manchas tridimensionales o
gaussian splattings tal cual hemos definido. Podéis fijaros aquí cómo hay manchitas de diferentes
colores que estarían formando estas gaussianas, en este caso tridimensionales, porque estamos recreando
un espacio tridimensional, pero que vistas desde lejos, pues, conforman perfectamente lo que sería la
rama del árbol, incluso con el musgo, con un detalle y una calidad bastante sorprendente.
De hecho, podemos incluso visualizar de una forma más clara dónde están ubicadas cada una de estas
manchas. Fijaos cuántas hay. Y viéndolo así, creo que ya empieza a quedar más claro esta idea de que
podemos reconstruir perfectamente una escena 3D realista, simplemente ubicando estas pequeñas manchas
gaussianas, perfectamente colocadas, inteligentemente colocadas, en nuestro escenario 3D. La verdad que el
resultado es bastante, bastante impresionante. Y otro detalle técnico a comentar es el siguiente,
y creo que lo vais a entender bien si me veis la cara, esta cara de aquí. Quiero que os fijéis en el
color de las manchas de aquí, de esta región que estoy marcando, según empiece a mover la cámara.
¿Os dais cuenta de que para una misma región, un mismo tipo de manchas, el color se va modificando?
Depende de según el ángulo con el que mires, el color va a cambiar. Aquí no tendremos un solo color,
para cada mancha, sino que dependerá del ángulo de visión del que observes a dicha mancha, que este
color irá variando. ¿Por qué? Pues porque así es como funciona la óptica, y la luz que tus ojos
perciben de determinados materiales, pues depende de dónde se observe. Una misma región del espacio,
pues puede tener colores distintos según sea el ángulo de visión. Y un ejemplo muy chulo que he visto
en redes para explicar esto es este de aquí, que ha jugado con esta propiedad de lo gaussian splatting,
para codificar dos imágenes planas en una misma superficie. Y que solo podremos ver, como estamos
comentando, al modificar nuestro ángulo de visión. Algo así como si se tratase de estas cartulinas de
impresión lenticular que muchas veces habréis visto. Y ahora que ya tenéis una idea más completa de cómo
funciona todo esto, vamos a pasar a responder las grandes preguntas. ¿Es gaussian splatting una técnica
superior a la tecnología Nerf? Fijaos que en cuanto a calidad, esta técnica es capaz de clavar el
detalle no solo de los elementos centrales de la escena que estamos entrenando, sino también los
fondos, donde habitualmente la tecnología Nerf solía dejar regiones mucho más difusas y con elementos
flotantes molestos. Esta calidad supera cuantitativamente lo que las técnicas más avanzadas
de Nerf lo graban. Así que visto así, podemos decir que la técnica de gaussian splatting se coloca en
una posición cómoda de alta calidad y buenos tiempos de entrenamiento. Ahora, lo más interesante no son
los tiempos de entrenamiento. No. Lo importante aquí, como ocurre muchas veces, son los tiempos de
inferencia. Es decir, los tiempos en los que esta técnica incurre a la hora de renderizar cada una de las
escenas que hemos entrenado, o lo que típicamente en aplicaciones de gráficos en tiempo real medimos
con fotogramas por segundo. Pues en este aspecto, gaussian splatting vuela, logrando renderizar escenas
como esta a más de 100 fotogramas por segundo sin despeinarse. Como yo. Si os dais cuenta, la
tecnología Nerf dependía de que una red neuronal fuese dibujando, para cada perspectiva, la representación
interna que tenía codificada en sus parámetros cada vez que nosotros se lo pidiéramos. Realmente no
existía una escena 3D construida explícitamente. No. Aquí la escena 3D existía codificada en el
interior de la red neuronal. Y eso nos exigía en cada caso tener que preguntarle a la red neuronal como
se observaba esa perspectiva que nosotros estábamos mirando. Y en oposición, como hemos visto, la técnica de
gaussian splatting sí construye la escena 3D al completo. De forma explícita. Ya cada mancha 3D está
colocada en su lugar, está armando la escena al completo y no tenemos que extraerla del interior de
ninguna red neuronal cada vez que queremos renderizarla. Esto hace que el proceso de renderización sea mucho
más rápido y mucho más eficiente con las tarjetas gráficas que tenemos hoy en día. De hecho, como ya
adelantaba antes, la sorprendente eficiencia de la técnica de gaussian splatting permite no sólo codificar
escenas en tres dimensiones, sino que también podemos añadir una dimensión temporal para poder
codificar vídeos en 3D. Vídeos volumétricos. En este caso, a cada una de las manchas gaussianas
que conforman a la escena se le va a permitir también cambiar su posición y rotación al mismo tiempo que
se controla que su color, opacidad y tamaño no varíe. Haciendo esto, lo que se consigue es que si,
por ejemplo, una mancha gaussiana en un punto del tiempo, en un fotograma, pues representaba la palma de tu mano,
si ésta se va moviendo a lo largo del tiempo, pues va a seguir siendo representada por la misma
mancha gaussiana. Y esto último tiene posibilidades muy interesantes. Primero porque el uso de gaussian
splattings dinámicos, así se le llama la técnica de vídeo, lo que te permite es que si la escena que
has grabado se ha reconstruido bien, pues puedes reposicionar la cámara al gusto para hacer correcciones,
estabilizar el movimiento de la cámara o hacer planos más artísticos. También esta tecnología nos va a
permitir estimar mapas de profundidad de alta calidad. Obviamente, al final estamos recreando
tridimensionalmente toda la escena. Y también la reconstrucción 3D que hagas de un vídeo te la vas
a poder llevar a otra escena 3D, claro, y componerlas conjuntamente para crear efectos tan chulos como
estos. Pero es que además un efecto colateral interesante que surge de esto que decíamos antes,
de que las manchas sigan representando el mismo elemento a través del tiempo, es que esto te da
como resultado un trackeo 3D muy práctico. Para quien no lo sepa, poder trackear, seguir el movimiento de
puntos en una escena 3D, es algo muy útil para numerosas tareas de composición y efectos especiales,
sin contar también para aspectos relacionados con la visión por computador en las máquinas. Pues aquí
podéis ver cómo el tracking que consigue esta técnica se respeta con gran precisión. De hecho,
una cosa muy chula que enseñan en este trabajo y que me ha volado la cabeza, es cómo consiguen
regrabar, reinterpretar la escena colocando la cámara en otra posición. Fijando, por ejemplo,
la cámara, un punto de vista diferente gracias al tracking 3D que estábamos comentando, para poder
experimentar de nuevo la escena desde el punto de vista del sujeto que está lanzando la pelota,
o incluso de la misma pelota que está siendo lanzada en el aire y rotando a través del espacio.
Con esto sé que ahora mismo vuestro hype está por las nubes y quiero aterrizaros un poco los pies
a tierra. Tenemos que entender que muchos de los resultados que hemos visto en este trabajo de
escenas dinámicas están rodados en platos especiales que tienen un sistema de cámaras complejo
360 que permite cubrir toda el área del sujeto que se está grabando. Y lo que este trabajo viene a
demostrar es que técnicamente podemos codificar estas escenas tan complejas con una tecnología
tan nueva como es Gaussian Splatting. Y otra cosa importante a tener en cuenta es que las escenas
3D que estamos construyendo, al igual que pasaba con la tecnología Nerf, no se están basando en un
sistema de renderización típico. Aquí estamos hablando de renderización volumétrica. Ahora mismo,
muchas de las herramientas que vemos en motores gráficos de videojuegos, en software de edición 3D,
se basan en superficies de mallas 3D. Mucho de este software cuenta con un pipeline de trabajo
que usan estas mallas para representar texturas, iluminaciones dinámicas, para el cálculo de
físicas, para muchas cosas. Tendréis que buscar alguna forma para traducir esta composición volumétrica
a una escena de superficie de malla 3D y este proceso por lo general suele dejar mucha calidad
por el camino. Pero esto como digo es una tecnología todavía muy prematura y que ha generado mucho
interés en la industria con lo cual hay mucha gente trabajando y esto se está moviendo rápido.
Por ahora hay quienes ya han integrado Gaussian Splatting en visores de realidad virtual, puesto
que los altos tiempos de inferencia permiten poder consumir estas escenas con mucha fluidez. También
lo hemos visto integrado en motores gráficos como Unity y aplicaciones móviles como Luma Labs ya lo están incluyendo.
Muchas, muchas cosas interesantes están por venir y todas ellas os las voy a contar aquí en .CCV.
Y si os ha gustado este vídeo no dejéis de compartirlo por redes sociales que eso siempre
ayuda un montón. Compartidlo con gente que le pueda interesar, con vuestros amigos y bueno si podéis
dejar un comentario abajo también con vuestras impresiones estaré ahí revisándolo. También si
queréis apoyar todo el proyecto de divulgación de .CCV sabéis que tenéis habilitado un Patreon donde podéis
hacer una aportación mensual y en este caso pues también podéis colaborar pues apoyando al
patrocinador de este vídeo a Hostinger que le agradecemos su apoyo a nuestro contenido. Tenéis
toda la información abajo en la cajita de descripción. Tenéis por aquí un par de vídeos
súper interesantes y nos vemos con más inteligencia artificial aquí en .CCV.
whoo güvere.