用户指南

第 2 章 — 检查器(专家视图)

专家模式为空 — 左侧是项目导航器,包含 Images/Cameras/Log,标题栏「Images (0)」和放置区域「Drop images here / or tap + to import」,中间是空的视口,右侧是检查器,包含六个折叠的分区(Presets、Cameras & Capture、Training、Progress、Look、Export),每个分区都有标题和灰色阶段子行;底部是状态栏「Idle」,带绿色启动按钮和红色停止按钮
专家模式为空 — 左侧是项目导航器,包含 Images/Cameras/Log, 标题栏「Images (0)」和放置区域「Drop images here / or tap + to import」,中间是空的视口,右侧是检查器,包含六个 折叠的分区(Presets、Cameras & Capture、Training、 Progress、Look、Export),每个分区都有标题和灰色 阶段子行;底部是状态栏「Idle」,带绿色启动按钮和 红色停止按钮

导入前的空检查器: 左栏显示 Images、Cameras 和 Log 三项, 下方是标题栏「Images (0)」和放置区域「Drop images here / or tap + to import」。中间的视口是空的。右侧是检查器,包含六个折叠的分区: Presets、Cameras & Capture、Training、Progress、Look 和 Export。每个 标题下方都有一行灰色文字,说明该分区的作用及生效时机 — 「Ready-made recipes — they replace the training settings」(Presets)、「Before training · decides how camera positions are solved · applies to the next run」(Cameras & Capture)、「Before training · drives scene build-up and optimization · applies to the next run」(Training)、 「Display only」(Progress)、「After training · applies immediately · reversible any time」(Look)以及「Leveling the floor turns the view at once; the chosen orientation and format apply when saving」(Export)。 最下方是状态栏,显示状态「Idle」以及绿色启动按钮和红色停止按钮;右上角是 Simple/Expert 切换开关,这里设置为 Expert。

导入了 35 张图片的检查器 — 标题栏「Images (35)」,文件名 IMG_0953.JPG 依次递增,视口仍为空,状态为「Idle」
导入了 35 张图片的检查器 — 标题栏「Images (35)」, 文件名 IMG_0953.JPG 依次递增,视口仍为空,状态 「Idle」

导入后的检查器: 图片列表的标题栏显示「Images (35)」, 下方是导入的照片,文件名从 IMG_0953.JPG 开始依次递增。此测试序列的 图片分辨率为 4032×3024 像素;Auto Render Scale 逻辑会读取该分辨率并 建议一个与之匹配的 Render Scale。视口仍为空,状态栏显示「Idle」。 左下角的绿色启动按钮现已激活,可用当前 Preset 启动训练。

训练中的检查器 — 标题栏「RadianceKit — Training 23%」,视口中是一只布绒鸭子在羊皮上的实时预览,进度 4,700/20,000,预计剩余时间 1m9s,指标栏 Loss 0.0109 / LR 2.0e-04 / SH 1 / Gaussians 16.0K,检查器中展开的 CLASSIC 分组,绿色标记的「Balanced 20K iters」
训练中的检查器 — 标题栏「RadianceKit — Training 23%」, 视口中是一只布绒鸭子在羊皮上的实时预览,进度 4,700/20,000,预计剩余时间 1m9s,指标栏 Loss 0.0109 / LR 2.0e-04 / SH 1 / Gaussians 16.0K,检查器中展开的 CLASSIC 分组,绿色标记的「Balanced 20K iters」

训练期间的检查器: 标题栏显示全局进度,这里是「RadianceKit — Training 23%」。视口实时渲染正在进行的重建 — 一只布绒鸭子摆在羊皮上, 已经清晰可辨(实时预览的刷新间隔可在 Settings → General → Training → Live Preview 中设置)。视口下方是进度显示(「4,700/20,000」、 「ETA 1m9s」)以及指标栏,包含 Loss 0.0109、LR 2.0e-04、SH 1 和 Gaussians 16.0K;左下角是暂停和停止按钮。检查器中 CLASSIC 分组已展开, 「Balanced 20K iters」带有绿色勾选标记。只有当某个参数偏离 Preset 时 才会出现「Modified」徽章 — 此处未见任何标记。侧边栏「Log」收集 SfM 与训练阶段的事件。

训练完成后的检查器 — 标题栏「RadianceKit — Training Complete — 8,708 Gaussians」,左侧「Complete」,8,708 个 Gaussians,Images 25 和 Cameras 35,状态栏「Completed」,20,000/20,000,指标栏 Loss 0.0075 / LR 0.0e+00 / SH 3 / Gaussians 9.7K,视口中是鸭子的完整重建结果,铺满画面
训练完成后的检查器 — 标题栏「RadianceKit — Training Complete — 8,708 Gaussians」,左侧「Complete」, 8,708 个 Gaussians,Images 25 和 Cameras 35,状态栏 「Completed」,20,000/20,000,指标栏 Loss 0.0075 / LR 0.0e+00 / SH 3 / Gaussians 9.7K,视口中是鸭子的完整 重建结果,铺满画面

训练后的检查器: 标题栏给出结果:「Training Complete — 8,708 Gaussians」。左栏显示「Complete」及相同的数字,另有 Images 25 和 Cameras 35 — 之所以是 25 张图片,是因为 Frame Quality 对话框从 35 张 照片中筛除了十张模糊的。状态栏报告「Completed」,进度为 20,000/20,000,指标栏为 Loss 0.0075、LR 0.0e+00、SH 3 和 Gaussians 9.7K。视口铺满显示完整的点云 — 轨道式拖拽导航已启用 (围绕场景中心旋转)。

这里出现两个不同的 Gaussian 数值是刻意为之:指标栏和 Training Metrics 给出的是训练结束时的状态(此处为 9,660,四舍五入为 9.7K),标题栏和场景给出的是自动清理流程之后的状态 (8,708)。两者之间经历了 Post-Training Compactification 以及 针状和碟状 splat 的移除。较小的那个数字是显示在视口中、并在导出时 保存下来的数字。Training Metrics 和 Loss History 两个分组现已填入 最终数值,Export 分区也已激活。

检查器是专家模式(⌘2)中的右侧边栏。它将所有与训练相关的参数汇集在 六个可折叠的分区中,自 2026-07-18 起按领域分组。默认自上而下 的顺序是:Presets、Cameras & Capture、Training、Progress、Look 和 Export。每个标题下方都有第二行文字,说明该分区所处的阶段 — 何时生效、能否撤销(例如 Cameras & Capture 处的「Before training · decides how camera positions are solved · applies to the next run」, Look 处的「After training · applies immediately · reversible any time」,Progress 处的「Display only」)。此前的两个分区已被合并: Metrics(指标)和Loss 图表现在是 Progress(进度)内部两个可分别展开的分组(「Training Metrics」与「Loss History」),而此前的 Enhancements 分区已 完全并入 Training。「Look」分区(训练后的图像调整)是 此前「Finishing」分区在实际界面中的重命名 — 出于兼容性原因, 其内部名称仍为「Finishing」,显示的标题则为「Look」(Training 也是 同样的模式,其内部名称为「Training Configuration」)。点击标题栏 即可折叠每个分区,也可通过拖放重新排列顺序。首次启动时, 各分区均处于折叠状态 — 上方图片中六个分区全部关闭;此后 App 状态 会在多次启动之间持续保存折叠和排序偏好。若已存在旧版排列设置,首次 启动时会一次性迁移到新的分组方式;Viewport ▸ Reset Inspector Layout 可恢复出厂时的初始状态。

