详解3DGS

4 可微分的3D高斯 splatting

核心目标与表示选择

我们的目标是从无法线的稀疏SfM点出发,优化出一种能够实现高质量新视角合成的场景表示。为此,我们选择3D高斯作为基本图元,它兼具可微分的体表示特性非结构化的显式表示优势,既能支持优化过程,又能实现快速渲染。

高斯参数与投影模型
  1. 3D高斯定义
    高斯由世界空间中的均值(位置) μ \mu μ和协方差矩阵 ∑ \sum 定义,其概率密度函数为:

G ( x ) = e − 1 2 ( x − μ ) T ∑ − 1 ( x − μ ) G(x) = e^{-\frac{1}{2}(x-\mu)^T \sum^{-1}(x-\mu)} G(x)=e21(xμ)T1(xμ)

其中,协方差矩阵 ∑ \sum 描述了高斯的形状和方向,通过缩放矩阵 S S S和旋转矩阵 R R R分解为:
∑ = R S S T R T \sum = R S S^T R^T =RSSTRT
这种分解方式将协方差的优化转化为对缩放向量 s s s(3个自由度)和旋转四元数 q q q(4个自由度,归一化后3个自由度)的优化,避免了直接优化协方差矩阵时的正半定性约束问题。

  1. 投影到2D图像空间
    通过相机变换 V V V和投影雅可比矩阵 J J J,将3D高斯投影为图像空间中的2D椭圆。投影后的协方差矩阵 ∑ ′ \sum' 为:

∑ ′ = J V ∑ V T J T \sum' = J V \sum V^T J^T =JVVTJT

取其左上角2x2子矩阵,即可得到与传统基于点的方法(如使用法线的平面点)等价的2D方差矩阵,用于渲染时的 α \alpha α混合。

优化与梯度计算
  1. 参数优化
    优化参数包括高斯的位置、缩放、旋转、不透明度 α \alpha α和球面调和函数(SH)系数(用于表示颜色的视图相关性)。通过随机梯度下降(SGD)最小化 L 1 L_1 L1损失和D-SSIM损失的加权和:

L = ( 1 − λ ) L L 1 + λ L D - S S I M ( λ = 0.2 ) \mathcal{L} = (1-\lambda)\mathcal{L}_{L1} + \lambda\mathcal{L}_{D\text{-}SSIM} \quad (\lambda=0.2) L=(1λ)LL1+λLD-SSIM(λ=0.2)

采用指数衰减学习率调度,并通过 sigmoid 和指数激活函数约束参数范围。

  1. 显式梯度推导
    为避免自动微分的开销,手动推导了缩放 s s s和旋转 q q q的梯度。通过链式法则,将协方差矩阵的梯度分解为对旋转矩阵和缩放矩阵的导数,利用四元数与旋转矩阵的转换关系,推导出各参数的梯度表达式。
优势与应用
  • 灵活性与紧凑性:3D高斯的各向异性特性使其能自适应复杂几何结构(如薄结构、曲面),通过优化协方差矩阵,仅需1-5百万个高斯即可精确表示场景,远少于传统点云方法。
  • 可微分渲染:投影和渲染过程完全可微分,支持端到端优化,结合后续的自适应密度控制和快速光栅化,实现了高质量、实时的新视角合成。
与其他方法的对比

相较于基于神经网络的NeRF方法(如Mip-NeRF360),3D高斯 splatting无需密集采样和体积渲染,通过显式几何表示和GPU加速的光栅化,显著提升了训练和渲染速度;相较于传统点云方法,其可微分特性和各向异性建模能力显著提高了重建质量。

5 3D高斯的自适应密度控制优化

一、核心目标与优化框架

目标:通过优化3D高斯的参数(位置、协方差、不透明度、颜色)和动态调整高斯密度,生成精确的场景表示,实现高质量新视角合成。
输入:SfM(结构从运动)生成的稀疏点云、多视图图像。
框架

  1. 初始化:从SfM点云创建初始3D高斯集合,每个高斯由位置、各向同性协方差、初始不透明度和颜色(球面调和函数系数)定义。
  2. 迭代优化:通过可微分渲染将高斯投影为图像,与真实图像对比计算损失(L1 + D-SSIM),使用随机梯度下降(SGD)更新参数。
  3. 自适应密度控制:在优化过程中动态添加或删除高斯,平衡模型复杂度与重建精度。
