Source: docs/experiments/EXP-3D-16G-OPTIMIZATION-BOUNDS-V1/USER_PROTOCOL.md · Plain text

你现在位于:

https://github.com/KennyMcSimpson/measurement-scene-state.git

请基于已完成实验:

EXP-3D-DIRECT-STATE-CAPACITY-V1

执行下一阶段:

EXP-3D-16G-OPTIMIZATION-BOUNDS-V1

============================================================ 0. 本轮唯一目的 ============================================================

上一轮已经得到:

  1. RGB+D direct-state: 8^3 query AbsRel = 0.460804 16^3 = 0.402736 32^3 = 0.389382

  2. 8^3 → 16^3: gain = +0.058068 95% CI [0.028670, 0.091763] 13 improve / 1 tie / 3 worse

  3. 16^3 → 32^3: gain = +0.013353 CI [-0.004395, 0.032370] 尚未建立稳定收益。

  4. Renderer 64 → 128 samples 几乎没有收益。

  5. 425 / 425 direct states 都选择了最大预算 step=1000, 且最后三次 objective 仍下降。

  6. 8^3 bounds sensitivity: CURRENT RGB+D = 0.460804 GT-free alternative bounds = 0.398010

  7. Query-supervised oracle 也对 bounds 敏感。

因此本轮只回答两个问题:

Q1. 16^3 direct-state 在优化更充分以后, 真正可达的 context→query 几何性能是多少?

Q2. 使用一个冻结、部署可合法构造、 不读取当前 scene GT/query GT 的 bounds 规则, 是否能稳定优于 CURRENT bounds?

本轮结束后才决定:

是否值得训练新的 16^3 learned carrier。

============================================================ 1. 本轮禁止事项 ============================================================

严禁:

本轮不是做新方法。

本轮是:

OPTIMIZATION SUFFICIENCY + GT-FREE BOUNDS ATTRIBUTION

============================================================ 2. 数据角色 ============================================================

沿用上一轮 17 个:

CAPACITY_DEV_EXPOSED

场景。

这些场景已经曝光, 只能用于 attribution。

不得称为:

上一轮锁定的 final holdout:

继续完全禁止模型 forward / direct optimization / query score。

输出:

FINAL_HOLDOUT_TOUCHED=false

============================================================ 3. 创建独立实验目录 ============================================================

创建:

outputs/EXP-3D-16G-OPTIMIZATION-BOUNDS-V1/

docs/experiments/EXP-3D-16G-OPTIMIZATION-BOUNDS-V1/

至少包含:

README.md STATUS.md preregistration.json config.json scene_manifest.json optimization_budget_lock.json bounds_contract.json bounds_lock.json optimization_results.json optimization_sufficiency.json bounds_analysis.json query_oracle_diagnostic.json bootstrap_results.json cost_analysis.json integrity.json tests.json commands.sh git_commit.txt dirty.patch

raw/ figures/ audit/

============================================================ 4. 冻结主 representation ============================================================

本轮主 representation:

GRID = 16^3

Renderer:

64 samples

保持与上一轮完全一致:

不要重新定义 state。

8^3 只保留上一轮结果作 reference, 本轮不重新大规模 sweep。

32^3 不运行。

============================================================ 5. 主轨只做 RGB+D ============================================================

本轮主要科学轨:

RGB+D context-supervised direct state

允许:

禁止:

RGB-only 不再做完整 budget sweep。

如果需要, 只在最后选定的 16^3 配置上 做一个 secondary sanity, 但不能影响主决策。

============================================================ 6. 优化充分性:预注册固定 budget sweep ============================================================

上一轮 1000 steps 未收敛。

本轮预先锁定:

STEPS = 1000 3000 10000 30000

如果预计 30000 成本过高, 可以在正式运行前, 基于上一轮单 state wall-clock 预先改成:

1000 3000 10000

但一旦 formal 开始, 不得看 query 结果后增加 budget。

对所有 scenes / A/B contexts 使用完全相同的 budget list。

============================================================ 7. optimizer 必须冻结 ============================================================

沿用上一轮:

Adam LR = 0.03 clip = 1

以及相同:

不要同时调:

LR loss weights regularization optimizer

本轮只改变:

optimization budget

和:

bounds rule

否则无法归因。

============================================================ 8. checkpoint selection 规则 ============================================================

不能使用 sealed-query performance early stop。

对于每个 state:

保存固定 steps:

0 100 300 1000 3000 10000 30000