检查器中的一系列控件,几乎以相同形式出现在设置(第 3 章)中 — 通常 是 SfM 后端、Sky Masking 及类似的默认值。这种区分是刻意为之:设置提供 的是适用于新建项目的、全局的模板,而检查器则针对当前打开的项目覆盖这些 值。只要熟悉了其中一侧的操作逻辑,另一侧也能上手即用。

专家模式下的左栏 — 项目导航器 — 并不属于检查器,但却是它的直接 邻居。在那里可以点击选择已导入的图片,用空格键在 Quick Look 中查看, 并通过减号按钮或删除键将其删除(可用 Cmd-Z 撤销)。检查器会跟随 当前侧边栏选择显示对应的详细信息,但七个主要分区始终保持可用。

Look-Sektion (L1–L5)

Look 区域(内部仍称为「Finishing」)自领域重新分组以来是 第五个 Inspector 区域 — 位于进度和导出之间 — 将所有训练后 的图像调整集中在一处。所有滑块都是非破坏性的:每个滑块都会在一份未经改动的 Pristine 快照(原始 DC 颜色、Opacity、缩放)上重新应用 Look 计算 — 因此这个调整是 幂等的,而非累加的。结果会实时显示在 Viewport 中(所见即所得,与后续导出完全一致),并会被烘焙进每一次导出。此区域只有在训练运行完成后才可用(之前会显示「Available after a training run completes.」);其数值会在每次新训练时被重置。只要有导出正在进行,所有滑块都会被锁定 — 会出现锁定提示「Locked while exporting — the file uses the current settings.」,且 GroupBox 处于禁用状态。

L1Saturation 滑块

位置

Inspector → Look 区域 → GroupBox → Saturation。

技术细节

滑块范围 0.5–1.2,显示两位小数(例如「1.00」)。按亮度值缩放每个 Splat 的 SH-DC 色度:1.0 = 不变,< 1.0 = 去饱和(颜色向灰阶靠拢),> 1.0 = 更浓郁。数学上是从 Pristine 快照重新计算 DC 颜色,因此反复滑动不会累加。已在 DJI 无人机素材(Pensford 高架桥)上验证过,这类素材往往色彩过饱和 — 无人机默认值为 0.82。只影响颜色基础(SH 0 阶),更高阶的 SH 系数不受影响。

L2Splat length 滑块

位置

Inspector → Look 区域 → GroupBox → Splat length。

技术细节

滑块范围 0.3–1.0,显示两位小数。在对数空间中将每个 Gaussian 的三个缩放轴向其平均值收拢(数值越小,收拢越强):1.0 = 不变,较小的值会让细长的「针状」Splat 变得更圆,0 则接近纯球体。针对细长、过度拉伸的 Splat 进行处理,而不改变整体大小,从而减少典型的「彩纸屑」伪影。从 Pristine 快照(原始对数缩放)出发应用,因此是幂等的。与 Splat size(L3)可交换,因为二者都在对数空间中运算。

L3Splat size 滑块

位置

Inspector → Look 区域 → GroupBox → Splat size。

技术细节

滑块范围 0.5–2.0,显示两位小数。在全部三个轴上均匀缩放每个 Gaussian:1.0 = 不变,< 1.0 = 更小/更密/更清晰,> 1.0 = 更大/更「蓬松」(填补 Splat 之间的空隙)。由于缩放值处于对数空间,乘法在此变为加性偏移 — 这与 Splat length(L2)可交换,因为恒定偏移不会影响与平均值的偏差。从 Pristine 快照出发,因此是幂等的。此版本新增功能。

L4Fade far region(含子滑块)

位置

Inspector → Look 区域 → GroupBox → 开关「Fade far region」以及子滑块「Fade start ×radius」和「Fade floor」。

技术细节

该开关会启用一个随距相机重心距离增加而衰减的径向 Opacity 效果 — 用于隐藏背景中观测薄弱的「远处彩纸屑」。仅适用于环绕拍摄:如果场景不符合条件(直线飞行、相机数量过少或退化),开关会显示为灰色;此时子滑块会被提示「Far-fade applies only to orbit captures (not this scene).」取代。适用性通过相机位置的方位角覆盖范围来判断(环绕拍摄会围绕重心并覆盖许多方位扇区,而直线飞行通常只覆盖约 2 个)。两个子滑块控制具体几何形状:Fade start ×radius(1.0–3.0)以环绕半径的倍数设置内半径,在此半径内保持完全不透明;Fade floor(0.0–1.0)是远超衰减半径之外的不透明度系数。重要的是:该衰减效果会跳过 Sky-Dome 区域(穹顶中已冻结的 Gaussians),以免有意保留的背景穹顶也被一并调暗。

L5Reset finishing 按钮

位置

Inspector → Look 区域 → GroupBox → 「Reset finishing」(底部,小按钮)。

技术细节

将所有 Look 设置重置为默认值(Saturation 1.0,Fade 关闭,Splat length 1.0,Splat size 1.0),并立即触发一次新的 Finishing,使 Viewport 跳回未经改动的训练状态。由于整个 Look 计算堆栈都是从 Pristine 快照幂等地进行计算的,「恢复默认」得到的正是最初的训练输出结果 — 反复来回调整不会造成任何质量损失。与该区域的所有滑块一样,在导出进行时会被锁定。

预设区域 (I1–I11)

预设区域是应用一套经过验证的配置的最快方式。内置预设(Capture Class、Classic、MCMC、Hybrid)提供了 经过验证的、可复现的起点;你也可以保存、导出、导入和分享 自己的预设。列表按类别分组(Capture Class、Classic、MCMC、Hybrid、Custom), 可以同时展开多个类别。通过 上下文菜单机制(右键点击某一行)可以访问导出、 复制以及——对于自定义预设——删除功能。

I1Save…按钮

位置

Inspector → 预设区域 → Save…按钮(底部的操作栏)。

技术细节

打开一个带文本输入框和 Save/Cancel按钮的弹出窗口。当前的训练设置状态会作为新的 自定义预设被持久化(JSON编码,跨应用保存)。保存操作会复制全部81个 训练参数以及当前的Densification策略。该预设会自动归入 Custom类别,无论它是从哪个内置预设派生而来。空名称和纯 空白输入会被丢弃。已存在的名称不会被拒绝——每个 预设都有自己独立的内部ID,重复名称在技术上是 允许的,但实际使用中会造成混淆。

