【Gaussian splatting系列学习】(三)

2024-08-26 07:12

本文主要是介绍【Gaussian splatting系列学习】(三),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

3DGS系列(一)
3DGS系列(二)
3DGS系列(三)

3D高斯球的颜色

在这里插入图片描述

基函数:

  • 任何一个周期性函数可以分解为正弦和余弦的线性组合

球谐函数:

  • 任何一个球面坐标的函数可以用多个球谐函数来近似
    极坐标, ( θ , ϕ ) (\theta, \phi) (θ,ϕ)

f ( t ) ≈ ∑ l ∑ m = − l l c l m y l m ( θ , ϕ ) f(t)\approx \sum_l\sum_{m=-l}^{l}\ c_l^my_l^m(\theta,\phi) f(t)lm=ll clmylm(θ,ϕ)

c是系数,y是基函数
l 是阶数,0、1、2、3阶。

  • 对方向的函数
    在这里插入图片描述

为什么球谐函数能够更好地表达颜色?

原因:

  • 直觉上:数量多、维度高、存储信息更多
  • CG: 环境贴图
    • 常用的有球形环境贴图
      在渲染中:
  • 用球谐函数来重建亮度
  • 1阶到6阶
  • 当球谐函数的阶数越高,还原的效果越好

相关代码:
在这里插入图片描述

3DGS为什么效率高?

足迹合成:

直观上:

  • 进行α-blending
sheets = []
for g in gaussians:sheets.append(g.footprint)
alpha_blending(sheets)

实际上:
G.footprint 依然对每个像素进行着色

footprint = np.zeros((H,W,3))
for i in range(H):for j in range(W):footprint[i,j]=...

在这里插入图片描述
在这里插入图片描述

像素的颜色

仍沿用NeRF中的计算公式:

C = T i α i c i = ∑ i = 1 N T i ( 1 − e − σ i δ i ) c i , w h e r e T i = e − ∑ j = 1 i − 1 σ j δ j C=T_i\alpha_ic_i=\sum_{i=1}^{N}T_i(1-e^{-\sigma_i\delta_i})c_i, where \ T_i=e^{-\sum_{j=1}^{i-1}\sigma_j\delta_j} C=Tiαici=i=1NTi(1eσiδi)ci,where Ti=ej=1i1σjδj

对光线上粒子颜色进行求和:

  • T(s) :在s点之前光线没有被阻碍的概览
  • σ ( s ) \sigma(s) σ(s)“”:在s点处,光线碰击粒子(光线被粒子阻碍)的概率密度
  • C ( s ) C(s) C(s):在s点出粒子发出的颜色

特别地:

  • splatting 没有找粒子的过程
  • 需要对高斯球按照深度z排序

GPU:

  • CUDA编程splatting部分
  • 一个线程负责一个像素

分区:

  • 将整张图分成16x16块
  • 对每个高斯划分区块
  • 这样GPU的每个block负责一个区
  • block内可以共享内存

如何进行参数估计?

机器学习部分

参数:

  • 假设初始点云有10000个点
  • 每个点膨胀成3D高斯椭球
  • 每个椭球的参数包括:
    • 中心点位置 : (x, y, z)
    • 协方差矩阵:R, S
    • 球谐函数系数:16*3
    • 透明度:α
      在这里插入图片描述

关于初始化的3D高斯
椭球的初始形状:

  • 是一个球
  • 使用knn法,找到3近邻
  • 半径是与3近邻的距离的平均

算法:

  • 渲染 + SGD
    • L = ( 1 − λ ) L 1 + λ L D − S S I M , λ = 0.2 L = (1- \lambda ) L_1+\lambda L_{D-SSIM},\lambda=0.2 L=(1λ)L1+λLDSSIM,λ=0.2

问题:
强依赖于SFM生成的初始点云

方案:

  • 打补丁(Adaptive Control of Gaussians)
    • 太大的拆分
    • 太小的合并
    • 存在感太低的剔除

Reference:B站UP主 SY_007 视频讲解内容


A u t h o r : C h i e r Author: Chier Author:Chier

这篇关于【Gaussian splatting系列学习】(三)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1107896

相关文章

C++11/14系列学习

