3D Guassians Splatting相关解读

从已有的点云模型出发,以每个点为中心,建立可学习的高斯表达,用Splatting即抛雪球的方法进行渲染,实现高分辨率的实时渲染。

1、主要思想

在这里插入图片描述

  • 1.引入了一种各向异性(anisotropic)的3D高斯分布作为高质量、非结构化的辐射场表达;
    在这里插入图片描述
    从SFM点云出发,以每个点为中心生成3D高斯分布;各向异性指从各个方向看上去都长得不一样,即把一个点往不同相机位姿上投影的时候会投出不一样的样子。

  • 2.实现了使用GPU进行快速可微的渲染,允许各向异性的抛雪球(splatting)和快速反向传播;
    在这里插入图片描述
    Splatting:计算机图形学里一个比较经典的用三维点进行渲染的方法,把三维点视作雪球往图像平面上抛,雪球在图像平面上会留下扩散的痕迹,这些点的扩散痕迹叠加在一起构成最后的图像。

  • 3.提出了针对3D高斯特性的优化方法,并同事进行自适应密度控制。
    在这里插入图片描述
    除此,存储在点里边的高斯参数需要再反向传播时进行优化更新;
    也会根据梯度自适应地调整点云的分布,如果一个点的3D高斯太大,不能完全拟合该处的细节则对其进行分割操作,用两个点来表达;如果一个位置的点太密集(用不着这么多的3D高斯),则合并为一个3D高斯。

在这里插入图片描述
总结:从左边开始对SFM的点云进行初始化得到3D高斯;再沿黑色箭头借助CAMERA的外参做投影Projection,接着用一个可微的光栅化渲染得到图像;再和Nerf一样,把渲染图像和GT图像求loss沿蓝色箭头反向传播,蓝色箭头向上更新3D高斯里的参数,向下送入自适应密度控制更新点云(Adaptive Density Control)。

2、补充预备知识

3D Gaussian

2.1、一维高斯分布的概率密度函数

在这里插入图片描述
变量x服从均值为μ,方差为σ²的高斯分布。

2.2、三维高斯分布的概率密度函数

在这里插入图片描述

变量为一个向量V,其中三个参数a、b、c均服从均值为0,方差为1的正态分布且相互独立。
一般情况,变量向量x并不一定满足正态分布,则需要将其转换为正态分布,通过矩阵可表示为:

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

其中均值向量μ中的三个分量分别为xyz各自的均值。向量x的分量各自减去均值即将整个数据的分布去中心化,再通过变换矩阵A对[x, y, z]进行线性组合使其等于[a, b, c]。

在这里插入图片描述

变换之后再代入到原式中得到:

在这里插入图片描述

到此仍是v的概率密度函数p(v),再通过以下计算得到x的概率密度函数p(x):

两边积分得

在这里插入图片描述

dv换成dx,把v换成包含向量x的表达式:

在这里插入图片描述

代入可得到:

在这里插入图片描述

向量x的概率密度函数即为图中黄色框的一部分:

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

至此,一维高斯分布通过均值和方差来表示,那么三维对应也应该用均值向量和协方差矩阵来表示,均值上述已经计算得到,下面求解协方差矩阵。

协方差矩阵:
在这里插入图片描述

协方差矩阵作为对称矩阵可以进行奇异值分解,上式中的矩阵U每一列都是相互正交的特征单位向量满足UUT等于单位矩阵IΛ对角线上的元素是协方差矩阵的特征值,其余元素均为0。

根据行列式性质再转化为:

在这里插入图片描述
一组正交基乘以一个对角阵表示一个线性变换。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最终的x的概率密度函数p(x)。

3、相关工作

3.1、Point-NeRF(CVPR2022:Point-Based Neural Radiance Fileds)

  • 1.为每个点赋予特征向量;
  • 2、体渲染时取采样点周边一定领域内的点的特征做线性插值,解码得颜色和体密度;
  • 3、自适应点云生长剔除
    在这里插入图片描述

在这里插入图片描述
为每个点提取一个特征,储存在点里边;渲染采用体渲染,即从相机光心发出穿透像素的采样射线上取采样点,取采样点周边一定范围内的三维点的特征向量做插值得到采样位置的特征表达;再对特征进行解码得到采样位置的体密度和RGB;再堆叠整条射线上的点得到像素RGB的值。(常见的NerF思路:特征向量、体渲染、插值、解码)

与本文一样由点云出发,构建辐射场,但不同点在于本文点里边存储了物理含义更加明确的3D高斯,避开了Point-NeRF中对抽象特征的学习过程,从而使得训练更容易收敛;在渲染方面,Point-NeRF用体渲染,本文用Splatting更加传统且效率更高。

