File size: 36,440 Bytes
eafbe80 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 | <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Echo-Memory | Echo Team</title>
<meta
name="description"
content="Echo-Memory: A controlled study of memory mechanisms in action-conditioned world models."
/>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=IBM+Plex+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;600&display=swap"
rel="stylesheet"
/>
<link rel="stylesheet" href="style.css?v=dev-i18n-v1" />
</head>
<body>
<div class="scroll-progress" aria-hidden="true"><span class="scroll-progress__bar"></span></div>
<!-- arXiv: https://arxiv.org/abs/2606.09803 -->
<div class="page-shell">
<div class="ambient-bg" aria-hidden="true">
<div class="ambient-orb ambient-orb--rose"></div>
<div class="ambient-orb ambient-orb--blush"></div>
<div class="ambient-orb ambient-orb--pearl"></div>
<div class="ambient-shimmer"></div>
</div>
<header class="top-nav" role="banner">
<div class="container top-nav__inner">
<a class="brand" href="#hero">
<span class="brand-name">Echo-Memory</span>
<span class="brand-team">Echo Team</span>
</a>
<nav class="nav-links" aria-label="Sections">
<a class="nav-link" href="#hero" data-nav="hero">Home</a>
<a class="nav-link" href="#overview" data-nav="overview">Overview</a>
<a class="nav-link" href="#design" data-nav="design">Design</a>
<a class="nav-link" href="#checkpoints" data-nav="checkpoints">Checkpoints</a>
<a class="nav-link" href="#evaluation" data-nav="evaluation">Eval</a>
<a class="nav-link" href="#evidence" data-nav="evidence">Evidence</a>
<a class="nav-link" href="#findings" data-nav="findings">Results</a>
<a class="nav-link" href="#updates" data-nav="updates">Updates</a>
<a class="nav-link" href="#bibtex" data-nav="bibtex">BibTeX</a>
</nav>
<div class="nav-actions">
<a class="action-btn action-btn--ghost" href="developer.html" data-i18n="nav.developer">Developer Guide</a>
<button type="button" class="lang-toggle" id="lang-toggle" data-i18n-attr="aria-label:lang.switch" aria-label="Switch language">
<span data-lang-current>EN</span> / <span data-lang-alt>中文</span>
</button>
<a
class="action-btn"
href="https://github.com/Echo-Team-Joy-Future-Academy-JD/Echo-Memory"
target="_blank"
rel="noopener noreferrer"
data-i18n="nav.github"
>GitHub</a>
<button
type="button"
class="nav-toggle"
aria-expanded="false"
aria-controls="nav-menu-mobile"
id="nav-toggle"
>
<span class="sr-only">Menu</span>
<span></span><span></span><span></span>
</button>
</div>
</div>
<div class="nav-mobile container" id="nav-menu-mobile" hidden>
<a class="nav-link" href="#hero" data-nav="hero">Home</a>
<a class="nav-link" href="#overview" data-nav="overview">Overview</a>
<a class="nav-link" href="#design" data-nav="design">Design</a>
<a class="nav-link" href="#checkpoints" data-nav="checkpoints">Checkpoints</a>
<a class="nav-link" href="#evaluation" data-nav="evaluation">Eval</a>
<a class="nav-link" href="#evidence" data-nav="evidence">Evidence</a>
<a class="nav-link" href="#findings" data-nav="findings">Results</a>
<a class="nav-link" href="#updates" data-nav="updates">Updates</a>
<a class="nav-link" href="developer.html" data-i18n="nav.developer">Developer Guide</a>
<a class="nav-link" href="#bibtex" data-nav="bibtex">BibTeX</a>
</div>
</header>
<aside class="slide-dots" aria-label="Section navigation">
<button type="button" class="is-active" data-slide="hero" data-label="Home" aria-label="Home"></button>
<button type="button" data-slide="overview" data-label="Overview" aria-label="Overview"></button>
<button type="button" data-slide="design" data-label="Design" aria-label="Design"></button>
<button type="button" data-slide="checkpoints" data-label="Checkpoints" aria-label="Checkpoints"></button>
<button type="button" data-slide="evaluation" data-label="Eval" aria-label="Evaluation"></button>
<button type="button" data-slide="evidence" data-label="Evidence" aria-label="Evidence"></button>
<button type="button" data-slide="findings" data-label="Results" aria-label="Results"></button>
<button type="button" data-slide="updates" data-label="Updates" aria-label="Updates"></button>
<button type="button" data-slide="bibtex" data-label="BibTeX" aria-label="BibTeX"></button>
</aside>
<button type="button" class="back-top" id="back-top" data-i18n-attr="aria-label:backtop" aria-label="Back to top" hidden>
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" aria-hidden="true">
<path d="M12 19V5M12 5l-6 6M12 5l6 6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</button>
<div class="lightbox" id="lightbox" hidden role="dialog" aria-modal="true" data-i18n-attr="aria-label:lightbox.label" aria-label="Expanded figure">
<button type="button" class="lightbox__close" data-i18n-attr="aria-label:lightbox.close" aria-label="Close">×</button>
<figure class="lightbox__inner">
<img src="" alt="" id="lightbox-img" />
<figcaption id="lightbox-caption"></figcaption>
</figure>
</div>
<main id="main-content">
<section id="hero" class="section section--compact reveal" data-section="hero">
<div class="container hero hero--single">
<div>
<div class="hero-badge" data-i18n="hero.badge">Echo Team · Joy Future Academy, JD · June 2026 · CC BY 4.0</div>
<h1 class="hero-title">
<span class="hero-highlight">Echo-Memory</span>
<br />
<span data-i18n="hero.title.line2">A Controlled Study of Memory in Action World Models</span>
</h1>
<p class="hero-subtitle" data-i18n-html="hero.subtitle">
When the camera leaves and returns, which memory keeps the <strong>same world</strong>
instead of a plausible but different scene?
</p>
<div class="hero-cta-group">
<a
class="cta cta--primary"
href="https://arxiv.org/abs/2606.09803"
target="_blank"
rel="noopener noreferrer"
data-i18n="hero.cta.paper"
>Paper</a>
<a
class="cta cta--secondary"
href="https://arxiv.org/pdf/2606.09803"
target="_blank"
rel="noopener noreferrer"
data-i18n="hero.cta.pdf"
>PDF</a>
<a
class="cta cta--secondary"
href="https://huggingface.co/Echo-Team/Echo-Memory"
target="_blank"
rel="noopener noreferrer"
data-i18n="hero.cta.ckpt"
>Checkpoints</a>
<a
class="cta cta--secondary"
href="https://github.com/Echo-Team-Joy-Future-Academy-JD/Echo-Memory"
target="_blank"
rel="noopener noreferrer"
data-i18n="hero.cta.code"
>Code</a>
</div>
<div class="metrics-grid metrics-grid--duo">
<a
class="metric-card"
href="https://github.com/Echo-Team-Joy-Future-Academy-JD/Echo-Memory/stargazers"
target="_blank"
rel="noopener noreferrer"
data-badge-url="https://img.shields.io/github/stars/Echo-Team-Joy-Future-Academy-JD/Echo-Memory.json"
>
<span class="metric-label" data-i18n="hero.metric.stars">GitHub Stars</span>
<strong class="metric-value" data-metric-value data-fallback="—">—</strong>
</a>
<a
class="metric-card"
href="https://github.com/Echo-Team-Joy-Future-Academy-JD/Echo-Memory/network/members"
target="_blank"
rel="noopener noreferrer"
data-badge-url="https://img.shields.io/github/forks/Echo-Team-Joy-Future-Academy-JD/Echo-Memory.json"
>
<span class="metric-label" data-i18n="hero.metric.forks">Forks</span>
<strong class="metric-value" data-metric-value data-fallback="—">—</strong>
</a>
</div>
<p class="hero-note" data-i18n-html="hero.note">
Controlled memory ablations on a shared <strong>Wan</strong> action-to-video stack —
reproducible rows, evaluation scripts, and qualitative revisit panels.
</p>
<details class="authors-fold">
<summary data-i18n="hero.authors.summary">Authors & affiliations</summary>
<p class="authors">
Wayne King, Zeyue Xue, Yuxuan Bian, Jie Huang, Haoran Li, Yaowei Li,
Yaofeng Su, Yuming Li, Haoyu Wang, Shiyi Zhang, Songchun Zhang,
Yuwei Niu, Sihan Xu, Junhao Zhuang, Haoyang Huang, Nan Duan
</p>
<p class="affiliations" data-i18n="hero.affiliations">
HKU · Joy Future Academy, JD · CUHK · PKU · Fudan · Tsinghua · HKUST · UMich
</p>
</details>
</div>
</div>
</section>
<section id="overview" class="section reveal" data-section="overview">
<div class="container">
<p class="section-kicker" data-i18n="overview.kicker">01 · Overview</p>
<h2 class="section-title" data-i18n="overview.title">One backbone, one protocol — only memory changes.</h2>
<p class="section-lead" data-i18n-html="overview.lead">
Echo-Memory holds the video backbone, training recipe, and data protocol fixed, and
swaps only the memory module. The goal is to separate <strong>replay fidelity</strong>
from <strong>return memory</strong> when the camera leaves and comes back to the same place.
</p>
<ul class="bullet-list">
<li data-i18n-html="overview.b1"><strong>Shared stack</strong> — chunk-wise action-conditioned world generation on Wan.</li>
<li data-i18n-html="overview.b2"><strong>Controlled variable</strong> — Context, Compression, Spatial, or State-Space memory.</li>
<li data-i18n-html="overview.b3"><strong>Three probes</strong> — replay metrics, in-domain 180° loop, open-domain edited return.</li>
<li data-i18n-html="overview.b4"><strong>Release</strong> — ablation scripts, GT replay, revisit assets, and paper-aligned figures.</li>
</ul>
<figure class="section-figure" data-zoomable>
<img src="assets/figure_1_abs_framework.png?v=fig1-crop" data-i18n-attr="alt:overview.fig.alt" alt="Echo-Memory framework overview" />
<figcaption data-i18n-html="overview.fig.cap">Controlled memory study over chunk-wise action-world generation. <span class="zoom-hint">Click to expand</span></figcaption>
</figure>
</div>
</section>
<section id="design" class="section reveal" data-section="design">
<div class="container">
<p class="section-kicker" data-i18n="design.kicker">02 · Memory Design</p>
<h2 class="section-title" data-i18n="design.title">Context · Compression · Spatial · State-Space</h2>
<p class="section-lead" data-i18n="design.lead">
All variants plug into the same write–read interface; we only change what is stored and how
history is retrieved. A no-memory I2V floor re-generates from the first frame as a lower bound.
</p>
<div class="feature-grid">
<article class="card card--accent" data-accent="context">
<div class="card-icon" aria-hidden="true">
<svg viewBox="0 0 24 24" fill="none"><rect x="3" y="5" width="18" height="14" rx="2" stroke="currentColor" stroke-width="1.6"/><path d="M7 9h10M7 13h6" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg>
</div>
<h3 data-i18n="design.context.title">Context</h3>
<p data-i18n="design.context.body">Raw recent frames at K = 1, 5, or 20 chunks — tests whether longer windows alone stop drift.</p>
</article>
<article class="card card--accent" data-accent="compression">
<div class="card-icon" aria-hidden="true">
<svg viewBox="0 0 24 24" fill="none"><path d="M12 3l8 4.5v9L12 21l-8-4.5v-9L12 3z" stroke="currentColor" stroke-width="1.6"/><path d="M12 12l8-4.5M12 12v9M12 12L4 7.5" stroke="currentColor" stroke-width="1.6"/></svg>
</div>
<h3 data-i18n="design.compression.title">Compression</h3>
<p data-i18n="design.compression.body">Learned compact tokens at ratio r = 4 — history without growing raw-frame storage.</p>
</article>
<article class="card card--accent" data-accent="spatial">
<div class="card-icon" aria-hidden="true">
<svg viewBox="0 0 24 24" fill="none"><path d="M4 8l8-4 8 4v8l-8 4-8-4V8z" stroke="currentColor" stroke-width="1.6"/><path d="M12 4v16M4 8l8 4 8-4" stroke="currentColor" stroke-width="1.6"/></svg>
</div>
<h3 data-i18n="design.spatial.title">Spatial</h3>
<p data-i18n="design.spatial.body">Explicit spatial read/write state — targets layout, object pose, and viewpoint carry.</p>
</article>
<article class="card card--accent" data-accent="ssm">
<div class="card-icon" aria-hidden="true">
<svg viewBox="0 0 24 24" fill="none"><path d="M5 12a7 7 0 0114 0" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/><path d="M8 12h8M16 9l2 3-2 3M8 9l-2 3 2 3" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg>
</div>
<h3 data-i18n="design.ssm.title">State-Space</h3>
<p data-i18n="design.ssm.body">Block-wise SSM updates — recurrent carry beyond short context windows on revisit.</p>
</article>
</div>
<figure class="section-figure" data-zoomable>
<img src="assets/figure_2_mem_overview.png" data-i18n-attr="alt:design.fig.alt" alt="Memory design matrix" />
<figcaption data-i18n-html="design.fig.cap">Four memory families under a shared write–read interface. <span class="zoom-hint">Click to expand</span></figcaption>
</figure>
</div>
</section>
<section id="checkpoints" class="section reveal" data-section="checkpoints">
<div class="container">
<p class="section-kicker" data-i18n="ckpt.kicker">03 · Checkpoints</p>
<h2 class="section-title" data-i18n="ckpt.title">Paper baselines on Hugging Face</h2>
<p class="section-lead" data-i18n-html="ckpt.lead">
Wan 2.1 1.3B memory rows — <strong>epoch-0</strong>, <strong>30,000 steps</strong>, static in-domain pool.
Released weights:
<a href="https://huggingface.co/Echo-Team/Echo-Memory" target="_blank" rel="noopener noreferrer"><strong>Echo-Team/Echo-Memory</strong></a>
</p>
<div class="table-wrap">
<table class="ckpt-table">
<thead>
<tr>
<th data-i18n="ckpt.th.family">Family</th>
<th data-i18n="ckpt.th.row">Paper row</th>
<th data-i18n="ckpt.th.path">HF path</th>
<th data-i18n="ckpt.th.steps">Steps</th>
</tr>
</thead>
<tbody>
<tr><td>Raw context</td><td>Context K=1</td><td><code>context_k1/epoch-0.safetensors</code></td><td>30,000</td></tr>
<tr><td>Raw context</td><td>Context K=20</td><td>TODO</td><td>TODO</td></tr>
<tr><td>Spatial</td><td>Spatial Memory</td><td>TODO</td><td>TODO</td></tr>
<tr><td>State-space</td><td>Block-wise SSM</td><td>TODO</td><td>TODO</td></tr>
<tr><td>State-space</td><td>Legacy Hybrid</td><td>TODO</td><td>TODO</td></tr>
<tr><td>Spatial</td><td>concat text (abl.)</td><td>TODO</td><td>TODO</td></tr>
<tr><td>Spatial</td><td>inject none (abl.)</td><td>TODO</td><td>TODO</td></tr>
<tr><td>Spatial</td><td>cross-attn t32 (abl.)</td><td>TODO</td><td>TODO</td></tr>
<tr><td>State-space</td><td>SSM ctx1/e4/h21</td><td>TODO</td><td>TODO</td></tr>
<tr><td>State-space</td><td>SSM ctx5/e1/h21</td><td>TODO</td><td>TODO</td></tr>
<tr><td>State-space</td><td>SSM ctx5/e4/h81</td><td>TODO</td><td>TODO</td></tr>
</tbody>
</table>
</div>
<div class="code-block-wrap">
<p class="code-block-label" data-i18n="ckpt.label.download">Download</p>
<pre class="code-block"><code>huggingface-cli download Echo-Team/Echo-Memory context_k1/epoch-0.safetensors --local-dir ./ckpts</code></pre>
</div>
<div class="code-block-wrap">
<p class="code-block-label" data-i18n="ckpt.label.eval">In-domain eval (Echo-Memory repo)</p>
<pre class="code-block"><code>export WAN_BASE_MODEL=/path/to/Wan2.1-T2V-1.3B
export DATASET_BASE_PATH=data/Context-as-Memory-Dataset
export CKPT=./ckpts/context_k1/epoch-0.safetensors
bash eval/v2/run_static_consistency_loop_and_revisit.sh</code></pre>
</div>
<p class="section-note" data-i18n-html="ckpt.note">
Keep the row folder in <code>CKPT</code> — <code>env/memory_baseline_runtime.py</code> infers memory flags from the path.
Full index:
<a href="https://github.com/Echo-Team-Joy-Future-Academy-JD/Echo-Memory/blob/main/doc/checkpoints.md" target="_blank" rel="noopener noreferrer">doc/checkpoints.md</a>.
</p>
</div>
</section>
<section id="evaluation" class="section section--center reveal" data-section="evaluation">
<div class="container">
<p class="section-kicker" data-i18n="eval.kicker">04 · Evaluation</p>
<h2 class="section-title" data-i18n="eval.title">Replay · In-domain revisit · Open-domain return</h2>
<p class="section-lead" data-i18n-html="eval.lead">
Each branch asks a different question: Can the model reconstruct the past? Can it close a loop
in-domain? After an edited first frame, does it return to the <strong>same world</strong>?
</p>
<div class="feature-grid feature-grid--three">
<article class="card">
<h3 data-i18n="eval.replay.title">Replay</h3>
<p data-i18n="eval.replay.body">PSNR, SSIM, LPIPS on chunk-wise reconstruction — measures short-horizon pixel fidelity.</p>
</article>
<article class="card">
<h3 data-i18n="eval.indomain.title">In-domain</h3>
<p data-i18n="eval.indomain.body">180° trajectory loop closure with VLM-assisted scoring on held layouts.</p>
</article>
<article class="card">
<h3 data-i18n="eval.opendomain.title">Open-domain</h3>
<p data-i18n="eval.opendomain.body">Edited first frames and 45° return probes — stresses object identity and scene persistence.</p>
</article>
<article class="card">
<h3 data-i18n="eval.dynamic.title">Dynamic SpatialVID</h3>
<p data-i18n="eval.dynamic.body">Training and inference wrappers are public; the dynamic eval protocol is TODO.</p>
</article>
</div>
<figure class="section-figure" data-zoomable>
<img src="assets/figure_3_mem_eval.png" data-i18n-attr="alt:eval.fig.alt" alt="Three-branch evaluation summary" />
<figcaption data-i18n-html="eval.fig.cap">Replay health vs. return memory under the same stack. <span class="zoom-hint">Click to expand</span></figcaption>
</figure>
</div>
</section>
<section id="evidence" class="section section--center reveal" data-section="evidence">
<div class="container">
<p class="section-kicker" data-i18n="evidence.kicker">05 · Qualitative Evidence</p>
<h2 class="section-title" data-i18n="evidence.title">Return probes expose identity drift.</h2>
<p class="section-lead" data-i18n-html="evidence.lead">
Qualitative panels follow a simple diagnostic: <strong>first frame → leave the view → revisit tail</strong>.
We compare whether memory restores the same object, pose, background, and camera geometry —
not merely a plausible new scene.
</p>
<div class="qual-viewer" data-qual-viewer>
<figure class="qual-stage" data-zoomable>
<div class="qual-stage__media">
<img
data-qual-image
class="is-active"
src="assets/representative_memory_results.png"
alt="Representative memory comparisons"
/>
</div>
<figcaption data-qual-caption data-i18n-html="evidence.cap1">Representative memory comparisons across variants. <span class="zoom-hint">Click to expand</span></figcaption>
</figure>
<div class="qual-chips" role="tablist" aria-label="Evidence panels">
<button
class="qual-chip is-active"
type="button"
role="tab"
aria-selected="true"
data-src="assets/representative_memory_results.png"
data-alt="Representative memory comparisons"
data-caption-key="evidence.cap1"
data-caption="Representative memory comparisons across variants."
>Memory Results</button>
<button
class="qual-chip"
type="button"
role="tab"
aria-selected="false"
data-src="assets/representative_sweep_panel.png"
data-alt="Open-domain return sweep"
data-caption="Open-domain return sweep across the design matrix."
>Open-Domain Sweep</button>
<button
class="qual-chip"
type="button"
role="tab"
aria-selected="false"
data-src="assets/open_domain_revisit_panel.png"
data-alt="Edited first frames"
data-caption="Edited first frames for open-domain return probes."
>Identity Anchors</button>
</div>
</div>
<div class="demo-grid" aria-label="Static and SpatialVID replay demos">
<h3 class="demo-grid__label">Static Replay</h3>
<figure>
<img src="assets/readme_previews/context_k1_replay_gt.gif" alt="Static Context K=1 replay">
<figcaption>Context K=1</figcaption>
</figure>
<figure>
<img src="assets/readme_previews/context_k5_replay_gt.gif" alt="Static Context K=5 replay">
<figcaption>Context K=5</figcaption>
</figure>
<figure>
<img src="assets/readme_previews/framepack_len_r4_replay_gt.gif" alt="Static Compression r=4 replay">
<figcaption>Compression r = 4</figcaption>
</figure>
<figure>
<img src="assets/readme_previews/spatial_memory_replay_gt.gif" alt="Static Spatial Memory replay">
<figcaption>Spatial Memory</figcaption>
</figure>
<figure>
<img src="assets/readme_previews/ssm_legacy_replay_gt.gif" alt="Static legacy VideoSSM replay">
<figcaption>Legacy Hybrid</figcaption>
</figure>
<figure>
<img src="assets/readme_previews/ssm_blockwise_replay_gt.gif" alt="Static Block-wise SSM replay">
<figcaption>Block-wise SSM</figcaption>
</figure>
<h3 class="demo-grid__label">SpatialVID Replay</h3>
<figure>
<img src="assets/readme_previews/dyn_context_k1_replay.gif" alt="Dynamic Context K=1 replay">
<figcaption>Context K=1</figcaption>
</figure>
<figure>
<img src="assets/readme_previews/dyn_context_k5_replay.gif" alt="Dynamic Context K=5 replay">
<figcaption>Context K=5</figcaption>
</figure>
<figure>
<img src="assets/readme_previews/dyn_context_k20_replay.gif" alt="Dynamic Context K=20 replay">
<figcaption>Context K=20</figcaption>
</figure>
<figure>
<img src="assets/readme_previews/dyn_spatial_memory_replay.gif" alt="Dynamic Spatial Memory replay">
<figcaption>Spatial Memory</figcaption>
</figure>
<figure>
<img src="assets/readme_previews/dyn_ssm_legacy_replay.gif" alt="Dynamic legacy VideoSSM replay">
<figcaption>Legacy Hybrid</figcaption>
</figure>
<figure>
<img src="assets/readme_previews/dyn_ssm_blockwise_replay.gif" alt="Dynamic Block-wise SSM replay">
<figcaption>Block-wise SSM</figcaption>
</figure>
</div>
<p class="section-note" data-i18n="evidence.dynamic.note">
Dynamic previews use one randomly selected training scene replayed with the same first frame, prompt, and GT camera trajectory across all six rows.
</p>
</div>
</section>
<section id="findings" class="section section--center reveal" data-section="findings">
<div class="container">
<p class="section-kicker" data-i18n="findings.kicker">06 · Main Conclusions</p>
<h2 class="section-title" data-i18n="findings.title">Replay quality ≠ memory quality.</h2>
<p class="section-lead" data-i18n="findings.lead">
Replay metrics and return probes do not always agree — a model can look sharp on reconstruction
yet fail when the camera returns. Rankings reorder once identity under revisit is measured.
</p>
<ul class="bullet-list bullet-list--center">
<li data-i18n-html="findings.b1"><strong>Raw context</strong> — more history helps open-domain return more than replay alone.</li>
<li data-i18n-html="findings.b2"><strong>Compression</strong> — compact tokens can preserve replay while losing identity on return.</li>
<li data-i18n-html="findings.b3"><strong>Spatial vs. SSM</strong> — explicit state and block-wise SSM trade off layout carry and long-horizon stability.</li>
<li data-i18n-html="findings.b4"><strong>Takeaway</strong> — treat replay as a health check, not the final memory benchmark.</li>
</ul>
<figure class="section-figure" data-zoomable>
<img src="assets/replay_revisit_metric_alignment.png" alt="Replay vs revisit metrics" />
<figcaption data-i18n-html="findings.fig.cap">Rank shift from replay to return — replay is not the final memory score. <span class="zoom-hint">Click to expand</span></figcaption>
</figure>
</div>
</section>
<section id="updates" class="section reveal" data-section="updates">
<div class="container">
<p class="section-kicker" data-i18n="updates.kicker">07 · News & Roadmap</p>
<h2 class="section-title" data-i18n="updates.title">Release notes and next steps.</h2>
<div class="updates-grid">
<div class="updates-panel">
<h3 class="updates-heading" data-i18n="updates.news">News</h3>
<ul class="news-feed">
<li class="news-item">
<time datetime="2026-06-13">2026/06/13</time>
<p data-i18n-html="updates.news0">
SpatialVID support added: dynamic training/inference recipes, 5-second first-chunk replay previews, and dynamic eval TODO.
</p>
</li>
<li class="news-item">
<time datetime="2026-06-06">2026/06/06</time>
<p data-i18n-html="updates.news1">
Echo-Memory released: paper, project page, public code, replay/revisit eval assets, and baseline checkpoints.
</p>
</li>
</ul>
</div>
<div class="updates-panel">
<h3 class="updates-heading" data-i18n="updates.roadmap">Roadmap</h3>
<div class="todo-groups">
<article class="todo-group">
<h4 data-i18n="updates.models">Models</h4>
<ul class="todo-list">
<li class="is-done">
<span class="todo-check is-done" aria-hidden="true"></span>
<span data-i18n-html="updates.rm1"><strong>Wan 2.1 1.3B</strong> backbone and training recipes</span>
</li>
<li class="is-done">
<span class="todo-check is-done" aria-hidden="true"></span>
<span data-i18n="updates.rm2">Four memory families — Context, Compression, Spatial, State-Space</span>
</li>
<li class="is-done">
<span class="todo-check is-done" aria-hidden="true"></span>
<span data-i18n-html="updates.rm3"><strong>Dynamic training pool</strong> — SpatialVID subset export & settings</span>
</li>
<li class="is-done">
<span class="todo-check is-done" aria-hidden="true"></span>
<span data-i18n-html="updates.rm4"><strong>Paper checkpoints</strong> — <a href="https://huggingface.co/Echo-Team/Echo-Memory" target="_blank" rel="noopener noreferrer">Echo-Team/Echo-Memory</a></span>
</li>
<li>
<span class="todo-check" aria-hidden="true"></span>
<span data-i18n-html="updates.rm5"><strong>Wan 2.2</strong> + multi-scale <strong>5B / 14B</strong></span>
</li>
</ul>
</article>
<article class="todo-group">
<h4 data-i18n="updates.eval">Eval</h4>
<ul class="todo-list">
<li>
<span class="todo-check" aria-hidden="true"></span>
<span data-i18n-html="updates.re1"><strong>Dynamic eval</strong> beyond static replay/revisit</span>
</li>
<li>
<span class="todo-check" aria-hidden="true"></span>
<span data-i18n="updates.re2">More revisit probes and scoring presets</span>
</li>
</ul>
</article>
</div>
</div>
<div class="updates-panel community-panel">
<h3 class="updates-heading" data-i18n="community.title">Community</h3>
<p data-i18n="community.lead">Join the Echo-Memory WeChat group for release updates, checkpoint questions, and maintainer coordination.</p>
<figure class="wechat-qr">
<img
class="wechat-qr__photo"
src="assets/wechat_group_qrcode.jpg?v=20260701"
width="1166"
height="1640"
alt="Echo-Memory WeChat group QR code"
data-i18n-attr="alt:community.qr.alt"
/>
<figcaption data-i18n="community.qr.caption">Echo-Memory 交流群 · scan to join (QR refreshes periodically)</figcaption>
</figure>
</div>
</div>
</div>
</section>
<section id="bibtex" class="section reveal" data-section="bibtex">
<div class="container">
<p class="section-kicker" data-i18n="bibtex.kicker">08 · Citation</p>
<h2 class="section-title" data-i18n="bibtex.title">BibTeX</h2>
<p class="section-lead" data-i18n-html="bibtex.lead">
Echo-Memory: A Controlled Study of Memory in Action World Models (June 2026).
Licensed under
<a href="https://creativecommons.org/licenses/by/4.0/" target="_blank" rel="noopener noreferrer">CC BY 4.0</a>.
Cite the arXiv preprint below.
</p>
<div class="cite-switcher">
<div class="cite-panel is-active">
<dl class="pub-meta">
<div class="pub-meta__row">
<dt data-i18n="bibtex.source">Source</dt>
<dd>
<a href="https://arxiv.org/abs/2606.09803" target="_blank" rel="noopener noreferrer">arXiv</a>
</dd>
</div>
<div class="pub-meta__row">
<dt data-i18n="bibtex.arxivid">arXiv ID</dt>
<dd>2606.09803</dd>
</div>
<div class="pub-meta__row">
<dt data-i18n="bibtex.pdf">PDF</dt>
<dd>
<a href="https://arxiv.org/pdf/2606.09803" target="_blank" rel="noopener noreferrer">arxiv.org/pdf/2606.09803</a>
</dd>
</div>
<div class="pub-meta__row">
<dt data-i18n="bibtex.license">License</dt>
<dd>CC BY 4.0</dd>
</div>
</dl>
<div class="bibtex-wrap">
<button type="button" class="copy-btn" data-copy-target="bibtex-arxiv-block" data-i18n="bibtex.copy">Copy</button>
<pre class="bibtex" id="bibtex-arxiv-block"><code>@article{king2026echomemory,
title={Echo-Memory: A Controlled Study of Memory in Action World Models},
author={King, Wayne and Xue, Zeyue and Bian, Yuxuan and Huang, Jie and Li, Haoran and Li, Yaowei and Su, Yaofeng and Li, Yuming and Wang, Haoyu and Zhang, Shiyi and Zhang, Songchun and Niu, Yuwei and Xu, Sihan and Zhuang, Junhao and Huang, Haoyang and Duan, Nan},
journal={arXiv preprint arXiv:2606.09803},
year={2026},
month={jun},
eprint={2606.09803},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2606.09803}
}</code></pre>
</div>
</div>
</div>
</div>
</section>
</main>
<footer class="footer">
<div class="container footer-row">
<div>
<p class="footer-copy" data-i18n="footer.copy">© Echo Team · Joy Future Academy, JD</p>
</div>
<div class="footer-links">
<a href="https://github.com/Echo-Team-Joy-Future-Academy-JD/Echo-Memory">GitHub</a>
<a href="https://arxiv.org/abs/2606.09803" target="_blank" rel="noopener noreferrer">arXiv</a>
<a href="https://arxiv.org/pdf/2606.09803" target="_blank" rel="noopener noreferrer">PDF</a>
<a href="https://echo-team-joy-future-academy-jd.github.io/Echo-Memory/" data-i18n="footer.pp">Project Page</a>
<a href="developer.html" data-i18n="nav.developer">Developer Guide</a>
</div>
<p class="build-id" hidden aria-hidden="true">site-build-main</p>
</div>
</footer>
</div>
<script src="i18n.js?v=lang-v2"></script>
<script src="i18n-runtime.js?v=lang-v2"></script>
<script src="site.js?v=lang-v1" defer></script>
</body>
</html>
|