当前位置: 首页 > news >正文

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高斯集合,可用于:

  • 实时渲染:在新视角下通过光栅化快速生成图像。
  • 场景编辑:直接修改、添加或删除特定高斯。
  • 压缩与传输:对高斯参数
http://www.cnnetsun.cn/news/3921889.html

相关文章:

  • 云服务器快速部署OpenClaw:构建可扩展AI QQ机器人全攻略
  • Meta入局AI Agent终端:从Harness架构到边缘部署的工程实践
  • Java+SpringBoot构建个性化智能学习系统实践
  • Android智能猫砂盆视频加载慢卡顿问题分析
  • Cursor+OpenSpec自动化生成项目规范文档实践
  • P2858 [USACO06FEB] Treats for the Cows G/S
  • 北京网站建设服务怎么做才靠谱?揭秘那些让你少踩坑的硬核干货与真实案例
  • SpringBoot+Vue+Android健康管理小程序全栈开发指南
  • BepInEx 6.0架构解析与Unity插件工程化开发实践
  • 2024年非科班技术转型指南:AI与自动化工具链实战
  • 鸣潮3.6版本前卡顿掉帧怎么办?Low帧不稳定解决方法
  • 家居环境格局解析|冲门煞概念、自查手段与优化方案
  • Windows系统安装Codex CLI完整指南:从Node.js环境配置到AI代码生成实战
  • 走进中铁建设集团门户网站:一个大型央企的数字化转型与温暖守护
  • Level MC-512:统一配置与部署协调平台,告别多环境配置碎片化
  • Kaggle房价预测竞赛:特征工程与模型优化实战
  • 大语言模型量化与GGUF格式:llama.cpp如何让本地部署触手可及
  • 出生人口图表
  • Spring Cloud Alibaba构建高可用淘客返利系统实战
  • 从设计稿到数据库:Flutter背单词应用的数据层设计与AI协作实践
  • 红黑树与Set容器的实现原理与性能优化
  • 英文网站建设多少钱:揭秘行业价格内幕与避坑指南
  • PowerMem记忆系统:基于遗忘算法的动态知识管理工程实践
  • Spring Boot实战:构建用户自激活系统,提升注册转化率与用户体验
  • Codex客户端接入低价AI API实战:从环境配置到错误排查
  • MiniMax H3模型本地部署与2K视频生成实战指南
  • 5分钟学会DeepL翻译插件:浏览器网页翻译终极解决方案
  • 东营网站建设哪家好?揭秘本地企业如何通过官网突围与品牌升级
  • Lenovo Legion Toolkit终极指南:5步解锁拯救者游戏本隐藏性能的免费神器
  • Agent 多级防御架构实战教程|纵深防御,不依赖大模型自律,原生代码实现