二、优化参数与损失函数
  1. 优化参数
    • 几何参数:3D位置 (\mathbf{p})、各向异性协方差(缩放 (\mathbf{s})、旋转 (\mathbf{q}))、不透明度 (\alpha),
    • 外观参数:球面调和函数(SH)系数,用于表示视角相关的颜色(如漫反射、高光)。
  2. 损失函数
    [
    \mathcal{L} = (1-\lambda)\mathcal{L}{\text{L1}} + \lambda\mathcal{L}{\text{D-SSIM}} \quad (\lambda=0.2)
    ]
    • (\mathcal{L}_{\text{L1}}) 衡量渲染图像与真实图像的像素级差异,
    • (\mathcal{L}_{\text{D-SSIM}}) 衡量结构相似性,提升感知质量。
  3. 激活函数与约束
    • sigmoid 约束 (\alpha \in [0, 1)),
    • 指数函数 约束协方差缩放因子为正,
    • 四元数 (\mathbf{q}) 归一化为单位四元数,确保旋转矩阵有效。
三、自适应密度控制:克隆与分裂策略

为解决场景中欠重建(几何缺失)过重建(几何冗余)问题,通过梯度分析动态调整高斯密度:

  1. 欠重建区域(小高斯,高梯度)
    • 检测:若高斯在视图空间的位置梯度均值超过阈值 (\tau_{\text{pos}}=0.0002),且协方差规模较小(低于阈值 (\tau_S)),视为欠重建。
    • 操作克隆高斯,复制当前高斯并沿梯度方向移动,填补几何缺口(图4上排)。
  2. 过重建区域(大高斯,高方差)
    • 检测:若高斯协方差规模较大(高于 (\tau_S)),且覆盖区域细节复杂,视为过重建。
    • 操作分裂高斯,将一个大高斯拆分为两个小高斯,缩放因子除以 (\phi=1.6),并在原高斯的概率密度函数(PDF)上采样初始化新位置(图4下排)。
  3. 剪枝操作
    • 删除不透明度 (\alpha < \epsilon_{\alpha})(如 (\epsilon_{\alpha}=1e-4))的透明高斯,
    • 删除世界空间中尺寸过大或视图空间中投影面积过大的高斯,避免“飞点”和冗余计算。
四、优化流程与关键技术
  1. 分辨率热身(Warm-up)
    从低分辨率(原图1/4)开始优化,每250-500次迭代逐步提升至全分辨率,避免高分辨率下的优化震荡。
  2. 球面调和函数分步优化
    初始仅优化SH零阶系数(漫反射颜色),每1000次迭代添加高一阶系数,避免因视角覆盖不足导致的颜色失真。
  3. 快速可微分渲染
    • 基于瓦片(Tile-based)的光栅化器,将屏幕划分为16×16像素块,对每个瓦片内的高斯按深度排序,
    • 支持各向异性高斯的 (\alpha) 混合,通过Radix排序和共享内存加速,确保优化阶段的渲染速度(135 FPS,文档表1)。
五、效果与优势
  1. 紧凑表示:通过自适应密度控制,仅需1-5百万个高斯即可精确表示复杂场景,远少于传统点云方法(如Point-NeRF需数千万点)。
  2. 几何适应性:各向异性高斯可拟合薄结构(如叶片)、曲面和远距离细节,如图3所示,优化后的高斯通过协方差调整呈现椭球形状,贴合真实几何。
  3. 训练效率:在Mip-NeRF360数据集上,30K次迭代仅需约51分钟,远快于Mip-NeRF360的48小时,且PSNR达25.2,超越InstantNGP和Plenoxels(文档图1、表1)。
六、局限性与改进方向
  1. 当前局限
    • 极端视角或低重叠区域可能产生“飞高斯”或模糊(图12),
    • 大规模场景(如城市)需调整位置学习率,避免优化发散。
  2. 未来优化
    • 引入正则化约束高斯形状,减少“斑点状” artifacts,
    • 结合压缩技术(如点云编码)降低内存消耗,
    • 支持动态场景的在线优化。

总结

自适应密度控制优化是3D高斯 splatting 的核心创新之一,通过“优化-密度控制-渲染”的闭环,实现了几何细节的自适应建模计算资源的高效分配。该方法在保持高重建质量的同时,将训练时间和渲染延迟压缩至实时水平,为大规模场景的实时神经渲染提供了新范式(文档结论部分)。

6 高斯的快速可微分光栅化器

一、核心目标与设计原则