按实际锁定 budget 调整。

主分析同时报告两种规则:

A. FIXED-BUDGET

直接使用每个预注册 budget 的最终 state。

B. CONTEXT-OBJECTIVE SELECTED

在不超过该 budget 的 checkpoint 中, 只根据 context full objective 选择最佳 checkpoint。

绝不能使用 query score。

主 qualification 优先使用:

FIXED-BUDGET

context-selected 作为辅助诊断。

============================================================ 9. 必须检查真正的优化 plateau ============================================================

不能只看:

最后三次 objective 是否下降。

对每个 state / budget 记录:

定义预注册 plateau diagnostic:

例如最后 10% checkpoints 中:

relative objective improvement < threshold

并且:

gradient norm 不再系统下降

具体 threshold 必须在 formal 开始前写入:

optimization_budget_lock.json

它只用于判断优化充分性, 不得自动提前读取 query。

============================================================ 10. 训练预算比较必须看 query ============================================================

所有 states 在该 budget 完成并 seal 后, 才允许 evaluator 读取 query。

对每个 budget 报告:

Context AbsRel

Query AbsRel

Generalization gap

Wrong-scene damage

Context RGB MSE

Query RGB MSE

Opacity

Coverage

主要曲线:

optimization steps → context AbsRel

optimization steps → query AbsRel

optimization steps → generalization gap

============================================================ 11. 检查“继续优化 context 是否反而伤害 query” ============================================================

这是本轮很关键的分析。

对每个 scene/state:

计算:

ΔContext(step_i → step_j)

ΔQuery(step_i → step_j)

如果:

context objective 持续变好

但:

query 先改善后恶化

则说明:

更多优化可能增加 context overfitting, 不能简单认为“1000 steps没收敛,所以继续跑一定更好”。

统计:

报告 scene count。

============================================================ 12. GT-free bounds:只允许两个主配置 ============================================================

比较:

B0 = CURRENT_BOUNDS

B1 = FROZEN_GT_FREE_BOUNDS

不要增加第三、第四种 bounds。

============================================================ 13. CURRENT_BOUNDS ============================================================

保持上一轮:

[-6,-4,-6] to [6,4,6]

或源码对应的完全相同定义。

============================================================ 14. FROZEN_GT_FREE_BOUNDS ============================================================

沿用上一轮已经预先定义过的 GT-free 思路:

只使用:

global depth prior:

只能来自原 TRAIN scenes。

例如已经存在:

near = 0.214252 m far = 5.672045 m

或当前冻结 artifact 中对应的精确值。

使用训练集:

q01 / q99

深度 prior。

当前 scene 测试时:

只根据:

context camera rays + 冻结 near/far prior

构造 AABB。

额外规则:

必须与上一轮 alternative bounds 实现保持一致, 除非发现代码 bug。

不能读取:

============================================================ 15. bounds contract 必须程序化审计 ============================================================

生成:

bounds_contract.json

包含:

inputs_allowed: context_intrinsics context_extrinsics frozen_training_depth_prior

inputs_forbidden: context_depth_current_scene query_camera query_depth query_rgb carrier_prediction query_score

为每个 scene 保存:

bounds_hash camera_hash prior_hash

============================================================ 16. 2 × K 主实验矩阵 ============================================================

正式矩阵:

CURRENT_BOUNDS × budgets

GT_FREE_BOUNDS × budgets

即例如:

CURRENT × 1k CURRENT × 3k CURRENT × 10k CURRENT × 30k

GT_FREE × 1k GT_FREE × 3k GT_FREE × 10k GT_FREE × 30k

所有设置:

============================================================ 17. Query-supervised oracle 只做少量诊断 ============================================================

为了区分:

context inference vs optimization sufficiency

允许运行:

QUERY_ORACLE_16

但仅在:

CURRENT_BOUNDS

GT_FREE_BOUNDS

两个 bounds 下。

同样使用预注册 budget sweep。

oracle:

不能与 context-direct 放在 deployable 方法排名里。

============================================================ 18. Oracle 的作用 ============================================================

主要回答:

如果 query-supervised oracle 随着 1k→10k/30k 明显改善:

说明上一轮 oracle 也受到有限优化影响。

如果 oracle plateau 很早, 但 context-direct gap 仍大:

context inverse problem / visibility / evidence sufficiency 嫌疑更大。

如果 context-direct 与 oracle 随着 budget 增大一起接近:

