Gaussian Splatting
Le Gaussian Splatting reconstruit des scènes 3D photoréalistes à partir de photos sous la forme de millions de Gaussiennes 3D, rendues en temps réel. Présentation de l’entraînement, de NeRF et de la capture.
Le splatting gaussien, aussi appelé splatting gaussien 3D (3DGS), est une technique qui permet de reconstruire une scène 3D photoréaliste à partir de photos ordinaires et d’en générer de nouvelles vues en temps réel. La scène est représentée par des millions de gaussiennes 3D, des ellipsoïdes flous ayant chacun une position, une forme, une opacité et une couleur dépendant du point de vue ; l’image est créée en les projetant (« splatting ») sur l’écran, puis en les mélangeant. Présentée à SIGGRAPH 2023 dans 3D Gaussian Splatting for Real-Time Radiance Field Rendering, cette méthode a égalé la qualité d’image des meilleurs champs de radiance neuronaux (NeRF) tout en atteignant au moins 30 images par seconde en 1080p, ce qu’aucune méthode antérieure n’avait réalisé sur de grandes scènes non délimitées. C’est une méthode de synthèse de nouvelles vues et de reconstruction 3D.
Fonctionnement du Gaussian Splatting#
Chaque gaussienne stocke 59 paramètres entraînables : une position 3D, une échelle 3D et un quaternion de rotation à 4 composantes qui définissent ensemble sa covariance (sa forme et son orientation), une opacité et 48 coefficients d’harmoniques sphériques, à raison de 16 par canal de couleur, qui permettent à sa couleur de varier selon la direction d’observation afin de restituer les reflets et les variations de brillance. L’entraînement commence à partir du nuage de points clairsemé produit par la structure à partir du mouvement (SfM) lors du calibrage des caméras, avec une gaussienne placée sur chaque point. À chaque itération, le système effectue le rendu d’une vue d’entraînement, la compare à la photo réelle à l’aide d’une combinaison pondérée des pertes L1 et D-SSIM, puis met à jour chaque gaussienne par descente de gradient via le rendu différentiable. Toutes les 100 itérations, le contrôle adaptatif de la densité duplique les petites gaussiennes dans les régions insuffisamment reconstruites, subdivise les grandes gaussiennes qui couvrent trop de détails et supprime celles qui sont presque transparentes, de sorte que chaque scène de l’article compte entre 1 et 5 millions de gaussiennes.
Pour générer une image, le moteur de rendu projette chaque gaussienne 3D sur le plan de l’image sous la forme d’une ellipse 2D, divise l’écran en tuiles de 16 × 16 pixels, trie par profondeur les gaussiennes qui chevauchent chaque tuile au moyen d’un unique tri radix sur le GPU, puis les mélange par alpha de l’avant vers l’arrière pour chaque pixel. Comme la scène est une liste explicite de primitives, le rendu fonctionne comme le rasteriseur d’un moteur de jeu et n’évalue aucun réseau neuronal par pixel.
Splatting gaussien, NeRF et maillages#
Un NeRF stocke une scène de manière implicite dans les poids d’un réseau neuronal et la rend en interrogeant ce réseau en de nombreux points le long de chaque rayon de caméra. Le splatting gaussien stocke explicitement la scène : le rendu se réduit donc au tri et au mélange. Sur le même matériel que dans l’article original, Mip-NeRF360 nécessitait en moyenne 48 heures d’entraînement et environ 10 secondes par image rendue ; après 35 à 45 minutes d’entraînement, les splats gaussiens atteignaient une qualité équivalente ou légèrement supérieure, tout en étant rendus en temps réel. Cette représentation explicite coûte de la mémoire : avec 59 nombres par gaussienne, une scène de 3 millions de gaussiennes occupe environ 700 Mo en nombres flottants 32 bits, et la mémoire GPU maximale pendant l’entraînement de grandes scènes pouvait dépasser 20 Go dans l’implémentation originale. Les splats n’ayant pas de surface définie, les applications nécessitant une géométrie de collision ou des modifications de type CAO doivent encore les convertir en maillages au moyen de méthodes complémentaires ; les scènes en mouvement nécessitent des extensions comme le splatting gaussien 4D.
Acquisition de données pour le splatting gaussien#
Une acquisition est un ensemble de photos ou d’images vidéo qui se chevauchent, capturées en se déplaçant autour d’une scène statique. Tout élément qui bouge pendant l’acquisition, comme un passant ou une voiture, apparaît dans certaines images et pas dans d’autres ; l’optimisation tente de le représenter par des artefacts semi-transparents appelés flotteurs. Les pipelines d’entraînement acceptent donc des masques qui excluent les objets en mouvement, et le format de données de Nerfstudio utilise des masques en noir et blanc où le noir indique les pixels à ignorer. Les modèles de segmentation d’instances YOLO26 génèrent automatiquement ces masques en segmentant chaque personne dans chaque image.
import cv2
from ultralytics import YOLO
# Charger un modèle de segmentation d’instances YOLO26
model = YOLO("yolo26n-seg.pt")
# Segmente uniquement les personnes (classe COCO 0), une source fréquente de flotteurs dans une acquisition
results = model("https://ultralytics.com/images/bus.jpg", classes=[0], retina_masks=True)
result = results[0]
# Le blanc indique la scène statique à utiliser pour l’entraînement, le noir indique les personnes à ignorer
people = result.masks.data.sum(dim=0) > 0
keep_mask = (~people).cpu().numpy().astype("uint8") * 255
cv2.imwrite("bus_mask.png", keep_mask)Le bus_mask.png enregistré a la résolution intégrale de la photo, car retina_masks=True renvoie des masques à la taille de l’image d’origine, et chaque personne dans l’image est en noir.
Applications#
- Immobilier et visites virtuelles : La capture d’une maison, d’un musée ou d’un site historique par téléphone ou drone devient une scène que les visiteurs peuvent explorer librement dans un navigateur ou avec un casque de réalité virtuelle, avec les reflets sur les sols et les fenêtres préservés.
- Effets visuels et production virtuelle : Les équipes de cinéma et de jeux vidéo capturent des lieux réels sous forme de splats et les utilisent comme arrière-plans photoréalistes et références de décor.
- Jumeaux numériques et cartographie : Les plateformes géospatiales diffusent de grandes reconstructions de villes, de chantiers et d’infrastructures sous forme de splats, en complément des tuiles 3D traditionnelles.
- Simulation de conduite et de robotique : Les reconstructions de trajets réels permettent aux équipes de véhicules autonomes de générer à nouveau les scènes enregistrées depuis de nouvelles positions de caméra afin de tester des modèles de perception.
Des bibliothèques open source comme gsplat fournissent des rasteriseurs CUDA pour entraîner les splats, et le Khronos Group a ratifié KHR_gaussian_splatting, une extension glTF 2.0 permettant de stocker des splats gaussiens, développée avec des contributeurs de Cesium, Esri, Niantic Spatial, NVIDIA, Huawei et Autodesk.