目标:实现3D高斯的实时渲染可微分优化,支持高分辨率(如1080p)下的高质量新视角合成。
设计原则

  1. 利用GPU并行计算:通过瓦片划分(Tile-based)和快速排序,充分利用GPU的并行处理能力,
  2. 精确性与效率平衡:在保证渲染质量的前提下,避免传统体积渲染的高采样成本,
  3. 全流程可微分:确保投影、排序、混合过程的梯度可反向传播,支持端到端优化。
二、关键技术组件
1. 瓦片划分与视锥体剔除
  • 屏幕划分:将图像分为16×16像素的瓦片(Tile),每个瓦片独立处理,减少内存访问冲突,
  • 视锥体剔除:对每个高斯进行视锥体检测,仅保留与视图 frustum 相交(99%置信区间)的高斯,剔除远距离或视角外的无效图元,
  • 保护带(Guard Band):拒绝近平面附近且严重偏离视图 frustum 的高斯,避免投影时的数值不稳定。
2. 基于深度的快速排序
  • 键值生成:为每个高斯生成排序键,包含视图空间深度瓦片ID,其中深度值用于确定前后顺序,瓦片ID用于分组,
  • 基数排序(Radix Sort):利用GPU的并行基数排序算法,对所有高斯进行全局排序,确保同瓦片内的高斯按深度有序(近→远),
  • 瓦片范围标识:排序后,为每个瓦片标记高斯列表的起始和结束索引,便于后续分块渲染(如图6中的算法2)。
3. 各向异性高斯渲染与α混合
  • 投影到2D椭圆:根据3D协方差矩阵,将高斯投影为2D图像空间中的各向异性椭圆,椭圆的形状由协方差矩阵的特征值和特征向量决定,
  • α混合公式:按深度顺序对椭圆进行从前到后(front-to-back)的混合,累积颜色和不透明度:
    [
    C = \sum_i T_i \alpha_i c_i, \quad T_i = \prod_{j=1}^{i-1} (1 - \alpha_j)
    ]
    其中,(\alpha_i) 为当前高斯的不透明度,(T_i) 为累积透明度,确保远高斯被近高斯遮挡,
  • 提前终止:当像素的累积不透明度 (T_i < 1 - \epsilon)(如 (\epsilon=1e-4))时,停止混合,加速渲染。
4. 可微分反向传播
  • 前向记录:在正向渲染过程中,记录每个像素的累积不透明度和混合顺序,
  • 反向遍历:反向传播时,从后到前(back-to-front)遍历高斯,利用前向记录的累积值计算梯度,
  • 无限制梯度传播:支持任意数量高斯的梯度计算,无需限制每个像素的最大混合次数(如Pulsar的N=10限制),避免因截断导致的优化不稳定(文档图9)。
三、性能优化细节
1. 共享内存与数据重用
  • 瓦片级数据加载:每个线程块处理一个瓦片,协作将高斯数据加载到共享内存,减少全局内存访问次数,
  • 向量化操作:利用CUDA的向量化指令(如warp-level操作),并行处理同一瓦片内的多个像素,提升计算效率。
2. 数值稳定性保障
  • 不透明度钳制:将 (\alpha) 限制在 ([0, 0.9999]) 范围内,避免除以零或数值溢出,
  • 梯度修正:在反向传播中,通过累积不透明度的除法操作((T_i / \alpha_i))恢复中间透明度,确保梯度计算的稳定性。
3. 与优化阶段的协同
  • 训练时的高效反馈:光栅化器的快速渲染能力(如135 FPS)使优化迭代周期缩短,结合自适应密度控制,实现51分钟内达到SOTA质量(文档图1),
  • 多分辨率支持:在低分辨率下热身训练,逐步提升至全分辨率,避免高分辨率下的过拟合和计算过载。
四、与其他方法的对比
特性本文光栅化器传统体积渲染(如NeRF)点云光栅化(如Pulsar)
渲染速度实时(≥30 FPS,1080p)慢(0.07 FPS,Mip-NeRF360)较快(~10 FPS)
几何表示3D各向异性高斯隐式密度场2D点+法线
可微分性全流程可微分,支持任意深度可微分,但依赖随机采样部分可微分,需限制混合次数
内存消耗数百MB(高斯参数)低(神经网络权重)取决于点云数量(通常更高)
** artifacts**少(深度排序+α混合)噪声(需大量采样)孔洞或闪烁(点分布不均)
五、局限性与未来方向
  1. 当前局限
    • 深度排序为近似排序(基于瓦片而非像素级),可能导致极个别像素的遮挡顺序错误,
    • 复杂场景中高斯数量过大时(如>500万),排序和存储开销增加。
  2. 改进方向
    • 引入硬件加速的光线追踪,提升复杂遮挡场景的准确性,
    • 开发高斯压缩算法(如聚类或稀疏表示),降低内存占用,
    • 支持动态分辨率调整,适应实时交互中的性能需求变化。

