高斯泼溅技术-从入门到精通 自适应密度控制Adaptive Density Control训练从稀疏点云初始化经过几万步梯度下降最终得到数百万个高斯体。这中间高斯体的数量和位置是如何从初始状态演变到最终状态的答案就是本文的主题——自适应密度控制。对应原论文第5节Optimization中关于密度控制的部分这是3DGS区别于纯粹梯度下降的关键机制。目录1. 为什么单靠梯度下降不够2. 密度控制的三种操作2.1 克隆Clone2.2 分裂Split2.3 剪枝Prune3. 触发条件与阈值设置3.1 密度控制的触发时机3.2 各操作的判断阈值4. 密度控制对渲染质量的影响5. 超参数调优指南6. 参考资料1. 为什么单靠梯度下降不够纯粹的梯度下降只能移动和调整已有高斯体的参数不能凭空创造或删除高斯体。这在两种情况下会导致问题欠重建区域Under-Reconstruction场景中某些细节区域如树叶的纹理、窗框边缘初始点云太稀疏高斯体数量不够无论怎么调参也表示不好因为根本没有足够的高斯体来覆盖这些区域。梯度下降会把已有的高斯体拉向这些区域但一个太大的高斯体试图覆盖过大范围时精度必然下降。过重建区域Over-Reconstruction某些区域的高斯体不合理地变大一个高斯体试图表示太复杂的局部结构导致渲染模糊或出现伪影。自适应密度控制的作用让高斯体的分布进化——在需要的地方增殖在不需要的地方裁剪最终让高斯体的密度自然地匹配场景复杂度。2. 密度控制的三种操作2.1 克隆Clone触发条件高斯体的位置梯度∥ ∇ μ L ∥ \|\nabla_\mu \mathcal{L}\|∥∇μ​L∥超过阈值τ p o s \tau_{pos}τpos​且高斯体当前尺度较小max ⁡ ( s x , s y , s z ) ≤ τ s c a l e \max(s_x, s_y, s_z) \leq \tau_{scale}max(sx​,sy​,sz​)≤τscale​。操作在原高斯体旁边创建一个完全相同的复制体相同的μ \boldsymbol{\mu}μ,Σ \boldsymbol{\Sigma}Σ,α \alphaα, SH然后沿梯度方向轻微偏移其位置。直觉解释位置梯度大意味着这里渲染误差大需要调整尺度小意味着这个高斯体本身很小但还不够用来覆盖这个区域。克隆一个一样的放旁边用更多的高斯体覆盖同一区域增加局部密度。原始状态 克隆后 [Gs] ←大梯度 [Gs][Gs] 小高斯体复制一个放旁边一起覆盖细节区域2.2 分裂Split触发条件高斯体的位置梯度∥ ∇ μ L ∥ \|\nabla_\mu \mathcal{L}\|∥∇μ​L∥超过τ p o s \tau_{pos}τpos​且高斯体尺度较大max ⁡ ( s x , s y , s z ) τ s c a l e \max(s_x, s_y, s_z) \tau_{scale}max(sx​,sy​,sz​)τscale​。操作删除原高斯体用原协方差矩阵对应的概率分布采样两个新的中心位置生成两个尺度缩小各方向乘以1 / 1.6 1/1.61/1.6的系数的高斯体替代原高斯体。直觉解释位置梯度大 尺度大意味着一个大高斯体试图表示复杂的细节区域需要拆小。分裂后两个更小的高斯体可以各自聚焦于原来那个大高斯体覆盖范围内的不同子区域。分裂前 分裂后 [ Large Gs ] [Gs1] [Gs2] 大高斯体覆盖复杂区域 两个小高斯体各自负责子区域克隆 vs 分裂的判断逻辑高斯体小但不够密→克隆高斯体太大导致模糊→分裂。两者的判断依据都是梯度大小需要密度增加区别只在当前高斯体的尺度。2.3 剪枝Prune密度控制不只是增加高斯体还包括删除无用的高斯体条件1透明度剪枝α ϵ α \alpha \epsilon_\alphaαϵα​约0.005 0.0050.005。几乎透明的高斯体对渲染几乎没有贡献保留只会占用内存和计算资源。条件2尺度剪枝高斯体在世界坐标或图像坐标中的尺寸超过阈值。过大的高斯体通常出现在场景边界或空旷区域是浮云效应floaters的来源会在某些视角产生伪影。条件3定期不透明度重置每隔固定步数对所有高斯体的不透明度做一次强制重置乘以一个小于1的系数之后通过训练恢复。这个操作的目的是让那些位置不好的高斯体在重置后梯度大、透明度低最终在下一轮剪枝中被删除。不重置的话这些占位置的高斯体会在整个训练过程中一直存在。前瞻3DGS的密度控制是基于启发式规则的参数调整不当容易导致高斯体数量爆炸占满显存或不足欠拟合。后续工作 3DGS-MCMC2024提出用马尔可夫链蒙特卡洛方法替代这套启发式规则让密度控制变成一个有原则的概率推断过程。3. 触发条件与阈值设置3.1 密度控制的触发时机密度控制不是每一步训练都做而是按固定间隔执行操作频率克隆 / 分裂Densification每densification_interval 100步剪枝Pruning每次Densification时同时执行不透明度重置Opacity Reset每opacity_reset_interval 3000步停止Densification从第densify_until_iter 15000步之后停止这个节奏意味着前15000步是高斯体数量快速增长的阶段之后只有剪枝高斯体数量逐渐减少并稳定。3.2 各操作的判断阈值参数名默认值含义densify_grad_threshold0.0002触发克隆/分裂的位置梯度阈值percent_dense0.01区分克隆和分裂的尺度阈值相对于场景尺寸min_opacity0.005透明度剪枝阈值max_screen_size20像素图像空间尺寸超过该值的高斯体被剪枝梯度累积方式位置梯度不是单步梯度而是最近densification_interval步的梯度均值绝对值。累积后求平均能更稳定地判断哪些区域真正需要增加密度避免被单步的噪声梯度误触发。4. 密度控制对渲染质量的影响通过训练日志中高斯体数量的变化曲线可以看出密度控制的效果高斯体数量对数尺度 1M | ∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙趋于稳定 | ∙∙∙∙ 500K| ∙∙∙∙ | ∙∙∙∙ 200K| ∙∙∙∙ | ∙初始点云 50K|___________________________________________▶ 训练步数 0 2k 4k 6k 8k 10k 12k 15k 30k ← 快速增长阶段 →|← 密度稳定阶段仍有微量剪枝→高斯体数量的快速增长阶段正是场景细节逐渐丰富的阶段——从远看轮廓正确但模糊到近看也能看清纹理和边缘细节。密度控制参数调得太激进densify_grad_threshold过小高斯体数量爆炸显存耗尽训练崩溃。密度控制参数调得太保守densify_grad_threshold过大高斯体不够细节丢失PSNR偏低。opacity_reset_interval的作用如果这个值太大重置频率太低“僵尸高斯体”位置不好但透明度已经学到较高值的高斯体会一直存在。适当频率的重置是避免高斯体数量虚高的保障。5. 超参数调优指南不同场景有不同的最优配置以下是一些经验规律室内近景场景如NeRF-Blender合成数据集# 场景规模小点云密可以适当提高梯度阈值python train.py-sdata/nerf_synthetic/lego\--densify_grad_threshold0.0002\# 默认值--densification_interval100# 默认值室外无约束场景如Mip-NeRF360数据集# 背景无限远高斯体数量多建议保守一些python train.py-sdata/360_v2/garden\--densify_grad_threshold0.0003\# 适当提高阈值减少高斯体数量--densify_until_iter20000# 可适当延长密度增长阶段高斯体数量过多显存不足的应对方案提高densify_grad_threshold减少密度增长触发频率降低densify_until_iter更早停止密度增长降低max_screen_size更积极地剪枝大高斯体降低训练分辨率减少图像空间计算量同时间接影响高斯体尺度阈值渲染结果有大量浮云场景边缘的噪声点降低max_screen_size或在训练后单独运行一次剪枝脚本。前瞻自适应密度控制的一个根本问题是它依赖梯度信号来判断哪里需要更多高斯体而梯度信号本身就有噪声。Gaussian Opacity Fields2024提出用不透明度场来驱动密度控制比纯梯度信号更稳定。另一个方向是 Compact3D2024通过在损失函数里加入高斯体数量的惩罚项让模型在训练过程中自动学习稀疏性而不依赖手动设定的阈值。6. 参考资料Kerbl, B. et al. (2023). 3D Gaussian Splatting.SIGGRAPH 2023. https://arxiv.org/abs/2308.04079 — 原论文第5节OptimizationKheradmand, A. et al. (2024). 3D Gaussian Splatting as Markov Chain Monte Carlo. https://arxiv.org/abs/2404.09591 — 用MCMC替代启发式密度控制Fan, Z. et al. (2023). LightGaussian: Unbounded 3D Gaussian Compression with 15x Reduction and 200 FPS. https://arxiv.org/abs/2311.17245 — 高斯体压缩与剪枝的后续工作Yu, Z. et al. (2024). Gaussian Opacity Fields: Efficient Adaptive Surface Reconstruction in Unbounded Scenes. https://arxiv.org/abs/2404.10772下一篇07 损失函数与优化策略

