Ten held-out windows and ten training windows, each rolled out at both a single-window horizon and 16 seconds autoregressively — the full {test, train} × {short, long} matrix for two conditioning designs.
gelz — the frozen pixel-space Stage-1 flow concatenated into both experts (exactly, via a zero-init projector: a conv is linear in its input channels), plus FiLM from the raw action vector. Its tactile FiLM vector is 11-D in the gel frame: [dp(3), Rot6D(6), log1p(force_N), contact], where +z is the measured gel normal, so channel 2 is press depth and the force rides on that same axis. That matches what the frozen tactile encoder pixc5_D already sees.
vecfilm — the control. Same architecture, but no flow concatenated, the tactile vector is the rigid-frame 9-D step, and no force. It exists because gelz changes three things at once, and without it none of them could be attributed.
short = one 16-frame window: 2 clean latent context frames, 2 generated, decoded to 13 pixel frames of which 5 come from the context. long = 16 s autoregressive sliding-window rollout, keep-1: seed with context, predict a window, keep one new latent frame, advance, repeat — so error compounds over ~22 model calls. test = the two held-out episodes; train = six seen episodes across all three recording dates, so the pair measures the generalisation gap, not just accuracy.
| cell | model | camera view | tactile left | tactile right | n |
|---|---|---|---|---|---|
| short / test | gelz | 24.00 | 45.41 | 46.05 | 10 |
| vecfilm | 23.97 | 45.58 | 45.83 | 10 | |
| short / train | gelz | 25.50 | 43.43 | 45.26 | 10 |
| vecfilm | 24.90 | 43.44 | 44.78 | 10 | |
| long / test | gelz | 19.98 | 32.23 | 32.34 | 10 |
| vecfilm | 19.74 | 32.36 | 32.63 | 10 | |
| long / train | gelz | 21.89 | 30.54 | 31.13 | 10 |
| vecfilm | 21.03 | 30.66 | 31.44 | 10 |
| horizon | model | camera view | tactile left | tactile right |
|---|---|---|---|---|
| short | gelz | +1.50 | -1.98 | -0.79 |
| short | vecfilm | +0.93 | -2.14 | -1.05 |
| long | gelz | +1.91 | -1.69 | -1.21 |
| long | vecfilm | +1.28 | -1.69 | -1.19 |
Ground truth on top, then each model. Frames outlined in red are generated; the unoutlined leading frames are the clean context. Long-horizon strips subsample evenly across the 16 s. PSNR is over the whole clip, computed on the raw decoded tensors — the images are h264, which costs a little fidelity equally in every row.
























































































































sbatch vm_diffusion/run_eval_matrix20.sh 16 # 2 models x 2 splits x 2 horizons python -m vm_diffusion.scripts.build_hf_space_matrix20 --push