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.