十一假期一直在看C++11新特性,比较出名的书《C++ Primer Plus》专门有一个章节来讲解,《C++ Primer》则将C++11的新特性融入到各个章节来学习。在假期的最后一天无意中发现实验楼有一个专门的教程来讲解,算是念念不忘,必有回响吧,特此整理出来,和大家一起学习。 作者网址:https://www.shiyanlou.com/courses/605,非常感谢! 注:本文并没有智

【HDU】4975 A simple Gaussian elimination problem. 网络流——行列建边

传送门:【HDU】4975 A simple Gaussian elimination problem. 题目分析:这题和某一场的多校的题目出奇的像啊!重要的是我一开始还以为不可能会出一样的题。。结果迟迟没写啊。。。后来觉得实在想不出什么对策了,虽然觉得给的是0~9很特殊,但是利用不起来,果断还是敲了网络流了。。首先建图很简单,源点向行建边,容量为行和,列向汇点建边,容量为列和,然后所有的

三维重建实战:3D Gaussian Splatting

简介: 3D Gaussian Splatting是一种用一组2d图像创建3d场景的方法,你只需要一个场景的视频或者一组照片就可以获得这个场景的高质量3d表示,使你可以从任何角度渲染它。它们是一类辐射场方法(如NeRF),但同时训练速度更快(同等质量)、渲染速度更快,并达到更好或相似的质量。3D Gaussian Splatting可以实现无界且完整的场景1080p分辨率下进行高质量实时(≥ 1

gaussian grouping训练自定义数据集

gaussian grouping是一个语义分割3DGS的方法。 它在每个3DGS点云中加入一个叫Identity Encoding的特征向量, 在渲染时把特征向量渲染到2D图像,每个像素位置为一个特征向量,使用额外的线性分类层对每个2D位置的特征向量分类。得到mask。 这个mask和gt mask计算2D损失,同时3D正则化损失利用3D空间一致性,强制执行Identity Encoding在特

【扩散模型系列学习】Diffusion Model

Denoising Diffusion Probabilistic Models 生成模型简介 生成式模型: 生成是“言出法随”生成是“涌现” or “幻觉” 定义: 一个能随机生成与训练数据一致的模型 问题: 如何对训练数据建模?如何采样? 思路: 从一个简单分布采样是容易的从简单分布到观测数据分布是可以拟合的 生成模型的解题思路: 将观测数据分布映射到简单分布【encod

【Gaussian splatting系列学习】(一)

3DGS系列(一) Splatting 基本理解 定义: 一种体渲染的方法:从3D物体渲染到2D平面Ray-casting 是被动的(NeRF):计算出每个像素点受到发光粒子的影响来生成图像Splatting是主动的:计算出每个发光粒子如何影响像素点 3dgs 基于2001年的 EWA Volume Splatting splatting的核心 选择雪球(捏雪球)抛掷雪球:从3D

【三维重建】2D Gaussian Splatting:几何准确的2D辐射场(更新中)

标题:2D Gaussian Splatting for Geometrically Accurate Radiance Fields 项目地址:https://github.com/hbb1/2d-gaussian-splatting 文章目录 功能输入输出 一、摘要二、引言深入分析解读 三、相关工作3.1新视角合成3.2 3D重建3.3 可微分基于点的图形3.4 同期工作 四、3D

Gaussian Splatting 在 Ubuntu22.04 下部署

代码:graphdeco-inria/gaussian-splatting (github) 论文:[2308.04079] 3D Gaussian Splatting for Real-Time Radiance Field Rendering (arxiv.org) 1. 禁用自带驱动 Nouveau Ubuntu 自带的显卡驱动,是非 Nvida 官方版。在后面装 CUDA 的时候

【文献】3D Gaussian Splatting for Real-Time Radiance Field Rendering

论文地址:https://arxiv.org/abs/2308.04079 项目: https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/ 代码: git clone  https://github.com/graphdeco-inria/gaussian-splatting —recursive 一、文章概述 1.问题

3D gaussian-splatting项目环境配置记录

1.前景 项目论文:https://arxiv.org/abs/2308.04079 GitHub项目下载地址:https://github.com/graphdeco-inria/gaussian-splatting git clone时里面的子模块小项目会git不到,需要单独github下来,放入相应文件夹。 sibr_viewersSIBR / SIBR Core · GitLab,