Introduzione al Gaussian Splatting in 3D

Gaussian Splatting in 3D Introduction

La splatting gaussiana 3D è una tecnica di rasterizzazione descritta in “Splatting gaussiano 3D per il rendering in tempo reale di campi di radianza” che consente il rendering in tempo reale di scene fotorealistiche apprese da piccoli campioni di immagini. Questo articolo analizzerà come funziona e cosa significa per il futuro della grafica.

Controlla lo spazio remoto del visualizzatore gaussiano qui o incorporato di seguito per un esempio di una scena di splatting gaussiano.

Cos’è lo splatting gaussiano 3D?

Lo splatting gaussiano 3D è, fondamentalmente, una tecnica di rasterizzazione. Ciò significa:

  1. Avere dati che descrivono la scena.
  2. Disegnare i dati sullo schermo.

Ciò è analogo alla rasterizzazione dei triangoli nella grafica computerizzata, che viene utilizzata per disegnare molti triangoli sullo schermo.

Tuttavia, invece di triangoli, sono gaussiane. Ecco una singola gaussiana rasterizzata, con un bordo disegnato per chiarezza.

È descritto dai seguenti parametri:

  • Posizione: dove si trova (XYZ)
  • Covarianza: come è disteso/scalato (matrice 3×3)
  • Colore: di che colore è (RGB)
  • Alfa: quanto è trasparente (α)

Nella pratica, vengono disegnate contemporaneamente molte gaussiane.

Queste sono tre gaussiane. E ora, che ne dici di 7 milioni di gaussiane?

Ecco come appare con ciascuna gaussiana rasterizzata completamente opaca:

Questo è un breve riassunto di cosa sia lo splatting gaussiano 3D. Successivamente, vediamo la procedura completa descritta nel documento.

Come funziona

1. Struttura da Movimento

Il primo passo consiste nell’utilizzare il metodo della struttura da movimento (SfM) per stimare una nuvola di punti da un insieme di immagini. Si tratta di un metodo per stimare una nuvola di punti 3D da un insieme di immagini 2D. Ciò può essere fatto con la libreria COLMAP.

2. Conversione in Gaussiane

Successivamente, ogni punto viene convertito in una gaussiana. Ciò è già sufficiente per la rasterizzazione. Tuttavia, dai dati SfM è possibile inferire solo la posizione e il colore. Per ottenere risultati di alta qualità, è necessario addestrarlo.

3. Addestramento

La procedura di addestramento utilizza la discesa del gradiente stocastica, simile a una rete neurale, ma senza gli strati. I passaggi di addestramento sono:

  1. Rasterizzare le gaussiane in un’immagine utilizzando la rasterizzazione gaussiana differenziabile (ne parleremo più avanti)
  2. Calcolare la perdita in base alla differenza tra l’immagine rasterizzata e l’immagine di riferimento
  3. Regolare i parametri delle gaussiane in base alla perdita
  4. Applicare densificazione e potatura automatica

I passaggi 1-3 sono concettualmente abbastanza semplici. Il passaggio 4 prevede quanto segue:

  • Se il gradiente è elevato per una determinata gaussiana (cioè è troppo errato), dividerla/clonarla
    • Se la gaussiana è piccola, clonarla
    • Se la gaussiana è grande, dividerla
  • Se l’alfa di una gaussiana diventa troppo bassa, rimuoverla

Questa procedura aiuta le gaussiane a adattarsi meglio ai dettagli fini, mentre elimina le gaussiane superflue.

4. Rasterizzazione gaussiana differenziabile

Come accennato in precedenza, la Splatting gaussiana tridimensionale è un approccio di rasterizzazione che disegna i dati sullo schermo. Tuttavia, alcuni elementi importanti sono anche che:

  1. E’ veloce
  2. E’ differenziabile

