Amérique du Nord : +1 201-884-2956  –  Europe : +33 1 84 60 09 60

C’est quoi le gaussian splatting?

par | Nov 12, 2023 | Actualités, Actualités, Non classifié(e)

La traduction littérale de gaussin splatting en français est éclaboussures de gaussiennes, ce qui traduit bien en définitive en quoi consiste le gaussian splatting, à savoir, des éclaboussures représentées par de petites tache dont la répartition des couleurs du centre vers les bords suit une distribution gaussienne.

Gaussienne Rasterisée Seule

Source : Exemple de gaussienne – Hugging Face

Le Splatting Gaussien 3D décrit dans Splatting Gaussien 3D pour le Rendu de Champ de Radiance en Temps Réel permet le rendu en temps réel de scènes photoréalistes apprises à partir de petits échantillons d’images.

Cet article décompose dans les grandes lignes  son fonctionnement et ce qu’il signifie pour l’avenir du rendu des scènes en 3D.

Pour plus de détails vous pouvez consulter cet excellent article sur Hugging Face : https://huggingface.co/blog/gaussian-splatting

Comparaison avec d’autres approches

La technique la plus connue jusqu’à présent pour scanner des objets en 3D était la photogrammétrie. C’est une technique de génération de polygones 3D à partir d’images prises de plusieurs points de vue, par exemple en plaçant l’objet sur un plateau tournant et en prenant des photos tout en faisant tourner l’objet sur 360 degrés.

Bien que la photogrammétrie soit utile pour scanner des objets, elle ne peut pas rendre des scènes sans contours, comme le ciel, ou des détails fins dans des scènes éloignées. De plus, comme l’optimisation est effectuée en résolvant des problèmes d’optimisation conventionnels, il n’est pas possible de générer des polygones 3D avec précision pour certains cas d’utilisation tels que les réflexions et les miroirs.

Rasterisation de Triangle

 

