Do rollouts preserve MOTION?
frozen latent flow probe on GT vs predicted tactile latents · cosmos-cv4x8x8 · 2026-08-02 03:59Z
Why this exists. val_loss, latent MSE and decoded PSNR all score
reconstruction. None scores whether the predicted tactile latents describe the right
motion — the part a tactile stream exists to provide. A rollout can be
blurry-but-moving-correctly or sharp-but-static, and PSNR prefers the second.
Method. One LatentFlowProbe is trained on ground-truth latent pairs, then
frozen and applied identically to GT and predicted latents. Any difference is a property of
the latents, not the probe. retention = 1 − EPE(pred,gt)/EPE(zero,gt): 1.0 keeps
all motion structure, 0.0 carries no more than a static clip.
Motion retention is a separate axis from reconstruction
corr(val_loss, retention) = +0.114 over 17 arms — essentially
independent. At val_loss ≈ 0.045 the arms span retention 0.46 to 0.61: same reconstruction
quality, 30% apart on motion. And a model at epoch 5 with 4× the val_loss (v3, +0.621)
nearly matches the fully-trained baseline (+0.648).
Contact weighting costs motion. At a fixed 0.20 threshold, weight 0 → 1 → 3 gives
+0.648 → +0.530 → +0.378, monotone. The one point off that line (weight 2 at the broader
0.12 threshold, +0.614) suggests the damage comes from concentrating the loss on a narrow region
rather than from the weight itself — worth a controlled sweep before trusting it.
All arms
| run | retention | cos |
EPE | val_loss |
|---|
| mv1_v2_stride2_refbank_diffimg_cosmos | +0.957 | +0.998 | 0.0540 | 0.0244 |
| mv1_v2_stride2_p01rand_cosmos | +0.648 | +0.803 | 0.1529 | 0.0299 |
| mv1_v2_stride2_p01rand_adaptw_cosmos | +0.646 | +0.797 | 0.1540 | 0.0300 |
| mv1_v2_stride2_p01_cosmos_tactile_only_v3_noncausal | +0.639 | +0.782 | 0.1621 | 0.1084 |
| mv1_v2_stride2_refbank_difflat_cosmos | +0.635 | +0.809 | 0.1599 | 0.0298 |
| mv1_v2_stride2_p01rand_v2t_cosmos | +0.622 | +0.787 | 0.1681 | 0.0419 |
| mv1_v2_stride2_p01_cosmos_v3 | +0.621 | +0.769 | 0.1700 | 0.1234 |
| mv1_v2_stride2_p01rand_contactw2t12_cosmos | +0.614 | +0.795 | 0.1727 | 0.0562 |
| mv1_v2_stride2_p01rand_contactw1_senshm_depth_cosmos | +0.608 | +0.742 | 0.1755 | 0.0471 |
| mv1_v2_stride2_p01_cosmos_tactile_only_v3_causal | +0.605 | +0.779 | 0.1773 | 0.1208 |
| mv1_v2_stride2_p01_cosmos_v3_causal | +0.604 | +0.770 | 0.1775 | 0.1647 |
| mv1_v2_stride2_p01_cosmos_v3_contact | +0.601 | +0.774 | 0.1791 | 0.1301 |
| mv1_v2_stride2_p01rand_contactw1_cosmos | +0.530 | +0.775 | 0.2029 | 0.0466 |
| mv1_v2_stride2_p01rand_contactw1_senshm_s06_cosmos | +0.525 | +0.749 | 0.2106 | 0.0467 |
| mv1_v2_stride2_p01rand_contactw1_senshm_cosmos | +0.521 | +0.778 | 0.2106 | 0.0467 |
| mv1_v2_stride2_p01rand_contactw1_overlay_cosmos | +0.503 | +0.734 | 0.2184 | 0.0443 |
| mv1_v2_stride2_p01rand_contactw1_senshm_mask_cosmos | +0.462 | +0.734 | 0.2385 | 0.0468 |
| mv1_v2_stride2_p01rand_contactw3_cosmos | +0.378 | +0.743 | 0.2788 | 0.0801 |
Read as a ranking, not an absolute. The probe itself only beats its own
zero baseline by 20% on held-out GT latents (val EPE 0.4229 vs 0.5300), so retention is bounded by
how well the probe reads GT in the first place. Differences of 1-2% between the top arms are
likely noise; the contactw3 gap (0.378 vs 0.648) is not.
Excluded. mv1_v2_stride2_p01_cosmos_vision_only_v3_causal, mv1_v2_stride2_p01_cosmos_vision_only_v3_noncausal carry zero tactile placeholders (vision-only arms) — the probe
reads the same zeros on both sides and scores a meaningless +1.000. Greyed rows have latent
semantics on a different scale (image_diff encodes pixel differences), so their retention is not
comparable.
Raw metrics: data.json