3.2、Plenoxels(CVPR2022:Radiance Fields without Neural Networks)

体素格点存储球谐函数(spherical harmonic)系数,系数做插值得到采样位置的球谐函数。
在这里插入图片描述
继承了NeRF体素、三线性插值和体渲染的要素,抛弃了常用的MLP和隐式特征,直接用更加显示的球谐函数(CG常用),没有神经辐射场。此论文凭此跻身NeRF加速前沿的第一梯队。
本文的3D高斯Splatting的思想和Plenoxels一脉相承,均用尽可能传统但高效的表达方式来提高模型表达能力的下限,再结合一些可微的和可学习的思想来提高模型拟合的上限。简洁优雅效率高。

4、3D Guassian

4.1、可微的3D高斯Splatting

在这里插入图片描述
左边绿点即为3D高斯点云,每个点里边存储数据有:
Position(Mean):默认就有的信息,坐标xyz,也是3D高斯的均值;Covariance matrix,协方差矩阵,椭圆绿球的形状和方向;球谐函数本身即是用一组正交基的线性组合来拟合广场。

为何选择高斯:作者表示是因为需要一种图元能够在拥有场景表达能力的时候可微而且显示地支持快速渲染,因此有了上图所示的3D高斯点云。3D高斯点云中的参数可在迭代优化的过程中更新,也能够很容易地用splat的方法投影到2D图像上做较快的α混合即渲染。
在这里插入图片描述

4.11 3D高斯的定义

在这里插入图片描述
本文通过协方差矩阵来表达该点,此矩阵控制3D高斯的形状。较之3节中推导的传统表达式,本文中的公式去掉了均值,因为该高斯分布以点为中心,xyz的均值就在点上已经中心化了,所以均值设为0;左侧系数是为控制整个概率密度函数的积分为1,但此处不需要,没有积分为1的限制所以整个分布的大小能够自由控制。

4.12 协方差矩阵的物理含义

在这里插入图片描述

A为一个线性变换,把任意一个分布变换到均值为μ方差为1的范围内。二维分布通过图像可表示为:

在这里插入图片描述

二维数据通过矩阵A做线性变换,可看作是先在Y方向进行压缩,再绕原点旋转一定角度。
由此,A的构造通常如下:
在这里插入图片描述
旋转变换矩阵R,尺度变换矩阵S(对角线上为两个缩放系数)。

本文中的公式:

在这里插入图片描述
迭代优化过程中,优化矩阵A的参数即可改变该高斯椭球的形状、大小、方向等等几何外观,从而使其能够在Splatting时投影出正确的效果。

存在问题

  • 1)、旋转矩阵的优化:直接让3*3的旋转矩阵参与优化不可行,所以本文采用四元数参与优化再进行转化,如此便将参数从9个降到了4个,同时能够保持协方差矩阵的半正定性质( 设A是n阶方阵,如果对任何非零向量X,都有XTAX≥0,其中X’表示X的转置,就称A为半正定矩阵)。
  • 2)、求导:如何让矩阵A对尺度S和四元数q求偏导:论文附录有详细推导;
  • 3)、3D高斯如何做渲染(椭球怎样投影成平面的图像):对鞋方差矩阵做一个变换即可。(该问题在CG领域有较深入研究,本文中引用是一个01年的文献)

4.2、优化和自适应密度控制

4.21 优化

点中存储的参数比如点的位置不透明度、协方差矩阵、球谐函数系数等均参与优化,此优化过程的实现是整个系统正常工作不可或缺的一环。

  • 随机梯度下降(Stochastic Gradient Descent):优化策略
  • CUDA核心:写了部分CUDA核心用以加速
  • 快速光栅化:提高效率
  • SigmodExpotential激活函数:不透明度通过Sigmoid函数限制在[0, 1)之内,协方差中的尺度用指数激活函数
  • 损失函数:L1loss是渲染图像和GT图像求广度误差,再按一定比例λ加上SSIM(结构相似性的误差)。
  • 在这里插入图片描述

4.22 自适应密度控制(Adaptive Control of Gaussians)

  • 每100次迭代移除不透明度小于阈值的点:接近透明已经无用
  • 重建不充分的区域往往会有较大的梯度:判断是否重建的依据为梯度,再更新点的位置时如果梯度过大说明该处的误差较大,需要修改的量较大,梯度超过阈值就会执行densify,第一排图像中沿梯度方向安置新的点;分为“欠重建”和“过重建”,根据方差区别,方差大,说明该3D高斯很大需要做分割,反之做克隆;
    Under-reconstruction:clone,下图第一排,黑色线条为真是几何外形,它已不足以用一个高斯来拟合,所以克隆为2个,从而建模整个几何图案。
    Over-reconstruction:split,下图第二排,当一个位置点太少,不足以完美覆盖一个复杂区域时,通过细胞分裂spli分成两个3D高斯来拟合。
  • 周期性将不透明度重置为0用于去除floaters(floaters:漂浮的一些东西,不属于模型重建);
  • 周期性移除较大的高斯用于避免重叠。