Polygone utilisé habituellement (Source: https://huggingface.co/blog/gaussian-splatting

Plus récemment pour pallier les limitations de la photogramétrie, on vu le développement du NERF qui est  une autre méthode pour rendre une scène 3D à partir d’images prises sous plusieurs points de vue. L’idée de base est de former un modèle pour représenter la scène de manière implicite, plus précisément une représentation volumétrique de la densité et de la couleur en tout point donné. Pour rendre la scène depuis un point de vue donné, nous échantillonnons ce volume pour calculer la couleur de l’image finale à ce point particulier. Cette méthode de rendu est capable de rendre avec précision des scènes ouvertes, ainsi que des objets réfléchissants. Cependant, l’inconvénient est que le rendu NERF est plutôt lent.

Qu’est-ce que le Splatting Gaussien 3D ?

Le Splatting Gaussien 3D, annoncé en août 2023, est une méthode pour rendre une scène 3D en temps réel à partir de quelques images prises sous plusieurs points de vue.

L’espace 3D est défini comme un ensemble de gaussiennes, et les paramètres de chaque gaussienne sont calculés à l’aide de l’apprentissage automatique (machine learning) .

Chaque gaussienne est décrite par les paramètres suivants :

  • Position : où elle se situe (XYZ)
  • Covariance : comment elle est étirée/mise à l’échelle (matrice 3×3)
  • Couleur : quelle couleur elle a (RVB)
  • Alpha : sa transparence (α)

En pratique, plusieurs gaussiennes sont dessinées à la fois pour représenter une scène.

 

 

Trois Gaussiennes

Source : Ensemble de gaussiennes – Hugging Face

Et que dire de 7 millions de gaussiennes ?

Bicyclette avec 7 millions de gaussiennes

Source : Hugging Face

Voici à quoi cela ressemble avec chaque gaussienne rasterisée complètement opaque :

Gaussiennes Rasterisées Opacques

Source : Hugging Face

Comment ça fonctionne dans le détails

Structure à partir du Mouvement

Le 3D Gaussian Splatting utilise d’abord la bibliothèque COLMAP pour générer un nuage de points à partir de l’ensemble des images d’entrée. Ce processus ne prend que quelques dizaines de secondes. À partir des images d’entrée, les paramètres externes de la caméra (inclinaison et position) sont estimés en faisant correspondre les pixels entre les images, et le nuage de points est calculé sur la base de ces paramètres. Ici, le processus est géré par un problème d’optimisation qui n’est pas de l’apprentissage automatique.

Points SfM

Source : Hugging Face

Conversion en Gaussiennes

Ensuite, chaque point est converti en une gaussienne. Cela est déjà suffisant pour la rasterisation. Cependant, seules la position et la couleur peuvent être déduites des données SfM. Pour apprendre une représentation qui donne des résultats de haute qualité, nous devons la former.

Entrainement

La procédure de formation utilise la Descente de Gradient Stochastique, similaire à un réseau neuronal, mais sans les couches. Les étapes d’entrainement sont :

  1. Rasteriser les gaussiennes en une image en utilisant une rasterisation gaussienne différentiable
  2. Calculer la perte basée sur la différence entre l’image rasterisée et l’image de vérité terrain
  3. Ajuster les paramètres de la gaussienne selon la perte
  4. Appliquer l’automatisation de la densification et de l’élagage

Les étapes 1 à 3 sont conceptuellement assez simples. L’étape 4 implique ce qui suit :

  • Si le gradient est important pour une gaussienne donnée (c’est-à-dire qu’elle est trop incorrecte), la diviser ou la cloner
  • Si la gaussienne est petite, la cloner
  • Si la gaussienne est grande, la diviser
  • Si l’alpha d’une gaussienne devient trop bas, la supprimer

Cette procédure aide les gaussiennes à mieux s’adapter aux détails fins, tout en élaguant les gaussiennes inutiles.

Rasterisation Gaussienne Différentiable

Comme mentionné précédemment, le Splatting Gaussien 3D est une approche de *rasterisation*, qui dessine les données à l’écran. Cependant, il est important de noter qu’elle est :

  1. Rapide
  2. Différentiable

La rasterisation implique :

  1. Projetter chaque gaussienne en 2D du point de vue de la caméra.
  2. Trier les gaussiennes par profondeur.
  3. Pour chaque pixel, itérer sur chaque gaussienne de l’avant vers l’arrière, en les fusionnant ensemble.

Des optimisations supplémentaires sont décrites dans le document.

Pourquoi c’est intéressant ?

La question se pose : pourquoi tant d’attention sur le Splatting Gaussien 3D ? La réponse évidente est que les résultats parlent d’eux-mêmes – il s’agit de scènes de haute qualité en temps réel.

Il existe de nombreuses inconnues quant à ce qui peut être fait avec le Splatting Gaussien. Peut-il être animé ? Le papier à venir Dynamic 3D Gaussians: tracking by Persistent Dynamic View Synthesis suggère que c’est possible. D’autres questions demeurent, comme leur capacité à réaliser des reflets ou à être modélisés sans formation sur des images de référence.

Quel impact sur la représentation de scène en 3D

Alors, qu’est-ce que cela signifie pour l’avenir du rendu 3D? Analysons les pour et les contre :

Avantages

  • Scènes photoréalistes de haute qualité
  • Rasterisation rapide en temps réel
  • Relativement rapide à former

Inconvénients

  • Forte utilisation de la VRAM (4 Go pour visualiser, 12 Go pour former)
  • Taille de disque importante (1 Go+ pour une scène)
  • Incompatible avec les pipelines de rendu existants
  • Statique (pour l’instant)

    Jusqu’à présent, l’implémentation originale CUDA (instructions directement interprétable par la carte vidéo) n’a pas été adaptée aux pipelines de rendu de production, tels que Vulkan, DirectX, WebGPU, etc. L’impact reste donc à voir.

    Il y a déjà eu les adaptations suivantes :

    1. Visualiseur à distance
    2. Visualiseur WebGPU
    3. Visualiseur WebGL
    4. Visualiseur Unity
    5. Visualiseur WebGL optimisé

    Ces adaptations reposent soit sur le streaming à distance (1), soit sur une approche de rasterisation quad-basée traditionnelle (2-5). Bien qu’une approche quad-basée soit compatible avec des décennies de technologies graphiques, elle peut entraîner une qualité/performance inférieure. Cependant, le visualiseur n°5 démontre que des astuces d’optimisation peuvent aboutir à une haute qualité/performance, malgré une approche basée sur des quads.

    Verrons-nous le Splatting Gaussien 3D entièrement réimplémenté dans un environnement de production ? La réponse est probablement oui.

    Le principal goulot d’étranglement est le tri de millions de gaussiennes, efficacement réalisé dans l’implémentation originale en utilisant le tri radix de CUB, un tri hautement optimisé disponible uniquement en CUDA.

    Cependant, avec suffisamment d’efforts, il est certainement possible d’atteindre ce niveau de performance dans d’autres pipelines de rendu.

    Quelques exemples de gaussian splatting:

     

     

     

     

    Last posts

    Suivez-nous