I2Preset Name文本框

位置

Save弹出窗口 → 文本框"Preset Name"。

技术细节

简单的文本输入框,圆角边框,较宽的 形状。点击Save按钮时,该值会被作为预设名称 采用。UI上没有长度限制,但保存的名称 必须能被JSON编码,并且能在UI列表中显示——表情符号和 变元音都可以正常使用。弹出窗口打开时,内容会 自动重置为空字符串。只要该字段去除首尾空格后为空, Save按钮就会保持禁用状态。没有 自动建议功能,也不会预先填入当前激活预设的名称。

I3Cancel按钮(Save对话框)

位置

Save弹出窗口 → Cancel按钮(左侧)。

技术细节

关闭弹出窗口而不保存。放弃 文本框内容——下次打开时,它会再次被 Save…按钮逻辑(I1)重置为空。标准按钮样式, 没有确认对话框,没有快捷键。当前的TrainingConfig 保持不变,因为保存流程根本没有执行。

I4Save按钮(Save对话框)

位置

Save弹出窗口 → Save按钮(右侧,样式更醒目)。

技术细节

触发实际的持久化操作。再次 验证名称非空(防御性检查),然后将 当前的TrainingConfig作为JSON写入应用存储。随后 关闭弹出窗口。以蓝色突出显示,只要 文本框为空就保持灰显。如果保存失败(例如 应用存储已满——极不可能发生),目前 没有可见的错误对话框;该预设会在 下次应用启动时干脆不出现。

I5Export…按钮

位置

Inspector → 预设区域 → 操作栏 → Export…按钮。

技术细节

将当前选中的预设导出为 .radiancepreset文件(内部为JSON格式)。如果没有选中预设, 则处于禁用状态。点击时应用会打开一个Save对话框,预先填入 文件名(预设名称 + .radiancepreset扩展名)。 保存的格式包含完整的TrainingConfig以及 元数据(名称、类别、ID、内置标志)。在Finder中双击 会打开应用——但不会自动执行导入;用户 必须使用Import按钮(I6)。

I6Import…按钮

位置

Inspector → 预设区域 → 操作栏 → Import…按钮。

技术细节

打开一个文件对话框,只允许选择 .radiancepreset文件(禁用多选)。选择后 会加载JSON文件,进行验证,并插入到 Custom类别中——使用新的内部ID,以避免 与内置预设发生冲突。导入操作会自动将 类别设为Custom,即使导出的预设原本 是内置预设。损坏的文件或与旧 架构版本不兼容的文件会被静默拒绝,没有 错误对话框(不过控制台日志会给出说明)。

I7预设行(点击激活)

位置

Inspector → 预设区域 → 每个类别中的每一个预设行。

技术细节

点击一个预设行会用该预设中的值替换 TrainingConfig的所有字段,记住当前激活预设的ID, 并重置Modified状态。行前面的激活对勾 只有在该预设被选中且未被修改时才会出现。 一旦TrainingConfig中的某个值被更改(其他Inspector区域中的 滑块、步进器、开关),名称后面就会出现一个 橙色的"Modified"徽章。内置预设无法 被覆盖——如果做了修改,必须通过Save按钮 (I1)创建一份自己的副本。

I8上下文菜单"Export…"

位置

右键点击任意预设行 → 第一个菜单项 "Export…"。

技术细节

功能与I5(Export…按钮)完全相同, 但访问起来更方便——不需要事先选中该预设。 直接导出被点击行中的预设。对所有 预设类别(内置或自定义)都同样有效,没有 限制。导出内容包含内置标志和原始 类别,但在重新导入时,类别会像I6中 描述的那样映射为Custom。

I9上下文菜单"Duplicate"

位置

右键点击任意预设行 → 第二个菜单项 "Duplicate"。

技术细节

将该预设克隆到Custom类别中。生成 一个新的内部ID,在名称后附加" Copy",并保存 这份副本。对内置预设同样有效——克隆出来的 副本可以编辑。原件保持不变。TrainingConfig会 逐值复制(JSON往返),因此原件和副本之间 不存在引用绑定。

I10上下文菜单"Delete"

位置

右键点击自己的预设行 → 最后一个菜单项 "Delete"(红色,破坏性操作)。

技术细节

仅对Custom预设可见。内置预设 无法删除。该菜单项被标记为破坏性操作, 在上下文菜单中显示为红色,并放在分隔线之后, 以避免被误点。没有确认 对话框——点击一次即可立即删除该预设。被删除的 预设无法恢复(Cmd-Z在这里不起作用——当前版本中 撤销功能只适用于图片列表,不适用于预设 操作)。如果被删除的预设当时正处于激活状态, 当前的TrainingConfig保持不变,只是激活的 预设选择会被清空。

I11类别标题(展开/折叠)

位置

Inspector → 预设区域 → 每个类别标题 (Capture Class、Classic、MCMC、Hybrid、Custom)。

技术细节

每个类别都有各自的折叠状态, 默认值各不相同:精选组Capture Class启动时 展开,Classic、MCMC、Hybrid和Custom启动时 折叠。该状态 不会被持久化——应用重启后,所有类别都会恢复到 默认状态。箭头图标(chevron)会以动画方式旋转。标题右侧的 数字显示该类别中预设的数量。点击的 可点击区域覆盖整个标题区域。

训练配置区块(I12–I22)

训练区块的裁剪视图 —— Densification 作为三态切换 Classic | MCMC | Hybrid,当前激活的是 Classic,下方是灰显的 MCMC Quality(关)、Auto-scale by scene(开)和 Max Gaussians 150,000 及锁形提示;再往下单独分隔出 Depth-Priority Scatter(关)、Full-Resolution Training(关)、Max Iterations 5,000 和 Densify Until 3,500(带蓝色链条图标),滑块 SSIM Weight 为 0.20,Render Scale 为 50%
训练区块的裁剪视图 — Densification 作为三态切换 Classic | MCMC | Hybrid,当前激活的是 Classic,下方是灰显的 MCMC Quality(关)、Auto-scale by scene(开)和 Max Gaussians 150,000 及锁形提示;再往下单独分隔出 Depth-Priority Scatter(关)、Full-Resolution Training(关)、Max Iterations 5,000 和 Densify Until 3,500(带蓝色链条图标),滑块 SSIM Weight 为 0.20,Render Scale 为 50%

