3D Gaussian Splatting
- Detto anche: 3DGS, Gaussian Splatting, Gaussian splats, Gaussian radiance field
- Categoria: Sensing › 3D maps & reconstruction
- Tag: scene-representation, 3d-reconstruction, rendering, slam, computer-vision, simulation
Una rappresentazione della scena che modella un ambiente 3D come un grande insieme di macchie gaussiane colorate e semitrasparenti, che possono essere ottimizzate a partire da foto e renderizzate in modo fotorealistico in tempo reale.
Definizione
3D Gaussian Splatting (3DGS) è un metodo per ricostruire e renderizzare scene 3D, presentato da Bernhard Kerbl, Georgios Kopanas, Thomas Leimkühler e George Drettakis al SIGGRAPH 2023. Una scena è rappresentata come un insieme di gaussiane 3D, ciascuna con una posizione, una covarianza che ne stabilisce dimensione e orientamento, un'opacità e un colore dipendente dal punto di vista memorizzato come coefficienti di armoniche sferiche. Per renderizzare un'immagine, le gaussiane vengono proiettate sul piano immagine, ordinate per profondità e miscelate dal davanti all'indietro, un processo chiamato splatting.
La rappresentazione viene appresa da fotografie con pose della fotocamera note, di solito ottenute con software di structure from motion come COLMAP, che fornisce anche una nuvola di punti sparsa per inizializzare le gaussiane. Poiché il rasterizzatore è differenziabile, i parametri di ogni gaussiana possono essere ottimizzati per discesa del gradiente per ridurre la differenza tra immagini renderizzate e immagini reali. Durante l'addestramento, si aggiungono gaussiane nelle regioni poco ricostruite, si dividono quelle troppo grandi e si rimuovono quelle che diventano quasi trasparenti.
Rispetto ai neural radiance field (NeRF), che memorizzano una scena in una rete neurale interrogata lungo i raggi della fotocamera, il Gaussian splatting è una rappresentazione esplicita renderizzata con una rasterizzazione veloce a tile invece del ray marching. Questo consente il rendering in tempo reale ad alta risoluzione e un addestramento più rapido, al costo di un maggiore uso di memoria, dato che una scena può contenere un numero molto grande di gaussiane. Poiché le gaussiane sono esplicite, possono essere spostate, modificate, associate a oggetti o eliminate, cosa più difficile con una rete implicita.
La robotica usa il 3DGS in diversi modi. Come rappresentazione della mappa, supporta sistemi di SLAM denso che tracciano la fotocamera e costruiscono allo stesso tempo una mappa fotorealistica. Come risorsa di simulazione, una scena reale ricostruita può essere abbinata a un simulatore fisico in modo che le policy visive vengano addestrate o testate su immagini realistiche dell'ambiente reale di impiego. Tra i limiti ci sono le superfici riflettenti o trasparenti, una geometria meno precisa di quanto suggerisca l'aspetto renderizzato e la necessità di una buona copertura della scena da parte della fotocamera.
Perché è importante
Il 3DGS ha reso la ricostruzione fotorealistica di luoghi reali abbastanza veloce da essere renderizzata in tempo reale, il che permette ai robot di costruire mappe realistiche e ai team di trasformare la scansione di una stanza reale in dati visivi di addestramento. È diventato un ponte molto usato tra ambienti reali e simulazione per l'apprendimento robotico basato sulla visione.
Applicazioni principali
- Simulazione fotorealistica — renderizzare viste di fotocamera realistiche per addestrare e testare policy visive
- SLAM denso — costruire mappe fotorealistiche mentre si traccia la posa della fotocamera
- Gemelli digitali — ricostruire aree di lavoro, fabbriche o abitazioni reali per pianificazione e ispezione
- Navigazione di droni — fornire ambienti visivi realistici per il volo basato sulla visione
- Modifica delle scene — inserire, spostare o rimuovere oggetti per creare scene di addestramento varie
In pratica
Un team in genere riprende un video o un insieme di foto dell'area di lavoro del robot, stima le pose della fotocamera con COLMAP o uno strumento simile e addestra un modello di Gaussian splatting con un'implementazione open source, come il codice degli autori originali o splatfacto di Nerfstudio. La scena addestrata può essere renderizzata da qualsiasi punto di vista, quindi si posizionano fotocamere virtuali che corrispondono alle fotocamere di bordo del robot per generare immagini di addestramento, oppure si allinea lo splat con la geometria di collisione di un simulatore fisico in modo che un robot simulato veda viste realistiche mentre si muove. Per la mappatura, i team usano sistemi di SLAM basati su Gaussian splatting con una fotocamera RGB-D o monoculare, e validano la geometria con sensori di profondità, perché le immagini renderizzate possono sembrare corrette anche quando la forma sottostante è imprecisa.
Idee sbagliate comuni
- Il Gaussian splatting è una rete neurale — è un insieme esplicito di primitive ottimizzate; non serve alcuna rete neurale per renderizzarlo
- Un render fotorealistico significa una geometria accurata — l'aspetto può essere corretto mentre profondità e superfici sono imprecise, quindi la geometria va validata a parte
- Il 3DGS sostituisce la simulazione fisica — gestisce aspetto e rendering; contatto e dinamica richiedono comunque un motore fisico e una geometria di collisione
- Funziona con qualsiasi insieme di foto — richiede una buona copertura dei punti di vista e pose della fotocamera accurate, e ha difficoltà con contenuti riflettenti, trasparenti o in movimento
Chi dovrebbe saperlo
- Ingegneri della percezione che costruiscono mappe e rappresentazioni della scena
- Ricercatori di apprendimento robotico che addestrano policy basate sulla visione
- Ingegneri di simulazione che creano ambienti realistici
- Sviluppatori di navigazione per droni
Tecnologie correlate
- Neural Radiance Fields (NeRF)
- Structure from Motion (COLMAP)
- SLAM
- Rendering differenziabile (Differentiable Rendering)
- Nuvola di punti (Point Cloud)
- Nerfstudio
Termini correlati
Progetti correlati
- GENESIS: World's fastest physics engine: 43M FPS for embodied AI learning
- LeRobot: HuggingFace ML library for real-world robotics in PyTorch
- LingBot-Map: Streaming 3D reconstruction from one camera: pose and depth for every frame, live
- PyBullet: Python physics simulator for robotics and RL research with fast CPU-based simulation
- oomwoo: Open-source DIY robot vacuum: 3D-printed, ROS2 + 2D LiDAR, fully local.
- Cartographer: Google's real-time 2D and 3D SLAM system for multi-platform robotics
Video
- 3D Gaussian Splatting - Why Graphics Will Never Be The Same: IndividualKex
- 3D Gaussian Splatting! - Computerphile: Computerphile