第 6 章 — 训练配置

一个典型的预设 JSON 导出。顶层字段:id (UUID)、name、(classic | mcmc | sceneClass | custom)、(schema 版本)、(时间戳)、 (自由文本)。嵌套对象包含对可复现性关键的参数 —— 导入时整个 块被反序列化为 TrainingConfig 结构,应用版本中的默认值 填充 JSON 中缺失的字段 (例如应用更新后)。要将预设传递给 另一台 Mac 的人,简单地发送此 JSON 文件即可。
TrainingConfig 结构是 RadianceKit 中每次训练运行的核心。 它收集影响训练的每个参数 —— 从最大迭代数到八个学习率, 直到 MCMC、Mip-Splatting、Curriculum 和场景感知 Cap 逻辑的 专门字段。您在侧栏的训练配置部分 (Expert View) 中编辑它, 将其保存为预设,或作为 JSON 导出传递给另一台 Mac。训练时, 正是这个对象被冻结并交给 GPU 后端。
本章是面向高级用户和脚本作者的参考资料。它列出所有 81 个 公共字段、9 个静态预设和一个公开方法。源文件是 TrainingConfig.swift —— 有疑问时,其中的 doc-comment 和 Initializer 默认值作为真理来源。
目录:
+ 迭代 (T1–T2) + 学习率 (T3–T10) + Densification — Classic (T11–T16) + Loss (T17–T20) + SH 度数推进 (T21) + 性能 (T22–T25) + 诊断和点云准备 (T26–T30) + 正则化 (T31–T37) + Refinement (T38–T44) + Sky-Dome (T45–T48) + Adam + LR 时间表 (T49–T55) + 后处理 + Apple AI (T56–T60) + MCMC Densification (T61–T73) + Mip-Splatting (Q1.5) (T74–T76) + 自适应 Densification (Q5) (T77–T79) + Curriculum (Q6) (T80–T81) + 静态预设 (TP1–TP9) + 方法: + 哪个字段做什么? (速查表) + 危险字段
迭代 (T1–T2)
T1maxIterations
详细信息
默认: 30 000 (Initializer)、35 000 (.full)、200 000 (.fullMCMC) 范围: 1 000 – 500 000 (UI 滑块),逻辑中无硬 上限 定义于:
技术细节
后端执行的训练迭代总数。一次迭代 指对单个训练相机的前向渲染、对所有 Loss 组件 (L1 + SSIM + 可选正则化 + Sky Mask) 的反向传递,以及一次 Adam Optimizer 步骤。该数字直接影响其他计划:位置学习率遵循从 0 到 T1 本身或 T49 positionLRScheduleEndIteration 的 Cosine Annealing 曲线;Densification 在 T2 densifyUntilIteration 停止;MCMC Noise Decay 在 T69 mcmcNoiseDecayEnd 结束; SH 度数升级发生在 T21 中定义的三个标记。在经典 Densification 下,经验上的甜点在 20 000–35 000 次迭代 (Sessions 1–32、V546 测试),在 MCMC 下为 60 000–200 000 (V534)。超过预设值的大幅增加很少带来额外质量 —— Adam 动量饱和,且无 LR Decay 结束时 Loss 停滞。反过来,低于 ~5 000 导致未充分收敛的几何 (Density Control 没足够时间 进行 Clone/Split)。
T2densifyUntilIteration
详细信息
默认: 15 000 (Initializer)、5 000 (.full)、160 000 (.fullMCMC) 范围: 0 – 定义于:
技术细节
Densification 停止的迭代。在此之前, Gaussians 按 T11–T16 (Classic) 或 T67–T70 (MCMC) 参数化 的规则被克隆、分裂和裁剪;之后 Gaussian 数保持恒定,仅优化 位置、旋转、缩放、Opacity 和 SH 系数 (Refinement 阶段)。 在 3DGS 原始论文中该值是 T1 的 50%,在 RadianceKit 的 .full 预设中只有 ~14% (35 000 中 5 000) —— V310/V338 实验的结果,显示 5 000 次迭代后进一步 Densification 反而 恶化结果 (更多 Floater、更多内存需求,无质量增益)。MCMC 则将 Relocation 运行到 T1 的 80% (V504b),因为 MCMC 不 产生有害 Floater。T2 过小 (< 1 000) 时产生太少 Gaussians; Classic 过大 (> T1 的 50%) 导致过度增长和 RGB 饱和 离群点 (见户外过训练发现)。
学习率 (T3–T10)
T3positionLearningRate
详细信息
默认: 0.00016 范围: 1e-7 – 1e-3 (推荐) 定义于:
技术细节
训练开始时 (迭代 0) 每个 Gaussian XYZ 位置的 Adam 学习率。遵循 Cosine Annealing 曲线,在训练 过程中降至 T4 positionLearningRateFinal。默认 0.00016 来自 3DGS 原始论文 (Kerbl et al. 2023),在 RadianceKit 中即使 提高图像分辨率也不需缩放 —— 位置在世界坐标系中移动,而 非像素空间。大幅增加 (> 0.0005) 会让 Gaussians 不稳定。
T4positionLearningRateFinal
详细信息
默认: 1.6e-6 (Initializer)、1.6e-5 (.full、.fullMCMC) 范围: 1e-8 – 1e-3 定义于:
技术细节
位置学习率衰减的终止值。 Cosine Annealing 从 T3 衰减到此值。.full 中 10× 高于 Initializer 默认 (V45),使较长训练保持有用学习。
T5shDCLearningRate
详细信息
默认: 0.0025 范围: 1e-5 – 1e-2 定义于:
技术细节
SH DC 系数 (每 Gaussian 的基础 RGB 颜色) 的 Adam 学习率。比位置学习率高 ~15×,因为颜色 变化对 Loss 影响更直接。.full 中 2× (V188)。
T6shRestLearningRate
详细信息
默认: 0.000125 范围: 1e-6 – 1e-3 定义于:
技术细节
SH 高阶系数 (1–3 度,方向相关 反射) 的学习率。比 DC 低 20× —— 高阶 SH 是细微细节,需要 更稳定的优化。.full 中 2× (V188)。
T7opacityLearningRate
详细信息
默认: 0.05 范围: 0.001 – 0.5 定义于:
技术细节
每 Gaussian 透明度 (sigmoid 前的 原始 Logit) 的 Adam 学习率。高 (0.05),因为透明度是 1D 且 快速调节关键 (失效的 Gaussians 应快速变为 0)。.full 中 2× (V188)。
T8opacityLearningRateFinal
详细信息
默认: 0.05 范围: 0.001 – 0.5 定义于:
技术细节
Opacity 学习率的衰减目标 (实际 为常量,因 default 等于 T7)。默认情况下无 Opacity Annealing。
T9scaleLearningRate
详细信息
默认: 0.005 范围: 1e-4 – 0.05 定义于:
技术细节
每 Gaussian 缩放 (对数空间中的三个 轴) 的 Adam 学习率。.full 中 2× (V188)。
T10rotationLearningRate
详细信息
默认: 0.001 范围: 1e-5 – 0.01 定义于:
技术细节
每 Gaussian 旋转 (wxyz 四元数) 的 Adam 学习率。.full 中 2× (V188)。
Densification — Classic (T11–T16)
T11densifyGradThreshold
详细信息
默认: 2e-6 (Initializer)、1.1e-6 (.full) 范围: 1e-7 – 1e-4 定义于:
技术细节
Classic Densification 中触发 Clone 或 Split 的位置梯度阈值。高 → 更少 Gaussians,低 → 更多。 必须与 T22 trainingRenderScale 匹配 (1.0× → 1e-6,0.5× → 2e-6,0.25× → 4e-6)。减半可产生 2–4× Gaussians,可能耗尽 GPU 内存。
T12densifyFromIteration
详细信息
默认: 500 范围: 0 – 5 000 定义于:
技术细节
Densification 启动的迭代。 首次 500 迭代是 Warmup,场景大致定位,无 Densify。
T13densifyInterval
详细信息
默认: 100 (Initializer)、200 (.full) 范围: 50 – 500 定义于:
技术细节
Densification Pass 之间的迭代 间隔。.full 中 V112 调到 200,以减少 Floater。
T14pruneOpacityThreshold
详细信息
默认: 0.005 (Initializer)、0.001 (.full) 范围: 0.0001 – 0.05 定义于:
技术细节
Prune 时间步移除 Gaussians 的 最小 Opacity。.full 0.001 (V393) 移除较少 (更保留), 保持更多细节。
T15opacityResetInterval
详细信息
默认: 3 000 (Initializer)、100 000 (.full、.preview) 范围: 100 – 1 000 000 定义于:
技术细节
Opacity 全局重置的间隔 (Inverse-Sigmoid 0.01)。默认 3 000 来自 3DGS 论文,但破坏 RadianceKit 的短训练 —— V194 在 .full 中禁用 (100 000 = 有效关闭)。危险字段:在 < 10K 训练中 < 100K 值破坏收敛。
T16maxScreenSize
详细信息
默认: 20 范围: 5 – 100 定义于:
技术细节
Gaussian 最大屏幕大小 (像素), 超过则强制 Split。
Loss (T17–T20)
T17ssimWeight
详细信息
默认: 0.2 (Initializer)、0.05 (.fullMCMC) 范围: 0.0 – 1.0 定义于:
技术细节
SSIM 损失 vs L1 损失的权重。 0.2 来自原始论文。MCMC 用更低 (0.05) 以让 L1 主导 (V521b/V534)。
T18ssimWeightRefinement
详细信息
默认: 0.2 范围: 0.0 – 1.0 定义于:
技术细节
Refinement 阶段 (Densify Until 后) 的 SSIM 权重。可不同于 Densification 阶段。
T19edgeLossWeight
详细信息
默认: 0.0 范围: 0.0 – 1.0 定义于:
技术细节
Sobel 边缘 Loss 的额外权重。 保持 0,因为带来 Floater。
T20skyMaskingEnabled
详细信息
默认: false 定义于:
技术细节
启用基于 Apple Vision 的天空掩码。 详见第 3 章 S7。
SH 度数推进 (T21)
T21shDegreeUpgradeIterations
详细信息
默认: [1000, 2000, 3000] (Initializer)、[2000, 5000, 8000] (.full、.fullMCMC) 定义于:
技术细节
SH 度数从 0 升到 1、1 到 2、2 到 3 的迭代时间表。早期升级在低分辨率下不太有效。V228 推迟到 2K/5K/8K 改进结果。
性能 (T22–T25)
T22trainingRenderScale
详细信息
默认: 1.0 (Initializer)、0.5 (.preview)、0.25 (.quickTest) 范围: 0.25 – 1.0 定义于:
技术细节
训练渲染分辨率缩放。详见 I22。
T23resolutionWarmupScale
详细信息
默认: 0.5 范围: 0.25 – 1.0 定义于:
技术细节
Warmup 阶段的初始 Render Scale。 之后逐步升到 T22。
T24tileSize
详细信息
默认: 16 范围: 8 – 32 定义于:
技术细节
GPU Tile 渲染的 Tile 大小。 16×16 经过 Apple Silicon 优化。
T25throttleDelayMs
详细信息
默认: 0 范围: 0 – 100 定义于:
技术细节
迭代之间的人为毫秒延迟。 详见 S6。
诊断和点云准备 (T26–T30)
T26depthDistortionWeight
详细信息
默认: 0.0 范围: 0.0 – 1.0 定义于:
技术细节
深度扭曲正则化权重。在 Q1.5 中评估,无明显胜利,保持 0。
T27singleViewOverfit
详细信息
默认: false 定义于:
技术细节
仅对单个视图训练以诊断。 Debug 工具,不用于生产。
T28maxCameras
详细信息
默认: 0 (无限制) 范围: 0 – 10 000 定义于:
技术细节
训练相机数的硬上限。0 = 无限制。 用于子集采样。
T29maxInitialPoints
详细信息
默认: 0 (无限制) 范围: 0 – 1 000 000 定义于:
技术细节
SfM 初始点云的硬上限。 0 = 全部。在大点云上有用。
T30cameraClusterOutlierMultiplier
详细信息
默认: 5.0 范围: 1.0 – 20.0 定义于:
技术细节
相机离群点检测中的距离 乘数 (比 cluster 中位数远多少倍视为离群点)。
正则化 (T31–T37)
T31coarseToFineBlurRadius
详细信息
默认: 0 范围: 0 – 10 定义于:
技术细节
训练目标的模糊半径 (Coarse-to-Fine)。
T32scaleRegWeight
详细信息
默认: 0.0 范围: 0.0 – 0.1 定义于:
技术细节
Gaussian 尺度的正则化权重。 V549f 测试灾难性,保持 0。
T33anisotropyRegWeight
详细信息
默认: 0.0 (Initializer)、0.1 (.full) 范围: 0.0 – 1.0 定义于:
技术细节
各向异性正则化权重 (S9 通过 UI 启用)。.full V438 启用。
T34scaleRatioPruneThreshold
详细信息
默认: 10.0 范围: 2.0 – 50.0 定义于:
技术细节
Scale 比例阈值,超过则 Prune 针状 Gaussians。
T35opacityRegWeight
详细信息
默认: 0.0 范围: 0.0 – 0.1 定义于:
技术细节
Opacity 稀疏性正则化权重 (强制接近 0)。
T36opacityDecayFactor
详细信息
默认: 0.0 (Initializer)、0.9995 (.full、.fullMCMC) 范围: 0.0 – 1.0 定义于:
技术细节
每次 Densify 循环后 Opacity 衰减 因子 (HTGS,Eurographics 2025)。.full 14% L1 改进 (V546)。
T37opacityDecayInterval
详细信息
默认: 50 范围: 10 – 500 定义于:
技术细节
Opacity Decay 的间隔。 V546 中 50 最优。
Refinement (T38–T44)
T38gradientAccumulationSteps
详细信息
默认: 1 (Initializer)、2 (.fullMCMC) 范围: 1 – 4 定义于:
技术细节
梯度累积的视图数。 2 = MCMC Quality (V544a,6% 改进)。
T39testViewIndices
详细信息
默认: [] 定义于:
技术细节
Holdout 评估的测试视图索引。 危险字段:手动设置可使基准测试无用 (所有索引 > N)。 让 –benchmark 标志设置。
T40refinementPruneInterval
详细信息
默认: 0 (Initializer)、1000 (.full) 范围: 0 – 5000 定义于:
技术细节
Refinement 阶段中的 Prune 间隔。 .full 1000 = V438 引入。
T41refinementPruneOpacityThreshold
详细信息
默认: 0.005 范围: 0.0001 – 0.05 定义于:
技术细节
Refinement Prune 的 Opacity 阈值。
T42midTrainingCompactificationIterations
详细信息
默认: [] (Initializer)、[20000, 30000] (与 S8 一起) 定义于:
技术细节
中期训练 Compactification 的迭代列表。详见 S8。
T43frustumCullEnabled
详细信息
默认: false 定义于:
技术细节
训练相机视锥外的 Gaussians 被 Cull。仅 CLI。
T44frustumCullExpansion
详细信息
默认: 1.2 范围: 1.0 – 3.0 定义于:
技术细节
Frustum 扩展因子,以保留 临界外区域的 Gaussians。
Sky-Dome (T45–T48)
T45skyDomeEnabled
详细信息
默认: false 定义于:
技术细节
启用 V549e Sky-Dome 投影。 详见 S10。
T46skyDomeSampleCount
详细信息
默认: 5000 范围: 1000 – 20000 定义于:
技术细节
Sky-Dome 上要初始化的 Gaussians 数。
T47skyDomeRadiusMultiplier
详细信息
默认: 8.0 (Initializer)、59.0 (P9 Outdoor) 范围: 1.0 – 100.0 定义于:
技术细节
Sky-Dome 半径,作为场景半径 的倍数。
T48frozenGaussianCount
详细信息
默认: 0 范围: 0 – 1 000 000 定义于:
技术细节
前 N 个 Gaussians 不被优化 (冻结)。用于 Sky-Dome MVP 中的天空 Gaussians。当前未连接 到 Optimizer。
Adam + LR 时间表 (T49–T55)
T49adamResetIteration
详细信息
默认: 0 (无) 范围: 0 – 100 000 定义于:
技术细节
重置 Adam 矩的迭代。 0 = 永不重置。
T50positionLRScheduleEndIteration
详细信息
默认: 0 (= T1)、20 000 (.full)、160 000 (.fullMCMC) 定义于:
技术细节
位置 LR Cosine Annealing 的 结束迭代。0 = 与 T1 相同。.full V431 调到 20K。
T51extendedPhaseLRDecay
详细信息
默认: false 定义于:
技术细节
Refinement 阶段中的额外 LR 衰减。
T52adaptiveDensifyThreshold
详细信息
默认: 0.0 范围: 0.0 – 1.0 定义于:
技术细节
自适应 Densify 阈值, 用 Q5 自适应 Densification 启用。
T53mergeAfterDensification
详细信息
默认: false 定义于:
技术细节
Densification 后合并步骤。 不推荐。
T54densifyPhase2FromIteration
详细信息
默认: 0 范围: 0 – 50 000 定义于:
技术细节
两阶段 Densification 的 第二阶段开始。危险字段:测试中级联到 0 Gaussians。
T55densifyPhase2UntilIteration
详细信息
默认: 0 范围: 0 – 50 000 定义于:
技术细节
两阶段 Densification 的 第二阶段结束。危险字段。
后处理 + Apple AI (T56–T60)
T56postTrainingCompactification
详细信息
默认: true (.full, .fullMCMC)、false (其他) 定义于:
技术细节
启用 V443 后训练 Compactification。 详见 I26。
T57metalFXUpscaling
详细信息
默认: true 定义于:
技术细节
视口 MetalFX 放大。详见 I27。
T58mpsLanczosScaling
详细信息
默认: false 定义于:
技术细节
视口 MPS Lanczos 放大。详见 I28。
T59livePreviewInterval
详细信息
默认: 0 (Off) 范围: 0 – 10 000 定义于:
技术细节
Live Preview 更新间隔。详见 S5。
T60perceptualLossWeight
详细信息
默认: 0.0 范围: 0.0 – 0.2 定义于:
技术细节
Perceptual Loss 权重。详见 I29。
MCMC Densification (T61–T73)
T61densificationStrategy
详细信息
默认: .classic 选项: .classic, .mcmc 定义于:
技术细节
Densification 策略选择。 详见 I15。MCMC = NeurIPS 2024。
T62mcmcMaxGaussians
详细信息
默认: 150 000 (.fullMCMC)、1 189 511 (P8)、1 250 744 (P9) 范围: 0 – 5 000 000 定义于:
技术细节
MCMC 模式中 Gaussian 数硬上限。 0 = 使用 Mass-Extinction-Floor 150K。Cap 通过 resolveMcmcMaxGaussians 用 SfM 初始点数和 Buffer 容量 解析。
T63mcmcNoiseScale
详细信息
默认: 5e-5 (.fullMCMC)、5.61e-05 (P8) 范围: 1e-6 – 1e-3 定义于:
技术细节
MCMC 随机噪声尺度。 V467/V536 最优。
T64mcmcOpacityRegWeight
详细信息
默认: 0.0 范围: 0.0 – 0.1 定义于:
技术细节
MCMC Opacity 正则化权重。 危险字段:1.4.3 中 0.01 导致 Mass Extinction (460K → 5)。 1.4.4 起固定为 0。
T65mcmcScaleRegWeight
详细信息
默认: 0.0 范围: 0.0 – 0.1 定义于:
技术细节
MCMC Scale 正则化权重。 危险字段:与 T64 一同导致 1.4.3 Mass Extinction。固定为 0。
T66mcmcRelocationInterval
详细信息
默认: 100 (Initializer)、50 (Q7 sweeps) 范围: 10 – 500 定义于:
技术细节
MCMC Relocation Pass 之间的 间隔。
T67mcmcWarmupIterations
详细信息
默认: 500 范围: 0 – 5 000 定义于:
技术细节
MCMC Relocation 启动前的 Warmup。
T68mcmcDeadOpacityThreshold
详细信息
默认: 0.005 (Initializer)、0.01 (.fullMCMC) 范围: 0.0001 – 0.1 定义于:
技术细节
Gaussian 在 MCMC 中视为 "死"的 Opacity 阈值,因此可重定位。V535 最优。
T69mcmcNoiseDecayEnd
详细信息
默认: 0 (Initializer)、160 000 (.fullMCMC) 范围: 0 – 1 000 000 定义于:
技术细节
MCMC 噪声衰减结束的迭代。 80% T1 (V497c/V502)。
T70mcmcGrowthRate
详细信息
默认: 0.05 范围: 0.01 – 0.5 定义于:
技术细节
每个 Relocation 通过的 MCMC 增长率。
T71mcmcSigmoidK
详细信息
默认: 100 范围: 10 – 1000 定义于:
技术细节
MCMC 采样深度选择的 Sigmoid 因子 K。
T72mcmcCapMultiplier
详细信息
默认: 3.0 (.fullMCMC)、2.98 (P8)、5.32 (P9)、1.76 (P10) 范围: 0.5 – 20.0 定义于:
技术细节
MCMC Cap 与 SfM 初始点数的 乘数 (Auto-Scale 启用时)。Outdoor 5.32 仅在 Bicycle 156K init 点时工作 → 830K Cap。危险字段。
T73mcmcAutoScaleByScene
详细信息
默认: false (Initializer)、true (.fullMCMC) 定义于:
技术细节
启用 MCMC 自动按场景缩放。 详见 I17。
Mip-Splatting (Q1.5) (T74–T76)
T74useMipSplatting
详细信息
默认: false 定义于:
技术细节
启用 Mip-Splatting (Q1.5)。 2026-05-25 closed no-win。某些户外场景甚至降低 PSNR。
T75mipSmoothing3DScale
详细信息
默认: 0.2 范围: 0.05 – 0.5 定义于:
技术细节
Mip 3D 平滑缩放。
T76mipFilter2DVariance
详细信息
默认: 0.3 范围: 0.1 – 0.6 定义于:
技术细节
Mip 2D 过滤方差。
自适应 Densification (Q5) (T77–T79)
T77adaptiveDensification
详细信息
默认: false 定义于:
技术细节
启用 Q5 自适应 Densification。 单独 fail,与 Q6 一起 pass 1/3。
T78adaptiveWindow
详细信息
默认: 1000 范围: 100 – 5000 定义于:
技术细节
自适应 Densification 的 滑动窗口。
T79adaptiveDensifyMultiplier
详细信息
默认: 2.0 范围: 1.0 – 10.0 定义于:
技术细节
自适应 Densify 乘数。
Curriculum (Q6) (T80–T81)
T80curriculumResolutionRamp
详细信息
默认: false 定义于:
技术细节
Q6 课程学习中的分辨率 渐进。Q6 是 Q5+Q6 包的承载者。
T81curriculumSHProgression
详细信息
默认: false 定义于:
技术细节
Q6 课程学习中的 SH 推进。
静态预设 (TP1–TP9)
此处仅显示与 Initializer 默认值的结构差异。十个 UI 预设 P1–P10 的完整营销描述见第 7 章。
TP1.preview
详细信息
~10 GB RAM 以上系统的诊断/预览预设。覆盖:30 000 → 5 000、 15 000 → 3 500 (T1 的 70%)、T4 1.6e-6 → 1.6e-5 (10× 高,更少 激进衰减)、T5/T6/T7/T9/T10 各 2× (V176)、T15 3 000 → 100 000 (有效关闭,V172:Reset 破坏短训练)、T21 [1K, 2K, 3K] → [1K, 2K] (V182:Degree 3 不在 2K 中收敛)、T22 1.0 → 0.5
TP2.full
详细信息
生产质量 Classic。覆盖:30 000 → 35 000 (V550)、15 000 → 5 000 (V310 甜点)、所有 LR 2× (V188)、T4 1.6e-6 → 1.6e-5 (V45)、 T11 2e-6 → 1.1e-6 (V335)、T13 100 → 200 (V112)、T14 0.005 → 0.001 (V393)、T15 3 000 → 100 000 (V194)、T21 → [2K, 5K, 8K] (V228)、T36 0.0 → 0.9995 (V546 HTGS,14% 改进)、T33 → true (V438)、T40 0 → 1000 (V438)、T50 0 → 20 000 (V431)、T56 → true (V443)
TP3.fullClassicPaper
详细信息
Q1.5-A 测试,TP2 的兄弟,论文忠实 Classic。覆盖 TP2: T1 35 000 → 30 000、T2 5 000 → 15 000 (论文 50% T1)、T4 → 1.6e-6 (论文默认)、T5/T7/T9 回到论文默认 (0.05, 0.005, 0.001)、 T11 1.1e-6 → 2e-7 (校准到 Bicycle 上 ~1-2M Gs)、T13 200 → 100、T14 0.001 → 0.005、T15 100 000 → 3 000 (论文 §5.2,有风险)、 T36 0.9995 → 0.0、T50 20 000 → 30 000 (Cosine 跑 100% T1)
TP4.fullMCMC
详细信息
生产质量 MCMC。覆盖 Initializer:T1 30 000 → 200 000 (V534)、T2 15 000 → 160 000 (V504b 80%)、T4 → 1.6e-5、LR 时间表如 TP2、T17 0.2 → 0.05 (V521b/V534)、T21 → [2K, 5K, 8K]、 T61 → .mcmc、T62 150 000、T63 5e-5 (V467/V536)、T68 0.005 → 0.01 (V535)、T69 0 → 160 000、T72 3.0、T73 true、T15 3 000 → 200 000
TP5.fullMCMCMip
详细信息
Q1.5-D 测试,TP4 的兄弟,带 Mip-Splatting + 论文级 MCMC 预算。覆盖 TP4:T62 150 000 → 1 500 000 (10×)、T74 false → true
TP6.classicBalanced
详细信息
中等档 Classic。覆盖 TP2:T1 35 000 → 20 000 (V149)、 T50 20 000 → 0 (Cosine 跑 T1 = 20K,无扩展阶段)
TP7.mcmcPreview
详细信息
MCMC 诊断。覆盖 TP4:T1 200 000 → 60 000 (V494b)、T2 160 000 → 48 000 (80%)、T62 150 000 → 100 000 (V473b)、T69 160 000 → 40 000 (V494b)、T72 3.0 → 2.0
TP8.mcmcBalanced
详细信息
中等档 MCMC。覆盖 TP4:T1 200 000 → 120 000 (V518)、 T2 160 000 → 96 000 (80%)、T69 160 000 → 96 000 (80%)、T72 3.0 → 2.5
TP9.quickTest
详细信息
纯功能测试。覆盖 Initializer:T1 30 000 → 1 000、T2 15 000 → 500、 T11 2e-6 → 4e-6 (校准到 0.25× 分辨率)、T13 100 → 50、T15 3 000 → 100 000 (关闭,因为太短)、T22 1.0 → 0.25
方法: resolveMcmcMaxGaussians
签名: public func resolveMcmcMaxGaussians(initialPointCount: Int, bufferCapacity: Int) -> Int 定义于:
"MCMC 最多可让多少 Gaussians 生长?"问题的 唯一真理来源。从三个输入计算:配置的 T62 mcmcMaxGaussians (Mass-Extinction-Floor 150 000,如果 0)、(SfM 初始点数) 和 (预分配 Gaussian 缓冲区大小)。逻辑:
+ base = T62 > 0 ? T62: 150_000 (Mass-Extinction-Floor 防止 Initializer 默认 bug 如 1.4.3 Mass Extinction 事件) + 如果 T73 mcmcAutoScaleByScene && initialPointCount > 0 && T72 mcmcCapMultiplier > 0: - scaled = max(base, ceil(initialPointCount × T72)) 否则 + 如果 bufferCapacity > 0:return min(scaled, bufferCapacity) + 否则 return scaled
示例:Bicycle (Mip-NeRF 360,194 帧照片) → SfM-init ~156K 点,T62 = 150 000、T72 = 5.32、Buffer 容量 8M。Resolved Cap = min(8M, max(150K, ceil(156K × 5.32))) = min(8M, 830K) = 830K。这是 MCMC Relocation 逻辑遵守的有效增长 Cap。
计算 MCMC 中的实际最大 Splat 数。接受您的设置,查看场景初始有多少点,并按 Multiplier 缩放 (如果自动适应启用)。这样 Cap 适应场景, 而非对小场景和巨大场景强制相同值。您无需自己调用方法 —— 训练内部使用它。
哪个字段做什么? (速查表)
| 目标 | 要调的字段 |
|---|---|
| 远处更多细节 | T62 mcmcMaxGaussians 高、 T72 mcmcCapMultiplier 5+ |
| 一般更多细节 (Classic) | T1 maxIterations 高 (≤ 40K)、 T2 densifyUntilIteration ≤ T1 的 14% |
| 减少无人机飞行中的 Floater | T43 frustumCullEnabled 开、 T20 skyMaskingEnabled 开、T45 skyDomeEnabled 开 |
| 户外场景中漂亮的天空 | T45 skyDomeEnabled 开、 T47 skyDomeRadiusMultiplier 30–60 |
| 更小的导出文件 | 策略 .mcmc (T61)、 T56 postTrainingCompactification 开、T62 mcmcMaxGaussians ≤ 200K |
| 更快训练 | T22 trainingRenderScale 0.5、 T1 maxIterations 减半 — 但不要两个都做! |
| 更好的高光 | T21 shDegreeUpgradeIterations 带 [2K, 5K, 8K] (无早期前载)、MCMC + 200K iter |
| 保持 Mac 响应 | T25 throttleDelayMs 5–10 (消耗 ~15% 训练时间) |
| 更频繁的 Live 预览 | T59 livePreviewInterval 降到 10–20 |
| 阴影中更柔和的过渡 | T17 ssimWeight 略高 (0.15–0.25),但不超过 0.3 |
| 保持室内紧凑 | P10 Indoor 预设 (、 T72 = 1.76) |
危险字段
这些字段在错误配置时可能导致 OOM、应用崩溃、Gaussians Mass Extinction 或无用基准数据。需谨慎处理:
- T11 densifyGradThreshold — 减半可产生 2–4× Gaussians,迅速耗尽 GPU 内存。还要注意:必须与 T22 trainingRenderScale 匹配 (1.0× → 1e-6、0.5× → 2e-6、 0.25× → 4e-6)。 - T72 mcmcCapMultiplier — 大场景 > 200K SfM 初始点和 Multiplier > 5 时产生数百万 Gaussians 的 Resolved Cap。在 36 GB RAM Mac 上可能 OOM。Outdoor 预设 5.32 仅因为 Mip-NeRF-360-Bicycle 有 156K init 点 → 830K Cap。 - T39 testViewIndices — 手动设置可使基准 无用 (所有 indices > N → 无 Holdouts)。让 –benchmark 标志设置。 - T64 mcmcOpacityRegWeight 和 T65 mcmcScaleRegWeight — 1.4.3-Beta 设为 0.01 导致 Mass Extinction (一次迭代 中 460K → 5 Gaussians)。自 1.4.4 起固定为 0.0,但手动 增加可重现该问题。 - T15 opacityResetInterval — 如果不是 100 000+ (有效关闭) 且训练短于 10 000 迭代,Reset 破坏收敛。.preview 因此设为 100 000,尽管 maxIterations = 5 000。 - T54/T55 densifyPhase2* — 两阶段 Densification 在测试中级联到 0 Gaussians。两者保持 0。 - T74 useMipSplatting — Q1.5 closed-no-win 2026-05-25,在某些户外场景上甚至降低 PSNR。默认关闭, 仅研究 opt-in。
如果某字段在此列表上且您要更改,先备份当前预设 (导出为 JSON) 并考虑能否可复现地测量结果 —— 否则之后您不知道您是带来 改进还是恶化。