L’implementazione originale del rasterizzatore può essere trovata qui. La rasterizzazione coinvolge:

  1. Proiettare ogni gaussiana in 2D dalla prospettiva della telecamera.
  2. Ordinare le gaussiane per profondità.
  3. Per ogni pixel, iterare su ogni gaussiana dall’avanti all’indietro, mescolandole insieme.

Sono descritte ulteriori ottimizzazioni nel paper.

E’ anche fondamentale che il rasterizzatore sia differenziabile, in modo che possa essere addestrato con la discesa del gradiente stocastico. Tuttavia, ciò è rilevante solo per l’addestramento: le gaussiane addestrate possono anche essere renderizzate con un approccio non differenziabile.

A chi interessa?

Perché c’è stata tanta attenzione sulla Splatting gaussiana tridimensionale? La risposta ovvia è che i risultati parlano da soli: sono scene di alta qualità in tempo reale. Tuttavia, potrebbe esserci di più dietro la storia.

Ci sono molte incognite su ciò che si può fare con la Splatting gaussiana. Possono essere animate? Il prossimo paper “Dynamic 3D Gaussians: tracking by Persistent Dynamic View Synthesis” suggerisce che possono esserlo. Ci sono molte altre incognite. Possono fare riflessioni? Possono essere modellate senza addestrarsi su immagini di riferimento?

Infine, c’è un crescente interesse nella ricerca sull’Intelligenza Incarnata. Questa è un’area di ricerca sull’IA in cui le prestazioni di ultima generazione sono ancora di ordini di grandezza inferiori alle prestazioni umane, con gran parte della sfida che riguarda la rappresentazione dello spazio tridimensionale. Dato che la Splatting gaussiana tridimensionale produce una rappresentazione molto densa dello spazio 3D, quali potrebbero essere le implicazioni per la ricerca sull’IA incarnata?

Queste domande richiamano l’attenzione sul metodo. Resta da vedere quale sarà l’impatto effettivo.

Il futuro della grafica

Allora, cosa significa tutto questo per il futuro della grafica? Beh, analizziamolo nei pro e nei contro:

Pro

  1. Scene di alta qualità e fotorealistiche
  2. Rasterizzazione veloce in tempo reale
  3. Relativamente veloce da addestrare

Contro

  1. Utilizzo elevato di VRAM (4GB per visualizzare, 12GB per addestrare)
  2. Dimensioni del disco elevate (1GB+ per una scena)
  3. Incompatibile con i flussi di lavoro di rendering esistenti
  4. Statico (per ora)

Fino ad ora, l’implementazione originale CUDA non è stata adattata ai flussi di lavoro di rendering di produzione, come Vulkan, DirectX, WebGPU, ecc., quindi resta da vedere quale sarà l’impatto.

Sono già state realizzate le seguenti versioni:

  1. Visualizzatore remoto
  2. Visualizzatore WebGPU
  3. Visualizzatore WebGL
  4. Visualizzatore Unity
  5. Visualizzatore WebGL ottimizzato

Questi si basano sulla trasmissione remota (1) o su un approccio tradizionale di rasterizzazione basato su quadrati (2-5). Sebbene un approccio basato su quadrati sia compatibile con decenni di tecnologie grafiche, potrebbe comportare una qualità/prestazioni inferiori. Tuttavia, il visualizzatore n. 5 dimostra che i trucchi di ottimizzazione possono portare a una qualità/prestazioni elevate, nonostante un approccio basato su quadrati.

Quindi vedremo la Splatting gaussiana tridimensionale completamente reimplementata in un ambiente di produzione? La risposta è probabilmente sì. Il principale ostacolo è ordinare milioni di gaussiane, che viene fatto in modo efficiente nell’implementazione originale utilizzando l’ordinamento radice basato su dispositivi CUB, un algoritmo di ordinamento altamente ottimizzato disponibile solo in CUDA. Tuttavia, con sufficiente impegno, è certamente possibile raggiungere questo livello di prestazioni in altri flussi di lavoro di rendering.

Se hai domande o vuoi essere coinvolto, unisciti a Hugging Face Discord!