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) 曲线 — 一张图看清分歧
读法:横轴向右 = 证据越多。expF(黄)一路俯冲到 0.45 —— 全知区起手就是半张照片,可以"抄"。expJ(绿)只降到 0.80 —— 抄不到纹理,只拿到粗布局,内容必须每步从通道重读。expM(紫)贴着顶边 —— 起点一律纯噪声,k 改去决定交卷顺序。整条演进是主动放弃"抄"的便宜。
expJ vs expF — 单变量对照
| 组件 | expF | expJ | 是否同一 |
| backbone / 可训参数 | I2V-14B, LoRA-64 + AdaLN | 同 | ✓ 同 |
| 条件通道 | 17ch(+6 ray) | 同 | ✓ 同 |
| 骰子(rehearsal/lift/patch/sync) | .10 / .35 / ✓ / ✓ | 同 | ✓ 同 |
| lr / 步数 / 数据 | 5e-5 / 10k / cache_novoxel | 同 | ✓ 同 |
| λ(k→τ 斜率) | 0.95,地板 .45 | 0.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 上限,和输出并排 —— 可以直接对照"哪块被判为已知"与"那块画成什么样"。
| clip | expJ_narrow | expJ_ray | expF +ray(参照) |
| 111b656f TEST | 16.3 | 16.3 | 16.4 |
| 2501f488 TEST | 10.4 | 10.4 | 10.5 |
| 0003dc82 TRAIN | 12.8 | 13.0 | 13.0 |
| 00534f58 TRAIN | 11.7 | 11.4 | 11.4 |
| 平均 | 12.80 | 12.78 | 12.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)