Video Summary and Transcription
Hoy hablaré sobre GspotJS y Gaussian Splatting, un revolucionario pipeline de gráficos que puede renderizar escenas de alta fidelidad a 144 FPS. Gaussian Splatting es una técnica que convierte datos directamente en una imagen utilizando gaussianas. GspotJS es una biblioteca ligera de JavaScript para el renderizado de splats gaussianos, con características como el renderizado en 4D. La biblioteca tiene como objetivo proporcionar una forma sencilla y rápida de ver Splats en la web, mientras que aplicaciones más avanzadas pueden utilizar Mackellog Gaussian Splats 3D. Tanto Gaussian Splatting como gSplotJS son de código abierto.
1. Introducción a GspotJS
Hoy hablaré sobre GspotJS y Gaussian Splatting. GspotJS es una tubería gráfica revolucionaria que puede renderizar escenas de alta fidelidad a 144 FPS. Gaussian Splatting es la técnica detrás de esto, donde se utilizan múltiples imágenes para estimar una nube de puntos en 3D, que luego se representa como Gaussians en una matriz. Estas Gaussians se rasterizan en una imagen y se entrenan para producir imágenes que se asemejen a las originales. El conjunto entrenado de Gaussians se puede rasterizar desde cualquier ángulo para generar una imagen.
Hola a todos, hoy hablaré sobre GspotJS. ¿Qué es? ¿Su historia? ¿Cómo funciona? Y ¿hacia dónde se dirige? Pero primero, ¿quién soy yo? Mi nombre es Dylan. Soy un defensor del desarrollo en Hugging Face, donde build tools y creo contenido educativo, a veces bajo mi nombre y a veces bajo keks individuales. Hablando de eso, para responder a la pregunta, ¿qué es GspotJS? Primero necesito responder, ¿qué es Gaussian Splatting? Tengo un video de 2 minutos sobre eso, aquí está. Gaussian Splatting. ¿Qué es eso? Es una forma de renderizar cosas con una alta fidelidad, muy rápido. Es importante porque es totalmente diferente de cualquier tubería gráfica existente y es capaz de renderizar escenas que se ven así, a 144 FPS. El artículo de investigación original es 3D Gaussian Splatting para renderización de campos de radiación en tiempo real. ¿Qué significa eso? Explicaré cómo funciona. Paso uno, tomar un montón de fotos de cosas desde diferentes ángulos, luego usar un antiguo algoritmo llamado Estructura a partir del movimiento para estimar una nube de puntos a partir de las imágenes en diferentes ángulos. Paso dos, tomar cada punto en la nube de puntos y decir que ahora eres un Gaussian. ¿Un qué? Una distribución que se ve como esto, pero en 3D, y también puede estar sesgada, lo que me gusta llamar multivariada. Multivariada. Todos lo llaman así. También asignamos un color y un alfa. Ahora podemos poner todas estas Gaussians en una matriz gigante, con 16 columnas y filas, una para cada Gaussian. Esto es toda la data que necesitamos para representar la escena. ¿Hemos terminado? No. Paso tres, rasterización, lo que significa convertir todas estas Gaussians en una imagen. ¿Cómo? La versión simplificada es, según la perspectiva de tu cámara, proyecta las Gaussians en 2D, luego ordénalas por profundidad, luego para cada píxel, itera sobre cada Gaussian, de adelante hacia atrás, calcula su contribución a ese píxel, luego mézclalos todos juntos. Ahora tenemos una imagen. ¿Hemos terminado? No. Parte cuatro, entrenamiento. Estas Gaussians no tienen los valores correctos, así que necesitamos entrenar ellas. Es decir, ajustar los valores de las Gaussians para que produzcan imágenes que se parezcan a las imágenes originales. Esto es muy parecido a entrenar una red neuronal, pero sin capas, lo cual es por qué es tan rápido. El entrenamiento también utiliza densificación y poda automatizadas. Es decir, cuando una Gaussian tiene dificultades para ajustarse a una parte detallada de la escena, se divide en dos Gaussians. Y cuando el alfa de una Gaussian se vuelve demasiado bajo, se elimina. Ahora tenemos un conjunto entrenado
2. Descripción general de Gaussian Splatting y G-Splat JS
Gaussian Splatting es una técnica revolucionaria de rasterización que convierte los datos directamente en una imagen. G-Splat JS es una biblioteca ligera de JavaScript para renderizar Gaussian Splats, similar a otras bibliotecas de renderizado pero con características adicionales como renderizado 4D. La historia de G-Splat JS involucra el uso de Spaces, una aplicación de aprendizaje automático en HuggingFace, y el desarrollo de una biblioteca de JavaScript para simplificar la visualización de los resultados de Splats en demostraciones de aprendizaje automático.
de millones de Gaussians que se pueden rasterizar desde cualquier ángulo para producir una imagen. Bueno, ¿y ahora qué? Bueno, esto es extremadamente nuevo. Es como cuando se inventó la rasterización tradicional por primera vez, y luego llegó Doom y agregó sombras. Y todos dijeron, wow, agregaste sombras. Y luego vinieron los reflejos, los mapas de normales, la iluminación indirecta, ya sabes, Y este artículo básicamente está reinventando el primer paso. Ahora podrías pensar, ¿esto no es lo mismo que la fotogrametría? No, porque esta es una técnica de rasterización, lo que significa que convierte los datos subyacentes directamente en una imagen, sin necesidad de trazado de rayos, trazado de rutas, o difusión. Entonces, ¿por qué no existía hasta ahora? Porque aunque es una operación simple, para que se vea tan bien como lo hace, necesitas millones de Gaussians. Lo cual requiere varios gigas de VRAM. ¿Está a punto de cambiar por completo la gráfica? ¿O es una aplicación de nicho como la fotogrametría? Hazme saber lo que piensas.
Eso es Gaussian Splatting. ¿Y qué es G-Splat JS? Es una biblioteca de JavaScript para renderizar Gaussian Splats. Tiene mucho en común con otras bibliotecas de renderizado, como 3JS o BabylonJS, donde puedes renderizar una escena, con este código, donde configuras una escena, una cámara, un renderizador y controles. Y luego, en un bucle de actualización, actualizas los controles y renderizas la escena. Bastante simple. También tiene algunas características adicionales, como el renderizado 4D. Básicamente, un video en el que puedes mirar alrededor. También es muy ligero, menos de 1MB, mucho más pequeño que otras bibliotecas de renderizado. Ahora, sobre la historia. No soy un programador de gráficos ni un desarrollador de JavaScript. Pero algo realmente genial que tenemos en HuggingFace son los Spaces. Estas son aplicaciones de aprendizaje automático creadas por la comunidad, generalmente utilizando Gradio, una biblioteca de Python que facilita mucho la creación de aplicaciones web de aprendizaje automático. Uno de los componentes de esto es Model 3D, que facilita la visualización de los resultados de mallas 3D. Y cuando apareció Gaussian Splatting, quería habilitar la visualización de los resultados de Splats. Así que encontré este renderizador de código abierto de JavaScript, Antimatter15-Splat, creado por Kevin Kwok. Y estaba reimplementándolo en Spaces. Fue realmente doloroso. Y pensé que sería bueno si hubiera una biblioteca de JavaScript que hiciera esto más fácil. Así que la hice. Espero que ahorre tiempo a otros Por cierto, antes mencioné que Gradio Model 3D podía visualizar resultados de mallas. Bueno, ahora también puede visualizar resultados de Splats, lo que permite
3. Trabajo y futuro de gSplotJS
Puedes cargar una imagen y generar una escena de Gaussian Splatting 3D con gSplotJS. El renderizador en gSplotJS utiliza CountingSort con un Web Worker asíncrono en WebAssembly para un renderizado rápido. La biblioteca tiene como objetivo proporcionar una forma simple y rápida de ver Splats en la web. Para aplicaciones más avanzadas, se recomienda Mackellog Gaussian Splats 3D, construido sobre 3JS. Gaussian Splatting y gSplotJS son de código abierto.
Demostraciones de aprendizaje automático como esta. Donde puedes cargar una imagen y generar una escena de Gaussian Splatting 3D. Esa es la historia. ¿Y ahora, cómo funciona? Si observas los archivos del proyecto, la mayoría de las cosas como cámaras, controles, matemáticas, son bastante estándar en el mundo 3D. La parte de Gaussian Splatting es el renderizador. Aquí está la mayor parte del código de renderizado. No voy a explicarlo en detalle. Pero hay algo que vale la pena mencionar. El mayor cuello de botella del renderizado de Gaussian Splats es la clasificación de los Splats. Para esto, estoy utilizando CountingSort, con un Web Worker asíncrono en WebAssembly. Esto hace que gSplotJS sea muy rápido. Pero teóricamente, podría ser aún más rápido con un Parallel Radix Sort basado en GPU, utilizando tecnologías más nuevas como WebGPU. Y si tienes experiencia en eso, todo esto es de código abierto. Así que ven y contribuye.
¿Y qué hay del futuro de gSplotJS? El objetivo de esta biblioteca es ver fácilmente Splats en la web, con un enfoque en velocidad y simplicidad. Si estás interesado en aplicaciones más pesadas, como juegos o renderizado híbrido de mallas y Splats, te recomiendo Mackellog Gaussian Splats 3D. Un renderizador de Gaussian Splats construido sobre 3JS. En conclusión, Gaussian Splatting es bastante genial. Y gSplotJS facilita el renderizado en la web. Y la mejor parte, es de código abierto. Gracias por ver.
Comments