总结

快速可微分光栅化器是3D高斯 splatting 实现“实时渲染”的核心引擎,通过瓦片划分-排序-混合的流水线设计,结合GPU并行计算和可微分技术,在保证高渲染质量的同时,将训练和推理速度提升至传统NeRF方法的数十倍。该技术不仅为实时神经渲染提供了新工具,也为显式几何表示与可微分渲染的结合开辟了新路径(文档结论部分)。

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

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

相关文章

构建版本没mac上传APP方法

在苹果开发者的app store connect上架Ios应用的时候&#xff0c;发现需要使用xode等软件来上传iOS的APP。 但是不管是xcode也好&#xff0c;transporter也好&#xff0c;还是命令行工具也好&#xff0c;都必须安装在mac电脑才能使用&#xff0c;。 假如没有mac电脑&#xff0…

Gitee PPM:智能化项目管理如何重塑软件工厂的未来格局

在数字化转型浪潮席卷全球的当下&#xff0c;软件开发行业正经历着前所未有的变革。随着企业项目复杂度呈指数级增长&#xff0c;传统项目管理方式已难以应对多项目并行、跨团队协作等挑战。Gitee项目组合管理&#xff08;PPM&#xff09;作为新一代智能化项目管理解决方案&…

node入门:安装和npm使用

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、安装npm命令nvm 前言 因为学习vue接触的&#xff0c;一直以为node是和vue绑定的&#xff0c;还以为vue跑起来必须要node&#xff0c;后续发现并不是。 看…

单例模式,饿汉式,懒汉式,在java和spring中的体现

目录 饿汉式单例模式 懒汉式单例模式 Spring中的单例模式 关键差异对比 在Java和Spring中的应用场景 手写案例 单例模式是一种创建型设计模式&#xff0c;其核心在于确保一个类仅有一个实例&#xff0c;并提供一个全局访问点来获取该实例。下面将详细介绍饿汉式和懒汉式…

网络编程——UDP网络编程

文章目录 1、sendto()&#xff0c;recvfrom() 与TCP编程不同的是&#xff1a; 无需建立连接&#xff0c;在recvfrom()阻塞等待客户端的数据&#xff0c;收到数据后进入do something进行数据的处理。 1、sendto()&#xff0c;recvfrom() ssize_t sendto(int socket, void *mes…

OpenSSL详解

这里写目录标题 选项&#xff1a;**通用选项&#xff1a;**1. genrsa&#xff1a;生成RSA密钥对3. req&#xff1a;生成证书签名请求4. x509&#xff1a;生成自签名证书 **证书管理&#xff1a;**1. verify&#xff1a;验证证书2. x509&#xff1a;查看证书详情3. crl&#xff…

MySQL的日志和备份

目录 一. MySQL的日志 1.1 日志的作用 1.2 日志的分类 1.3 事务日志 1.4 错误日志 1.5 通用日志 1.6 慢查询日志 1.7 二进制备份 二. 备份 2.1 数据备份的重要性 2.2 备份的分类 2.3 MySQL备份的内容 2.4 备份的注意点 2.5 备份的工具 2.6 实战案例 2.7 mysql…

前端性能优化:如何让网页加载更快?

摘要 想象一下&#xff0c;满心期待点开一个网页&#xff0c;却等了十几秒还卡在加载界面&#xff0c;你是不是瞬间就想关掉走人&#xff1f;这可不是个别用户的 “急性子”&#xff0c;数据显示&#xff0c;网页每多延迟 1 秒&#xff0c;用户流失率可能增加 11%&#xff01;…

[论文阅读]Prompt Injection attack against LLM-integrated Applications

Prompt Injection attack against LLM-integrated Applications [2306.05499] Prompt Injection attack against LLM-integrated Applications 传统提示注入攻击效果差&#xff0c;主要原因在于&#xff1a; 不同的应用对待用户的输入内容不同&#xff0c;有的将其视为问题&a…

微信小程序进阶第2篇__事件类型_冒泡_非冒泡

