vtwm-cosmos-overfit / index.html
yxma's picture
full page: Part1 overfit (v3/causal/contact) + Part2 cross-arch causal-vs-noncausal (V+T, vision-only, tactile-only), 120 synced videos
9b1dd5d verified
Raw
History Blame
79.1 kB
<!doctype html>
<html lang="en"><head>
<meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">
<title>Cosmos gen-7b — overfit & cross-architecture</title>
<style>
:root{
--bg:#f7f7f8; --panel:#ffffff; --ink:#16181d; --sub:#5c6270; --line:#e6e8ec;
--accent:#4f46e5; --accent2:#0ea5e9;
--ok:#0f9d58; --okbg:#e7f6ee; --warn:#c77700; --warnbg:#fdf3e3; --bad:#d92d20; --badbg:#fdeceb;
--win:#0f9d58; --winbg:#e7f6ee;
--radius:16px; --shadow:0 1px 2px rgba(16,24,40,.04),0 8px 24px rgba(16,24,40,.06);
}
@media(prefers-color-scheme:dark){:root{
--bg:#0d0f14; --panel:#151922; --ink:#eaecef; --sub:#98a1b3; --line:#232936;
--accent:#8b8cf7; --accent2:#38bdf8;
--ok:#37d399; --okbg:#0f2a20; --warn:#f2b34b; --warnbg:#2a2110; --bad:#f77066; --badbg:#2a1414;
--win:#37d399; --winbg:#0f2a20;
--shadow:0 1px 2px rgba(0,0,0,.3),0 8px 24px rgba(0,0,0,.35);
}}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:96px}
body{margin:0;background:var(--bg);color:var(--ink);
font:15px/1.55 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}
.wrap{max-width:1200px;margin:0 auto;padding:0 20px}
.hero{padding:56px 0 26px}
.hero .kick{color:var(--accent);font-weight:700;letter-spacing:.08em;text-transform:uppercase;font-size:12px}
.hero h1{margin:.25em 0 .35em;font-size:clamp(26px,4vw,40px);line-height:1.1;letter-spacing:-.02em}
.hero p.lede{margin:0;color:var(--sub);max-width:74ch;font-size:16px}
.reading{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
padding:14px 18px;margin:18px 0 4px;box-shadow:var(--shadow);font-size:13.5px;color:var(--sub)}
.reading b{color:var(--ink)}
.dot{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:5px}
.legend{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin:22px 0 4px}
.chip{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px 14px;box-shadow:var(--shadow)}
.chip b{display:block;font-size:14px;margin-bottom:3px}.chip span{color:var(--sub);font-size:12.5px;line-height:1.45}
nav.sticky{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--bg) 82%,transparent);
backdrop-filter:saturate(150%) blur(10px);border-bottom:1px solid var(--line);margin-top:24px}
nav.sticky .wrap{display:flex;gap:7px;flex-wrap:wrap;align-items:center;padding-top:10px;padding-bottom:10px}
nav.sticky a{color:var(--sub);text-decoration:none;font-weight:600;font-size:13px;padding:5px 11px;border-radius:999px;border:1px solid transparent}
nav.sticky a:hover{color:var(--ink);border-color:var(--line);background:var(--panel)}
nav.sticky .ngrp{color:var(--accent);font-weight:700;text-transform:uppercase;letter-spacing:.06em;font-size:10.5px;padding-left:8px}
.band{border-top:1px solid var(--line);margin-top:8px}
.band-h{padding:34px 0 2px}.band-h .t{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}
.band-h h2.big{margin:.2em 0 .1em;font-size:24px;letter-spacing:-.01em}
.band-h p{margin:0;color:var(--sub);max-width:80ch;font-size:14.5px}
section.run{padding:30px 0;border-top:1px solid var(--line)}
.run-head h2{margin:0 0 4px;font-size:20px;letter-spacing:-.01em}
.run-head p{margin:0 0 18px;color:var(--sub);max-width:82ch}
.cols{display:grid;grid-template-columns:minmax(400px,1fr) minmax(430px,1.15fr);gap:26px;align-items:start}
@media(max-width:980px){.cols{grid-template-columns:1fr}}
.xwrap{display:grid;grid-template-columns:minmax(280px,.7fr) minmax(520px,1.6fr);gap:26px;align-items:start}
@media(max-width:980px){.xwrap{grid-template-columns:1fr}}
h3{font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--sub);margin:0 0 12px}
.qt{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--line);
border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);font-variant-numeric:tabular-nums}
.qt th{text-align:right;font-size:12px;color:var(--sub);font-weight:600;padding:11px 14px;border-bottom:1px solid var(--line)}
.qt th:first-child{text-align:left}
.qt td{padding:9px 14px;border-bottom:1px solid var(--line)}
.qt tr:last-child td{border-bottom:none}
.qt .mname{font-weight:500}.qt .arrow{color:var(--sub);font-size:11px}
.qt .num{text-align:right}
.qt tr.grp td{background:color-mix(in srgb,var(--accent) 7%,var(--panel));font-size:11px;text-transform:uppercase;
letter-spacing:.05em;color:var(--sub);font-weight:700;padding:7px 14px}
.gap-ok{color:var(--ok);background:var(--okbg);font-weight:600;border-radius:6px}
.gap-warn{color:var(--warn);background:var(--warnbg);font-weight:600;border-radius:6px}
.gap-bad{color:var(--bad);background:var(--badbg);font-weight:700;border-radius:6px}
.win{color:var(--win);background:var(--winbg);font-weight:700;border-radius:6px}
.seg{display:inline-flex;background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:3px;margin-bottom:14px}
.seg-b{border:none;background:transparent;color:var(--sub);font:inherit;font-weight:600;font-size:13px;padding:5px 16px;border-radius:999px;cursor:pointer}
.seg-b.active{background:var(--accent);color:#fff}
.pane{display:none}.pane.show{display:block}
.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
@media(max-width:560px){.grid{grid-template-columns:1fr}}
.xgal{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:720px){.xgal{grid-template-columns:1fr}}
.xcol-h{font-size:12px;font-weight:700;letter-spacing:.03em;color:var(--ink);margin:0 0 10px;
padding:6px 10px;background:var(--panel);border:1px solid var(--line);border-radius:8px;display:inline-block}
.cgrid{display:grid;grid-template-columns:1fr;gap:12px}
.scard{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:10px;box-shadow:var(--shadow)}
.scard-h{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--sub);font-weight:700;margin:2px 4px 8px}
.vid{margin:0 0 8px}.vid:last-of-type{margin-bottom:2px}
.vid video{width:100%;display:block;border-radius:8px;background:#000;aspect-ratio:2/1;object-fit:cover}
.vid figcaption{font-size:11.5px;color:var(--sub);margin-top:4px;display:flex;justify-content:space-between}
.vid .gtp{color:var(--accent2);font-weight:600}
.empty{color:var(--sub);font-style:italic;padding:16px}
.ctrl{display:flex;align-items:center;gap:9px;margin-top:8px;padding:2px 2px 0}
.pp{flex:0 0 auto;width:30px;height:30px;border-radius:8px;border:1px solid var(--line);background:var(--panel);
color:var(--ink);font-size:12px;cursor:pointer;display:grid;place-items:center}
.pp:hover{border-color:var(--accent)}
.scrub{flex:1 1 auto;-webkit-appearance:none;appearance:none;height:5px;border-radius:999px;background:var(--line);cursor:pointer;outline:none}
.scrub::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:var(--accent);border:2px solid var(--panel);box-shadow:0 1px 3px rgba(0,0,0,.3)}
.scrub::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--accent);border:2px solid var(--panel)}
.tlabel{flex:0 0 auto;font-size:11px;color:var(--sub);font-variant-numeric:tabular-nums;min-width:38px;text-align:right}
footer{border-top:1px solid var(--line);padding:26px 0 50px;color:var(--sub);font-size:12.5px;margin-top:20px}
</style></head>
<body>
<header class="hero"><div class="wrap">
<div class="kick">Visuo-tactile world model · Cosmos gen-7b</div>
<h1>Overfit test &amp; cross-architecture</h1>
<p class="lede">Short-horizon (16-frame) Cosmos-decoded rollouts. <b>Part 1</b> compares
the <b>train</b> vs <b>val</b> set (overfit test) for the full V+T models. <b>Part 2</b> swaps
the diffusion backbone <b>causal ↔ noncausal</b> across three modality configs
(V+T, vision-only, tactile-only). Vision and tactile clips are latency-corrected and play in lockstep.</p>
<div class="reading">
<b>Gap column (Part 1):</b>
<span class="dot" style="background:var(--ok)"></span>≤10% generalizing &nbsp;
<span class="dot" style="background:var(--warn)"></span>10–35% mild &nbsp;
<span class="dot" style="background:var(--bad)"></span>&gt;35% strong overfit. &nbsp;·&nbsp;
<b>Green cell (Part 2)</b> = the winning backbone for that metric.
</div>
<div class="legend"><div class="chip"><b>v3 · baseline</b><span>Bidirectional temporal attention (full-window). The original Cosmos-tokenizer world model.</span></div><div class="chip"><b>v3 · causal</b><span>Causal temporal attention (per-frame tril mask) — matches the causal tokenizer and AR rollout regime.</span></div><div class="chip"><b>v3 · contact-aware</b><span>Adds the contact-aware tactile aux loss (x0-space, alpha_bar-weighted) on top of v3.</span></div></div>
</div></header>
<nav class="sticky"><div class="wrap"><span class="ngrp">Overfit</span><a href="#v3">v3 · baseline</a><a href="#causal">v3 · causal</a><a href="#contact">v3 · contact-aware</a><span class="ngrp">Cross-arch</span><a href="#x-vt">Full V + T</a><a href="#x-vision">Vision-only</a><a href="#x-tactile">Tactile-only</a></div></nav>
<main class="wrap">
<div class="band-h"><div class="t">Part 1</div><h2 class="big">Overfit test — full V + T</h2>
<p>Same recipe, three backbones. Does the model memorize the ~30 training episodes?</p></div>
<section class="run" id="v3">
<div class="run-head"><h2>v3 · baseline</h2><p>Bidirectional temporal attention (full-window). The original Cosmos-tokenizer world model.</p></div>
<div class="cols">
<div class="col-q"><h3>Overfit test — train vs val</h3><table class="qt"><thead><tr><th>metric</th><th>train (n=10)</th><th>val (n=10)</th><th>gap</th></tr></thead><tbody><tr class="grp"><td colspan="4">Visual — middle view</td></tr><tr><td class="mname">LPIPS <span class="arrow"></span></td><td class="num">0.0985</td><td class="num">0.0735</td><td class="num gap-ok">-25%</td></tr><tr><td class="mname">SSIM <span class="arrow"></span></td><td class="num">0.8107</td><td class="num">0.8555</td><td class="num gap-ok">-6%</td></tr><tr><td class="mname">PSNR <span class="arrow"></span></td><td class="num">25.0741</td><td class="num">26.5707</td><td class="num gap-ok">-6%</td></tr><tr class="grp"><td colspan="4">Tactile — perceptual</td></tr><tr><td class="mname">LPIPS · left <span class="arrow"></span></td><td class="num">0.0618</td><td class="num">0.0457</td><td class="num gap-ok">-26%</td></tr><tr><td class="mname">LPIPS · right <span class="arrow"></span></td><td class="num">0.0217</td><td class="num">0.0665</td><td class="num gap-bad">+206%</td></tr><tr class="grp"><td colspan="4">Tactile — contact / physics</td></tr><tr><td class="mname">mask IoU (τ8) <span class="arrow"></span></td><td class="num">0.2959</td><td class="num">0.2469</td><td class="num gap-warn">+17%</td></tr><tr><td class="mname">contact MSE <span class="arrow"></span></td><td class="num">29.4892</td><td class="num">37.3549</td><td class="num gap-warn">+27%</td></tr><tr><td class="mname">onset err <span class="arrow"></span></td><td class="num">94.0515</td><td class="num">4.9556</td><td class="num gap-ok">-95%</td></tr><tr><td class="mname">intensity spearman <span class="arrow"></span></td><td class="num">0.5550</td><td class="num">0.7600</td><td class="num gap-ok">-37%</td></tr></tbody></table></div>
<div class="col-v"><h3>Short-horizon rollouts</h3><div class="qual"><div class="seg"><button class="seg-b active" data-t="train">Train set</button><button class="seg-b" data-t="val">Val set</button></div><div class="pane" data-split="train"><div class="grid"><div class="scard"><div class="scard-h">sample 000</div><figure class="vid"><video src="media/v3/train/sample_000/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/v3/train/sample_000/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/v3/train/sample_000/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 001</div><figure class="vid"><video src="media/v3/train/sample_001/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/v3/train/sample_001/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/v3/train/sample_001/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 002</div><figure class="vid"><video src="media/v3/train/sample_002/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/v3/train/sample_002/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/v3/train/sample_002/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 003</div><figure class="vid"><video src="media/v3/train/sample_003/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/v3/train/sample_003/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/v3/train/sample_003/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div></div></div><div class="pane" data-split="val"><div class="grid"><div class="scard"><div class="scard-h">sample 000</div><figure class="vid"><video src="media/v3/val/sample_000/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/v3/val/sample_000/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/v3/val/sample_000/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 001</div><figure class="vid"><video src="media/v3/val/sample_001/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/v3/val/sample_001/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/v3/val/sample_001/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 002</div><figure class="vid"><video src="media/v3/val/sample_002/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/v3/val/sample_002/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/v3/val/sample_002/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 003</div><figure class="vid"><video src="media/v3/val/sample_003/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/v3/val/sample_003/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/v3/val/sample_003/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div></div></div></div></div>
</div></section><section class="run" id="causal">
<div class="run-head"><h2>v3 · causal</h2><p>Causal temporal attention (per-frame tril mask) — matches the causal tokenizer and AR rollout regime.</p></div>
<div class="cols">
<div class="col-q"><h3>Overfit test — train vs val</h3><table class="qt"><thead><tr><th>metric</th><th>train (n=10)</th><th>val (n=10)</th><th>gap</th></tr></thead><tbody><tr class="grp"><td colspan="4">Visual — middle view</td></tr><tr><td class="mname">LPIPS <span class="arrow"></span></td><td class="num">0.0531</td><td class="num">0.0441</td><td class="num gap-ok">-17%</td></tr><tr><td class="mname">SSIM <span class="arrow"></span></td><td class="num">0.8772</td><td class="num">0.9008</td><td class="num gap-ok">-3%</td></tr><tr><td class="mname">PSNR <span class="arrow"></span></td><td class="num">28.0965</td><td class="num">29.1089</td><td class="num gap-ok">-4%</td></tr><tr class="grp"><td colspan="4">Tactile — perceptual</td></tr><tr><td class="mname">LPIPS · left <span class="arrow"></span></td><td class="num">0.0630</td><td class="num">0.0531</td><td class="num gap-ok">-16%</td></tr><tr><td class="mname">LPIPS · right <span class="arrow"></span></td><td class="num">0.0203</td><td class="num">0.0761</td><td class="num gap-bad">+274%</td></tr><tr class="grp"><td colspan="4">Tactile — contact / physics</td></tr><tr><td class="mname">mask IoU (τ8) <span class="arrow"></span></td><td class="num">0.2870</td><td class="num">0.2067</td><td class="num gap-warn">+28%</td></tr><tr><td class="mname">contact MSE <span class="arrow"></span></td><td class="num">32.1382</td><td class="num">38.6478</td><td class="num gap-warn">+20%</td></tr><tr><td class="mname">onset err <span class="arrow"></span></td><td class="num">133.9037</td><td class="num">59.3774</td><td class="num gap-ok">-56%</td></tr><tr><td class="mname">intensity spearman <span class="arrow"></span></td><td class="num">0.5750</td><td class="num">0.6100</td><td class="num gap-ok">-6%</td></tr></tbody></table></div>
<div class="col-v"><h3>Short-horizon rollouts</h3><div class="qual"><div class="seg"><button class="seg-b active" data-t="train">Train set</button><button class="seg-b" data-t="val">Val set</button></div><div class="pane" data-split="train"><div class="grid"><div class="scard"><div class="scard-h">sample 000</div><figure class="vid"><video src="media/causal/train/sample_000/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/causal/train/sample_000/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/causal/train/sample_000/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 001</div><figure class="vid"><video src="media/causal/train/sample_001/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/causal/train/sample_001/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/causal/train/sample_001/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 002</div><figure class="vid"><video src="media/causal/train/sample_002/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/causal/train/sample_002/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/causal/train/sample_002/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 003</div><figure class="vid"><video src="media/causal/train/sample_003/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/causal/train/sample_003/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/causal/train/sample_003/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div></div></div><div class="pane" data-split="val"><div class="grid"><div class="scard"><div class="scard-h">sample 000</div><figure class="vid"><video src="media/causal/val/sample_000/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/causal/val/sample_000/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/causal/val/sample_000/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 001</div><figure class="vid"><video src="media/causal/val/sample_001/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/causal/val/sample_001/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/causal/val/sample_001/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 002</div><figure class="vid"><video src="media/causal/val/sample_002/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/causal/val/sample_002/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/causal/val/sample_002/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 003</div><figure class="vid"><video src="media/causal/val/sample_003/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/causal/val/sample_003/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/causal/val/sample_003/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div></div></div></div></div>
</div></section><section class="run" id="contact">
<div class="run-head"><h2>v3 · contact-aware</h2><p>Adds the contact-aware tactile aux loss (x0-space, alpha_bar-weighted) on top of v3.</p></div>
<div class="cols">
<div class="col-q"><h3>Overfit test — train vs val</h3><table class="qt"><thead><tr><th>metric</th><th>train (n=10)</th><th>val (n=10)</th><th>gap</th></tr></thead><tbody><tr class="grp"><td colspan="4">Visual — middle view</td></tr><tr><td class="mname">LPIPS <span class="arrow"></span></td><td class="num">0.0674</td><td class="num">0.0460</td><td class="num gap-ok">-32%</td></tr><tr><td class="mname">SSIM <span class="arrow"></span></td><td class="num">0.8538</td><td class="num">0.8894</td><td class="num gap-ok">-4%</td></tr><tr><td class="mname">PSNR <span class="arrow"></span></td><td class="num">26.9559</td><td class="num">28.2838</td><td class="num gap-ok">-5%</td></tr><tr class="grp"><td colspan="4">Tactile — perceptual</td></tr><tr><td class="mname">LPIPS · left <span class="arrow"></span></td><td class="num">0.0593</td><td class="num">0.0430</td><td class="num gap-ok">-28%</td></tr><tr><td class="mname">LPIPS · right <span class="arrow"></span></td><td class="num">0.0270</td><td class="num">0.0816</td><td class="num gap-bad">+203%</td></tr><tr class="grp"><td colspan="4">Tactile — contact / physics</td></tr><tr><td class="mname">mask IoU (τ8) <span class="arrow"></span></td><td class="num">0.2849</td><td class="num">0.2296</td><td class="num gap-warn">+19%</td></tr><tr><td class="mname">contact MSE <span class="arrow"></span></td><td class="num">30.9060</td><td class="num">38.3891</td><td class="num gap-warn">+24%</td></tr><tr><td class="mname">onset err <span class="arrow"></span></td><td class="num">41.5967</td><td class="num">14.6901</td><td class="num gap-ok">-65%</td></tr><tr><td class="mname">intensity spearman <span class="arrow"></span></td><td class="num">0.7150</td><td class="num">0.6800</td><td class="num gap-ok">+5%</td></tr></tbody></table></div>
<div class="col-v"><h3>Short-horizon rollouts</h3><div class="qual"><div class="seg"><button class="seg-b active" data-t="train">Train set</button><button class="seg-b" data-t="val">Val set</button></div><div class="pane" data-split="train"><div class="grid"><div class="scard"><div class="scard-h">sample 000</div><figure class="vid"><video src="media/contact/train/sample_000/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/contact/train/sample_000/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/contact/train/sample_000/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 001</div><figure class="vid"><video src="media/contact/train/sample_001/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/contact/train/sample_001/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/contact/train/sample_001/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 002</div><figure class="vid"><video src="media/contact/train/sample_002/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/contact/train/sample_002/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/contact/train/sample_002/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 003</div><figure class="vid"><video src="media/contact/train/sample_003/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/contact/train/sample_003/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/contact/train/sample_003/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div></div></div><div class="pane" data-split="val"><div class="grid"><div class="scard"><div class="scard-h">sample 000</div><figure class="vid"><video src="media/contact/val/sample_000/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/contact/val/sample_000/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/contact/val/sample_000/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 001</div><figure class="vid"><video src="media/contact/val/sample_001/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/contact/val/sample_001/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/contact/val/sample_001/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 002</div><figure class="vid"><video src="media/contact/val/sample_002/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/contact/val/sample_002/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/contact/val/sample_002/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 003</div><figure class="vid"><video src="media/contact/val/sample_003/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/contact/val/sample_003/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/contact/val/sample_003/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div></div></div></div></div>
</div></section>
<div class="band band-h"><div class="t">Part 2</div><h2 class="big">Cross-architecture — causal vs noncausal</h2>
<p>The same causal-backbone swap under three modality configurations. Val metrics; the winning backbone per metric is highlighted.</p></div>
<section class="run xa" id="x-vt">
<div class="run-head"><h2>Full V + T — causal vs noncausal</h2><p>Three views + two tactile sensors. Swapping the backbone from bidirectional (v3) to causal.</p></div>
<div class="xwrap">
<div class="xtab"><h3>noncausal vs causal (val)</h3><table class="qt"><thead><tr><th>metric (val)</th><th>noncausal</th><th>causal</th></tr></thead><tbody><tr class="grp"><td colspan="3">Visual — middle view</td></tr><tr><td class="mname">LPIPS <span class="arrow"></span></td><td class="num ">0.0735</td><td class="num win">0.0441</td></tr><tr><td class="mname">SSIM <span class="arrow"></span></td><td class="num ">0.8555</td><td class="num win">0.9008</td></tr><tr><td class="mname">PSNR <span class="arrow"></span></td><td class="num ">26.5707</td><td class="num win">29.1089</td></tr><tr class="grp"><td colspan="3">Tactile</td></tr><tr><td class="mname">LPIPS · left <span class="arrow"></span></td><td class="num win">0.0457</td><td class="num ">0.0531</td></tr><tr><td class="mname">LPIPS · right <span class="arrow"></span></td><td class="num win">0.0665</td><td class="num ">0.0761</td></tr><tr><td class="mname">mask IoU (τ8) <span class="arrow"></span></td><td class="num win">0.2469</td><td class="num ">0.2067</td></tr><tr><td class="mname">contact MSE <span class="arrow"></span></td><td class="num win">37.3549</td><td class="num ">38.6478</td></tr><tr><td class="mname">onset err ms <span class="arrow"></span></td><td class="num win">4.9556</td><td class="num ">59.3774</td></tr></tbody></table></div>
<div class="xvid"><h3>Rollouts — noncausal | causal</h3><div class="qual"><div class="seg"><button class="seg-b active" data-t="val">Val set</button><button class="seg-b" data-t="train">Train set</button></div><div class="xgal"><div class="xcol"><div class="xcol-h">noncausal · val_loss 0.1234</div><div class="pane show" data-split="val"><div class="cgrid"><div class="scard"><div class="scard-h">sample 000</div><figure class="vid"><video src="media/v3/val/sample_000/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/v3/val/sample_000/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/v3/val/sample_000/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 001</div><figure class="vid"><video src="media/v3/val/sample_001/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/v3/val/sample_001/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/v3/val/sample_001/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 002</div><figure class="vid"><video src="media/v3/val/sample_002/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/v3/val/sample_002/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/v3/val/sample_002/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 003</div><figure class="vid"><video src="media/v3/val/sample_003/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/v3/val/sample_003/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/v3/val/sample_003/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div></div></div><div class="pane" data-split="train"><div class="cgrid"><div class="scard"><div class="scard-h">sample 000</div><figure class="vid"><video src="media/v3/train/sample_000/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/v3/train/sample_000/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/v3/train/sample_000/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 001</div><figure class="vid"><video src="media/v3/train/sample_001/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/v3/train/sample_001/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/v3/train/sample_001/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 002</div><figure class="vid"><video src="media/v3/train/sample_002/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/v3/train/sample_002/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/v3/train/sample_002/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 003</div><figure class="vid"><video src="media/v3/train/sample_003/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/v3/train/sample_003/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/v3/train/sample_003/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div></div></div></div><div class="xcol"><div class="xcol-h">causal · val_loss 0.1647</div><div class="pane show" data-split="val"><div class="cgrid"><div class="scard"><div class="scard-h">sample 000</div><figure class="vid"><video src="media/causal/val/sample_000/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/causal/val/sample_000/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/causal/val/sample_000/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 001</div><figure class="vid"><video src="media/causal/val/sample_001/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/causal/val/sample_001/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/causal/val/sample_001/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 002</div><figure class="vid"><video src="media/causal/val/sample_002/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/causal/val/sample_002/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/causal/val/sample_002/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 003</div><figure class="vid"><video src="media/causal/val/sample_003/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/causal/val/sample_003/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/causal/val/sample_003/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div></div></div><div class="pane" data-split="train"><div class="cgrid"><div class="scard"><div class="scard-h">sample 000</div><figure class="vid"><video src="media/causal/train/sample_000/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/causal/train/sample_000/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/causal/train/sample_000/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 001</div><figure class="vid"><video src="media/causal/train/sample_001/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/causal/train/sample_001/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/causal/train/sample_001/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 002</div><figure class="vid"><video src="media/causal/train/sample_002/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/causal/train/sample_002/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/causal/train/sample_002/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 003</div><figure class="vid"><video src="media/causal/train/sample_003/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/causal/train/sample_003/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/causal/train/sample_003/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div></div></div></div></div></div></div>
</div></section><section class="run xa" id="x-vision">
<div class="run-head"><h2>Vision-only — causal vs noncausal</h2><p>Tactile stream removed — isolates how the causal backbone affects pure visual prediction.</p></div>
<div class="xwrap">
<div class="xtab"><h3>noncausal vs causal (val)</h3><table class="qt"><thead><tr><th>metric (val)</th><th>noncausal</th><th>causal</th></tr></thead><tbody><tr class="grp"><td colspan="3">Visual — middle view</td></tr><tr><td class="mname">LPIPS <span class="arrow"></span></td><td class="num ">0.0498</td><td class="num win">0.0343</td></tr><tr><td class="mname">SSIM <span class="arrow"></span></td><td class="num ">0.8870</td><td class="num win">0.9162</td></tr><tr><td class="mname">PSNR <span class="arrow"></span></td><td class="num ">28.3848</td><td class="num win">30.1398</td></tr></tbody></table></div>
<div class="xvid"><h3>Rollouts — noncausal | causal</h3><div class="qual"><div class="seg"><button class="seg-b active" data-t="val">Val set</button><button class="seg-b" data-t="train">Train set</button></div><div class="xgal"><div class="xcol"><div class="xcol-h">noncausal · val_loss 0.0297</div><div class="pane show" data-split="val"><div class="cgrid"><div class="scard"><div class="scard-h">sample 000</div><figure class="vid"><video src="media/vo_noncausal/val/sample_000/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 001</div><figure class="vid"><video src="media/vo_noncausal/val/sample_001/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 002</div><figure class="vid"><video src="media/vo_noncausal/val/sample_002/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 003</div><figure class="vid"><video src="media/vo_noncausal/val/sample_003/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div></div></div><div class="pane" data-split="train"><div class="cgrid"><div class="scard"><div class="scard-h">sample 000</div><figure class="vid"><video src="media/vo_noncausal/train/sample_000/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 001</div><figure class="vid"><video src="media/vo_noncausal/train/sample_001/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 002</div><figure class="vid"><video src="media/vo_noncausal/train/sample_002/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 003</div><figure class="vid"><video src="media/vo_noncausal/train/sample_003/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div></div></div></div><div class="xcol"><div class="xcol-h">causal · val_loss 0.0347</div><div class="pane show" data-split="val"><div class="cgrid"><div class="scard"><div class="scard-h">sample 000</div><figure class="vid"><video src="media/vo_causal/val/sample_000/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 001</div><figure class="vid"><video src="media/vo_causal/val/sample_001/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 002</div><figure class="vid"><video src="media/vo_causal/val/sample_002/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 003</div><figure class="vid"><video src="media/vo_causal/val/sample_003/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div></div></div><div class="pane" data-split="train"><div class="cgrid"><div class="scard"><div class="scard-h">sample 000</div><figure class="vid"><video src="media/vo_causal/train/sample_000/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 001</div><figure class="vid"><video src="media/vo_causal/train/sample_001/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 002</div><figure class="vid"><video src="media/vo_causal/train/sample_002/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 003</div><figure class="vid"><video src="media/vo_causal/train/sample_003/view.mp4" muted playsinline preload="auto" data-lead="1"></video><figcaption>middle view <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div></div></div></div></div></div></div>
</div></section><section class="run xa" id="x-tactile">
<div class="run-head"><h2>Tactile-only — causal vs noncausal</h2><p>Visual stream removed — isolates the causal backbone's effect on tactile / contact prediction.</p></div>
<div class="xwrap">
<div class="xtab"><h3>noncausal vs causal (val)</h3><table class="qt"><thead><tr><th>metric (val)</th><th>noncausal</th><th>causal</th></tr></thead><tbody><tr class="grp"><td colspan="3">Tactile</td></tr><tr><td class="mname">LPIPS · left <span class="arrow"></span></td><td class="num ">0.0514</td><td class="num win">0.0499</td></tr><tr><td class="mname">LPIPS · right <span class="arrow"></span></td><td class="num win">0.0698</td><td class="num ">0.0713</td></tr><tr><td class="mname">mask IoU (τ8) <span class="arrow"></span></td><td class="num win">0.2448</td><td class="num ">0.2183</td></tr><tr><td class="mname">contact MSE <span class="arrow"></span></td><td class="num win">38.4460</td><td class="num ">38.8099</td></tr><tr><td class="mname">onset err ms <span class="arrow"></span></td><td class="num ">0.0000</td><td class="num win">0.0000</td></tr></tbody></table></div>
<div class="xvid"><h3>Rollouts — noncausal | causal</h3><div class="qual"><div class="seg"><button class="seg-b active" data-t="val">Val set</button><button class="seg-b" data-t="train">Train set</button></div><div class="xgal"><div class="xcol"><div class="xcol-h">noncausal · val_loss 0.1084</div><div class="pane show" data-split="val"><div class="cgrid"><div class="scard"><div class="scard-h">sample 000</div><figure class="vid"><video src="media/to_noncausal/val/sample_000/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/to_noncausal/val/sample_000/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 001</div><figure class="vid"><video src="media/to_noncausal/val/sample_001/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/to_noncausal/val/sample_001/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 002</div><figure class="vid"><video src="media/to_noncausal/val/sample_002/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/to_noncausal/val/sample_002/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 003</div><figure class="vid"><video src="media/to_noncausal/val/sample_003/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/to_noncausal/val/sample_003/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div></div></div><div class="pane" data-split="train"><div class="cgrid"><div class="scard"><div class="scard-h">sample 000</div><figure class="vid"><video src="media/to_noncausal/train/sample_000/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/to_noncausal/train/sample_000/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 001</div><figure class="vid"><video src="media/to_noncausal/train/sample_001/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/to_noncausal/train/sample_001/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 002</div><figure class="vid"><video src="media/to_noncausal/train/sample_002/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/to_noncausal/train/sample_002/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 003</div><figure class="vid"><video src="media/to_noncausal/train/sample_003/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/to_noncausal/train/sample_003/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div></div></div></div><div class="xcol"><div class="xcol-h">causal · val_loss 0.1208</div><div class="pane show" data-split="val"><div class="cgrid"><div class="scard"><div class="scard-h">sample 000</div><figure class="vid"><video src="media/to_causal/val/sample_000/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/to_causal/val/sample_000/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 001</div><figure class="vid"><video src="media/to_causal/val/sample_001/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/to_causal/val/sample_001/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 002</div><figure class="vid"><video src="media/to_causal/val/sample_002/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/to_causal/val/sample_002/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 003</div><figure class="vid"><video src="media/to_causal/val/sample_003/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/to_causal/val/sample_003/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div></div></div><div class="pane" data-split="train"><div class="cgrid"><div class="scard"><div class="scard-h">sample 000</div><figure class="vid"><video src="media/to_causal/train/sample_000/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/to_causal/train/sample_000/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 001</div><figure class="vid"><video src="media/to_causal/train/sample_001/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/to_causal/train/sample_001/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 002</div><figure class="vid"><video src="media/to_causal/train/sample_002/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/to_causal/train/sample_002/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div><div class="scard"><div class="scard-h">sample 003</div><figure class="vid"><video src="media/to_causal/train/sample_003/tl.mp4" muted playsinline preload="auto"></video><figcaption>tactile · left <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><figure class="vid"><video src="media/to_causal/train/sample_003/tr.mp4" muted playsinline preload="auto"></video><figcaption>tactile · right <span class="gtp">GT&nbsp;·&nbsp;pred</span></figcaption></figure><div class="ctrl"><button class="pp" aria-label="play/pause"></button><input class="scrub" type="range" min="0" max="1000" value="0" step="1" aria-label="scrub"><span class="tlabel">0/16</span></div></div></div></div></div></div></div></div>
</div></section>
</main>
<footer><div class="wrap">Visuo-tactile world model · decoded with Cosmos CV4x8x8 · GT&nbsp;|&nbsp;pred are future-half predictions (history skipped for metrics).</div></footer>
<script>
document.querySelectorAll('.qual').forEach(q=>{
const panes=q.querySelectorAll('.pane'), btns=q.querySelectorAll('.seg-b');
function sel(t){panes.forEach(p=>p.classList.toggle('show',p.dataset.split===t));
btns.forEach(b=>b.classList.toggle('active',b.dataset.t===t));}
btns.forEach(b=>b.addEventListener('click',()=>sel(b.dataset.t)));
});
const FPS=6;
document.querySelectorAll('.scard').forEach(card=>{
const vids=[...card.querySelectorAll('video')];
const lead=card.querySelector('video[data-lead]')||vids[0];
const bar=card.querySelector('.scrub'), btn=card.querySelector('.pp'), lbl=card.querySelector('.tlabel');
let userPaused=false, visible=false, dur=0, nF=16;
function seekAll(t){vids.forEach(v=>{if(Math.abs(v.currentTime-t)>0.03){try{v.currentTime=t;}catch(e){}}});}
function paint(){const t=lead.currentTime; if(dur) bar.value=Math.round(t/dur*1000);
lbl.textContent=Math.min(Math.round(t*FPS),nF)+'/'+nF;}
lead.addEventListener('loadedmetadata',()=>{dur=lead.duration||0;nF=Math.max(1,Math.round(dur*FPS));paint();});
lead.addEventListener('timeupdate',()=>{
vids.forEach(v=>{if(v!==lead&&Math.abs(v.currentTime-lead.currentTime)>0.05){try{v.currentTime=lead.currentTime;}catch(e){}}});paint();});
lead.addEventListener('ended',()=>{seekAll(0); if(!userPaused&&visible) playAll();});
function playAll(){btn.textContent='⏸';vids.forEach(v=>v.play().catch(()=>{}));}
function pauseAll(){btn.textContent='▶';vids.forEach(v=>v.pause());}
btn.addEventListener('click',()=>{ if(lead.paused){userPaused=false;playAll();} else {userPaused=true;pauseAll();} });
bar.addEventListener('input',()=>{userPaused=true;pauseAll();seekAll(parseInt(bar.value,10)/1000*(dur||0));paint();});
new IntersectionObserver(es=>es.forEach(e=>{visible=e.isIntersecting;
if(visible&&!userPaused) playAll(); else if(!visible) pauseAll();}),{threshold:0.2}).observe(card);
});
</script>
</body></html>