你现在位于:
https://github.com/KennyMcSimpson/measurement-scene-state.git
请基于已经完成的:
EXP-3D-STATIC-CARRIER-ATTRIBUTION-V1 EXP-3D-SUPPORT-BOTTLENECK-REDESIGN-V1
执行下一阶段:
EXP-3D-DIRECT-STATE-CAPACITY-V1
============================================================ 0. 本轮唯一研究问题 ============================================================
当前 frozen B-final carrier 在 unseen/dev 场景上的 shared-state 静态资格没有建立。
上一轮已经证明:
- volume 会显著改变结果;
- oracle volume 的正 relative gain 大部分来自 anchor 恶化;
- oracle candidate support 单独增加并没有改善任务;
- oracle volume + support 也没有通过预注册稳定性门槛;
- support / spatial discretization / renderer prior / training distribution 仍然耦合;
- 当前还不能把失败归因于 support, 也不能直接归因于 representation/training。
因此本轮不再改 support 方法。
本轮只回答:
Q1. 当前 typed scene state + fixed renderer 本身有没有足够的表示能力?
Q2. 如果完全绕过 encoder / lifting / fusion / completion, 直接优化 scene state, 能否从 context observations 得到一个在 sealed query 上表现良好的状态?
Q3. 当前 8^3 resolution 是否构成主要容量瓶颈?
Q4. 如果 direct-state 很好但 carrier 很差, 问题是否主要来自 state construction / training?
Q5. 如果 direct-state 自己也很差, 是否应该停止重训当前 carrier, 转而 redesign scene representation / renderer?
============================================================ 1. 研究纪律 ============================================================
本轮禁止:
- Dynamic TTT
- FC/CF
- controller
- writer
- fast-weight updates
- action policy
- trajectory search
- support redesign
- candidate allocation redesign
- context selector redesign
- new carrier training
- matched retraining
- train-scale-up
- final protected holdout
- 根据 query score 改 scene/state resolution
- 使用 query GT 优化 scene state
- 用 test query 选择 optimizer step
本轮不是为了得到正结果。
本轮是 representation-capacity attribution。
============================================================ 2. 数据角色 ============================================================
旧 7 个 exposed scenes 和上一轮 10 个 new DEV scenes 都已经被观察过,因此本轮统一作为:
CAPACITY_DEV_EXPOSED
只用于 attribution。
不得把它们称为独立验证。
上一轮锁定的 FINAL_HOLDOUT:
继续完全封存。
不得:
- forward
- render
- query score
- direct-state optimization
- hyperparameter selection
本轮不打开 final holdout。
============================================================ 3. 创建独立实验目录 ============================================================
创建:
outputs/EXP-3D-DIRECT-STATE-CAPACITY-V1/
docs/experiments/EXP-3D-DIRECT-STATE-CAPACITY-V1/
至少包含:
README.md STATUS.md preregistration.json config.json scene_manifest.json capacity_contract.json optimization_contract.json renderer_contract.json resolution_contract.json direct_state_results.json capacity_analysis.json resolution_analysis.json optimization_curves.json bootstrap_results.json integrity.json tests.json commands.sh git_commit.txt dirty.patch
raw/ figures/ audit/ checkpoints/
不得覆盖旧实验。
============================================================ 4. 冻结旧 carrier baseline ============================================================
首先复现当前 frozen carrier:
1000A+600B B-final
checkpoint SHA256:
be7b8b6d2ef366cad245732b9ff227802db596da65082ac0e160f24541579e42
对 CAPACITY_DEV_EXPOSED 场景重新生成:
- A
- B
- anchor
- prior
旧统计必须精确或在数值容差内复现。
如果不能:
停止正式 capacity 实验, 先调查 reproducibility。
============================================================ 5. 定义 Direct State Optimization ============================================================
核心要求:
完全绕过:
- image encoder learning
- lifting network
- fuse network
- completion network
- fast-weight writer
直接把 shared scene state 本身作为可优化变量。
保持 fixed renderer 不变。
对于每个 scene / context:
优化:
density logits z(x) RGB color c(x)
以及只有在当前 typed state 中已经正式存在、 且 fixed renderer 必需的最小辅助字段。
不要偷偷加入新的 query-conditioned network。
Direct state 必须仍然满足:
同一个 optimized state → fixed renderer → 多个不同 sealed query
不能为每个 query 单独优化 state。
============================================================ 6. Query leakage 禁止 ============================================================
Direct-state optimization 只能读取:
- context RGB
- context camera
- 如果本轨允许:context depth
不能读取:
- sealed query RGB
- sealed query depth
- sealed query score
- sealed query camera,除非 renderer evaluation 阶段
- future/query visibility mask
- query GT geometry
- query-derived bounds
query camera 和 GT 必须在 state optimization 完成并 seal 后 才能进入 evaluator。
增加强制 loader 隔离。
============================================================ 7. 两条 capacity 轨道 ============================================================
必须分开运行:
TRACK A — RGB+D DIRECT STATE
允许 context:
- RGB
- depth
- camera
直接优化 state。
这是较强的 representation-capacity diagnostic。
它回答:
“如果 context geometry 已知, 当前 state + renderer 能否表示一个能泛化到 query 的 scene?”
不能包装成 RGB-only 方法。
TRACK B — RGB-ONLY DIRECT STATE
只允许:
- context RGB
- camera
通过 differentiable fixed renderer 做 inverse rendering。
不使用 context depth。
这条轨用于检查:
仅 RGB supervision 下, representation + renderer 是否仍有可达能力。
TRACK A / B 必须分别报告。
============================================================ 8. 优化目标 ============================================================
TRACK A 推荐:
L = λ_rgb L_rgb(context render, context RGB) + λ_depth L_depth(context render, context depth) + 预先固定的最小正则项
TRACK B:
L = L_rgb(context render, context RGB) + 预先固定的最小正则项
正则只能用于:
- density stability
- bounded color
- mild spatial smoothness
不能加入 query-derived regularizer。
所有 λ 必须:
- 在正式 query evaluation 前冻结
- 只通过 training-side / exposed capacity-dev 的 context reconstruction 行为选择
- 不能使用 sealed query score 调
============================================================ 9. 先做 Optimization Sanity ============================================================
在跑 resolution sweep 前, 先确认 direct-state optimizer 真正在工作。
至少检查:
- context RGB loss 是否下降
- TRACK A context depth loss 是否下降
- state parameters 是否有梯度
- renderer 输出是否变化
- 没有 NaN/inf
- density 没有立即 collapse
- opacity 没有全部变成0或1
保存:
optimization_trace.csv
包含:
step loss_rgb loss_depth regularization opacity grad_norm state_norm context metric
但不能在 query 上 early-stop。
============================================================ 10. 优化停止规则 ============================================================
必须预先冻结:
- optimizer
- LR
- max steps
- checkpoint intervals
- selection rule
推荐:
Adam
先用一个小 pilot 确定稳定 LR, 然后整个正式 capacity study 使用同一规则。
禁止:
为不同 scene 单独调 LR。
正式 checkpoint selection 只能根据 context-side objective。
例如:
best context objective checkpoint
或者:
fixed final step
二选一,预先冻结。
不能根据 sealed query 表现选择。
============================================================ 11. 第一核心实验:8^3 Direct State ============================================================
首先完全保持当前 state resolution:
8^3
以及:
- current fixed renderer
- current ray semantics
- current query protocol
- current scene bounds protocol
但要注意:
上一轮 oracle volume 表明 bounds 会影响 renderer/prior。
因此本轮必须至少分开:
A. CURRENT_BOUNDS B. PREDECLARED_GEOMETRY_BOUNDS
其中 PREDECLARED_GEOMETRY_BOUNDS 必须是 GT-free 或 training-side frozen 规则。
不能使用 sealed query GT bbox。
如果无法定义公平 GT-free alternative:
主 capacity result 使用 CURRENT_BOUNDS, bounds sensitivity 单独做 diagnostic。
============================================================ 12. Direct-state vs carrier ============================================================
对每个 scene/context:
比较:
CARRIER_FIXED
vs
DIRECT_STATE_RGBD
vs
DIRECT_STATE_RGB_ONLY
所有方法使用:
- 相同 context
- 相同 query
- 相同 fixed renderer
- 相同 state tensor semantic
- 相同 resolution
报告:
Depth AbsRel RMSE δ1 RGB MSE SSIM Opacity Coverage
主比较:
DIRECT_STATE_RGBD − CARRIER
DIRECT_STATE_RGB_ONLY − CARRIER
误差指标中负值 = direct-state 更好。
============================================================ 13. 最重要的 capacity gap ============================================================
定义:
CAPACITY_GAP = Carrier query AbsRel - DirectState query AbsRel
正值越大:
说明表示本身能做得比 carrier 好, 瓶颈更可能在 state construction / training。
同时定义:
ANCHOR_GAP = Anchor query AbsRel - DirectState full-context query AbsRel
如果 direct-state full context 仍然不能稳定优于 anchor:
representation/renderer capacity 的嫌疑增大。
============================================================ 14. Resolution Sweep ============================================================
只有 8^3 direct-state pipeline 通过 sanity 后, 运行:
8^3 16^3 32^3
如果 32^3 资源过高:
允许:
8^3 12^3 16^3
但必须在开始正式 sweep 前锁定。
不要看结果后增加一个刚好最优的分辨率。
对每个 resolution:
- direct state independent
- same contexts
- same queries
- same loss
- same optimizer family
- same evaluation
- same scene set
记录:
state parameter count VRAM optimization time renderer time
============================================================ 15. Resolution 不能偷偷增加其他能力 ============================================================
改变 resolution 时不能同时:
- 改 renderer semantics
- 改 loss
- 改 bounds rule
- 改 context selection
- 改 optimization objective
- 改 scene list
如果更高 resolution 需要更多 renderer samples:
必须单独记录。
最好先固定 renderer sample count, 另做 renderer-resolution diagnostic。
============================================================ 16. Renderer Capacity Control ============================================================
为了区分:
state resolution vs ray integration resolution
增加一个次要二维矩阵:
STATE GRID: 8^3 / 16^3
RENDER SAMPLES: 64 / 128
如果资源允许。
但优先级:
state resolution > renderer samples
输出:
renderer_capacity_analysis.json
如果增加 renderer samples 几乎不改善 query:
说明 ray discretization 不是主要限制。
============================================================ 17. Context Memorization Control ============================================================
Direct-state optimization 很容易记住 context。
因此必须同时报告:
CONTEXT SCORE
和
SEALED QUERY SCORE
定义:
GENERALIZATION_GAP = query error - context error
如果:
context 很好 query 很差
说明 representation 只是记住 context, 不代表形成可复用 shared state。
============================================================ 18. Wrong-scene direct-state control ============================================================
对 optimized direct state 继续做:
wrong-scene replacement
保持 query camera 不变。
如果一个 scene 的 optimized state 换成另一个 scene 后 query performance 几乎不变:
说明 direct-state 也可能主要输出 prior。
报告:
WRONG_SCENE_DAMAGE_DIRECT
============================================================ 19. State interpolation / shuffle diagnostic ============================================================
只作为 diagnostic:
A. spatial shuffle B. density-only C. color-only D. zero-density / zero-color E. wrong-scene state
检查 fixed renderer output 是否依赖 scene-specific state structure。
不能把 latent difference 本身当结果。
必须评价 query prediction。
============================================================ 20. Direct-state oracle variant ============================================================
允许一个明确标记的:
QUERY-SUPERVISED ORACLE STATE
但它只能作为 renderer/state expressivity 的极限诊断。
它允许直接优化 query GT。
目的:
如果连 query-supervised direct state 都做不好:
说明 state + renderer expressivity 本身非常有限。
如果 query-supervised 很好, 而 context-trained direct-state 很差:
说明主要问题更可能是 inverse problem / context information / training objective。
必须放在:
DIAGNOSTIC ORACLE
区块。
绝不能与 deployable或context-only结果混排。
============================================================ 21. 三层 capacity decomposition ============================================================
最终必须把结果拆成:
LEVEL 1: QUERY-SUPERVISED DIRECT STATE
回答:
state + renderer 最大表达能力怎样?
LEVEL 2: CONTEXT-SUPERVISED DIRECT STATE
回答:
给真实 context evidence, 直接优化 state 能泛化到 query 多好?
LEVEL 3: LEARNED CARRIER
回答:
网络能否从 context 一次/有限步骤生成好 state?
于是:
L1 → L2 gap
主要反映:
context inverse problem / visibility / optimization
L2 → L3 gap
主要反映:
learned state construction / training
不要声称这是严格因果分解, 但作为 attribution framework 使用。
============================================================ 22. Resolution capacity 判定 ============================================================
输出:
STATE_CAPACITY_STATUS=
SUFFICIENT RESOLUTION_LIMITED RENDERER_LIMITED CONTEXT_INFERENCE_LIMITED LEARNER_LIMITED MIXED INCONCLUSIVE
建议解释:
SUFFICIENT: 8^3 context-direct-state 已稳定优于 carrier/anchor, query表现合理。
RESOLUTION_LIMITED: 8^3 direct-state差, 更高grid显著稳定改善。
RENDERER_LIMITED: state grid增加作用小, renderer samples增加明显改善。
CONTEXT_INFERENCE_LIMITED: query-supervised state很好, context-direct-state明显差。
LEARNER_LIMITED: context-direct-state很好, carrier明显差。
MIXED: 多个因素均有明显gap。
============================================================ 23. 统计 ============================================================
正式统计单位继续:
scene
使用:
10,000 paired scene bootstrap seed 20260927 95% percentile CI
报告:
mean median LOSO improved/tied/worse top1 contribution top3 contribution
不要把每个 query 当独立样本。
============================================================ 24. 不要碰 final holdout ============================================================
即使某个 direct-state resolution 结果很好:
也不要打开上一轮 final holdout。
因为本轮只是 attribution, 不是方法 qualification。
final holdout 保留给未来:
真正冻结的 redesigned carrier。
============================================================ 25. 下一阶段 gate ============================================================
根据结果自动选择下一步。
CASE A Query-supervised direct-state 也很差。
→ STOP current representation. → 下一轮 redesign state/renderer。
CASE B Query-supervised 好, context-direct-state 差。
→ representation能表达, 但从context恢复state困难。 → 下一轮研究 context lifting / geometry inference。
CASE C Context-direct-state 好, carrier 差。
→ representation和context information都够, 主要是 learner/training 问题。 → 下一轮做 matched carrier retraining。
CASE D 8^3差,16^3/32^3明显好。
→ resolution bottleneck。 → 下一轮重新设计高分辨率 carrier。
CASE E 8^3 direct-state 已经很好。
→ 不要增加 resolution。 → 直接修 learner/training。
CASE F RGB+D好,RGB-only差。
→ depth supervision / geometric ambiguity 是重要因素。 → 方法主线需明确 RGB+D 与 RGB-only 边界。
============================================================ 26. 本轮禁止训练新 carrier ============================================================
即使发现:
LEARNER_LIMITED
本轮也只报告。
不要马上开始 retraining。
因为我们需要先冻结 attribution, 再根据结果单独设计下一训练实验。
============================================================ 27. Regression tests ============================================================
至少新增:
- query GT cannot enter context-only optimizer.
- query camera unavailable before state seal.
- RGB-only track cannot load context depth.
- RGB+D track cannot read query depth.
- query-supervised oracle explicitly marked diagnostic.
- state optimization does not mutate carrier checkpoint.
- same state serves all sealed queries.
- resolution sweep uses same scene/query IDs.
- resolution sweep changes only allowed fields.
- optimizer checkpoint selection uses context objective only.
- wrong-scene control keeps query camera unchanged.
- final holdout loader stays disabled.
- scene bootstrap resamples scenes.
- raw results regenerate statistics exactly.
运行完整 suite。
============================================================ 28. 输出图表 ============================================================
至少生成:
- carrier vs direct-state query AbsRel
- context vs query error
- resolution vs query AbsRel
- per-scene capacity gap
- query-supervised vs context-supervised vs carrier
- state resolution vs compute/memory
图中不能只展示有利 scenes。
============================================================ 29. README 必须回答 ============================================================
- 8^3 state + fixed renderer 本身能不能表示正确 geometry?
- Query-supervised direct state 能做到什么水平?
- Context RGB+D direct state 能做到什么水平?
- RGB-only direct state 能做到什么水平?
- Carrier 与 direct-state 的 gap 多大?
- 这个 gap 是否跨多个 scenes?
- Resolution 提高是否稳定改善 query?
- Renderer samples 是否重要?
- Direct-state 是否只是记住 context?
- Wrong-scene replacement 是否损害 direct-state?
- 主要瓶颈是 representation、renderer、 context inference 还是 learner?
- 下一轮到底应该:
- redesign representation
- redesign lifting
- increase resolution
- retrain carrier
- 还是停止当前路线?
============================================================ 30. 最终摘要 ============================================================
打印:
============================================================ 3D DIRECT-STATE CAPACITY ATTRIBUTION FINAL ============================================================
N_CAPACITY_DEV_SCENES=
CARRIER_ABSREL=
DIRECT_RGBD_8_ABSREL= DIRECT_RGBONLY_8_ABSREL= QUERY_ORACLE_8_ABSREL=
CAPACITY_GAP_RGBD= CAPACITY_GAP_RGBONLY=
DIRECT_RGBD_16_ABSREL= DIRECT_RGBD_32_ABSREL=
RESOLUTION_8_TO_16_GAIN= RESOLUTION_16_TO_32_GAIN=
RENDER64_ABSREL= RENDER128_ABSREL=
CONTEXT_RGBD_ERROR= QUERY_RGBD_ERROR= GENERALIZATION_GAP_RGBD=
WRONG_SCENE_DAMAGE_DIRECT=
STATE_CAPACITY_STATUS=
REPRESENTATION_BOTTLENECK= RESOLUTION_BOTTLENECK= RENDERER_BOTTLENECK= CONTEXT_INFERENCE_BOTTLENECK= LEARNER_TRAINING_BOTTLENECK=
FINAL_HOLDOUT_TOUCHED=false DYNAMIC_TTT_RUN=false NEW_CARRIER_TRAINED=false
TESTS= FINAL_INTEGRITY=
REPORT_DIR=
============================================================
============================================================ 31. 最重要的科学纪律 ============================================================
不要问:
“怎样让 direct-state 结果尽量好?”
而是问:
“当前系统失败到底发生在哪一层?”
必须真正区分:
scene representation本身表达不了
vs
representation能表达, 但context无法恢复
vs
context能够恢复, 但learner没学会
vs
renderer离散化限制
vs
resolution限制。
只有把这层 attribution 做清楚, 下一轮才值得重新训练 carrier。
不要为了得到某个想要的归因而修改 protocol。