EXP-3D-CAJU3D-ENGINE-V1 预注册协议(CAJU-3D 第一步:不含学习模块的 TTT 引擎)
0. 范围与动机
用户 2026-10-14 给出 CAJU-3D 方案(CAJU_3D_Full_Scheme_Specification.md 及代码包),要求在这个方向推进,只用 GPU 4。方案由两部分组成:
- 不需要学习的引擎机制:
1. α 归一化、只在已覆盖像素上计算的 TTT 损失;
2. 几何参数与外观参数解耦;
3. 入射角与深度跳变掩码;
4. 梯度锥投影。
- 需要学习的模块:分层逆向 H-JEPA 和修正引导头。
本实验只检验第一部分,原因有三: - 方案说明中的"关键工程发现"本身就是一个可以直接检验的引擎层面断言:"旧 TTT 对未归一化深度求导会冲掉 JN 的 +2.5% 前馈优势,α 归一化能根治"。 - 学习模块需要反事实效用标签,而且 CAJU Gate 0 已经表明,在 OFF / 10 步 / 100 步之间选择,空间很小。 - 代码包审读发现:H-JEPA 的跨视角聚合没有几何对齐,所谓"JEPA 锚"其实是 L2 正则,FULL 动作没有实现。
所以学习模块要在引擎可靠之后,经修正再单独预注册。
1. 引擎变体(锁定)
所有变体都从同一个 CACHE 状态出发:发布版 DepthSplat(ZS)或 JN1 检查点,尺度上限 0.1,注入测量深度,3 个上下文帧加 4 个流帧。每个变体都跑 100 步 Adam,使用 V1 的参数化和学习率,每个变体新建优化器。
| 变体 | 内容 |
|---|---|
| RAW | V1 的 ds_eval.ttt 原样(即 Core B 的 TTT) |
| NORM | 在已覆盖的有效像素上(α ≥ 0.5,掩码不传梯度)计算 |depth/α − z| / z + 0.5 × |color/α − rgb|,更新全部参数,单个优化器 |
| NORM_DEC | 与 NORM 相同的两项损失,但解耦:位置、对数尺度、不透明度只吃深度项,球谐系数只吃 RGB 项 |
| NORM_DEC_INC | 在 NORM_DEC 的基础上,深度项乘以测量深度的入射角/跳变权重:w = clip((cos − 0.1)/0.3, 0, 1) × [相对深度跳变 < 0.1];几何梯度与 L2 锚梯度冲突时做锥投影(锚 = 初始不透明度 ≥ 0.65 的位置增量平方,加 0.1 × 对数尺度增量平方,加 0.05 × logit 增量平方,与代码包一致) |
与代码包的差异:
- 解耦方式:代码包的 loss_geom 含 RGB 项,NORM_DEC 按方案文字做了严格解耦。
- 掩码:掩码用的是不经学习的入射角权重,而不是 M_pos(因为没有训练好的引导头)。
读出:所有臂都用 Core B 读出 CORE_B = sqrt(R7 × F7),F7 在 α ≥ 0.5 处取 ray 深度,其余取 R7。
2. 数据与独立性
| 队列 | 用途 | 来源与规模 |
|---|---|---|
| DEV_SYSTEM / DEV_SYSTEM2 | 选变体 | 从 ARKIT_SYSTEM、ARKIT_SYSTEM2 中各按种子选 12 个扫描,共 24 个场所、48 个片段 |
| CONF_SYSTEM3 | 主确认 | 160 个场所、320 个片段 |
| CONF_VAL | 复现 | 80 个场所、160 个片段 |
- 历史使用:这些队列以前都用过。SYSTEM / SYSTEM2 当过 AT、CA、CW 的开发集;SYSTEM3 和 VAL 当过多次确认集。因此不称为新测试集。
- JN1 的训练数据:JN1 只用 ARKit TRAIN 场所训练,与这些队列在场所层面不重叠。
- 复用的已封存预测:本实验只新算新的变体,以下都直接读已封存的结果:
- R7(几何封存);
- ZS 的 CACHE 和 TTT_m1(Core B);
- JN1 的 CACHE。
本实验重新算出的 CACHE,必须与已封存的 CACHE 逐位相同。 - 受保护数据:受保护的最终保留集不打开。
3. 开发阶段与选择规则(锁定)
- 开发集上运行的臂:
- ZS:NORM、NORM_DEC、NORM_DEC_INC;
- JN1:RAW、NORM、NORM_DEC、NORM_DEC_INC。
- 候选:C* 从上面 7 个臂里选,取开发集上场所平均 AbsRel(Core B 读出)最低的一个;平局按候选列表顺序取前者。
- 停止规则:如果 C* 在开发集上没有低于 ZS_RAW(Core B),就记为 STOP_AT_DEV,不做确认。
- 选择结果的锁定:
selection.json写入后立即记录哈希,然后才读取任何确认集真值。
4. 确认(锁定)
- P1:在 CONF_SYSTEM3 上比较 CORE_B − C*(Core B 读出),用 V1 的配对场所 bootstrap(10,000 次,seed 20260928)和 V2 判定,结果为 SUPPORTED / PARTIAL / NOT_ESTABLISHED / HARMFUL 之一。
- P2:在 CONF_VAL 上做同样的比较,作为复现。
- 最终分支:
- P1 为 SUPPORTED 且 P2 均值 > 0 → CAJU3D_ENGINE_SUPPORTED;
- P1 为 SUPPORTED 或 PARTIAL(其余情况)→ PARTIAL;
- P1 为 HARMFUL → HARMFUL;
- 否则 → NOT_ESTABLISHED。
- 次要比较:C 对它自己的 CACHE、C 对 R7、各臂的覆盖率。
5. 机制检验(开发集,描述性)
方案说明的断言是:"原始 TTT 把 JN 的不透明度拉回约 0.70,冲掉了有选择的弃权"。开发集上报告 JN1 的 CACHE、RAW、NORM 三个臂的以下指标: - 观测视角的覆盖率; - 高斯平均不透明度,以及不透明度 ≥ 0.5 的占比; - 查询视角的覆盖率; - 归一化误差。
另外报告两组对比:JN1_NORM 对 JN1_RAW,ZS_NORM 对 ZS_RAW。
6. 信息契约与完整性
- 真值读取:回放只读 7 个到达帧,每个片段都审计打开过的文件;查询帧只提供相机参数。所有真值都在全部预测封存之后,经 TeacherAccess 读取并记录用途。
- 一致性检查:复用的封存要逐文件核对哈希;新算的 CACHE 必须与封存的 CACHE 逐位一致。
- 可复现:确认分析运行两次,结果必须逐字节一致。
- 单元测试:入射角权重、α 归一化与掩码梯度、锥投影、选择与停止规则、分支、队列独立性、锁的顺序。
7. 计算预算
- 排练:1 个片段,在根目录之外。
- 开发:48 个片段,ZS 3 个臂、JN1 4 个臂,每个模型 2 个分片同时跑,预计约 3 小时。
- 确认:480 个片段,只跑 C* 一个臂,4 个分片,预计约 4–6 小时。
- 限制:只用 GPU 4(
cv_gpu_run.sh --with-others),不训练,不下载。
8. 修订规则
- 锁定后的任何修改,只能以
audit/amendment_N.json加本文件末尾追加的方式记录。 - 修订必须在读取相应真值之前完成。
- 锁定时的文本必须保持为当前文本的精确前缀。