这里汇聚了训练运行的核心杠杆:Densification 如何工作、迭代次数多少、 SSIM 权重有多大 — 此外底部还有原本独立的 增强功能(Perceptual Loss、Outdoor 组、Advanced Densifier、 Post-Training 通道)。最上方是 Densification 的三态切换 Classic | MCMC | Hybrid。SfM 后端再在这里, 而是移到了独立的相机与拍摄区块(I12、I13)。三行 MCMC 设置("MCMC Quality"、"Auto-scale by scene" 和 "Max Gaussians") 在 Classic 模式下不再消失,而是保持可见并被 灰显;下方有一行带锁形图标的提示,说明需要如何修改 ("Only used by the MCMC and Hybrid densifiers — switch Densification above to change these.")。下面单独分隔出的一个区块汇总了所有 densifier 通用的设置项:Depth-Priority Scatter、Full-Resolution Training、成对绑定的 Max Iterations / Densify Until,以及滑块 SSIM Weight 和 Render Scale。

I12Camera Alignment 选择器

位置

Inspector → 相机与拍摄 → Camera Alignment (Projection 选择器下方的弹出菜单)。

技术细节

弹出菜单,而非分段选择器 — 标签文字太长,Inspector 窄栏容纳不下。显示哪些条目取决于构建版本:沙盒化的 App Store 版本提供Apple PhotogrammetryNative, 开发/DMG 构建则额外提供COLMAP。原因:COLMAP 是一个外部 命令行程序,沙盒化应用不允许启动外部二进制文件(App 审核指南 2.5.2)— 因此 Store 构建中不仅仅是灰显,而是完全没有 后端条目、Mapper 选择器及二进制路径:一个永远无法点亮的选项不是提示, 而是噪音。不要混淆:导入和导出 COLMAP 工作区纯粹是 Swift 文件解析,不需要安装 COLMAP,可在任何构建版本中使用 (第 1 章,M5)。Native 条目后的"(Beta)"后缀已经取消 — 自 v1.5.2 起 Native 不再是 Beta。选择结果决定下一次运行使用的 SfM 后端, 同时也控制下方哪些行可以操作(I13、High-Quality、Native SfM Recipe)。 界面脚注:对于未排序的照片集,管线始终用 Native 来对齐,无论选择器显示什么 — 这个方案只在此处存在。选择器 本身并不会被锁定(值本身并非不可用,只是被覆盖);取而代之的是一个 带分支符号的提示。

I13FOV Override 输入框(Native SfM)

位置

Inspector → 相机与拍摄 → FOV Override(始终可见, 仅当 Camera Alignment = Native 时可操作)。

技术细节

数值输入框(范围 0-170°),默认 0 = 从 EXIF 或启发式 方法自动确定。当输入图像是从不含焦距元数据的视频中提取出来时, 需要手动输入。典型值:iPhone Wide ≈ 73°,DJI Mavic Wide-Crop ≈ 70°, 全画幅传感器无人机 ≈ 84°。数值会被限制在 [0, 170] 之间 — 超出 范围的值会被直接拉回。仅影响原生 SfM 管线(Q4/Q5);Apple Photogrammetry 完全忽略此值。自 2026-07-18 起:在其他后端下, 此字段不再被隐藏,而是被灰显 — 与"High-Quality" 和"Native SfM Recipe"一起,并附带一行锁形图标提示("These configure the Native aligner — choose Native under Camera Alignment to change them.")。之前的隐藏方式掩盖了这些控件本身的存在。此门控与 所选后端相关,而非实际使用的后端 — 未排序照片集被转向 Native 的情况会由 I12 下方的提示单独说明。"Native SfM Recipe" 这一行 还需要一个未排序的照片集,否则会显示自己的说明行。

I15Densification 选择器

位置

Inspector → 训练配置 → Densification (分段选择器,始终可见)。

技术细节

在两种 Densification 策略之间切换:Classic(原始 3DGS 方法,使用 Clone/Split/Prune 和梯度阈值)和 MCMC(Stochastic Gradient Langevin Dynamics 结合 Relocation,NeurIPS 2024)。从 Classic 切换到 MCMC 时,应用会自动将 MCMC 专属字段设为经过验证的默认值 (Reg-Weights = 0、MCMC-Cap-Multiplier 3.0、Sample-/Noise-Schedule)。 若没有这个自动初始化,使用旧 Preset 的会话会遭遇 1.4.4 版的 MCMC-坍缩缺陷(460K→5 个 Gaussians,Watchdog 强制终止)。此选择器同时 决定哪些 Inspector 元素可见 — 选择 MCMC 时会出现 I16/I17。各字段 的详细作用见第 6 章,T11–T16(Classic)和 T61–T73(MCMC)。

I16MCMC Quality 开关

位置

Inspector → 训练 → MCMC Quality(始终可见,在 Densification = MCMC 或 Hybrid 时可操作)。

技术细节

将梯度累积切换为 2 步(激活)或 1 步(未激活)。 在执行优化器步骤之前,累积来自两个连续相机视角的梯度。这会使 优化路径更平滑,让最终结果略有但明显的提升。代价是训练时间翻倍。 对于非常长的训练(20 万次迭代),这会带来额外 10+ 分钟的等待时间 — 因此只有在真正需要最后那一点点质量提升时才值得开启。仅影响 训练本身,不影响导出格式或视口渲染。同样适用于使用相同 MCMC 机制的Hybrid模式。自 2026-07-18 起:在 Classic 模式下这一行不再消失,而是与 I17 及"Max Gaussians"一起被 灰显;下方显示"Only used by the MCMC and Hybrid densifiers — switch Densification above to change these."

I17Auto-scale by scene 开关

位置

Inspector → 训练 → Auto-scale by scene(始终可见,在 Densification = MCMC 或 Hybrid 时可操作)。

技术细节

激活后,有效的 Max Gaussians 上限会随 SfM 初始点数量 × MCMC-Cap-Multiplier(默认 3.0)缩放。举例:SfM 提供 25 万个初始点, 基础 Cap = 150K,Multiplier 3.0 → 有效上限 = max(150K, 750K) = 750K。 禁用时严格只使用基础值。基础值本身在正下方的 Max Gaussians一行中设置(自 1.8 起,默认 150,000,输入 限制在 10,000–30,000,000 之间)。若有效上限高于基础值,应用会以 明文提示("Effective cap for this scene: …")— 若数值过高, 还会附带 RAM 警告。该功能为 v1.4.5 引入,原因是超过 1000 帧的大型 户外拍摄,伴随高密度的 SfM 点云,用固定的 150K 默认上限会导致 Densification 被"饿死"— 多余的点留下,新的点无法产生。在自定义 Preset 中默认为关闭,在 MCMC 内置 Preset 中默认为开启。仅在训练 阶段起作用,不影响导出。自 2026-07-18 起:在 Classic 模式下, 此行会被灰显而非隐藏(提示行与 I16 相同);明文显示与 RAM 警告在此处刻意不出现,因为 Classic 根本不应用上限。

I18Max Iterations 步进器

位置

Inspector → 训练配置 → GroupBox → Max Iterations。

技术细节