优化不足是主要贡献因素之一。

============================================================ 19. 主要统计 ============================================================

正式统计单位:

scene

使用:

10,000 paired scene bootstrap seed 20260927 95% percentile CI

对于:

step_i → step_j

报告:

mean query gain CI median improved/tied/worse LOSO top1/top3 contribution

不能把 A/B 当独立 scene。

============================================================ 20. 优化充分性判定 ============================================================

输出:

OPTIMIZATION_STATUS=

UNDEROPTIMIZED PARTIALLY_SATURATED SATURATED QUERY_OVERFIT INCONCLUSIVE

建议:

UNDEROPTIMIZED:

更大 budget 持续稳定降低 query error, 且最大 budget 仍无 plateau。

PARTIALLY_SATURATED:

前期有稳定 query gain, 后期 gain 已很小或CI跨0。

SATURATED:

更大 budget 对 context/query 均无实际改善, objective也 plateau。

QUERY_OVERFIT:

context 持续改善, 但 query 随后系统变差。

============================================================ 21. bounds 判定 ============================================================

输出:

BOUNDS_STATUS=

GT_FREE_BETTER CURRENT_BETTER NO_CLEAR_DIFFERENCE INTERACTION_WITH_OPTIMIZATION

主判断不能只看 1k。

需要检查:

bounds × budget interaction。

例如:

GT-free 1k 很好, 但 10k 后 current 追上,

就不能简单说 bounds 是主要瓶颈。

============================================================ 22. 预注册 practical threshold ============================================================

延续上一轮:

stable practical gain:

mean gain >= 0.02

paired CI lower bound > 0

=75% scenes 不变差

engineering-good:

mean AbsRel <= 0.25

并且:

=75% scenes AbsRel <= 0.35

这些只是工程门槛, 不是官方 benchmark。

本轮不能事后修改。

============================================================ 23. 重新评估 16^3 是否值得训练 carrier ============================================================

定义:

CARRIER_TRAINING_READINESS=

READY PROMISING_BUT_NOT_READY NOT_READY

READY 至少需要:

  1. 16^3 context-direct 在最大充分 budget 的 query 表现稳定;

  2. optimization 已达到 SATURATED 或 PARTIALLY_SATURATED;

  3. GT-free bounds 规则已经冻结;

  4. full context query 几何 明显优于 frozen carrier;

  5. wrong-scene damage > 0 且 CI lower > 0;

  6. 结果不是单scene贡献;

  7. context→query gap 不再大到无法解释。

不要求 engineering-good 必须完全通过, 但如果没通过:

只能 READY_WITH_LIMITATION, README 必须明确。

============================================================ 24. 如果 GT-free 16^3 最终仍很差 ============================================================

不要训练 carrier。

进一步判断:

如果 query oracle 很好, context-direct 差:

CONTEXT_INFERENCE_BOTTLENECK=true

下一轮研究:

lifting / geometry inference / visibility / context supervision

如果 query oracle 也差:

REPRESENTATION_OR_BOUNDS_BOTTLENECK=true

下一轮才考虑:

state schema / resolution / bounds / renderer redesign

============================================================ 25. 如果 16^3 context-direct 已经很好 ============================================================

也不要在本轮训练 carrier。

只输出:

MATCHED_CARRIER_TRAINING_RECOMMENDED=true

下一轮单独建立:

EXP-3D-16G-MATCHED-CARRIER-TRAINING-V1

这样 attribution 和 training 不会污染在同一轮里。

============================================================ 26. RGB-only secondary check ============================================================

只有主 RGB+D 分析完成后, 允许在最终选定的:

BOUNDS + BUDGET

上重新跑一次:

RGB_ONLY 16^3

只作为 secondary diagnostic。

禁止为 RGB-only 单独调:

LR budget bounds loss

报告:

RGBD vs RGB-only

差异。

如果 RGB-only 仍然失败:

不能用 RGB+D 成功 宣称 RGB-only geometry adaptation 已解决。

============================================================ 27. 计算成本 ============================================================

对每个 budget 报告:

seconds/state total optimization seconds peak allocated VRAM peak reserved VRAM render latency

估算未来 carrier training 不属于本轮实测, 必须明确标记 estimate。

============================================================ 28. Final holdout 继续禁止 ============================================================

无论本轮结果多好:

FINAL_HOLDOUT_TOUCHED=false

因为本轮仍然是:

exposed attribution.

