gaussian-splatting
用数百万个3D高斯球实现照片级实时渲染,一块消费级GPU即可达到1080p@30fps
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
用数百万个3D高斯球实现照片级实时渲染,一块消费级GPU即可达到1080p@30fps
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
场景切入:
想象一下,你用手机围绕一件雕塑拍了30张照片——不追求专业角度,不用精密标定,只是随手绕一圈按了几张。几个小时后,你就能在电脑前自由穿梭于这个雕塑的三维空间,从任意角度观看,还能实时调整光照。更令人惊讶的是,这一切跑在一块消费级显卡上,速度达到每秒30帧以上。这就是3D Gaussian Splatting(3DGS)——来自法国国家信息与自动化研究所(INRIA)、马克斯·普朗克计算机科学研究所(MPI)和蔚蓝海岸大学(UC Côte d'Azur)联合团队的作品,如今已在GitHub上斩获超过22000颗星,成为神经渲染领域最具影响力的开源项目之一。
研究背景与技术起源:
3D Gaussian Splatting诞生于2023年,是对NeRF(Neural Radiance Fields,神经辐射场)技术局限性的直接回应。NeRF自2020年出道以来虽然惊艳了无数人,但其核心缺陷也显而易见——训练一个中等规模场景需要数小时,渲染一帧画面同样耗时良久,更别提实时交互了。2022年以降,Plenoxels、Instant-NGP等加速方案相继问世,在速度与质量之间不断试探边界,但要在1080p分辨率下实现真正的实时渲染(≥30fps),这些方法都力不从心。
INRIA GRAPHDECO团队在2023年SIGGRAPH上正式发表的这篇论文,正是冲着这个难题去的。他们的核心思路异常优雅:不再用神经网络隐式表达场景,而是用数百万个3D高斯分布来显式描述场景。每一个高斯球有位置、大小、颜色和透明度四个核心属性,叠加在一起就像无数彩色透明果冻堆积成立体形状——但这些"果冻"的位置和颜色都是通过梯度下降优化得出的,而非手工设计。渲染阶段则借鉴了计算机图形学中的splatting技术:将每个3D高斯投影到2D屏幕空间,积累出最终像素颜色,整个过程完全在CUDA上并行执行,天然适合GPU加速。
核心技术架构:
从代码结构来看,项目采用经典的"训练→渲染"两阶段架构。训练流程从COLMAP相机标定开始,生成稀疏点云作为初始高斯分布的种子,通过反向传播不断优化每个高斯的参数。值得注意的是代码中使用了PyTorch的自动微分框架,所有3D高斯的位置(_xyz)、颜色特征(_features_dc、_features_rest)、缩放(_scaling)、旋转(_rotation)和透明度(_opacity)都注册为可学习参数,每一步训练都精确计算梯度。
为了让渲染实时可达,项目引入了三个自定义CUDA扩展:diff-gaussian-rasterization负责高效的光栅化计算,simple-knn加速K近邻查询,fused-ssim提供结构相似性损失函数的GPU加速版本。这三个扩展缺一不可,缺失任何一个都会退化为PyTorch纯CPU实现,速度骤降数十倍。
项目还内置了一套SIBR(Scalable Interactive Bundle-adjustment Renderer)查看器,专门用于高质量地预览训练结果。这个C++/CUDA混合编写的查看器提供了比纯Python渲染器更精细的抗锯齿和光照效果,但编译过程较为繁琐,需要CMake、GLSL和完整CUDA toolkit。
功能与实际应用:
3D Gaussian Splatting最直接的应用场景是三维重建与新视角合成。给定一组从不同角度拍摄的场景照片,它可以重建出完整的三维场景,并支持从任意未拍摄过的角度进行渲染。与传统摄影测量相比,3DGS不需要密集的图像匹配和网格重建步骤,中间结果就是高斯分布本身,既是三维表示也是渲染基元,中间无需显式稠密化或网格化。
在实际使用中,一个典型的重建流程是:先用COLMAP对输入图像进行稀疏重建(提取特征点并恢复相机位姿),将结果作为初始输入,然后运行train.py进行高斯优化,最后用render.py或SIBR查看器渲染新视角。优化过程在单张RTX 3090上通常需要15~30分钟(取决于图像数量和分辨率),优化完成后即可实现实时漫游。
作者团队还慷慨地提供了预训练模型下载,包括完整的T&T+DB测试集(650MB)和14GB的预训练场景模型,供研究者直接复现论文中的评估指标。项目内置了metrics.py计算PSNR、SSIM和LPIPS三种图像质量指标,full_eval.py则自动化了全套评测流程。
上手门槛与系统要求:
对于普通用户来说,这个项目的部署门槛相当高。项目仅提供Conda环境配置文件(environment.yml),没有Docker镜像、没有docker-compose一键启动脚本,所有依赖——尤其是三个CUDA扩展——都需要在本地编译。官方推荐使用CUDA 11.6、Python 3.7.13、PyTorch 1.12.1的组合,这套环境在2026年已属老旧,新一代GPU(如RTX 40系列)的驱动可能不完全兼容CUDA 11.6。
硬件方面,一块NVIDIA GPU是必需品。RTX 2070可以运行但显存压力较大,官方推荐RTX 3090或4090,12GB以上显存能保证1080p下的流畅训练。磁盘空间需求也不小——COLMAP的稀疏重建中间文件动辄数GB,完整评估集解压后超过7GB。加上Conda环境本身的体积,整个项目需要预留50GB以上的存储空间。
从代码组织来看,项目分为scene/(场景管理)、gaussian_renderer/(渲染器)、utils/(工具函数)和submodules/(CUDA扩展)四个主要模块,代码约3000行Python + 约2000行CUDA,注释详尽,学术风格浓郁,适合作为神经渲染研究的基础框架进行二次开发,而非普通用户的开箱即用工具。
局限性与争议:
3D Gaussian Splatting并非银弹。其一,动态场景支持有限——原始论文和代码主要面向静态场景,虽然后续涌现了大量动态3DGS变体(如Dynamic 3DGS、Gaussian-Splatting++),但原项目本身对时间维度的建模能力几乎为零。其二,内存占用与场景规模正相关——复杂场景可能需要数GB显存来存储数百万个高斯分布,这限制了它在消费级硬件上处理大型室外场景的能力。其三,渲染质量对输入图像质量敏感——如果输入图像存在运动模糊、低光照或强烈镜面反射,重建结果会出现明显的瑕疵。
此外,由于项目诞生于2023年,其CUDA扩展对新版PyTorch的兼容性一直是个隐患。社区出现过大量"训练到一半突然NaN"的issue,大多与PyTorch版本升级引发的数值精度变化有关。
行业影响与生态扩展:
3D Gaussian Splatting的影响远超学术圈。在工程领域,它迅速成为三维数字化、游戏开发和VR/AR内容创作的重要工具——因为它比传统摄影测量更快、比NeRF更实时,比专业扫描仪更便宜。GitHub上衍生出大量下游项目:gaussian-splatting支持Web端实时渲染(通过WebGL/WASM),还有Gaussian-SLAM等探索同时定位与地图构建(SLAM)的方向。在自动驾驶领域,gaussian-splatting的思路也被用于街景重建和仿真数据生成。
从论文引用指标看,3DGS已成为计算机图形学与视觉交叉领域的里程碑工作,引用数在发布两年内就突破了3000次。它用一种"返璞归真"的方式回答了神经渲染领域的核心问题:不依赖体积积分的神经网络,用足够多的可优化高斯球,也能实现照片级真实感渲染。这个思路简洁有力,至今仍启发着大量后续研究。
图1:3D Gaussian Splatting 优化后的渲染质量示例
图2:训练不充分时的典型降质示例(供参考对比)
图3:深度图可视化,展示了高斯模型对场景几何的捕捉能力
图4:抗锯齿开关效果对比(动态图),可见开启后边缘细节显著提升
图5:3DGS模型顶视图动态展示,呈现高斯分布的空间分布形态