4D Gaussian Splatting
Le Gaussian splatting 4D reconstruit des scènes en mouvement à partir de vidéos sous forme de Gaussiennes qui évoluent dans le temps, afin de rendre n’importe quel point de vue à tout moment et en temps réel.
Le splatting gaussien 4D (4DGS) reconstruit une scène en mouvement à partir d’une vidéo pour pouvoir la rendre en temps réel, à tout moment et depuis de nouveaux points de vue. Il étend le splatting gaussien 3D, qui représente une scène statique par des millions d’ellipsoïdes 3D flous projetés et fusionnés à l’écran, en permettant à ces gaussiennes de se déplacer, de tourner, de changer de forme et d’apparaître ou de disparaître au fil du temps. Deux articles d’octobre 2023 ont introduit ce nom avec des conceptions différentes. Splatting gaussien 4D pour le rendu de scènes dynamiques en temps réel, de Guanjun Wu et ses collègues de l’Université des sciences et technologies de Huazhong et de Huawei (CVPR 2024), déforme un ensemble de gaussiennes 3D à l’aide d’un champ de déformation appris. Représentation et rendu photoréalistes en temps réel de scènes dynamiques avec le splatting gaussien 4D, de Zeyu Yang et ses collègues de l’Université Fudan (ICLR 2024), utilise des gaussiennes 4D natives définies dans l’espace et le temps. Les deux méthodes réalisent une synthèse de nouveaux points de vue dynamique, souvent appelée vidéo à point de vue libre.
Fonctionnement du Gaussian Splatting 4D#
L’entrée idéale est un ensemble de vidéos synchronisées provenant de caméras disposées autour de la scène, comme le jeu de données Neural 3D Video, aussi appelé Plenoptic Video, qui comprend des enregistrements de 10 secondes à 30 FPS réalisés par 18 à 21 caméras, dont les poses ont été calculées par Structure from Motion. Une seule caméra en mouvement convient aussi, mais rend la séparation de la profondeur et du mouvement plus difficile. L’entraînement suit la méthode 3D : on rend la scène à un instant donné depuis une caméra d’entraînement, on compare l’image à la vraie image vidéo, puis on met à jour chaque paramètre par descente de gradient à travers le rendu différentiable. Les deux conceptions diffèrent dans la façon dont elles produisent les gaussiennes pour un instant donné :
- Champ de déformation : Wu et al. conservent un ensemble canonique de gaussiennes 3D. Pour chaque instant, une grille compacte de caractéristiques spatiales et temporelles apprises, décomposée en plans comme dans HexPlane, fournit des caractéristiques à chaque gaussienne, et un MLP léger prédit la distance de son déplacement, de sa rotation et de son étirement. La méthode atteint 82 FPS à 800×800 sur un GPU RTX 3090.
- Gaussiennes 4D natives : Yang et al. attribuent à chaque primitive une moyenne et une covariance 4D selon x, y, z et le temps, la rotation 4D étant construite à partir d’une paire de quaternions. La couleur varie selon la direction d’observation et le temps grâce aux harmoniques sphérindriques 4D, qui multiplient les harmoniques sphériques par une série de Fourier en temps. Sur le benchmark Neural 3D Video, l’article rapporte 114 FPS, contre 36 FPS pour la méthode du champ de déformation.
Découper une gaussienne 4D native à l’instant t revient à effectuer un conditionnement gaussien : fixer t donne une gaussienne 3D dont le centre est décalé et la covariance réduite, et la marginale 1D de la gaussienne sur le temps détermine son opacité. Les gaussiennes dont le poids temporel est négligeable à l’instant t sont ignorées avant la rastérisation. Ce code PyTorch découpe une gaussienne 4D à trois instants :
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}")Il affiche un centre de [0.23 -0.15 0.16] à t=0.1, [0. 0. 0.] à t=0.5 et [-0.23 0.15 -0.16] à t=0.9, tandis que le facteur d’opacité passe de 0.74 à 1.00 puis revient à 0.74, et que le volume reste égal à 0.1030. La covariance conditionnelle ne dépend pas de t. Chaque gaussienne 4D devient donc une gaussienne 3D de forme fixe qui glisse en ligne droite et apparaît puis s’estompe ; les mouvements complexes émergent de nombreuses gaussiennes éphémères.
Les objets en mouvement concentrent la majeure partie de l’erreur de reconstruction. De nombreux pipelines séparent donc un arrière-plan statique des éléments de premier plan dynamiques, et certains attribuent à chaque objet mobile son propre ensemble de gaussiennes. Les modèles de segmentation d’instances Ultralytics YOLO26, exécutés en mode suivi, produisent un masque pour chaque personne et véhicule dans chaque image, avec un ID qui persiste sur toute la vidéo, indiquant quels pixels appartiennent à quel objet en mouvement.
Splatting gaussien 4D et méthodes apparentées#
- Splatting gaussien 3D image par image : reconstruire séparément chaque image stocke une scène complète par image et entraîne des scintillements d’une image à l’autre. 4DGS partage les gaussiennes au fil du temps : l’arrière-plan statique n’est stocké qu’une fois et les éléments mobiles restent cohérents dans le temps.
- NeRF dynamiques : D-NeRF, HexPlane et d’autres champs de radiance neuronaux dynamiques associent aussi une scène canonique à chaque instant, mais évaluent un champ neuronal en de nombreux points le long de chaque rayon de caméra, ce qui rend le rendu beaucoup plus lent que la rastérisation des gaussiennes. La conception 4DGS fondée sur un champ de déformation reprend la même idée de scène canonique et de déformation, avec des gaussiennes rastérisées.
- Gaussiennes 3D dynamiques : Jonathon Luiten et ses collègues maintiennent fixes la couleur, l’opacité et la taille de chaque gaussienne, et ne font varier que sa position et sa rotation, avec des contraintes de rigidité locale. Le suivi de points dense à 6 degrés de liberté de chaque élément de la scène découle directement de la reconstruction.
- Génération vidéo : les modèles de génération vidéo inventent de nouvelles séquences à partir d’une invite. 4DGS reconstruit un événement filmé par des caméras et le restitue depuis de nouveaux points de vue et à différents instants.
Applications concrètes#
- Vidéo volumétrique pour la VR et la RA : les spectacles, les moments sportifs et les entretiens filmés par des systèmes de caméras deviennent des séquences à point de vue libre que les spectateurs peuvent explorer avec un casque ou dans un navigateur.
- Téléprésence et avatars : les captures multicaméras de personnes produisent des représentations 3D animées et photoréalistes pour les communications à distance et les doubles numériques.
- Simulation de conduite : les équipes de véhicules autonomes reconstruisent des trajets filmés avec du trafic en mouvement, puis les restituent depuis des caméras décalées pour tester les systèmes de perception. Les modèles Street Gaussians représentent chaque véhicule suivi par son propre ensemble de gaussiennes, qui se déplace selon des poses suivies optimisées ; ils s’entraînent en une trentaine de minutes et rendent des scènes de rue à 135 FPS en résolution 1066×1600.










