news 2026/8/9 5:02:21

3DGS与NeRF的区别及3DGS优化全流程详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
3DGS与NeRF的区别及3DGS优化全流程详解

1. 3DGS与NeRF的区别

NeRF(Neural Radiance Fields)和3DGS(3D Gaussian Splatting)是当前三维场景重建与渲染领域的两大主流技术,它们在表示方式、渲染流程、性能和应用场景上存在显著差异。

1.1 表示方式

NeRF:采用隐式神经表示。场景被建模为一个连续函数,输入空间位置和观察方向,输出该点的颜色和体密度

# NeRF隐式函数表示 (F_{\theta}(\mathbf{x}, \mathbf{d}) \rightarrow (\mathbf{c}, \sigma))

3DGS:采用显式3D高斯表示。场景由一组离散的、可学习的3D高斯椭球构成。每个高斯椭球由以下参数定义:

  • 位置(均值)
  • 协方差矩阵(控制椭球的形状和方向)
  • 不透明度
  • 颜色(通过球谐函数SH系数表示)

1.2 渲染流程

NeRF:基于体渲染(Volume Rendering)。沿相机光线采样多个点,通过神经网络查询每个点的颜色和密度,然后通过数值积分(如分层采样)合成最终像素颜色。

体渲染公式:

其中为透射率。

3DGS:基于可微光栅化(Differentiable Rasterization)。将每个3D高斯椭球投影到2D图像平面,形成2D高斯核,然后通过alpha-blending(按深度排序)合成像素颜色。

投影后的2D协方差矩阵:

其中为视图变换矩阵,为投影雅可比矩阵。

像素颜色合成公式(alpha-blending):

其中为按深度排序后覆盖该像素的高斯集合。

1.3 性能与特性对比

特性NeRF3DGS
表示方式隐式(神经网络)显式(3D高斯集合)
渲染速度慢(需多次网络前向)快(可微光栅化,实时)
训练速度慢(数小时至数天)快(数分钟至数小时)
显存占用较低(网络参数)较高(存储大量高斯参数)
编辑性困难(隐式表示)容易(显式,可增删改高斯)
压缩性一般(网络权重)较好(可量化、剪枝)
质量高(连续,细节好)高(近年已接近NeRF)

2. 3DGS优化全流程

3DGS的优化是一个从稀疏点云初始化为起点,通过可微渲染、损失计算、参数更新、自适应密度控制等步骤迭代优化的过程。

2.1 初始化

通常从运动恢复结构(SfM)得到的稀疏点云开始。每个点云点被初始化为一个各向同性的3D高斯:

  • 位置:点云坐标
  • 协方差(初始为球体)
  • 不透明度
  • 颜色(SH系数):初始为视图无关的漫反射颜色

2.2 可微渲染与损失函数

每一轮迭代,对训练视图进行可微渲染,得到预测图像,并与真实图像比较计算损失。

常用损失函数为L1损失与SSIM损失的加权和:

其中

2.3 参数优化

使用梯度下降法(如Adam)更新所有高斯的参数:

  • 位置
  • 协方差矩阵(实际优化缩放和旋转四元数
  • 不透明度
  • 球谐系数

协方差矩阵由缩放和旋转参数重建:

其中为由四元数转换的旋转矩阵。

2.4 自适应密度控制

这是3DGS优化的核心机制,用于动态增加(克隆/分裂)或删除(修剪)高斯,以更好地覆盖场景几何。

克隆:对于位置梯度大的高斯(位于重建不足区域),将其复制一份,并沿位置梯度方向轻微扰动。

分裂:对于尺度过大(协方差矩阵特征值过大)的高斯,将其分裂为两个更小的高斯,以增加局部细节。

修剪:定期移除不透明度低于阈值(如0.005)或体积过小的高斯,以控制总数。

2.5 优化流程伪代码

# 初始化 gaussians = initialize_from_sfm(point_cloud) optimizer = Adam(gaussians.parameters()) for iteration in range(max_iterations): # 1. 可微渲染 rendered_image = differentiable_rasterization(gaussians, camera_pose) # 2. 计算损失 loss = (1 - lambda) * L1_loss(rendered_image, gt_image) + lambda * (1 - SSIM(rendered_image, gt_image)) # 3. 反向传播 loss.backward() optimizer.step() optimizer.zero_grad() # 4. 自适应密度控制(每N次迭代执行) if iteration % density_control_interval == 0: # 克隆梯度大的高斯 clone_gaussians_with_large_gradients(gaussians) # 分裂尺度过大的高斯 split_large_gaussians(gaussians) # 修剪不透明度过低的高斯 prune_opaque_gaussians(gaussians, threshold=0.005) # 5. 重置不透明度(可选,避免饱和) reset_opacity(gaussians)

2.6 收敛与输出

优化完成后,得到一组优化的3D高斯集合,可用于:

  • 实时渲染:在新视角下通过光栅化快速生成图像。
  • 场景编辑:直接修改、添加或删除特定高斯。
  • 压缩与传输:对高斯参数
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/9 5:02:13

云服务器快速部署OpenClaw:构建可扩展AI QQ机器人全攻略

1. 项目缘起:为什么要在云上部署OpenClaw接入QQ?最近在折腾AI聊天机器人的朋友,估计没少听说OpenClaw这个名字。它本质上是一个开源的、功能强大的AI智能体(Agent)框架,你可以把它理解为一个“大脑”&#…

作者头像 李华
网站建设 2026/8/9 5:02:05

Meta入局AI Agent终端:从Harness架构到边缘部署的工程实践

最近在AI Agent领域,一个重磅消息引发了开发者社区的广泛讨论:Meta正式宣布入局智能体终端赛道。对于长期关注AI应用落地的我们而言,这不仅仅是一个商业新闻,更是一个技术风向标。它标志着AI Agent从“云端大脑”走向“边缘终端”…

作者头像 李华
网站建设 2026/8/9 4:54:27

Java+SpringBoot构建个性化智能学习系统实践

1. 项目概述:个性化智能学习系统的核心价值这个基于JavaSpringBoot的个性化智能学习系统,本质上是一个能根据学生特点动态调整教学内容的数字化教育平台。我在实际开发中发现,传统在线学习系统最大的痛点就是"千人一面"——所有学生…

作者头像 李华
网站建设 2026/8/9 4:53:30

Android智能猫砂盆视频加载慢卡顿问题分析

Android智能猫砂盆视频加载慢卡顿问题分析 1.参考文档: https://help.aliyun.com/zh/document_detail/148284.html?spma2c4g.11186623.help-menu-123207.d_5_0_8.6f42a749hxJxQ1&scm20140722.H_148284._.OR_help-T_cn~zh-V_1 2.SDK自身卡顿原因:…

作者头像 李华
网站建设 2026/8/9 4:52:46

Cursor+OpenSpec自动化生成项目规范文档实践

1. 项目概述:用CursorOpenSpec自动化生成项目规范文档在软件开发团队协作中,项目规范文档的编写往往是个耗时且容易遗漏的工作。最近发现Cursor编辑器结合OpenSpec工具链可以自动化生成符合团队要求的规范文档,实测能节省60%以上的文档编写时…

作者头像 李华
网站建设 2026/8/9 4:50:58

P2858 [USACO06FEB] Treats for the Cows G/S

题目描述约翰经常给产奶量高的奶牛发特殊津贴,于是很快奶牛们拥有了大笔不知该怎么花的钱。为此,约翰购置了 N(1≤N≤2000)份美味的零食来卖给奶牛们。每天约翰售出一份零食。当然约翰希望这些零食全部售出后能得到最大的收益&…

作者头像 李华