步进器,范围 1,000–100,000,步长 1,000。决定优化器 迭代的总次数。与训练时间呈线性相关(减半 = 约 50% 时间)。经过验证 的常用值有 20K(Classic Balanced)、40K(Classic Quality)和 200K (MCMC Full)。超过 40K 后 Classic 几乎不再带来明显提升 — 收益 趋于平缓。修改此值时,如果链接功能(I19)处于激活状态,Densify Until 会按比例同步调整(默认比例:0.5,即 Densify-Until = Max/2)。

I19链接/取消链接按钮(Densify ↔ Iterations)

位置

Inspector → 训练配置 → GroupBox → Max Iterations 和 Densify Until 之间的小型链接按钮。

技术细节

切换按钮,用于冻结 Densify Until 与 Max Iterations 之间 的比例。激活时(链接图标高亮),每次修改 Max Iterations,Densify Until 都会按比例同步调整。取消链接时(链条加号图标),两个值保持 独立。默认为已链接,因为这反映了典型的相关性 — 当你把训练迭代 次数翻倍时,通常也希望 Densification 阶段按比例延长。设置链接按钮时 会根据当前值计算比例;典型比例为 0.5(Densify-Until = 迭代次数的 一半)。

I20Densify Until 步进器

位置

Inspector → 训练配置 → GroupBox → Densify Until。

技术细节

步进器,范围 500–50,000,步长 500。决定从哪个迭代索引 开始不再通过 Clone/Split(Classic)或 Relocation(MCMC)添加新的 Gaussians。达到该值后,只对位置和颜色进行细化。数值越高 = Gaussians 越多 = 文件越大,每次迭代耗时更长(每步 GPU 时间 +30-60%)。典型值: 15K(对应 30K Max-Iter)、20K(对应 40K)、100K(对应 200K MCMC)。 当链接(I19)激活时会自动按比例缩放。对 Classic 和 MCMC 的影响 不同:Classic 会完全停止增长,MCMC 停止 Relocation 逻辑,但 Sample-/Noise-Adaption 仍会继续运行。

I21SSIM Weight 滑块

位置

Inspector → 训练配置 → GroupBox → SSIM Weight。

技术细节

滑块,范围 0.0–1.0,步长 0.05,显示为"0.20"。 在 L1-Loss(0.0)和 SSIM-Loss(1.0)之间混合。L1 约束逐像素亮度, SSIM 约束结构相似性(边缘、局部统计特征)。默认值 0.2 来自原始 3DGS 论文(Kerbl 2023),对几乎任何场景都是稳健的折中方案。数值 更高(0.5+)会偏向保留细节,但可能忽略局部亮度误差。数值更低 (< 0.1)会导致锐利边缘处的细节损失。SSIM 计算在着色器中使用 11×11 的高斯窗口进行。性能方面:设为 0.0(仅 L1)时,训练大约快 8-12%,因为省略了着色器中的 SSIM 计算。

I22Render Scale 滑块

位置

Inspector → 训练配置 → GroupBox → Render Scale。

技术细节

滑块,范围 0.25–1.0,步长 0.25,显示为"100%"。相对于 源图像大小缩放训练渲染分辨率。对性能影响最大的杠杆:50% 可减少约 75% 的 GPU 时间(因为像素少了 4 倍),25% 可减少约 94%。梯度阈值 会自动按比例调整。滑块下方会显示以 MP 为单位的实时分辨率提示 (例如"2304×1296 (3.0 MP)")。如果当前值偏离推荐值,会以橙色文字 显示"— recommended: 50%"。该推荐值的目标是约 3 MP 的有效分辨率 — 这是 Apple Silicon GPU 处理效率最高的区间。例如 4K 源图像会 自动推荐 25%,全高清图像推荐 100%。修改此值还会触发缓冲区重新 分配。

增强功能组(位于训练分区中,I26–I29、I42–I44)

增强功能行的裁剪图,如今位于训练分区末尾——最上方是感知损失(Perceptual Loss)滑块,滑到最左边的“Off”,下方是 Outdoor 组,包含四个关闭的开关:Sky Masking、Person Masking、Floater Cleanup 和 Reconstruct Sky Dome,然后是折叠的行“Advanced Densifier (Expert)”并带有警告三角标志,最后是“Runs automatically at the end of training”组,其中 Post-Training Compactification(已开启)和 Remove Needle/Disc Floaters。每一行都有各自的说明文字
增强功能行的裁剪图,如今位于训练分区末尾— 最上方是感知损失(Perceptual Loss)滑块,滑到最左边的“Off”,下方是 Outdoor 组,包含四个关闭的开关:Sky Masking、 Person Masking、Floater Cleanup 和 Reconstruct Sky Dome,然后是 折叠的行“Advanced Densifier (Expert)”并带有警告三角标志, 最后是“Runs automatically at the end of training”组,其中 Post-Training Compactification(已开启)和 Remove Needle/Disc Floaters。 每一行都有各自的说明文字

这些组集合了改善图像质量的功能,但不会改变核心训练循环本身。截至 2026-07-18,它们还构成一个独立的 Inspector 分区,名为 Enhancements;自域重组以来,它们被安置在 Training 分区的底部。此前的 Viewport-Scaling 选择器(Off/MetalFX/Lanczos) 已彻底移除,且无替代:它从来没有起过任何作用——viewport 中的位块传输(blit)决定纯粹是几何性的——而且它的标签还错误地暗示了会有 放大处理,而实际的 Lanczos 处理步骤其实是对一张超采样图像做抗锯齿的 缩小运算。因此 viewport 中的显示相应地现在叫做 “Sampling”而不是“Scaling”(第 4 章);应用中任何地方都不会用 MetalFX 做放大处理。感知损失(Perceptual Loss,I29)虽然归属于这个组, 但它其实是训练本身的一部分——它作为额外的损失项在训练过程中生效; 它位于最上方,说明文字为“Multi-scale blur feature matching for structural similarity”。下面是 Outdoor 组,包含四个开关 ——Sky Masking、Person Masking、Floater Cleanup 和 Reconstruct Sky Dome(I42–I44)——都是用来对抗天空漂浮物的训练选项,此前位于设置 窗口,如今按项目单独存放在这里。接下来是折叠的行“Advanced Densifier (Expert)”,它带有警告三角标志,因为它背后隐藏着一些可能会破坏训练的 设置项。最后是“Runs automatically at the end of training”组, 包含 Post-Training Compactification(I26)以及“Remove Needle/Disc Floaters”开关。

I26Post-Training Compactification 开关

位置

Inspector → Training → “Runs automatically at the end of training” 组 → Post-Training Compactification。

技术细节

