EXP-3D-RGBD-DEPTHSPLAT-JEPA-ARKIT-V1:在真实传感器数据上训练逆向 JEPA
结论:REAL_JEPA_PARTIAL,REAL_DATA_TRAINING_PARTIAL。但修订 1 表明,这个增益几乎全部来自"替换掉一个错误的常数",而不是补全。
- 主检验: 用 ARKit 真实数据训练的逆向 JEPA(JA)在 FAR 上胜过调和插值,+0.210,90/14/55,PARTIAL;也胜过用 Hypersim 训练的 J,+0.231,104/13/42,PARTIAL。两者都只差"≥ 75% 的场景不变差"这一项。
- 增益从哪来:
- 约 47% 的评估查询与上下文完全没有重叠。这时调和插值整张图都是 Hypersim 的补洞常数 2.37 m,对室内近景严重偏远。
- JA 的 FAR 覆盖率达到 0.65(J 0.36,发布权重 0.10),在这些视角上给出合理的室内深度,于是大幅胜过那个常数。
- 对照校准基线就不成立了(修订 1):
- 只把这个常数换成训练折拟合的 1.05 m,FAR AbsRel 就从 0.793 降到 0.418,比 JA 的 0.583 还好。
- 在校准基线之上加 JA 反而更差:−0.029,57/14/88,HARMFUL。
- 只看与上下文有重叠的查询,JA 与调和插值打平:+0.027,48/0/50,NOT_ESTABLISHED。
- 结论: 真实数据训练让模型学会了"室内场景大概多深",但没有学会基于上下文的补全。
- 探索性: 归一化 G1 集成(HGN)在有重叠的查询上有一个小的稳定增益(+0.051,67/0/31),两个来源队列方向一致。
说明:
- 预注册: 见 PROTOCOL.md,2026-10-08 23:42:00 锁定,sha256
de61109d…。 - 修订 1: 2026-10-09 00:03:50 记录(
audit/amendment_1.json,PROTOCOL 末尾追加)。- 记录时本实验尚未读取任何评估真值。
- 它只新增一个用训练折拟合的校准调和基线和对应的对比(X1–X6),不改变 R1、R2、S1–S9。
- 训练数据: ARKitScenes 训练折中为训练保留的场馆(EXP-3D-RGBD-ARKIT-DATA-V1),TRAIN 182 个扫描,DEV 8 个扫描。
- 评估数据: ARKIT160 = ARKIT_VAL80 + ARKIT_CONFIRM80,共 160 个扫描、320 个 episode、640 个查询,与训练场馆不相交。159 个场景有 FAR 像素。
- 运行环境: 训练在 GPU 4 上与另一用户的常驻进程共用,其余在 CPU 上完成。主分析和修订分析都运行两次,结果逐字节相同。
- 统计: 统计单位是场景,bootstrap 10,000 次,种子 20260928,判定用 V2 gate。
训练
- 三个种子同时训练,每个 4000 步,约 1.44 秒/步,各用时 1.6 小时,峰值显存 6.2 GB。
- 下表为 DEV(ARKit 训练折的 8 个扫描,第 14、15 帧)上的读数,格式为"被覆盖像素 AbsRel / 覆盖率":
| 步数 | 0(发布权重) | 500 | 1000 | 2000 | 3000 | 4000 |
|---|---|---|---|---|---|---|
| JA1 | 0.329 / 0.23 | 0.345 / 0.47 | 0.367 / 0.49 | 0.402 / 0.46 | 0.441 / 0.50 | 0.442 / 0.48 |
| JA2 | 0.329 / 0.23 | 0.332 / 0.49 | 0.464 / 0.60 | 0.409 / 0.47 | 0.418 / 0.51 | 0.436 / 0.51 |
| JA3 | 0.329 / 0.23 | 0.329 / 0.45 | 0.482 / 0.59 | 0.438 / 0.49 | 0.452 / 0.50 | 0.450 / 0.49 |
训练让覆盖率翻倍,但被覆盖像素的误差也随之上升。
预注册结果(159 个有 FAR 像素的场景)
| 编号 | 对比(> 0 表示右边更好) | 区域 | 均值 | 95% CI | 好/平/差 | 状态 |
|---|---|---|---|---|---|---|
| R1 | H3 − JA | FAR | +0.2101 | [+0.1334, +0.2962] | 90/14/55 | PARTIAL |
| R2 | J − JA | FAR | +0.2307 | [+0.1564, +0.3157] | 104/13/42 | PARTIAL |
| S1 | ZS3 − JA | FAR | +0.2106 | [+0.1352, +0.2952] | 91/14/54 | PARTIAL |
| S2 | H3 − J | FAR | −0.0206 | [−0.0482, +0.0067] | 65/36/58 | NOT_ESTABLISHED |
| S3 | H3 − HJA | FAR | +0.1961 | [+0.1465, +0.2516] | 108/14/37 | SUPPORTED |
| S4 | HGN − HJAGN | FAR | +0.1219 | [+0.0881, +0.1591] | 103/14/42 | PARTIAL |
| S5 | H3 − HJAGN | FAR | +0.1769 | [+0.1407, +0.2168] | 117/13/29 | SUPPORTED |
| S6 | H3 − HGN | FAR | +0.0550 | [+0.0377, +0.0739] | 96/37/26 | SUPPORTED |
| S7 | H3 − JA | NEAR | −0.0293 | [−0.0661, +0.0125] | 32/0/67 | NOT_ESTABLISHED |
| S8 | H3 − HJA | ALL | +0.1895 | [+0.1394, +0.2447] | 111/15/34 | SUPPORTED |
| S9 | HJ − HJA | FAR | +0.1825 | [+0.1333, +0.2373] | 109/13/37 | SUPPORTED |
- R1、R2 的逐一剔除场景均值都为正,正贡献最大的单个场景占比都 ≤ 0.5。它们只差"≥ 75% 的场景不变差"这一项(分别为 65% 和 74%)。中位数分别为 +0.025 和 +0.082。
FAR 均值:
| 读出 | FAR AbsRel | FAR 覆盖率 |
|---|---|---|
| H3(调和插值) | 0.793 | — |
| ZS3(发布权重,上限 3.0) | 0.794 | 0.10 |
| J(Hypersim 训练) | 0.814 | 0.36 |
| JA(ARKit 训练) | 0.583 | 0.65 |
| G1N | 0.747 | — |
| HGN | 0.738 | — |
| HJA | 0.597 | — |
| HJAGN | 0.616 | — |
- NEAR 上 JA 略差:0.248,H3 为 0.218。
- 按来源队列,FAR 上 H3 → JA:ARKIT_VAL 从 0.839 降到 0.566,ARKIT_CONFIRM 从 0.747 降到 0.600。
修订 1:调和插值在 ARKit 上为什么偏远,以及校准基线
原因: 修订前在训练折的 728 个查询上查明,只读训练数据:
- 一半查询完全没有上下文命中。 367 个(50%)查询中,3 个上下文帧的测得深度重投影后一个像素也落不到查询视角里。
- 这时调和插值整张图都是补洞常数 2.37 m。 这个常数取自 Hypersim 训练集,对 ARKit 的室内近景偏远。这部分查询的 FAR AbsRel 为 1.05,有命中的查询只有 0.38。
- 有命中的查询上,调和插值反而略偏近(中位 log(H3 / 真值) = −0.32),但按 AbsRel,不缩放已经最优。
- 评估队列同样如此。 ARKIT_VAL 的 320 个查询中 150 个无命中,ARKIT_CONFIRM 中 151 个;两个队列分别有 30 和 31 个场景的所有查询都无命中。相比之下,Hypersim 的 FRESH78 只有 0.6%(2/312),EVAL34 只有 1.2%(4/332)。
- 所以 ARKit 上的"补全"评估有一半其实是"猜一个完全没见过的视角的深度",与 Hypersim 不是同一个任务。之前 README 中"偏远可能来自 2.37 m 常数"的猜测成立。
校准基线 H3CAL(训练折拟合): 无命中的查询取常数 1.05 m,有命中的查询保持 H3(k = 1)。训练折上 FAR AbsRel 从 0.742 降到 0.379。
| 编号 | 对比(> 0 表示右边更好) | 区域 | 均值 | 95% CI | 好/平/差 | 状态 |
|---|---|---|---|---|---|---|
| X1 | H3CAL − JA_CAL | FAR | −0.0289 | [−0.0562, −0.0004] | 57/14/88 | HARMFUL |
| X2 | H3 − H3CAL | FAR | +0.3749 | [+0.2823, +0.4718] | 72/69/18 | SUPPORTED |
| X3 | H3CAL − JA | FAR | −0.1648 | [−0.2339, −0.1005] | 56/0/103 | HARMFUL |
| X4 | H3CAL − HGN | FAR | −0.3199 | [−0.4183, −0.2270] | 71/0/88 | HARMFUL |
| X5 | H3CAL − JA | JA 覆盖的 FAR 像素(145 场景) | −0.0562 | [−0.0996, −0.0130] | 56/0/89 | HARMFUL(描述性) |
| X6 | H3 − JA | 有命中查询的 FAR(98 场景) | +0.0269 | [−0.0116, +0.0716] | 48/0/50 | NOT_ESTABLISHED(描述性) |
- 全部 FAR: H3CAL 为 0.418,JA_CAL 为 0.447。
- JA 覆盖的像素上: JA 为 0.450,H3CAL 为 0.394,H3 为 0.718。
- 有命中的查询上: H3 为 0.423,JA 为 0.396,HGN 为 0.372。
事后拆分(探索性,exploratory_posthoc/overlap_split.*)
只读修订 1 的场景表,按来源队列和"查询是否有上下文命中"拆开:
| 队列 | 对比 | 区域 | 均值 | 95% CI | 好/平/差 | 状态 |
|---|---|---|---|---|---|---|
| 全部 | H3 − HGN | 有命中查询的 FAR | +0.0509 | [+0.0326, +0.0704] | 67/0/31 | PARTIAL |
| ARKIT_VAL | H3 − HGN | 同上 | +0.0406 | [+0.0167, +0.0654] | 34/0/16 | PARTIAL |
| ARKIT_CONFIRM | H3 − HGN | 同上 | +0.0617 | [+0.0330, +0.0909] | 33/0/15 | PARTIAL |
| ARKIT_VAL | H3 − JA | 同上 | +0.0487 | [−0.0175, +0.1240] | 23/0/27 | NOT_ESTABLISHED |
| ARKIT_CONFIRM | H3 − JA | 同上 | +0.0042 | [−0.0359, +0.0424] | 25/0/23 | NOT_ESTABLISHED |
| ARKIT_VAL | H3CAL − JA_CAL | FAR | +0.0008 | [−0.0407, +0.0470] | 29/8/43 | NOT_ESTABLISHED |
| ARKIT_CONFIRM | H3CAL − JA_CAL | FAR | −0.0589 | [−0.0929, −0.0257] | 28/6/45 | HARMFUL |
解读
- 真实数据训练确实改变了模型。 JA 在 FAR 上的覆盖率从 0.10 升到 0.65,在没见过的视角上给出合理的室内深度。这就是 R1 增益的来源。
- 但这不是补全:
- 一个常数(1.05 m)就做得比它好;
- 在校准基线之上加 JA 反而有害;
- 在有重叠的查询上它与调和插值打平;
- 在 NEAR 上它略差。
- 训练中覆盖率上升、被覆盖像素精度下降,也指向同一件事:模型在学"把空白填上一个合理的室内深度"。
- 训练信号本身可能是问题。 训练目标从 13 个非上下文帧中均匀抽取,而其中 34% 与上下文完全没有重叠,模型被要求去"补"根本补不出来的视角。EXP-3D-RGBD-DEPTHSPLAT-JEPA-ARKIT-OVERLAP-V1 在本结果出来之前就已锁定,它只在有重叠的目标上训练,在有重叠的新查询帧上评估。
- 归一化 G1 集成的结论需要细化。 它在有重叠的查询上有小而方向一致的增益,两个队列都是如此,所以 CONFIRM 的结论不是常数造成的假象。但一致性为 68%,达不到 V2 的 75%。在无重叠的查询上它与调和插值一样,都退回到错误的常数。
- 对后续 ARKit 实验的含义: 无重叠查询应单独处理(例如用校准常数,或不作补全评估);补全的评估应限定在有重叠的查询上。
文件
PROTOCOL.md、preregistration.json、frame_role_lock.json、evaluation_contract.json、manifest_arkit160.jsoncode/:训练(train_jepa_arkit.py,与 V1 的差异只在训练记录来源)、建目录、打分和任务脚本checkpoints/JA1–JA3/:训练所得权重与训练日志(SHA256SUMS)raw/eval/ARKIT160/:arms 封存;ds/ARKIT160/:JA1–3、J1–3、ZS3 的 DepthSplat 封存scores/、results/、audit/amendment_1/:- 校准:
h3_calibration.py、h3_calibration_TRAIN.json;第一版单系数结果在first_run_single_k/ - 修订打分
amend1_score.py及其结果
- 校准:
exploratory_posthoc/:按来源队列与是否有上下文命中拆分(探索性)