Gaussian Splatting
探索用于真实感 3D 场景重建的高斯溅射 (Gaussian Splatting)。了解它如何实现实时渲染,并与 Ultralytics YOLO26 进行视觉集成。
Gaussian Splatting 是一种现代光栅化技术,广泛应用于计算机图形学和计算机视觉领域,用于从一组 2D 图像中重建照片级的 3D 场景。与依赖多边形网格的传统 3D 建模或使用神经网络近似场景的 Neural Radiance Fields (NeRF) 等近期 AI 技术不同,Gaussian Splatting 将场景表示为数百万个 3D 高斯分布(椭球体)的集合。这种方法能够在保持出色视觉保真度的同时实现高帧率(通常超过 100 FPS)的实时渲染,解决了先前视图合成方法中存在的重大性能瓶颈。
Link to this sectionGaussian Splatting 的工作原理#
The core idea revolves around representing 3D space explicitly rather than implicitly. In a typical workflow, the process begins with a sparse point cloud generated from a set of photos using a technique called Structure from Motion (SfM). Each point in this cloud is then initialized as a 3D Gaussian.
在 training process 期间,系统会针对每个高斯函数优化多个参数:
- 位置: 场景中的 3D 坐标 (X, Y, Z)。
- 协方差: 这决定了椭球体的形状和旋转(例如,“splat”的拉伸或倾斜程度)。
- 不透明度: 高斯函数看起来有多透明或多实心(Alpha 值)。
- 颜色: 使用 Spherical Harmonics 表示,允许颜色随观察角度而变化,从而捕捉逼真的反射和光照效果。
术语“splatting”是指将这些 3D 高斯函数投影——或称“splatted”——到 2D 相机平面上以形成图像的 rasterization 过程。此投影是完全可微的,这意味着可以使用标准的 gradient descent 算法来最小化渲染图像与原始真实照片之间的差异。
Link to this sectionGaussian Splatting 与 NeRF 的对比#
虽然这两种技术都旨在生成场景的新视角,但它们在架构和性能上存在根本差异。NeRF (Neural Radiance Fields) 将场景编码在 neural network 的权重中。渲染 NeRF 需要为每一帧进行数百万次网络查询(射线步进),这在计算上非常昂贵且缓慢。
相比之下,Gaussian Splatting 使用显式表示(高斯列表)。这使得它能够利用类似于视频游戏渲染图形的高效基于瓦片的光栅化。因此,Gaussian Splatting 的训练和渲染速度比 NeRF 快得多,使其在消费级应用和 real-time inference 中更具可行性。
Link to this section实际应用#
Gaussian Splatting 的速度和质量在各行各业中开启了新的机遇:
- 虚拟旅游与房地产: 创作者可以使用无人机或智能手机拍摄博物馆、历史遗迹或待售房屋。Gaussian Splatting 允许远程用户在 Virtual Reality (VR) 中以 6 自由度 (6DoF) 探索这些空间,观察到传统摄影测量法可能遗漏的硬木地板反射等细微细节。
- 汽车模拟: 开发 autonomous vehicles 的公司需要大量数据来测试其感知算法。Gaussian Splatting 可以利用传感器数据重建现实世界的城市街区,从而创建逼真的模拟环境。在这些环境中,可以测试 Ultralytics YOLO26 等视觉模型,以确保它们能够正确识别复杂 3D 场景中的危险因素。
Link to this section使用计算机视觉进行 Splatting 预处理#
为了让 Gaussian Splatting 有效工作,训练图像通常需要保持静态。源照片中的移动物体(如行人和汽车)可能会导致被称为“漂浮物”的伪影。先进的流程会使用 instance segmentation 在训练 splat 模型之前自动屏蔽这些动态元素。
Ultralytics Platform 允许团队管理数据集并训练模型,以辅助这一预处理阶段。以下是如何利用分割模型为旨在进行 3D 重建的数据集创建掩码的示例:
from ultralytics import YOLO
# Load the YOLO26 segmentation model
model = YOLO("yolo26n-seg.pt")
# Run inference on an image from the scan dataset
# Class 0 is 'person' in COCO - we mask them out to keep the scene static
results = model.predict("scan_frame_001.jpg", classes=[0])
# Save the generated mask to exclude the person from the 3D reconstruction
for result in results:
result.save_masks("scan_frame_001_mask.png")Link to this section在 AI 中的意义与未来趋势#
Gaussian Splatting 代表了 computer vision 向混合方法的一种转变,即将 Deep Learning 的可学习性与经典计算机图形学的高效性相结合。这项技术正在迅速发展,研究人员正在探索压缩文件大小(文件可能很大)并将其与 generative AI 集成以从文本提示创建 3D 资产的方法。随着像 GPUs 这样的硬件加速器不断进步,Gaussian Splatting 很可能成为以数字形式捕捉和渲染真实世界的标准。