启用训练结束时的一个清理步骤:训练迭代完成后, 不透明度低于 0.01(即 1% 可见度)的 Gaussians 会被删除。这通常 能把文件大小缩减到大约一半,且不会造成可察觉的质量损失—— 因为这些 Gaussians 本来在视觉上就没有贡献。Compactification 作为 GPU 压缩(Compact)通道运行,根据 Gaussian 数量耗时从几分之一秒到几秒不等。 不会影响训练性能。如果关闭此开关,不可见的 Gaussians 也会被导出—— 这只在你打算把该格式用于进一步的训练阶段(Continue Training)时才有 意义,否则就是浪费存储空间。

I29感知损失滑块(Perceptual Loss)

位置

Inspector → Training → Perceptual Loss。

技术细节

滑块范围 0.0–0.2,步进 0.01,值为 0.0 时显示为“Off”,否则显示为“0.05”等。启用一个额外的损失项, 将渲染结果的多尺度高斯模糊与真值(Ground-Truth)图像进行比较 (3 个模糊尺度)。能捕捉到仅靠 L1+SSIM 无法识别的结构性差异。 0.05 到 0.1 之间的值能明显改善精细结构,同时只消耗少量训练时间—— 大约 5%(通过模糊卷积核的额外前向传播)。超过 0.15 训练会变得不稳定, 质量反而下降,因为这个损失项会主导优化过程。它在训练期间起作用, 而不是在后处理阶段——尽管它在训练分区末尾的增强行中, 所以这并不是纯粹的事后提升。

I42Sky Masking

位置

Inspector → Training(Outdoor 组)→ “Sky Masking” 开关。按项目保存;默认:关闭。

技术细节

启用基于 Apple Vision 的训练前天空像素分割。 在训练开始前,会针对每个输入相机通过 Apple Vision 前景遮罩 提取天空区域(天空 = 背景),并作为逐像素遮罩与相应相机关联。 训练期间,每个像素的损失贡献会乘以天空遮罩的补集—— 天空像素对梯度的贡献为 0,因此那些投影到天空中的 Gaussians 不会得到优化信号,也就不会变得“更密”或“更亮”。能显著减少 Outdoor/无人机场景中的漂浮物(天空中的深色团块)。在经典 40K 训练中大约会造成 3% 的 L1 回归。只在天空清晰可辨的 Outdoor 场景中有意义;在室内场景或白色背景下,天空分割会错误地 识别区域,并阻挡有效的损失信号。该值按项目保存 (不再是应用全局设置),并跟随 Preset 或场景文件。

I43Floater Cleanup

位置

Inspector → Training(Outdoor 组)→ “Floater Cleanup”开关 (副标题“Remove Gaussians outside all camera views”)。按项目保存;默认:关闭。

技术细节

该开关控制 种效果,各自有 不同的触发条件;两者都在启动时推导到运行时本地配置中, 不会写入已保存的配置(否则它们会作为一次性锁定状态残留下来)。(1) 训练结束时的 Frustum-Union-Cull——所有相机视锥体并集之外的 Gaussians 会被移除(“从未被观测到”=“从未受到约束”,而这正是大多数 漂浮物的来源)。这部分没有策略限制条件,在 Classic、MCMC 和 Hybrid 下都同样运行——开关正是以此命名的。(2) 运行途中的两次额外密度控制步骤——仅在 Classic 下,且仅当迭代次数达到 30,000 以上时才会执行, 设定在运行长度的 55% 和 85%(例如在 35K–40K 的运行中大约对应 20K 和 30K)。这两个步骤都会寻找不透明度极低、屏幕空间尺寸极小 且没有损失贡献的 Gaussians 并清除它们。效果:最终 Gaussian 数量 减少约 5%–15%,无人机/户外场景中天空里的深色团块明显减少。 在近景室内场景中会造成大约 1%–3% 的 L1 回归,因此没有作为默认 开启。该值按项目保存,并跟随 Preset 或场景文件。 相较于早期版本的更正:该开关不再局限于 Classic 密度控制器,在 MCMC/Hybrid 下也不再显示为灰色不可用—— 之前的做法恰恰把 MCMC 和 Hybrid 用户挡在了对他们同样有效的 剔除功能之外。对于较短的运行(例如 P2 Preview 5K),只是运行 途中的那一部分不会执行。

I44Reconstruct Sky Dome

位置

Inspector → Training(Outdoor 组)→ “Reconstruct Sky Dome”开关。按项目保存;默认:关闭。

技术细节

在训练开始前启用天空穹顶(Sky Dome)投影。 在 SfM 之后、训练开始之前,会针对每个输入相机从图像中提取 S7 中共享使用的 Apple Vision 天空遮罩,天空像素会通过相机 内参反投影到一个虚拟球面上(默认半径为场景半径的 8 倍)。 在这个球面上会初始化大约 5000 个新的 Gaussians,其颜色取自 投影天空像素的平均值,缩放非常大(场景单位下为 1.0), 初始不透明度为 0.95。这 5000 个 Gaussians 并不是传统意义上的 天空遮罩——它们会像其他所有 Gaussians 一样接受训练,但由于 初始不透明度很高,会被留在一个薄薄的壳层内。结果:在 Outdoor/无人机场景的 360° 新视角中,会出现真实的天空颜色和 云层结构,而不是深色的彩色团块。该值会在重启后保持。仅在 至少具有 360° 相机覆盖的户外场景中有意义;对于没有天空视野的 纯物体拍摄场景没有任何效果。状态:实验性,尚待在更多户外 数据集上进行更广泛的 A/B 验证。

指标区域 (I30–I37)

训练完成后「Training Metrics」组的截图 — 八行数据:Iteration 20000 / 20000, Loss 0.007471, Learning Rate 0.00e+00, SH Degree 3, Gaussians 9,660, GPU Memory 5.7 MB, Speed 223.7 it/s, Elapsed 1:29
训练完成后「Training Metrics」组的截图 — 八行数据:Iteration 20000 / 20000, Loss 0.007471, Learning Rate 0.00e+00, SH Degree 3, Gaussians 9,660, GPU Memory 5.7 MB, Speed 223.7 it/s, Elapsed 1:29

训练进行期间,指标组(「Training Metrics」,进度 区域中两个可折叠组之一)会显示来自训练循环的八个实时数值。训练开始前该区域为空(「Start training to see live metrics」)。 所有数值大约每 ~30 次迭代更新一次(实时指标的更新频率)。该区域为只读——没有任何元素 可以点击或修改。如需更深入的分析,请查阅位于 ~/Documents/RadianceKit/Logs/ 下的 JSONL 训练日志。

I30Iteration

位置

Inspector → 进度 → Training Metrics → Iteration。只读。

技术细节

显示格式为「4523 / 40000」——当前 迭代数与计划的总迭代数。与训练循环同步计数,训练循环大约每 ~30 次迭代推送一次数值。第二个数字对应 启动时刻的最大迭代数值;即使用户之后调整了步进器,该值也不再 改变——正在进行的运行使用其自身的快照副本。如果 App 通过训练菜单追加迭代数(Continue Training +5K/+10K/+20K),分母会相应增大。

