# 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 项)。