在这里插入图片描述
点云密度的自适应控制使得系统能够从稀疏的质量不那么高的初始点云,甚至随机初始化的点云中拟合出较好的模型。

4.3 快速可微光栅化(Tile-based Rasterizer)

渲染方法仅依靠Splatting无法达到较高的实时渲染帧率,本文通过Tile-based Rasterizer

(1)、把整个图像划分为16*16个tiles,每个tile视锥内挑选可视的3D Gaussian;
(2)、每个视锥内只取执行度大于99%的高斯,并按深度排序;(
(3)、并行地在每个tile上splat;
(4)、有像素的不透明度达到饱和就停止对应线程;
(5)、反向传播误差时按tile对高斯进行索引。

取执行度大于99%的高斯后实例化为高斯对象,对象中包含所在tile的ID以及所在对应视域下的深度,通过这些信息对高斯对象进行排序;(将(2)中高斯按其到图像平面的深度值的排序顺序从近到远的tile上做splat,把splat留下的痕迹做堆叠累积直到不透明度饱和即为;每个tile都单独为一个线程块,所以可认为所有tile上的光栅化是并行运行的(光栅化指从堆叠的splat痕迹中去划分像素网格来生成像素值)

5、总结

  • 从初始的SFM点云出发,以每个点为中心生成3D高斯;
    在这里插入图片描述
  • 然后用相机参数把点投影到图像平面上(Splatting);
    在这里插入图片描述
  • 从Splatting的痕迹中进行Tile-base光栅化得到渲染图像,将渲染图像和GT图像求loss沿蓝色箭头反向传播;
    在这里插入图片描述
  • 根据传递到点上的梯度来决定是否需要对3D高斯进行克隆或分割,梯度同时也会传递到3D高斯来更新其中储存的位置(协方差矩阵、球谐函数、不透明度等参数)。
    在这里插入图片描述
    核心:构建以协方差为主导的3D高斯点云,然后围绕3D高斯点云进行渲染和优化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/627504.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

transbigdata笔记:轨迹停止点和行程提取

1 traj_stay_move——标识停靠点和行程 1.1 方法介绍 如果两个连续轨迹数据点之间的持续时间超过设定的阈值,将其视为停靠点。两个停靠点之间的时间段被视为一个行程 1.2 使用方法 transbigdata.traj_stay_move(data, params, col[ID, dataTime, longitude, lat…

[自动驾驶算法][从0开始轨迹预测]:二、自动驾驶系统中常用的坐标系及相应的转换关系

自动驾驶中常见的坐标系与坐标转换 1. 传感器坐标系1.1 相机坐标系统1) 相机相关基础知识2) 相机各坐标系图像/像素坐标系相机坐标系像平面坐标系 3) 相机各坐标系之间的转换像平面坐标系到像素坐标系的转换(平移缩放变换)相机坐标系转像平面坐标系&…

贵阳贵安推进“数字活市”战略成效明显

作者:黄玉叶 近年来,贵阳贵安将数字经济确立为高质量发展的主路径之一,把推进“数字活市”作为实施主战略、实现主定位,特别是建设“数字经济发展创新区核心区”的重要抓手,从改革、发展、民生三个维度纵深推进“数字活…

【FPGA Modsim】 抢答器设计

实验题目: 抢答器设计 实验目的: 掌握应用数字逻辑设计集成开发环境进行抢答器设计的方法;掌握时序逻辑电路设计的过程。 实验内容: 1、设计支持3名参赛者的…

详解SpringCloud微服务技术栈:Nacos配置管理

👨‍🎓作者简介:一位大四、研0学生,正在努力准备大四暑假的实习 🌌上期文章:详解SpringCloud微服务技术栈:Nacos服务搭建及服务分级存储模型 📚订阅专栏:微服务技术全家桶…

泛微与用友NCC的无缝对接,释放企业运营潜能!

客户介绍 某科技股份有限公司作为一家在金融科技行业有着20余年经验的公司,见证了金融科技行业的电子化、信息化、移动化和数字化的发展进程。该公司致力于为金融机构提供领先的产品和专业化服务,其业务涵盖应用软件开发、系统集成、IT服务和IT咨询服务…

在线录屏-通过Web API接口轻松实现录屏

在线录屏是指在互联网上进行屏幕录制的过程。它允许用户通过网络连接,将自己的屏幕活动记录下来,并可以在需要时进行播放、共享或存档。在线录屏常用于教育、培训、演示、游戏等场景,可以帮助用户展示操作步骤、解决问题、分享经验等。通常&a…

Odrive 学习系列三:在odrive工程中添加SEGGER RTT 日志输出功能

一、背景: 对于嵌入式来讲,有个日志输出真真真真的太重要啦! SEGGER JLink自带的RTT日志输出对于老嵌入式而言更是开发利器。 Odrive本身的工程是不带这个功能的,尽管使用stlink可以查阅寄存器等,但感觉还是差了点意思。因此在本系列第二节的基础上,希望能给Odrive工程添…

【昕宝爸爸小模块】深入浅出之JDK21 中的虚拟线程到底是怎么回事(一)

➡️博客首页 https://blog.csdn.net/Java_Yangxiaoyuan 欢迎优秀的你👍点赞、🗂️收藏、加❤️关注哦。 本文章CSDN首发,欢迎转载,要注明出处哦! 先感谢优秀的你能认真的看完本文&…

016-Vue-黑马2023:前后端分离开发:在线接口文档,前端工程化、Element、nginx

第三节 前后端分离开发 1、介绍 开发模式 前后端混合开发:传统开发模式 前后端分离开发:当前最为主流的开发模式 页面原型需求案例:分析出接口文档 离线开发文档示例: 2、YAPI 在线接口文档管理平台: 介绍…

05-python之函数-函数的定义/函数的参数/函数返回值/函数说明文档/函数的嵌套使用/函数变量的作用域

01-函数的介绍 """ 演示:快速体验函数的开发及应用 ​ """ #需求,统计字符串的长度,不使用内置函数len() str1 "itheima" str2 "itcast" str3 "python" ​ #定义一个技术的变…

解决Win11安装打印机修复补丁,连接共享打印机依然错误的方法

问题原因:Win11最新安全共享策略导致! 解决方案:按照下面步骤操作绕过Win11最新安全共享策略。 点击Win图标,在开始菜单选择设置。 选择蓝牙和其他设备,选择打印机和扫描仪。 点击添加设备, 点击手动添加。…

HubSpot电子邮件自动回复怎么设置?附注意事项!

HubSpot 提供了电子邮件自动回复的功能,使得企业能够更高效地管理和处理电子邮件通信。以下是关于 HubSpot 电子邮件自动回复的一些重要信息和步骤: 设置电子邮件自动回复的步骤: 登录HubSpot账户: 打开 HubSpot 平台并登录你的账…

基于SSM的戏剧推广网站的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue、HTML 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是…

IDEA中如何让包名一层层展开的设置

在开发过程中,发现新下载的一个项目在打开时候,呈现的包是没有一层一层展开的,是平铺在idea中的,截图如下: 设置方法: 打开options的小图标 在treeAppear中的Flatten packages的对号取消掉取消之后的效果…

【RTOS】快速体验FreeRTOS所有常用API(7)任务通知

目录 七、任务通知7.1 基本概念7.2 发出通知7.3 等待通知7.4 实例 七、任务通知 该部分在上份代码基础上修改得来,代码下载链接: https://wwzr.lanzout.com/i4Efu1la39wh 密码:cbvx 该代码尽量做到最简,不添加多余的、不规范的代码。 内容主要…

SpringBoot-Starter 自动锁组件

在日常业务开发的过程中,我们经常会遇到存在高并发的场景,这个时候都会选择使用redis来实现一个锁,来防止并发。 但是很多时候,我们可能业务完成后,就需要把锁释放掉,给下一个线程用,但是如果我…

免费scrum管理工具Leangoo敏捷做缺陷跟踪管理

缺陷管理通常关注如下几个方面: 1. 缺陷的处理速度 2. 缺陷处理的状态 3. 缺陷的分布 4. 缺陷产生的原因 使用Leangoo敏捷看板我们可以对缺陷进行可视化的管理,方便我们对缺陷的处理进展、负责人、当前状态、分布情况等各个方面一目了然。 下面我们…

安卓APP和小程序渗透测试技巧总结

记得开启模拟器的ROOT权限:本文章仅供学习和研究使用,严禁使用该文章内容对互联网其他应用进行非法操作,若将其用于非法目的,所造成的后果由您自行承担。 由于安卓7开始对系统安全性做了些改动,导致应用程序不再信任客…

设计模式——一文即可

对常用设计模式的总结,也是对设计模式专栏的总结 简单工厂模式 简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,它提供了一种创建对象的最佳方式,通过将对象的创建逻辑封装在一个工厂类中,客…