I31Loss

位置

Inspector → 进度 → Training Metrics → Loss。只读。

技术细节

带六位小数的浮点数值(例如 「0.024385」)。度量组合后的 L1+SSIM 损失(混合比例由 I21 SSIM Weight 控制),外加可选的感知损失(Perceptual Loss,I29)以及其他 正则项。该数值的量级并非绝对值,而是依场景而定—— 大多数比较都要求使用同一数据集。良好配置下的典型 最终值:- Classic Quality 40K iters: 0.022–0.025(Horse、Truck、Garden)- MCMC Full 200K iters:0.024–0.028 - 户外无人机 30K:0.030–0.060(受几何结构影响偏差) - 室内公寓:0.018–0.025

若 5K 次迭代后数值仍高于 0.10,说明可能存在 SfM 问题(相机位姿不佳)——应中止并重新计算 SfM。

I32Learning Rate

位置

Inspector → 进度 → Training Metrics → Learning Rate。只读。

技术细节

以科学计数法显示(例如「1.60e-04」)。 位置(Position)参数当前的学习率(3DGS 有六个独立的 学习率,分别对应位置、SH-DC、SH-Rest、不透明度、缩放、旋转——此处 显示的是位置学习率,作为代表性数值)。默认初始值为 1.6e-4,通过指数衰减在训练结束时降至 ~1.6e-6。 衰减方式可通过训练配置中的学习率调度字段(第 6 章中的 T 字段)调整。若学习率异常地保持较高(例如 10 000 次迭代后 仍为 1e-3 或更高),可能表明加载了有误的 配置。

I33SH Degree

位置

Inspector → 进度 → Training Metrics → SH Degree。只读。

技术细节

取值范围为 0-3 的整数。用于颜色 表示的球谐(Spherical Harmonics)阶数。从 0 开始(仅有 DC 分量,即每个 Gaussian 的方向无关颜色——也就是仅有 一个 RGB 常数),在训练过程中逐步提升到 3。默认调度在第 1000/2000/3000 次迭代时将阶数各提升 1 级。SH-3 对应每个 Gaussian 48 个颜色系数 (3 个 RGB 通道 × 16 个球谐基函数)。更高的 SH 阶数意味着更多 方向相关的反射效果(有光泽的表面在不同视角下会正确地呈现 不同外观),但也会占用更多存储空间且减慢 训练速度。

I34Gaussians

位置

Inspector → 进度 → Training Metrics → Gaussians。只读。

技术细节

模型中当前的 Gaussians 数量,以本地化 千位分隔符格式显示(例如「524.318」)。增长模式:- Classic:从 SfM 初始点开始(通常为 50K-300K),通过克隆/分裂(Clone/Split)增长,直到 接近 Densify Until,之后保持静止直至训练结束(受剪枝影响可能有微调) - MCMC:采样点不断添加,直到达到 MCMC 上限,之后 只进行重定位(Relocation)

健康的最终值:- Classic Quality:400K-700K(Horse 524K、Garden 800K) - MCMC Full:恰好达到上限(默认 150K,配合 Auto-Scale 乘数 × SfM 数量,视场景而定为 500K-1.5M)

在 MCMC 模式下,若该数值降至上限的 60% 以下 → 异常 (崩溃指标,表明正则项过于激进)。

I35GPU Memory

位置

Inspector → 进度 → Training Metrics → GPU Memory。只读。

技术细节

Gaussian 缓冲区内存占用的估算值,计算方式为 Gaussian 数量 × 616 字节(以内存显示样式格式化)。616 字节 是一个功能完整的 Gaussian 的大小(位置、 缩放、旋转、不透明度、3 阶 SH 系数、梯度 累加器)。该显示值 包含渲染器开销 (瓦片缓冲区、排序缓冲区、反向传播缓冲区)——实际的 GPU 内存需求通常是此数值的 2-3 倍。在 500K 个 Gaussians 时: 显示约 290 MB,实际约 700 MB。在 1.5M 个 Gaussians 时:显示约 880 MB,实际约 2.5 GB。在拥有 64+ GB 统一内存的 M3 Max 上无关紧要, 但在拥有 18 GB 内存的 M3 Pro 上已经是一个瓶颈。

I36Speed

位置

Inspector → 进度 → Training Metrics → Speed。只读。

技术细节

以每秒迭代次数显示,保留一位小数 (「24.3 it/s」)。由训练器计算为最近约 100 次迭代的 滑动平均值。典型数值:- Quick Preset(1K iters):80-120 it/s(时间太短,未达稳态)- Classic 20K @ 1.0 Render Scale(Truck 场景,M3 Max):25-35 it/s - Classic 20K @ 0.5 Render Scale:80-120 it/s - MCMC 200K @ 0.5 Render Scale:25-50 it/s (由于重定位而较慢)- 在 100 万以上 Gaussians 且全分辨率时: < 10 it/s

训练过程中速度下降是正常现象——Gaussians 越多 = 每次迭代的计算量越大。突然的骤降(例如从 30 → 5 it/s) 表明可能存在 GPU 热节流或有其他 App 在争抢资源。

I37Elapsed

位置

Inspector → 进度 → Training Metrics → Elapsed。只读。

技术细节

已经过的时间,格式为「4:23」(m:ss)或 「1:23:45」(h:mm:ss)。超过 1 小时后自动切换格式。仅测量 纯训练时间,不包括前置阶段(SfM 计算、图片 导入)。暂停/恢复时计时器仍会继续运行——因此是墙钟时间 (wall-clock),而非 CPU 时间。

损失曲线图部分(I39–I41)

Crop der Gruppe „Loss History” nach abgeschlossenem Training — Current: 0.0075, rechts grün Min: 0.0051, blaue Kurve von etwa 0.14 steil herunter und danach ausgefranst absinkend bis 20K, Achse links 0.14 / 0.071 / 0.0051; darunter das orangefarbene Diagramm „Gaussian Count” mit Achse von 16K bis 9K und Endwert 9,660
「Loss History」组在训练完成后的截图 — Current: 0.0075,右侧绿色 Min: 0.0051,蓝色曲线从约 0.14 陡峭下降,之后呈锯齿状持续下降至 20K,左侧坐标轴 0.14 / 0.071 / 0.0051;下方是橙色的「Gaussian Count」图表,坐标轴从 16K 到 9K,最终值为 9,660

损失曲线图组(「Loss History」,进度 分区中第二个可折叠组) 将训练过程随时间的变化可视化。它由两个图表组成:一个损失曲线图 (较大,位于上方,蓝色)和一个 Gaussian 数量图表 (较小,位于下方,橙色)。两者 都在训练过程中实时构建,并一直保留到下一次 训练开始。首次训练之前该区域为空 (「Loss curve will appear during training」)。这些图表是纯粹的 SwiftUI 路径绘图(没有使用 Swift Charts 框架),因此即使有 超过 100K 个点也能流畅渲染。