真正 holdout 只能给未来 冻结的 learned carrier 使用。

============================================================ 29. Regression tests ============================================================

至少新增:

  1. query GT cannot affect context-only optimization.
  2. query camera unavailable before state seal.
  3. current-scene depth cannot enter GT-free bounds.
  4. query camera cannot enter GT-free bounds.
  5. bounds deterministic from same context cameras/prior.
  6. budget list frozen before formal run.
  7. query metric cannot select optimization checkpoint.
  8. optimizer/loss identical across bounds.
  9. state/query IDs identical across budgets.
  10. query-oracle marked privileged diagnostic.
  11. final holdout loader disabled.
  12. scene bootstrap resamples scenes only.
  13. raw→statistics deterministic.
  14. 16^3 state semantics identical to previous experiment.
  15. renderer remains 64 samples.

运行完整 suite。

============================================================ 30. 图表 ============================================================

至少生成:

1. steps vs context AbsRel

2. steps vs query AbsRel

3. steps vs generalization gap

4. CURRENT vs GT-free bounds across budgets

5. context-direct vs query-oracle across budgets

6. per-scene 1k→max-budget query gain

7. compute vs query quality

============================================================ 31. README 必须回答 ============================================================

  1. 1000 steps 到底是不是明显 underoptimized?

  2. 3k / 10k / 30k 分别带来多少 query gain?

  3. context objective 继续下降时, query 是否也继续改善?

  4. 是否出现 context overfit?

  5. 16^3 最大充分 budget 最终 query AbsRel 是多少?

  6. GT-free bounds 是否稳定优于 current?

  7. bounds 收益是否依赖 optimization budget?

  8. Query oracle 在更多优化后能到多少?

  9. Context-direct 与 query-oracle gap 是否缩小?

  10. 主要剩余瓶颈是: optimization bounds context inference representation 还是混合?

  11. 现在是否真的值得训练新的16^3 carrier?

  12. 下一轮应该训练 carrier, 还是先修 context inference?

============================================================ 32. 最终终端摘要 ============================================================

打印:

============================================================ 16G OPTIMIZATION SUFFICIENCY + GT-FREE BOUNDS FINAL ============================================================

N_SCENES=

GRID=16 RENDER_SAMPLES=64

CURRENT_1K_ABSREL= CURRENT_3K_ABSREL= CURRENT_10K_ABSREL= CURRENT_30K_ABSREL=

GTFREE_1K_ABSREL= GTFREE_3K_ABSREL= GTFREE_10K_ABSREL= GTFREE_30K_ABSREL=

BEST_CONTEXT_ONLY_CONFIG= BEST_CONTEXT_ONLY_ABSREL=

QUERY_GAIN_1K_TO_MAX= QUERY_GAIN_CI=

CONTEXT_GAIN_1K_TO_MAX= GENERALIZATION_GAP_MAX=

QUERY_ORACLE_CURRENT_MAX= QUERY_ORACLE_GTFREE_MAX= CONTEXT_TO_ORACLE_GAP=

OPTIMIZATION_STATUS= BOUNDS_STATUS=

ENGINEERING_GOOD= CARRIER_TRAINING_READINESS= MATCHED_CARRIER_TRAINING_RECOMMENDED=

RGB_ONLY_SECONDARY_ABSREL=

FINAL_HOLDOUT_TOUCHED=false NEW_CARRIER_TRAINED=false DYNAMIC_TTT_RUN=false

TESTS= FINAL_INTEGRITY=

REPORT_DIR=

============================================================

============================================================ 33. 最重要的科学纪律 ============================================================

本轮真正要区分:

CASE A

更多优化显著继续改善query, 最大budget仍未饱和。

→ optimization insufficiency 是重要因素。

CASE B

context继续改善, query开始恶化。

→ direct-state正在context overfit; 单纯增加训练步数不是答案。

CASE C

GT-free bounds在所有充分budget上 稳定更好。

→ bounds design 是真实可部署因素。

CASE D

query oracle很好, context-direct仍明显差。

→ state表达能力存在, context inference / visibility / supervision 是主要问题。

CASE E

query oracle和context-direct 都在充分优化后仍然很差。

→ representation/bounds本身需要redesign。

CASE F

16^3 + frozen GT-free bounds + 充分优化后表现稳定, 并且scene-specific state证据成立。

→ 才建议下一轮做 matched learned-carrier training。

不要为了进入 CASE F 改变 optimizer、loss、bounds 或工程门槛。