# 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` 加本文件末尾追加的方式记录。 - 修订必须在读取相应真值之前完成。 - 锁定时的文本必须保持为当前文本的精确前缀。