expJ pipeline 窄带 knownness · τ₀ = 1 − 0.2k

从 sbatch 命令逐 flag 核实的完整数据流 · --backbone i2v14b --lora 64 --train_modulation --warp_cond --rehearsal 0.10 --lift 0.35 --patch_b2 --sync_sched --lam 0.2 --lr 5e-5(expJ_ray 追加 --plucker)· 2026-07-29

A · 离线数据准备 cache_novoxel,1430 clips 已缓存

DL3DV clip
81 px 帧轨迹
832×480
18 帧观察窗
forward_sched 取前 18 帧作为唯一证据来源;其余 63 帧是要外推的未知区
VGGT 几何
深度 + 位姿,度量尺度由求解器对齐到 COLMAP 位姿
前向 splat
18 帧按几何投影到全部 81 个目标视角 → warped RGB + density
VAE encode
warped RGB → z_mem [16,21,60,104]
density → k_tok [21,30,52](token 网格)
GT → x0
Plücker 光线 expJ_ray
[6,21,60,104] 方向+矩,相对帧 0,跨度归一
k 是什么:splat 的密度累积 → 每个 token 有多少观察证据落在它身上。k=1 = warp 抄得到,k=0 = 从未见过。这一整条 A 线是三代实验共用的,expJ 没有改动它。

B · 训练一步

① 窄带上限 ← expJ 的唯一改动
τ₀ = clamp(1 − 0.2k, .02, 1)
[0.80, 1.00]
对比 expF:1 − 0.95k ∈ [.45, 1]
② 掷骰子取 t-场
10%rehearsal — 全部条件通道置零 + 全局标量 t;防止忘掉预训练的从零生成能力
45%b1 sync 切片 t = clamp(τ₀ − c, .02, 1),c~U(0,1) — 采样器日历在第 c 步的精确快照
45%b2 patch 场 t = u_patch · τ₀,连续 3D 块内共享一个比例 — 补齐 b1 未覆盖的状态组合
+35%lift 抬升分支:概率 0.35 把整幅场往上推,避免只见低噪声
③ 锚点混合
覆盖区 & t≥0.3 时以 p=0.4 取 c = z_mem(学"修正 splat 误差"),否则 c = x0(学"从零生成")
x_t = (1−t)c + t·ε,told = t(诚实告知)
④ 通道拼接
33ch = x_t(16) ⊕ z_mem(16) ⊕ k(1)
expJ_ray: 39ch(+6 Plücker)
patch_embedding 加宽,新增权重零初始化
⑤ Wan I2V-14B DiT
LoRA-64 + 可训练 per-token AdaLN(has_seq 路径)= knownness 的执行器
v-prediction MSE,未知区权重 1.0
为什么 b1 必须跟着采样器变(PatchForcing 的血泪教训):训练喂的 t-场家族必须 == 推理走的日历家族。expJ 用 sync 日历,所以 b1 就是 sync 切片;expE 早期用 legacy 日历配 sync 推理,结果测试时模型遇到陌生 t 组合 → 纹理崩解(我们的 texture-dies 事故)。

C · 推理(强制 50 次 forward)

① cluster-τ
32760 个 token 按 k 聚成 128 个信任区(λ=0.2,地板 0.8)
不逐 token 独立 → 同一物体不会被切成噪声马赛克
② SDEdit 起点
x = (1−τ₀)·z_mem + τ₀·ε
因 τ₀≥0.8 → 记忆仅剩 ≤20%,肉眼是纯噪声,只传粗布局
③ SYNC 下降 × 50
t_i(e) = clamp(τ₀_i − e, 0, 1)
全体同步起跑,谁先到 0 谁先钉在 0.02 成为干净参考
warp 通道每一步重新喂
④ VAE decode
21 latent 帧 → 81 px 帧
seen-PSNR(k>.5,帧 20/40/60)+ unseen-gray(帧 40)

三代的 τ₀(k) 曲线 — 一张图看清分歧

1.00 0.80 0.60 0.45 k=0 k=0.5 k=1 knownness k (观察证据) 起点噪声上限 τ₀ expM τ₀ ≡ 1(改用速率 T=1−.5k) expJ 1 − 0.2k(窄带) expF 1 − .95k(全幅带,地板 .45)
读法:横轴向右 = 证据越多。expF(黄)一路俯冲到 0.45 —— 全知区起手就是半张照片,可以"抄"。expJ(绿)只降到 0.80 —— 抄不到纹理,只拿到粗布局,内容必须每步从通道重读。expM(紫)贴着顶边 —— 起点一律纯噪声,k 改去决定交卷顺序。整条演进是主动放弃"抄"的便宜。

expJ vs expF — 单变量对照

组件expFexpJ是否同一
backbone / 可训参数I2V-14B, LoRA-64 + AdaLN✓ 同
条件通道17ch(+6 ray)✓ 同
骰子(rehearsal/lift/patch/sync).10 / .35 / ✓ / ✓✓ 同
lr / 步数 / 数据5e-5 / 10k / cache_novoxel✓ 同
λ(k→τ 斜率)0.95,地板 .450.20,地板 .80✗ 唯一差异
所以 expJ 是一次干净的单变量实验 —— 除了 λ 之外每一个 flag 都和 expF 逐字相同,分数差异只能归因于窄带本身。当前读数:expJ_narrow @3000 = 12.78,expF @5000 = 13.07(50 步终榜)。诚实脚注:纯抄 z_mem 的零智能上限在同一度量下就是 12.85,所以这个 0.3dB 差距很大程度是"谁描得更准"而非"谁更懂场景" —— 真判决要等 20-clip 官方评测与 revisit 一致性指标。

expJ 实拍 50 步 · @3500

行序:GT / expJ_narrow / expJ_ray / expF +ray(参照)/ τ₀ 热力图(蓝 .80 早交卷 → 红 1.00 全程降噪)。 最后一行是推理时真实使用的每 token 上限,和输出并排 —— 可以直接对照"哪块被判为已知"与"那块画成什么样"。
clipexpJ_narrowexpJ_rayexpF +ray(参照)
111b656f TEST16.316.316.4
2501f488 TEST10.410.410.5
0003dc82 TRAIN12.813.013.0
00534f58 TRAIN11.711.411.4
平均12.8012.7812.83
读图三点。窄带没有画质代价:三行目视几乎无法区分,窄带 12.80 vs 上限家族 12.83 —— 0.03dB,远在噪声带内。放弃"抄纹理"并没有让画面变差,这是窄带路线最重要的正面证据。 ② expJ 的内容能量更高(unseen-gray −21~−36 vs expF −22~−35 相当,但 expJ_ray 在 3/4 个 clip 上更负)= 未观察区填得更满而非留灰。 ③ τ₀ 图揭示了机制:帧 0/20 几乎全蓝(τ₀≈.80,证据充足早交卷),帧 60/80 右侧转红(τ₀→1.00,新区全程降噪) —— 时刻表跟着相机走出覆盖区而正确演化。但注意:蓝色区里也包含 图鉴 里指出的拉丝区(density-k 的乐观偏差)—— 那些地方"早交卷"其实交的是错答案。
TEST 111b656f — expJ 双臂 16.3dB,与冠军 expF 16.4 持平
TEST 2501f488 — 全场最难 clip(覆盖率 .678,深帧几乎无证据)
TRAIN 00534f58 — 窄带在此 clip 上反超参照 (11.7 vs 11.4)
相关:噪声分布三代对照 · 第 0 步画布实拍 · 50 步终榜 · 组件矩阵 · 实验图鉴 · warp/k 数据图鉴