Articles · arXiv 2308.04079
3D Gaussian Splatting pour le rendu de champs de radiance en temps réel
3D Gaussian Splatting for Real-Time Radiance Field Rendering
Résumé en trois lignes
- 🎯 Les méthodes de champs de radiance (comme NeRFs) offrent une haute qualité visuelle mais souffrent d'un ray-marching volumétrique lent et de longs temps d'optimisation, tandis que les approches rapides sur grille font des compromis sur la qualité ou la vitesse de rendu.
- 🔧 Représenter les scènes de manière explicite avec des gaussiennes 3D anisotropes initialisées à partir de points SfM épars, les optimiser avec un contrôle adaptatif de la densité (clonage et division), et faire le rendu via un rastériseur GPU différentiable par blocs et conscient de la visibilité.
- 📈 Atteint une qualité visuelle à l'état de l'art égale à Mip-NeRF360 avec des vitesses de rendu en temps réel dépassant 130–160 FPS en résolution 1080p et des temps d'entraînement inférieurs à une heure.
Résumé
Les méthodes de champs de radiance ont récemment révolutionné la synthèse de nouvelles vues de scènes capturées à partir de plusieurs photos ou vidéos. Cependant, l'obtention d'une qualité visuelle élevée nécessite encore des réseaux de neurones coûteux à entraîner et à rendre, tandis que les méthodes plus rapides récentes sacrifient inévitablement la qualité au profit de la vitesse. Pour des scènes non bornées et complètes (plutôt que des objets isolés) et un rendu en résolution 1080p, aucune méthode actuelle ne permet d'atteindre des fréquences d'affichage en temps réel. Nous introduisons trois éléments clés qui nous permettent d'atteindre une qualité visuelle à l'état de l'art tout en maintenant des temps d'entraînement compétitifs et, surtout, de permettre une synthèse de nouvelles vues de haute qualité en temps réel (>= 30 fps) à une résolution de 1080p. Premièrement, en partant de points épars produits lors du calibrage des caméras, nous représentons la scène avec des gaussiennes 3D qui préservent les propriétés avantageuses des champs de radiance volumétriques continus pour l'optimisation de la scène, tout en évitant les calculs superflus dans le vide ; deuxièmement, nous réalisons une optimisation et un contrôle de densité entrelacés des gaussiennes 3D, en optimisant notamment la covariance anisotrope pour obtenir une représentation précise de la scène ; troisièmement, nous développons un algorithme rapide de rendu conscient de la visibilité qui prend en charge le splatting anisotrope, accélère l'entraînement et permet un rendu en temps réel. Nous démontrons une qualité visuelle à l'état de l'art et un rendu en temps réel sur plusieurs jeux de données reconnus.
Résumé original (anglais)
Radiance Field methods have recently revolutionized novel-view synthesis of scenes captured with multiple photos or videos. However, achieving high visual quality still requires neural networks that are costly to train and render, while recent faster methods inevitably trade off speed for quality. For unbounded and complete scenes (rather than isolated objects) and 1080p resolution rendering, no current method can achieve real-time display rates. We introduce three key elements that allow us to achieve state-of-the-art visual quality while maintaining competitive training times and importantly allow high-quality real-time (>= 30 fps) novel-view synthesis at 1080p resolution. First, starting from sparse points produced during camera calibration, we represent the scene with 3D Gaussians that preserve desirable properties of continuous volumetric radiance fields for scene optimization while avoiding unnecessary computation in empty space; Second, we perform interleaved optimization/density control of the 3D Gaussians, notably optimizing anisotropic covariance to achieve an accurate representation of the scene; Third, we develop a fast visibility-aware rendering algorithm that supports anisotropic splatting and both accelerates training and allows realtime rendering. We demonstrate state-of-the-art visual quality and real-time rendering on several established datasets.
Guide de lecture
Problème et motivation
Les champs de radiance neuronaux (NeRFs) ont transformé la synthèse de nouvelles vues en optimisant des représentations continues implicites de scènes à l'aide de perceptrons multicouches (MLPs). Cependant, le rendu de ces champs continus repose sur un ray-marching volumétrique stochastique, qui exige l'évaluation de dizaines ou de centaines d'échantillons par rayon. Cela engendre de lourdes charges de calcul, des temps d'entraînement prolongés (par exemple, jusqu'à 48 heures pour Mip-NeRF360) et des vitesses d'inférence très lentes (plusieurs secondes par image), empêchant toute navigation en temps réel à des résolutions élevées telles que le 1080p.
Bien que des variantes plus rapides de champs de radiance (telles que Plenoxels et InstantNGP) s'appuient sur des grilles de voxels ou de hachage pour accélérer l'entraînement, elles font souvent des compromis sur la fidélité visuelle et peinent à gérer l'espace vide ou les détails à haute fréquence. À l'inverse, les approches basées sur des points offrent une géométrie explicite bien adaptée aux GPU, mais la rastérisation traditionnelle de points requiert une géométrie stéréo multi-vues (MVS) dense pour éviter les trous, ou dépend d'un post-traitement par CNN qui introduit des scintillements temporels.
Cet article propose une représentation de scène non structurée et explicite utilisant des gaussiennes 3D couplées à un rastériseur rapide par blocs, atteignant la fidélité de rendu des meilleurs champs de radiance implicites tout en garantissant des fréquences d'images en temps réel et des temps d'optimisation compétitifs.
Idées clés
- Représentation non structurée par gaussiennes 3D : Au lieu de réseaux de coordonnées continues ou de grilles denses, le champ de radiance est paramétré par des gaussiennes 3D discrètes dotées de matrices de covariance anisotropes complètes, initialisées à partir de nuages de points épars issus de Structure-from-Motion (SfM) sans nécessiter de normales ni de MVS dense.
- Paramétrisation par échelle et rotation : Pour garantir que la matrice de covariance reste semi-définie positive tout au long de la descente de gradient, elle est découplée en un vecteur d'échelle 3D et un quaternion unitaire.
- Contrôle adaptatif de la densité : L'optimisation gère dynamiquement la densité de la scène en suivant les gradients de position dans l'espace vue : en clonant les gaussiennes sous-reconstruites et en divisant les gaussiennes sur-reconstruites, tout en élaguant les splats transparents ou excessivement grands.
- Rastérisation par blocs consciente de la visibilité : Un rastériseur GPU sur mesure organise les pixels de l'écran en blocs de , trie les splats en profondeur par trame à l'aide d'un tri Radix rapide, et effectue un mélange alpha de projections anisotropes d'avant en arrière sans restreindre le nombre de splats recevant des mises à jour de gradient.
Méthode
1. Représentation de scène par gaussiennes 3D
Une gaussienne 3D centrée sur la moyenne est définie par sa matrice de covariance dans l'espace monde :
Pour garantir que reste semi-définie positive pendant l'optimisation, elle est factorisée en une matrice de rotation et une matrice d'échelle : Ici, est stocké sous la forme d'un vecteur 3D évalué avec une activation exponentielle, et est paramétré par un quaternion unitaire normalisé .
Pour le rendu, les gaussiennes 3D sont projetées vers les coordonnées 2D de l'image selon le cadre du splatting EWA. Étant donné une transformation de vue et le jacobien de l'approximation affine de la transformation projective, la matrice de covariance 2D dans l'espace écran est : La troisième ligne et la troisième colonne sont supprimées, produisant une matrice de covariance pour le splatting planaire.
2. Rendu et formation de l'image
Chaque gaussienne possède une opacité (contrainte dans via une activation sigmoïde) et des coefficients d'harmoniques sphériques (SH) décrivant la couleur dépendante de la vue . Le mélange de gaussiennes superposées et ordonnées au niveau d'un pixel suit la formulation volumétrique standard : où est déterminé en évaluant la gaussienne projetée en 2D multipliée par l'opacité apprise par point.
3. Optimisation et contrôle adaptatif
La fonction de perte combine une perte avec une perte D-SSIM (avec ) :
Le contrôle adaptatif de la densité s'exécute toutes les 100 itérations sur les gaussiennes dont le gradient moyen de position dans l'espace vue dépasse :
- Clonage (sous-reconstruction) : Pour les petites gaussiennes, un duplicata est créé et déplacé le long de la direction du gradient de position.
- Division (sur-reconstruction) : Pour les grandes gaussiennes, la primitive est remplacée par deux gaussiennes plus petites dont les échelles sont réduites d'un facteur , en échantillonnant leurs positions initiales à partir de la gaussienne parente.
- Élagage : Élimine les gaussiennes où ou celles qui sont excessivement grandes dans l'espace monde/vue. Toutes les itérations, les opacités sont réinitialisées près de zéro pour éliminer les artefacts flottants.
4. Rastériseur par blocs différentiable et rapide
- L'écran est divisé en blocs de pixels.
- Les gaussiennes franchissant le frustum culling à un intervalle de confiance de 99 % se voient attribuer des clés de 64 bits codant l'identifiant du bloc et la profondeur dans l'espace vue.
- Un unique tri Radix sur GPU ordonne toutes les instances à l'échelle de l'image.
- Les blocs de threads accumulent la couleur par bloc d'avant en arrière jusqu'à ce que atteigne la saturation (arrêt avant de dépasser ).
- La passe arrière parcourt les blocs d'arrière en avant, récupérant les opacités intermédiaires en divisant l'opacité accumulée finale par l' de chaque primitive, évitant ainsi des tampons mémoire dynamiques coûteux par pixel.
Résultats
- Jeu de données Mip-NeRF360 : Après 30K itérations (temps d'entraînement moyen de 41 min 33 s), 3D Gaussian Splatting atteint une moyenne de SSIM de 0,815, un PSNR de 27,21 dB et un LPIPS de 0,214, égalant ou surpassant Mip-NeRF360 (SSIM 0,792, PSNR 27,69 dB, LPIPS 0,237, 48 heures d'entraînement), tout en rendant à 134 FPS contre 0,06 FPS pour Mip-NeRF360.
- Configuration rapide (7K itérations) : Offre un SSIM de 0,770 et un PSNR de 25,60 dB en seulement 6 min 25 s à 160 FPS, surpassant InstantNGP-Base (SSIM 0,671, 11,7 FPS) et Plenoxels (SSIM 0,626, 6,79 FPS) pour des temps d'entraînement comparables.
- Tanks&Temples & Deep Blending : Sur Tanks&Temples, 30K itérations atteignent un SSIM de 0,841 et un PSNR de 23,14 dB à 154 FPS. Sur Deep Blending, la méthode atteint un SSIM de 0,903 et un PSNR de 29,41 dB à 137 FPS.
- Synthetic Blender : Obtient un PSNR moyen de 33,32 dB à partir d'une initialisation entièrement aléatoire de 100K points, avec un rendu à 180–300 FPS.
Limites et questions ouvertes
- Vues non observées et valeurs aberrantes : Une couverture clairsemée ou des angles de vue éloignés des trajectoires d'entraînement peuvent produire des artefacts visibles, tels que des gaussiennes étirées ou formant des taches.
- Artefacts de sautillement (popping) : Des changements brusques dans l'ordonnancement en profondeur ou un élagage strict aux bordures d'écran peuvent introduire des sautillements lors de la navigation, soulignant la nécessité d'un meilleur anticrénelage.
- Consommation de mémoire : Bien que compacte par rapport aux nuages de points denses classiques, cette représentation explicite nécessite plusieurs centaines de mégaoctets (ex. : 400 à 750 Mo pour des scènes comptant 1 à 5 millions de gaussiennes), et l'entraînement de prototypes non optimisés peut faire grimper la mémoire GPU au-delà de 20 Go.
- Absence de régularisation : Le cadre n'inclut pas de régularisateurs explicites de lissage géométrique ou de densité, laissant place à des artefacts flottants d'arrière-plan dans les régions peu contraintes par les rayons des caméras.
Termes clés
- 3D Gaussians (Gaussiennes 3D)
- Les primitives 3D fondamentales, non structurées et différentiables, définies par une position moyenne, une matrice de covariance anisotrope, une opacité et des coefficients d'apparence en harmoniques sphériques.
- Anisotropic Covariance (Covariance anisotrope)
- Une dispersion directionnelle 3D paramétrée en vecteurs d'échelle distincts et en quaternions unitaires de rotation, permettant aux gaussiennes de se déformer en ellipsoïdes plats alignés avec les surfaces physiques.
- Adaptive Density Control (Contrôle adaptatif de la densité)
- Une stratégie d'optimisation entrelacée qui ajoute des gaussiennes en clonant ou en divisant les primitives ayant de forts gradients de position, et qui élague les primitives transparentes ou surdimensionnées.
- Tile-Based Rasterization (Rastérisation par blocs)
- Un pipeline de rendu exécuté sur GPU qui divise la fenêtre d'affichage en bacs de pixels pour trier et mélanger efficacement en parallèle les splats gaussiens qui se chevauchent.
- Alpha-Blending (Mélange alpha)
- Accumulation d'avant en arrière de la couleur et de la transmittance qui reproduit l'intégration volumétrique standard de NeRF sur des splats projetés en 2D et ordonnés.
- Radix Sort (Tri Radix)
- Un algorithme de tri sur GPU utilisé pour ordonner globalement et en parallèle les gaussiennes à partir de clés de 64 bits combinant l'identifiant du bloc et la profondeur dans l'espace vue.
- Spherical Harmonics (SH) (Harmoniques sphériques)
- Une base de fonctions directionnelles fréquentielles utilisée pour représenter la couleur dépendante de la vue sur chaque primitive gaussienne jusqu'à 4 bandes.
Questions
Comment les gaussiennes 3D sont-elles initialisées avant l'optimisation ?
Elles sont initialisées à partir du nuage de points épars généré comme sous-produit du calibrage de caméra par Structure-from-Motion (SfM), avec des échelles isotropes initiales calculées d'après la distance moyenne aux trois plus proches voisins. Pour les scènes synthétiques, une initialisation aléatoire uniforme peut également être utilisée.
Quelle est la différence entre le clonage et la division des gaussiennes ?
Le clonage duplique une petite gaussienne et la déplace selon la direction de son gradient de position pour combler les détails géométriques manquants (sous-reconstruction), tandis que la division scinde une gaussienne trop grande en deux gaussiennes plus petites réduites d'un facteur 1,6 pour mieux capturer les détails à forte variance (sur-reconstruction).
Pourquoi le rastériseur effectue-t-il le tri par bloc plutôt que par pixel ?
Le tri par bloc à l'aide d'un unique tri Radix global sur GPU sur des clés combinées bloc-profondeur évite le coût de calcul très élevé d'un tri de primitives par pixel, permettant d'atteindre des fréquences d'images élevées avec une approximation visuelle négligeable.
Comment la passe arrière évite-t-elle de stocker de longues listes de primitives par pixel en mémoire globale ?
Le rastériseur parcourt à nouveau les listes triées existantes par bloc d'arrière en avant et reconstruit les opacités intermédiaires en divisant l'opacité accumulée finale par la valeur alpha de chaque gaussienne, ne nécessitant ainsi qu'une surcharge mémoire constante par pixel.
La présentation de cette page a été rédigée par une IA à partir de l'article et peut contenir des erreurs. Consultez l'article pour les détails.