I39Current Loss(显示)

位置

Inspector → 进度 → Loss History → 左侧标签区域 「Current: 0.0075」。只读。

技术细节

最后一个损失采样点的浮点值, 以四位小数格式化显示。与 I31(Metrics 分区中的 Loss)相同, 只是这里的格式更紧凑。数据来源是 Loss History — 一个每约 30 次迭代添加一条记录的列表。 只有有限值会被加入该列表 — NaN/Infinity (极其罕见,出现在梯度爆炸 bug 的情况下)会被 过滤掉。

I40Min Loss(显示)

位置

Inspector → 进度 → Loss History → 右侧标签区域「Min: 0.0051」(绿色)。只读。

技术细节

当前训练运行中出现过的所有损失值的最小值。 每次都从 Loss History 实时重新计算 — 没有单独的持久化存储。以绿色字体显示, 因为「Min」= 「目前为止最好」。图表下边缘的绿色虚线 在视觉上标记出这个 Y 坐标位置。在续训(Continue-Training) 会话中,最小值追踪会重新开始 — 旧的历史记录 会在界面中被新的替换(而非追加)。如果当前 训练的效果比之前的差,那么显示的最小值就可能 大于之前的最终结果。

I41Gaussian Count 图表

位置

Inspector → 进度 → Loss History → 下方第二个图表 (橙色)。只读。

技术细节

Gaussian 数量随训练迭代次数变化的折线图。数据来源: Gaussian-Count-History(由训练器每约 30 次迭代填充的 (Iter, Count)配对列表)。Y 轴刻度在历史记录的 最小值与最大值之间动态调整。在 Classic 策略下,曲线通常表现为:持续上升直到 Densify Until, 之后趋于平缓(伴有小幅 Pruning 波动)。在 MCMC 下: 陡峭上升直到达到 Cap,然后呈水平线(Relocation 使 数量保持恒定)。结尾处出现下降是正常的 — 上图中 曲线从约 16K 降至 9,660,这是因为 清理步骤在最后一次迭代之后生效(I26)。真正令人担忧的 只是训练 过程中间 出现的骤降:那说明 Densification 剪枝过于激进 — 这可能是默认值设置有误,或是 已知的 MCMC 崩溃 bug(v1.4.4 热修复议题)的迹象。

如何解读损失曲线?

损失曲线图是 Inspector 中最重要的诊断工具 — 没有 其他指标能如此直接地显示训练是在有效推进 还是已经卡住了。典型的健康曲线形态是在最初的 1000-3000 次迭代中快速下降(从约 0.15 降到约 0.05),随后 在训练结束前呈缓慢而均匀的下降(降到 0.020-0.030)。以对数刻度看,这条曲线看起来就像一条 平滑的对角线。

损失出现平台期意味着什么? 如果曲线在数千次 迭代中保持平坦,有两种可能的解读: (a) 训练已经「收敛」— 损失无法再显著下降, 因为在给定的数据和设置下,模型已经达到了它能达到的最好效果。 这是我们期望的;这就是「完成了」。(b) 训练「卡住了」 — 损失其实还能继续下降,但优化陷入停滞 (局部最小值、学习率过小、Densification 已关闭)。 区分方法:如果损失值处于典型的良好范围内 (室内/物体场景为 0.020-0.030,室外场景为 0.040-0.060), 并且曲线在过去 5K 次迭代中保持平坦,那就是已经收敛了。 如果该值明显高于类似场景的常见水平(例如 0.08), 那就是卡住了。

注意:Gaussian 平台期 ≠ 损失平台期。 Gaussian 数量的平台期并 意味着「训练已完成」。 它只表示 Densification 已经停止添加新的点 — 要么是因为达到了 (Classic), 要么是因为 MCMC 的 Cap 已满。此后训练会继续进行, 只是在优化已有的点。真正的「完成」信号要看损失 曲线以及迭代次数显示(I30),而不是这里。

中止训练的经验法则: 如果损失曲线在 5000 次以上 迭代后仍高于 0.08 且几乎不再下降,那么很可能是 SfM 重建出了问题。此时应中止训练,查阅第 9 章, 确认所选的 SfM 后端是否适合该场景, 必要时切换到 COLMAP/Native,然后重新开始。宁可花 10 分钟 投入到更好的 SfM 上,也不要花 2 小时训练却因相机 对齐不佳而白费。

何时该使用检查器?

快速参考:针对每种典型使用场景,应该用哪个区域、哪些控件?

常见任务区域控件 ID
给最终的 Splat 去饱和LookL1(Saturation)
让针状/彩纸状的 Splat 变圆润LookL2(Splat length)
填补稀疏的云状区域 / 放大 SplatLookL3(Splat size)
在环绕视角下隐藏远处的“彩纸噪点”LookL4(Fade far region)
放弃 Look 的调整LookL5(Reset finishing)
加载预制的 SetupPresetsI7(点击某一行)
保存自己的 SetupPresetsI1 → I2 → I4
与同事共享 SetupPresetsI5(导出)或 I6 (导入)
切换 SfM 后端(例如因为 Apple 摄影测量 不够稳定)Kameras & AufnahmeI12(参见第 9 章)
处理没有 EXIF 焦距信息的 视频帧Kameras & AufnahmeI13(FOV Override)
COLMAP 性能优化:使用 GLOMAP 而非 经典模式Kameras & AufnahmeI14 — 仅限开发者版本, App Store 版本中没有 COLMAP 后端
从 Classic 切换到 MCMCTrainingskonfigurationI15
让训练运行更长时间TrainingskonfigurationI18(Max Iter)+ I20(Densify Until)— 通过 I19 关联
将 GPU 时间减半TrainingskonfigurationI22(Render Scale 设为 50%)
训练质量提升 +6%(MCMC)TrainingskonfigurationI16 (MCMC Quality)
具有大量 SfM 点的室外场景TrainingskonfigurationI17(Auto-scale by scene)
设置/更改 COLMAP 路径Kameras & AufnahmeI23 / I24 / I25 — 仅限开发者版本
缩小导出文件体积TrainingI26(始终保持开启)
精细结构最后那一点细节TrainingI29(Perceptual Loss 0.05-0.1)
监控训练过程Fortschritt ▸ Training MetricsI30 (进度), I36(速度)— 剩余时间显示在视口下方的 传输条中
提前评估质量Fortschritt ▸ Training MetricsI31 (5K 后 Loss < 0.05 = 良好)
怀疑 SfM 存在问题Fortschritt(两个组)I31 + I39 (5K 后 Loss > 0.08 → 需要重新做 SfM)
区分 Convergence 与 Stuck 状态Fortschritt ▸ Loss HistoryI39 + I40(读取 Loss 平台期)
识别 Densification 问题Fortschritt ▸ Loss HistoryI41 (Gaussian 曲线下降 → 存在 Bug)