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

3DGS与NeRF的区别

0 论文链接

nerf:https://arxiv.org/abs/2003.08934
3dgs:https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/3d_gaussian_splatting_low.pdf

1 简要

1.1 nerf

neural radiance fields神经辐射场
在这里插入图片描述
作者提出了一种优化来自一组输入图像的场景的连续5D神经辐射场表示(空间位置 x y z和视图方向 d θ)的方法。作者使用体绘制的技术来积累这个场景表示沿着射线的样本,以从任何视点渲染场景。作者可视化了在周围半球上随机捕获的合成 鼓场景 的100个输入视图的集合,最后作者显示了从优化的NeRF表示渲染的两个新视图。
在这里插入图片描述

1.2 3dgs

3d guassian splatting三维高斯喷溅
核心是构建以协方差为主导的3d高斯点云,然后围绕3d高斯点云进行渲染和优化。
在这里插入图片描述
从已有的点云模型出发,以每个点为中心,建立可学习的3d高斯表达,用相机参数把点投影到图像平面上,splatting即抛雪球的方法进行渲染,在splatting的痕迹中进行tile based的光栅化得到渲染图像,将渲染图像和GT图像求损失loss,沿蓝色箭头反向传播,自适应的密度控制模块根据传递到点上的梯度来决定是否需要对3d高斯做分割或者克隆,梯度也会传递到3d高斯里面,来更新其中存储的位置、协方差矩阵、球谐函数、不透明度这些参数。
实现了高分辨率的实时渲染

2 隐式几何与显式几何

nerf是神经隐式辐射场
而3d高斯是可微分的,可以实现快速α混合渲染
3dgs的显式几何,和nerf方法的隐式几何,是非常重要的区别

3 采样与渲染

从采样点颜色贡献度的角度进行nerf系的方法区分,可以分为体积类方法和表明类方法
2020年原版nerf属于体积类表达,输入5d信息(x y z d θ)输出颜色和体密度,采样点返回密度值反映了这里是否存在几何占用。
另一种热门的是表面类表达,输入采样点,sdf(signed distance function,符号距离函数)
输出空间中距离这个点最近的表明的距离。正值表示表面外,负值表示表面内,表面可以用所有的sdf=0的采样点的集合来表达,借助神经网络实现的sdf即神经sdf
体积类方法通过几何密度决定采样点颜色贡献度,表面类方法则判定越靠近表面的采样点颜色贡献度越高.
在这里插入图片描述
隐式的采样,投出射线,累积颜色不透明度来做渲染


3dgs的引言部分这样提到:nerf方式的渲染所需要的随机采样成本高,并且可能会导致噪声。
而3d高斯有个特性,其轴向积分等同2d高斯,从数学层面降低了采样的成本,我们并不需要花费高昂的成本做采样了,用数学的方式就可以轻松地把3dgs转化成一个2dgs。
在这里插入图片描述

直接把球抛掷在墙上,在墙上留下的斑点,就是3dgs splatting 投掷的结果,完成了采样的渲染

4 光栅化

传统的nerf方法并不能做光栅化,而3dgs可以进行光栅化,对速度的提升是至关重要的

5 可微性

nerf全链路可微
3dgs也具有可微分的特性


http://www.kler.cn/a/388301.html

相关文章:

  • Matlab实现鹈鹕优化算法(POA)求解路径规划问题
  • 数据安全、信息安全、网络安全区别与联系
  • 今天给在家介绍一篇基于jsp的旅游网站设计与实现
  • 基于Zynq FPGA对雷龙SD NAND的测试
  • 网络安全:挑战、策略与未来趋势
  • java并发编程JUC:四、volatile(保证可见性、防止指令重排、双重校验锁实现对象单例)
  • 爬虫学习8
  • 【Promise】自定义promise
  • 机器学习Housing数据集
  • Android Studio 将项目打包成apk文件
  • Mac打开time machine(时间机器)备份特殊文件
  • ubuntu下aarch64-linux-gnu(交叉编译) gdb/gdbserver(二)
  • DataFrame
  • Spring高手之路26——全方位掌握事务监听器
  • 第02章 CentOS基本操作
  • 腾讯云服务器到期网站迁移到新服务器参考指南
  • IMS高压发生器维修高压电源维修XRG100/1000
  • Spark的Shuffle过程
  • 【西门子官方车轨级S7-1500F安全PLC标准 SICAR架构应用实例】
  • 软件定义网络(SDN)在企业网络中的应用
  • 什么是python爬虫?
  • HashMap(深入源码追踪)
  • 005.精读《B-Tree vs LSM-Tree》
  • Linux 内核中断描述符 (irq_desc) 的初始化与动态分配机制详解
  • vue全家桶都有哪些?
  • C++ STL CookBook 6:STL Containers (I)