在小程序中&#xff0c; 事件分为两种类型&#xff1a; 冒泡事件&#xff0c; 当一个组件上的事件被触发后&#xff0c;该事件会向父节点传递非冒泡事件&#xff0c; 当一个组件上的事件被触发后&#xff0c; 该事件不会向父节点传递。 一 冒泡事件 tap&#xff0c; touchst…

[免费]SpringBoot+Vue在线教育(在线学习)系统(高级版)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的SpringBootVue在线教育(在线学习)系统(高级版)【论文源码SQL脚本】&#xff0c;分享下哈。 项目视频演示 【免费】SpringBootVue在线教育(在线学习)系统(高级版) Java毕业设计_哔哩哔哩_bilibili 项目介绍…

TypeScript 针对 iOS 不支持 JIT 的优化策略总结

# **TypeScript 针对 iOS 不支持 JIT 的优化策略总结** 由于 iOS 的 **JavaScriptCore (JSC)** 引擎 **禁用 JIT&#xff08;Just-In-Time 编译&#xff09;**&#xff0c;JavaScript 在 iOS 上的执行性能较差&#xff0c;尤其是涉及动态代码时。 **TypeScript&#xff08;T…

项目部署一次记录

链路&#xff1a;&#xff08;用户&#xff09;客户端 → Nginx:192.168.138.100→ Tomcat &#xff08;程序&#xff09;:192.168.138.101→ MySQL/Redis 打开数据库&#xff1a;systemctl start mysqld 重启网络&#xff1a; systemctl restart NetworkManager 关闭防火墙&am…

C 语言学习笔记

文章目录 程序设计入门 --- C 语言第一周 程序设计与 C 语言1 计算机与编程语言&#xff1a;计算机怎么做事情的&#xff0c;编程语言是什么&#x1f4d2; 1.1 计算机的普遍应用 —— 离了它&#xff0c;现代人可能不会“活”了**&#x1f310; 科学计算&#xff1a;计算机的“…

服务器修改/home的挂载路径

写在前面&#xff1a;前段时间新装了一台服务器&#xff0c;/home目录原本是挂在在系统盘/dev/sda4的分区下&#xff0c;但是系统盘的空间比较小&#xff0c;为了保证后续使用起来&#xff0c;不会遇到磁盘很快就占满的情况&#xff0c;现在需要将 /home 独立出来&#xff0c;挂…

刷机维修进阶教程-----没有开启usb调试 如何在锁定机型的拨号界面特殊手段来开启ADB

有时候我们会遇到一些机型被屏幕锁 账号锁等锁定。无法进入系统界面。也没有开启usb调试的情况下如何通过一些操作来开启adb调试。然后通过adb指令来禁用对应的app顺利进入系统。以此来操作保数据等操作. 通过博文了解💝💝💝 1💝💝💝----了解一些品牌机型锁定状态…

虚拟文件(VFS)

核心知识点&#xff1a;虚拟文件系统&#xff08;VFS&#xff09; 1. 通俗易懂的解释 想象一下你家里的冰箱。你把食物放进去&#xff0c;不用管它是放在塑料盒里、玻璃罐里还是直接用保鲜膜包着&#xff0c;你只需要知道它在冰箱的哪个位置&#xff08;比如“蔬菜抽屉里”&a…

前后端联调实战指南:Axios拦截器、CORS与JWT身份验证全解析

前言 在现代Web开发中&#xff0c;前后端分离架构已成为主流&#xff0c;而前后端联调则是开发过程中不可避免的关键环节。本文将深入探讨前后端联调中的三大核心技术&#xff1a;Axios拦截器的灵活运用、CORS跨域问题的全面解决方案以及JWT身份验证的安全实现。通过本文&…

Postman基础操作

1.Postman是什么&#xff1f; Postman是接口测试的工具&#xff0c;简单来说它能模拟浏览器对服务器的某个接口发起请求并接收响应数据。 1.1 Postman工作原理 2.Postman发送请求 2.1 发送GET请求 我们知道GET请求是没用请求体的&#xff0c;所以我们需要将请求参数写在Param…

Elasticsearch Synthetic _source

_source 字段包含索引时传入的原始 JSON 文档体。_source 字段本身不被索引&#xff08;因此不可搜索&#xff09;&#xff0c;但会被存储&#xff0c;以便在执行获取请求&#xff08;如 get 或 search&#xff09;时返回。 如果磁盘使用很重要&#xff0c;可以考虑以下选项&a…