4D Gaussian Splatting
Lo splatting gaussiano 4D ricostruisce scene in movimento dai video sotto forma di gaussiane che cambiano nel tempo, renderizzando in tempo reale qualsiasi punto di vista in qualsiasi momento.
Lo splatting gaussiano 4D (4DGS) ricostruisce una scena in movimento a partire da un video, così da poterla renderizzare da nuovi punti di vista in qualsiasi momento, in tempo reale. Estende lo splatting gaussiano 3D, che rappresenta una scena statica sotto forma di milioni di ellissoidi 3D sfumati, proiettati e sovrapposti sullo schermo, consentendo a queste gaussiane di muoversi, ruotare, cambiare forma e apparire o scomparire nel tempo. Nell'ottobre 2023, due articoli hanno introdotto il termine con approcci diversi. Splatting gaussiano 4D per il rendering in tempo reale di scene dinamiche, di Guanjun Wu e colleghi della Huazhong University of Science and Technology e di Huawei (CVPR 2024), deforma un insieme di gaussiane 3D mediante un campo di deformazione appreso. Rappresentazione e rendering fotorealistici di scene dinamiche in tempo reale con splatting gaussiano 4D, di Zeyu Yang e colleghi della Fudan University (ICLR 2024), utilizza gaussiane 4D native definite nello spazio e nel tempo. Entrambi sono metodi di sintesi dinamica di nuove viste, spesso chiamata video a punto di vista libero.
Come funziona il Gaussian Splatting 4D#
L'input ideale è un insieme di video sincronizzati ripresi da telecamere disposte intorno alla scena, come il dataset Neural 3D Video, detto anche Plenoptic Video, con registrazioni di 10 secondi a 30 FPS effettuate da 18 a 21 telecamere e pose delle telecamere ricavate tramite Structure from Motion. Funziona anche una singola telecamera in movimento, ma rende più difficile distinguere profondità e movimento. L'addestramento segue il metodo 3D: si renderizza la scena a un timestamp da una telecamera di addestramento, si confronta l'immagine con il fotogramma reale del video e si aggiornano tutti i parametri con la discesa del gradiente attraverso il renderer differenziabile. Le due architetture differiscono nel modo in cui generano le gaussiane per un determinato timestamp:
- Campo di deformazione: Wu e colleghi mantengono un unico insieme canonico di gaussiane 3D. Per ogni timestamp, una griglia compatta di caratteristiche spaziali e temporali apprese, scomposta in piani come in HexPlane, fornisce le caratteristiche di ogni gaussiana; una MLP leggera prevede di quanto si sposta, ruota e si allunga. Il metodo renderizza a 82 FPS a 800×800 su una GPU RTX 3090.
- Gaussiane 4D native: Yang e colleghi assegnano a ogni primitiva una media e una covarianza 4D lungo x, y, z e il tempo; la rotazione 4D è costruita usando una coppia di quaternioni. Il colore varia in funzione della direzione di visualizzazione e del tempo tramite armoniche sferindriche 4D, che moltiplicano le armoniche sferiche per una serie di Fourier nel tempo. Sul benchmark Neural 3D Video, l'articolo riporta 114 FPS, contro i 36 FPS del metodo con campo di deformazione.
Sezionare una gaussiana 4D nativa al tempo t equivale a condizionare una gaussiana: fissando t si ottiene una gaussiana 3D con centro spostato e covarianza ridotta, mentre la marginale 1D della gaussiana nel tempo ne ridimensiona l'opacità. Le gaussiane il cui peso temporale è trascurabile a t vengono saltate prima della rasterizzazione. Questo codice PyTorch seziona una gaussiana 4D in tre timestamp:
import torch
torch.manual_seed(0)
# One 4D Gaussian over (x, y, z, t): a mean and a covariance that couples position with time
mean = torch.tensor([0.0, 0.0, 0.0, 0.5])
factor = torch.randn(4, 4) * 0.3
cov = factor @ factor.T + 0.01 * torch.eye(4)
# Slicing at time t conditions the 4D Gaussian on t, leaving a 3D Gaussian to rasterize
for t in (0.1, 0.5, 0.9):
center = mean[:3] + cov[:3, 3] / cov[3, 3] * (t - mean[3])
cov_3d = cov[:3, :3] - torch.outer(cov[:3, 3], cov[3, :3]) / cov[3, 3]
# The temporal marginal fades the Gaussian in and out around its mean time
opacity_scale = torch.exp(-0.5 * (t - mean[3]) ** 2 / cov[3, 3])
print(f"t={t}: center {center.numpy().round(2)}, opacity x{opacity_scale:.2f}, volume {cov_3d.det().sqrt():.4f}")Stampa un centro di [0.23 -0.15 0.16] a t=0.1, [0. 0. 0.] a t=0.5 e [-0.23 0.15 -0.16] a t=0.9; il fattore di opacità sale da 0.74 a 1.00 e poi torna a 0.74, mentre il volume resta pari a 0.1030. La covarianza condizionale non dipende da t, quindi ogni gaussiana 4D diventa una gaussiana 3D di forma fissa che scivola lungo una retta e sfuma in entrata e in uscita; il movimento complesso emerge da molte gaussiane di breve durata.
Gli oggetti in movimento costituiscono la maggior parte dell'errore di ricostruzione; perciò, molte pipeline separano lo sfondo statico dagli elementi dinamici in primo piano e alcune assegnano a ogni oggetto in movimento un proprio insieme di gaussiane. I modelli di segmentazione di istanze Ultralytics YOLO26, eseguiti in modalità di tracciamento, producono una maschera per ogni persona e veicolo in ciascun fotogramma, associandola a un ID che persiste per tutto il video; in questo modo indicano quali pixel appartengono a ciascun oggetto in movimento.
Splatting gaussiano 4D e metodi correlati#
- Splatting gaussiano 3D per fotogramma: Ricostruire separatamente ogni fotogramma richiede di memorizzare una scena completa per ciascuno e provoca sfarfallio tra i fotogrammi. 4DGS condivide le gaussiane nel tempo, quindi memorizza una sola volta lo sfondo statico e mantiene la coerenza temporale delle parti in movimento.
- NeRF dinamici: D-NeRF, HexPlane e altri campi di radianza neurale dinamici mappano anch'essi una scena canonica a ogni timestamp, ma valutano un campo neurale in molti punti lungo ciascun raggio della telecamera; il rendering è quindi molto più lento rispetto alla rasterizzazione delle gaussiane. L'architettura 4DGS con campo di deformazione segue la stessa idea canonico-più-deformazione, usando gaussiane rasterizzate.
- Gaussiane 3D dinamiche: Jonathon Luiten e colleghi mantengono fissi colore, opacità e dimensioni di ogni gaussiana e ne modificano solo posizione e rotazione, con vincoli di rigidità locale. Dalla ricostruzione si ottiene direttamente il tracciamento di punti denso a 6 gradi di libertà di ogni elemento della scena.
- Generazione di video: I modelli generativi di video inventano nuove riprese a partire da un prompt. 4DGS ricostruisce un evento registrato dalle telecamere e lo renderizza di nuovo da punti di vista e momenti diversi.
Applicazioni nel mondo reale#
- Video volumetrico per VR e AR: Spettacoli, momenti sportivi e interviste registrati con sistemi di telecamere diventano clip a punto di vista libero, che gli spettatori possono esplorare con un visore o nel browser.
- Telepresenza e avatar: Le riprese di persone effettuate con più telecamere generano rappresentazioni 3D animate e fotorealistiche per la comunicazione a distanza e i gemelli digitali.
- Simulazione di guida: I team che lavorano sui veicoli autonomi ricostruiscono tragitti registrati con traffico in movimento e li renderizzano da telecamere spostate per testare i sistemi di percezione. Il modello Street Gaussians rappresenta ogni veicolo tracciato con un proprio insieme di gaussiane, che si muove secondo pose tracciate ottimizzate; si addestra in circa mezz'ora e renderizza scene stradali a 135 FPS con risoluzione 1066×1600.










