CODE_AUDIT:Core B、R7、64 箱表与学习式读出的实际实现(Phase 0,只读)
审计对象:hit 仓库 research/reliable-geometry-readout-v1 分支(从 research/caju-utility-v1 的 7607172 分出,未推送)。工作区干净;以下逐项对照源码确认。
1. Core B
- 底座:发布版 DepthSplat(
depthsplat-gs-base-re10kdl3dv-448x768-randview2-6-f8ddd845.pth,作者在 RealEstate10K + DL3DV 上训练),网络参数冻结;输入 256×320,渲染 128×160。 - 场景构建:7 个到达视角(3 个上下文 + 4 个流式)一次编码。测量平面深度通过
ds_predict.inject_measured_depth替换 DepthSplat 最终的上下文深度,因此高斯在有测量的位置由测量深度放置;不做尺度对齐(INJECTED["align"] = False)。 - 测试时优化(
ds_eval.ttt): - 100 步 Adam(eps 1e-15)。
- 优化对象是 4 组增量:
- 高斯中心;
- 协方差特征基下的 log 尺度(旋转固定);
- 不透明度 logit;
- 球谐 DC 与高阶系数。
- 学习率为 3DGS 默认值:中心 1.6e-4 × 测量平面深度中位数,log 尺度 5e-3,不透明度 2.5e-2,SH DC 2.5e-3,SH 高阶 1.25e-4。
- 损失(
train_jepa.grounded_loss):在 7 个到达视角上,未归一化渲染深度对测量深度的相对 L1(只在有效测量像素上),加 0.5 × RGB L1。 - 损失出现非有限值时回退到 CACHE 状态。
- 读出(
caju_logic.core_b): - F7 = depth_z / α / cos,只在 α ≥ 0.5 处使用,其余位置为 R7;
- Core B = sqrt(max(R7, 1e-6) × max(F7, 1e-6))。
2. R7(REPROJ7_HARMONIC)
- 重投影:7 帧的有效测量深度样本反投影为世界点,在查询相机下做 1 像素 z-buffer,每个像素取射线距离的最小值。
- 填充:命中像素保留;空洞以命中像素为边界,在逆平面深度上解 4 邻域拉普拉斯方程(
run_rgbd_inpaint_baselines.harmonic_fill)。 - 完全没有命中的查询:整张图填常数 2.3736 m。这个常数是 EXP-3D-RGBD-DEPTH-BOUNDS-V7 的
REF_TRAIN_ABSREL_OPTIMAL,拟合自 Hypersim 训练场景(ai_*),不是 ARKit。这是一个跨数据集的常数(第 9 项审计点)。 - 零命中查询的数量:
| 队列 | 零命中 / 查询数 |
|---|---|
| FIT_SYSTEM | 10/320 |
| FIT_SYSTEM2 | 2/320 |
| SYSTEM3 | 3/640 |
| VAL | 2/320 |
| CAJU | 0/232 |
| SYSTEM4 | 4/208 |
命中率低于 10% 的查询每队列有 2–28 个。 - near7:距命中 8 像素以内的像素(距离变换)。几何封存只存了 near7,没有存原始命中掩码。
3. 64 箱可信度融合表(KFUSE-V1,sha256 15100550…)
- 分箱:F7/R7 分歧(8 个分位箱)× α(4 箱)× near7(2 箱),只在 α ≥ 0.5 的已覆盖像素上使用。
- 拟合:每箱的权重 w 从 {0, 0.05, …, 1} 中选取,使拟合集(SYSTEM + SYSTEM2,160 个场所)的场所加权 AbsRel 最小;空箱取 0.5。读出为 R7^(1−w)·F7^w;未覆盖像素保持 R7。
- 定性:这是从数据中统计标定得到的权重表,属于学习得到的参数,不是严格的卡尔曼滤波,也没有贝叶斯保证。
4. 学习式读出
| 模型 | 结构 | 参数量 | 输入 | 输出 | 训练 |
|---|---|---|---|---|---|
| V1(FUSENET-V1 BASE) | 5 层膨胀卷积(1,2,4,8,1),宽 32,GN + GELU | 39,714 | 8 通道:log R7、log F7、分歧、α、near7、cosine、是否覆盖、log TTT 原始深度 | 已覆盖处的融合权重 w;未覆盖处的修正 r = 0.7·tanh | SYSTEM + SYSTEM2:128 个训练场所 / 32 个验证场所,3 个种子,30 个 epoch |
| V2(SYSTEM4-HOLDOUT-V1) | 6 层膨胀卷积(1,2,4,8,16,1),宽 32 | 48,993 | 与 V1 相同的 8 通道 | 已覆盖处用冻结的 KF 表;未覆盖处 r = 0.7·tanh | 458 个场所(412 / 46),3 个种子,30 个 epoch |
- 两者的训练损失都是场所加权的 AbsRel:Adam,lr 1e-3,权重衰减 1e-4,每批 8 个查询。
5. 真值、查询相机与可部署性
- 真值的读取:查询真值只经
TeacherAccess.query_depth读取。它的用途标签固定为SEALED_QUERY_EVALUATION,训练读取和评价读取都用这个标签。区分二者靠代码结构:训练脚本只读训练场所;评价脚本在预测封存之后读取。 - 查询相机:R7 的重投影、DepthSplat 在查询视角的渲染,以及 H-JEPA 的查询特征,都用到了查询相机的内外参。按本任务的定义(预测已知位姿的未来视角深度),这是可部署的。
- 网络输入的来源:全部来自到达帧和查询相机,没有发现以真值派生的通道。本实验的深度边缘和远处分层由真值定义,只用于评价分层,从不作为输入。
6. 传感器与真值来源
scripts/prepare_rgbd_arkit_data.py只读取 ARKitScenes 3dod 的lowres_wide(RGB)和lowres_depth(iPad LiDAR 深度,256×192,毫米),转为射线距离后裁剪、缩放到 128×160;没有使用置信度图过滤。- 因此下面三者都是同一个 iPad LiDAR:
- 到达帧的测量深度(R7 与 TTT 的输入);
- TTT 的监督目标;
- 查询视角的评价真值。
- 后果:评价奖励"复现 LiDAR 的读数",包括它的系统偏差(平滑、细小结构、反光与深色表面)。测量与真值之间可能共享的偏差无法在本数据上检验。
- ARKitScenes 另有 Faro 激光扫描的高精度几何,可作为独立真值来源,但没有下载,下载需要授权。
7. 审计结论
- 实现与执行提示中的描述一致。只有一处修正:TTT 的尺度在协方差特征基下优化,旋转固定。
- 需要正视的问题:
- R7 对零命中查询使用 Hypersim 的常数。零命中查询虽然只占约 1%,但每个都会产生很大的误差;冒烟运行中,FIT_SYSTEM2 零命中像素的 AbsRel 为 4.9。Phase 1 的 B2A 专门检验这一点。
- 测量、监督和评价真值来自同一个传感器(第 6 项)。