相关新闻

最新新闻

【研发类-框架和库Skills】azure-compute-batch-java 技能

【研发类-框架和库Skills】azure-compute-batch-java 技能

Azure Batch SDK for Java。运行大规模并行和HPC批处理作业,包括池、作业、任务和计算节点。 技能概述 azure-compute-batch-java 技能提供了Azure Batch SDK for Java的完整使用指南。Azure Batch是一项托管服务,用于在Azure中运行大规模并行和高性能…

2026/7/23 23:21:21
WAIC 2026:AI 长出身体,开始为结果负责!

WAIC 2026:AI 长出身体,开始为结果负责!

突发:WAIC 2026 盛大召开7 月 17 日至 20 日,2026 世界人工智能大会暨人工智能全球治理高级别会议主论坛(WAIC 2026)正式召开。作为一年一度的 AI 行业盛会,今年大会依然聚集了国内外大模型公司、AI 应用和硬件厂商&am…

2026/7/23 23:21:21
个人用户与企业选型必看:2026年远程控制软件全方位横评,从入门到精通

个人用户与企业选型必看:2026年远程控制软件全方位横评,从入门到精通

很多人选远程控制软件时有一个误区:把个人使用的感受直接套用到企业场景。 你用某款软件自己远程办公体验不错,就推荐给公司IT部门采购。结果发现——批量部署不支持、权限管理缺失、连接数不够用、安全审计缺失、连接被偷偷限制……这些在个人使用中根本…

2026/7/23 23:21:21
LeetCode Hot100(2.字母异位词分组)

LeetCode Hot100(2.字母异位词分组)

2.字母异位词分组题目给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。示例 1:输入: strs ["eat", "tea", "tan", "ate", "nat", "bat"]输出: [["bat"],[&…

2026/7/23 23:21:21
Java学习进程8

Java学习进程8

Java学习进程8 链表 继上篇明确了动态数组具备动态扩容,取值快等优势,但存在添加删除数据速度较慢等缺陷,链表的数据结构恰好弥补了这一短板。 链表原理 链表是不连续的线性存储结构,依靠每个节点内部的引用(指针&…

2026/7/23 23:21:21
Wan2.2-T2V-A5B:多模态AI文本转视频生成技术解析

Wan2.2-T2V-A5B:多模态AI文本转视频生成技术解析

1. 项目概述:Wan2.2-T2V-A5B的技术定位与核心价值Wan2.2-T2V-A5B是当前多模态AI领域最具突破性的文本转视频生成模型之一。作为Wan-AI系列的最新迭代产品,它在视频连贯性、细节还原和动态表现三个维度实现了显著提升。不同于早期版本(如Wan2.…

2026/7/23 23:16:21

月新闻