Echo-Forcing: A Scene Memory Framework for Interactive Long Video Generation
Paper: arXiv:2605.16003 Code: mingqiangWu/Echo-Forcing(截至
main@1e33823e只有 README、assets 和 demo video;代码搜索未找到开源实现) Code reference:main@1e33823e(2026-05-18)
1. Motivation(研究动机)
现有 autoregressive video diffusion model 已经可以用 local attention + KV cache 逐块生成长视频,但它们的 cache policy 大多服务于“单 prompt 稳定延长”。一旦用户在长视频中切换 prompt、要求 hard cut、或者在后半段召回早先出现过的场景,旧 KV 既可能是稳定锚点,也可能是污染新场景的过期背景,还可能是未来要召回的长期记忆;把它们当成同质 temporal cache 会导致三类问题:旧背景残留、对新 prompt 响应滞后、远距离场景记忆丢失。

Figure 1 解读:论文把交互式长视频拆成四种模式:普通 long-horizon rollout、smooth transition、hard cut、long-range scene recall。关键挑战不是单纯把视频拉长,而是在有限 cache 预算内决定哪些历史信息应当被保留、压缩、召回或遗忘。
这篇论文要解决的具体问题是:在不训练新模型的前提下,让 causal/autoregressive video diffusion backbone 在 60s/120s 乃至多场景交互视频中同时具备长程稳定性、prompt responsiveness 和历史场景召回能力。作者认为瓶颈是 historical KV state 的功能纠缠:稳定 anchor、recent dynamics、long-term recall prior 和 conflict memory 被同一种保留/压缩/清空策略处理,导致模型不得不在 continuity 与 controllability 之间做粗粒度取舍。
这个问题值得研究,因为它把 text-to-video 从“离线短片生成”推进到可持续对话式/编辑式视频生成:用户可以连续给出六段场景、在第 4/5/6 段召回第 1/2/3 段的场景,或者让主体保持但背景突然切换。若历史记忆可以被显式生命周期管理,长视频生成就不必依赖全历史 cache,也不必每次切场都完全 flush 掉有用主体/场景先验。
2. Idea(核心思想)
核心 insight:历史 KV 不应被看作一个只按时间新旧排序的 cache,而应被看作 scene memory,并带有 preserve → recall → forget 的生命周期。Echo-Forcing 将早期稳定锚点、压缩长程历史、最近窗口、可召回场景记忆和冲突记忆衰减拆开管理,从而在 bounded cache budget 下同时支持连续长视频、平滑过渡、硬切换和远距离场景召回。
与 Self-Forcing、Deep-Forcing、Rolling-Sink、∞-RoPE、LongLive 等方法相比,Echo-Forcing 的差异不是再提出一个更大的 sliding window,而是给 KV cache 分配明确语义角色:A_12 负责稳定 anchor,C_3 负责 phase-aware 压缩历史,R_6 负责局部连续性,Scene Recall Frames 负责跨场景召回,Difference-aware Memory Decay 负责切场后软遗忘冲突 token。它因此把“长度外推”问题改写成“场景记忆路由与治理”问题。
3. Method(方法)
3.1 Overall framework:Echo-Forcing 的场景记忆框架

Figure 2 解读:框架由三个核心模块构成。Hierarchical Temporal Memory 把 active cache 分成 rolling anchors、compressed history 和 recent window;Scene Recall Frames 在 scene boundary 保存紧凑的 spatial KV memory;Difference-aware Memory Decay 在新场景生成后按 old-new discrepancy 衰减旧 token。图中每个模块都不是独立后处理,而是直接作用在 attention KV 的选择、重编码与权重上。
直觉上,长视频中的历史信息并非越多越好:早期 clean frame 适合作为稳定视觉锚点,但长期固定使用会压制运动;最近帧能保证局部连续,但不足以恢复几十秒前的场景;完整历史 cache 太贵且会把旧背景拖进新 prompt。Echo-Forcing 的做法是把这些功能拆成不同 memory slot,并在场景转换时用 prompt routing 和 KV discrepancy 决定该调用哪一种记忆操作。
默认 active memory 预算写作: 其中 是 anchors, 是 compressed history, 是 recent frames。相比之下,Self-Forcing 和 -RoPE 使用 ,LongLive 使用 ,Rolling-Sink 使用 ,Deep-Forcing 使用 。Echo-Forcing 不是增加无界 cache,而是在 21-frame 级别的固定预算内重分配角色。
论文内部配置差异:主文实验设置写默认 recent frames,但 Appendix 的 cache distribution 写作 。公开仓库没有实现/config 可核对,因此这里将 视为 Appendix 的 cache-comparison 表述,将 视为主文 implementation detail;两者可能对应 “recent blocks” 与 “frames” 口径差异,也可能是论文文本不一致。
3.2 Hierarchical Temporal Memory:稳定锚点、压缩历史与最近窗口解耦
Bidirectional rolling early anchors
早期 frames 位于模型训练 horizon 内,通常视觉质量更干净,适合提供 long-range global reference。设 anchor pool 为 ,第 次更新插入 个 anchor,从 开始,且正反向交替遍历: Appendix 给出实际设定:rolling anchor pool 大小 ,active anchors ,每次插入 。如果只用 static anchors,动态程度会很低(Dynamic Degree 27.08);单向 rolling 提升运动但边界稳定性较弱;bidirectional rolling 在 Dynamic Degree 47.59 与 Temporal Flickering 98.28 上最好。
Drift-gated phase compression

Figure 3 解读:图中比较不同 historical token selection strategy 与未来真实 attention 的匹配。直接用 recent query 容易偏向短期噪声;用 calibration query 能给 RoPE phase 一个稳定参考;加入 amplitude compensation 和 drift gate 后,选择的 token 更贴近未来 query 真实会关注的历史信息。
该模块要解决的问题是:post-RoPE attention score 会受 phase shift 与当前位置偏置影响,直接拿来选历史 token 会偏向近期上下文。作者先在 early high-fidelity stage 收集 pre-RoPE query,构造稳定 calibration center: 对历史 token 的 pre-RoPE key ,用 complex-domain RoPE 分解计算相位一致性分数。令 是 RoPE frequency channel,,未来 offset 为 ,时间距离 ,则: 幅值补偿项为: 但 query distribution 会随 rollout 漂移,固定补偿可能放大已经过期的 memory。因此作者引入 drift gate: 最后在候选历史区域 中取 TopK,形成 compressed memory: Appendix 说明压缩候选区域固定为 frames,calibrated query statistic 按 attention head 和 spatial position 计算,大小为 ;compressed tokens 被赋予当前 block timestamp,而不是保留原时间戳,以减少 compressed region 内的 timestamp aliasing。
3.3 Scene Recall Frames:把一个场景压成可召回的 spatial KV memory
交互式长视频不能把每个旧场景的所有 frames 都保留,否则成本高且旧场景噪声会干扰;但只保留第一帧或一个 crucial frame 又丢失遮挡、纹理、背景布局等互补信息。Scene Recall Frames 从每个场景稳定阶段抽取 个候选 frames,并在每个 spatial token 位置独立融合 KV。
设第 个场景的候选 blocks 为: 对 spatial position ,用该位置的 calibrated query center 给各候选 frame 打分并 softmax: 然后得到 fused recall KV: 最终一个场景记忆为:
3.4 Difference-aware Memory Decay:按 old-new discrepancy 软遗忘

Figure 4 解读:上半部分展示 Scene Recall Frames 如何在 spatial layout 上保存多帧互补线索,下半部分展示 hard/smooth transition 后哪些旧区域应被更快衰减。直觉是:如果新旧场景中某个 spatial token 的 KV 表征相似,它可能仍是主体或兼容背景,应慢慢忘;如果差异大,它更可能是旧场景污染源,应快速降权。
新场景开始后,先生成一个 clean reference block。对旧 token 和新参考块中对应或邻近 spatial position 的 ,计算 old-new discrepancy: 然后映射到 token-wise forgetting strength: 第 个 post-transition 生成步,旧 memory 权重指数衰减: 这种 KV-level soft forgetting 有两层抑制:key scaling 会降低 attention logit,value scaling 会降低即使被 attend 到后的输出贡献。对 query :
3.5 Automatic scene routing 与 relative RoPE
用户可以显式在每段 prompt 后加控制 tag:[10s] 表示 smooth transition,[10s#] 表示 hard cut,[10s@] 表示 long-range recall。若没有显式 tag,作者用 prompt similarity 自动路由。设当前 prompt embedding 为 ,历史 prompt embedding 为 :
路由规则为:
实验中 ,。RoPE offset 进一步设为:
其中 。对 non-fine-tuned Self-Forcing 这类训练窗口只有 frames 的 backbone,Echo-Forcing 采用 relative-time RoPE:active cache 中第 个 frame 被重新映射为 ,避免绝对时间 index 随 rollout 无限增长。
3.6 Pseudocode(根据论文公式整理;非 released code)
公开 GitHub 仓库当前没有 implementation files,因此下面伪代码是按论文 §3 与 Appendix B/C 公式整理的 PyTorch-style 逻辑,不是 released code 的逐行复现。
import torch
import torch.nn.functional as F
def bidirectional_rolling_anchors(anchor_pool, update_idx: int, active_count: int = 12, step: int = 3):
"""Return A_r from a rolling early-anchor pool."""
n = len(anchor_pool)
start = (update_idx * step) % n
ids = [(start + i) % n for i in range(step)]
if update_idx % 2 == 0: # paper uses alternating traversal; parity convention is implementation-side
ids = list(reversed(ids))
new_anchors = [anchor_pool[i] for i in ids]
active = (new_anchors + anchor_pool)[:active_count]
return active
def drift_gated_phase_compression(q_cal, q_recent, k_raw, frame_ids, next_frame_id, offsets, topk: int, lambda_: float = 2.0):
"""Select compressed historical KV tokens using calibrated pre-RoPE phase scoring."""
q_bar = q_cal.mean(dim=0) # [H, D]
amp_bar = q_cal.abs().mean(dim=0) # [H, D]
q_recent_bar = q_recent.mean(dim=0) # [H, D]
# Complex RoPE view: pairs of channels form complex numbers.
q_complex = torch.view_as_complex(q_bar.float().reshape(*q_bar.shape[:-1], -1, 2))
k_complex = torch.view_as_complex(k_raw.float().reshape(*k_raw.shape[:-1], -1, 2))
phase = torch.angle(q_complex.unsqueeze(0) * k_complex.conj())
q_mag = q_complex.abs().unsqueeze(0)
k_mag = k_complex.abs()
scores = []
for o in offsets:
delta = next_frame_id - frame_ids + o
# omega is the RoPE frequency vector used by the backbone.
omega = torch.arange(phase.shape[-1], device=phase.device).float()
score_ph = (q_mag * k_mag * torch.cos(phase + delta[:, None, None] * omega)).sum(dim=(-1, -2))
scores.append(score_ph)
score_ph = torch.stack(scores, dim=0).amax(dim=0)
amp = ((amp_bar - q_bar.abs()).unsqueeze(0) * k_raw.abs()).sum(dim=(-1, -2))
gate = torch.exp(-lambda_ * (1.0 - F.cosine_similarity(q_recent_bar.flatten(), q_bar.flatten(), dim=0)))
score = score_ph + gate * amp
selected = torch.topk(score, k=topk).indices
return selected
def build_scene_recall_frame(candidate_k, candidate_v, q_center):
"""Fuse M stable scene frames into one spatially structured recall KV."""
# candidate_k/v: [M, U, D], q_center: [U, D]
sim = F.cosine_similarity(candidate_k, q_center.unsqueeze(0), dim=-1) # [M, U]
alpha = torch.softmax(sim, dim=0) # softmax over M
k_rec = (alpha[..., None] * candidate_k).sum(dim=0) # [U, D]
v_rec = (alpha[..., None] * candidate_v).sum(dim=0)
return {"k": k_rec, "v": v_rec}
def difference_aware_memory_decay(old_k, old_v, new_ref_k, step_after_transition: int,
mu_min: float, mu_max: float, eps: float = 1e-6):
"""Soft-forget old scene memories at KV level."""
d = 1.0 - F.cosine_similarity(old_k, new_ref_k, dim=-1)
delta = (d - d.min()) / (d.max() - d.min() + eps)
mu = mu_min + (mu_max - mu_min) * delta
w = torch.exp(-step_after_transition * mu)
return old_k * w[..., None], old_v * w[..., None], w
def route_scene(prompt_embeds, t, tau_smooth=0.85, tau_rec=0.85, gamma=10):
"""Infer smooth / recall / hard and assign RoPE offset."""
if t == 0:
return "initial", 0
cur = prompt_embeds[t]
prev = prompt_embeds[:t]
sims = F.cosine_similarity(cur[None, :], prev, dim=-1)
s_max, i_star = sims.max(dim=0)
if int(i_star) == t - 1 and float(s_max) >= tau_smooth:
mode = "smooth"
elif int(i_star) != t - 1 and float(s_max) >= tau_rec:
mode = "recall"
else:
mode = "hard"
offset = 0 if mode == "smooth" else 45 if mode == "hard" else min(45, gamma * (t - int(i_star)))
return mode, offset
def relative_rope_reindex(active_cache_frame_ids, training_window: int = 21):
"""Map active-cache absolute frame ids to bounded relative RoPE indices rho_b(t_i)=i-1."""
ordered = sorted(active_cache_frame_ids)
if len(ordered) > training_window:
ordered = ordered[-training_window:]
rho = {frame_id: local_idx for local_idx, frame_id in enumerate(ordered)}
new_frame_local_idx = len(ordered)
if new_frame_local_idx >= training_window:
# keep coordinates inside the training horizon by sliding the local cache window
ordered = ordered[-(training_window - 1):]
rho = {frame_id: local_idx for local_idx, frame_id in enumerate(ordered)}
new_frame_local_idx = len(ordered)
return rho, new_frame_local_idx3.7 Code reference / 代码状态
Code reference:
main@1e33823e(2026-05-18) — pseudocode and mapping are based on the public repository state plus the arXiv LaTeX source; the repository contains no implementation source yet.
| Paper Concept | Source File | Key Class/Function |
|---|---|---|
| Project / abstract / released status | README.md | README says “Code coming soon”; repo files are LICENSE, README.md, assets/* |
| Hierarchical Temporal Memory | arXiv source sec/3_methods.tex, sec/6_appendix.tex | 无 released code file;论文公式定义 rolling anchors、phase compression、relative RoPE |
| Scene Recall Frames | arXiv source sec/3_methods.tex, sec/6_appendix.tex | 无 released code file;论文公式定义 spatial KV fusion |
| Difference-aware Memory Decay | arXiv source sec/3_methods.tex, sec/6_appendix.tex | 无 released code file;论文公式定义 discrepancy、decay strength、KV scaling |
| Experiments / tables | arXiv source sec/4_experiments.tex, tables/*.tex | 无 released launch script;数值来自 paper tables |
论文公式与 released code 实现差异:截至 main@1e33823e,公开仓库没有 Python / config / launch script,因此无法比较公式与实现差异;代码搜索未找到开源实现。训练配置数字(如 、、、、H100)来自 arXiv PDF/source,不来自 actual launch script。
4. Experimental Setup(实验设置)
Datasets / prompts
- Long-video generation:基于 MovieGenBench prompts;60s 设置随机采样 128 个 prompts,120s 设置随机采样 64 个 prompts;沿用 Self-Forcing pipeline,用 Qwen/Qwen2.5-7B-Instruct 扩写为 detailed long-form video description;每个 prompt 用 4 个 random seeds 生成并取平均。
- Interactive generation:构造 smooth transition、hard cut、long-range scene recall 三个子集;每个子集 64 个 six-shot 60s samples,每个 video 有 6 个连续 10s scenes。Smooth 保持主体/背景/光照一致但动作或视角渐变;Hard cut 保持主体但背景/布局/光照大幅变化;Recall 使用 A-B-C-A-B-C 结构,让后 3 段在长间隔后召回前 3 个场景。
- User study:18 名志愿者,四个设置(long-video、smooth、hard、recall),每个设置随机选 6 组视频,方法名隐藏,5-point Likert scale 评分。
Baselines
长视频基线包括 Self-Forcing、-RoPE、Deep-Forcing、Rolling-Sink、LongLive。交互设置分为 non-fine-tuned 和 fine-tuned:non-fine-tuned 用 Self-Forcing+Recache、-RoPE、Ours;fine-tuned 用 LongLive、LongLive+Flush、LongLive+Ours。
Metrics
论文使用 VBench-Long / VBench 系列指标:Aesthetic Quality、Background Consistency、Imaging Quality、Subject Consistency、Motion Smoothness、Temporal Flickering、Dynamic Degree,以及 Text Alignment。Interactive evaluation 不是把整段视频当成 homogeneous clip:smooth 的 quality metrics 在完整 60s 上计算、text alignment 按 6 个 10s segment 平均;hard cut 的 text/background 在 segment 内算、subject consistency 在全视频算;scene recall 把第 4/5/6 段分别与第 1/2/3 段配对计算 subject/background consistency。
Implementation / hyperparameters
Echo-Forcing 是 training-free 框架;论文未给出新模型训练 steps、learning rate 或 batch size。实现设置来自论文实验节与 Appendix:local window frames;默认 rolling anchors、 compressed history frames、 recent frames;rolling pool ,每次 anchor update 插入 ;
Scene Recall Frames 采样 candidate frames;prompt routing 阈值 、,recall offset 系数 ;drift-gate 默认 ;所有实验在 NVIDIA H100 GPUs 上进行。公开仓库目前无实际 config/launch script,因此这些数值只能锚定到论文 source,而不是 released code config。
另需注意论文内部口径差异:主文写 recent frames,而 Appendix cache distribution 写 ;本文已在 §3.1 标出该不一致,未在无代码依据时强行合并。
5. Experimental Results(实验结果)
5.1 Main quantitative results
Long-video generation on VBench-Long(60s/120s;指标均为越高越好):
| Duration | Method | FPS | Aesthetic | Background | Imaging | Subject | Motion | Flicker | Dynamic |
|---|---|---|---|---|---|---|---|---|---|
| 60s | Self-Forcing | 17.01 | 56.32 | 96.35 | 68.26 | 96.40 | 98.57 | 97.94 | 30.00 |
| 60s | -RoPE | 17.01 | 58.49 | 94.66 | 70.36 | 96.27 | 97.95 | 96.10 | 71.04 |
| 60s | Deep-Forcing | 15.65 | 58.65 | 94.59 | 69.04 | 95.72 | 97.76 | 96.52 | 40.63 |
| 60s | Rolling-Sink | 16.45 | 61.61 | 96.13 | 71.89 | 97.84 | 98.84 | 97.96 | 43.13 |
| 60s | LongLive | 20.70 | 59.48 | 94.74 | 67.97 | 96.18 | 98.09 | 96.55 | 58.54 |
| 60s | Echo-Forcing | 15.71 | 61.69 | 97.17 | 72.09 | 97.17 | 98.79 | 98.28 | 47.59 |
| 120s | Self-Forcing | 17.01 | 50.37 | 97.15 | 61.36 | 98.33 | 95.17 | 98.07 | 19.70 |
| 120s | -RoPE | 17.01 | 59.12 | 95.70 | 69.75 | 97.32 | 98.27 | 96.95 | 59.44 |
| 120s | Deep-Forcing | 15.65 | 58.59 | 96.37 | 68.11 | 97.65 | 98.45 | 97.56 | 27.78 |
| 120s | Rolling-Sink | 16.45 | 61.53 | 96.27 | 70.48 | 98.10 | 98.99 | 98.26 | 29.44 |
| 120s | LongLive | 20.70 | 59.78 | 95.08 | 68.71 | 96.82 | 98.41 | 97.09 | 43.33 |
| 120s | Echo-Forcing | 15.71 | 61.75 | 96.53 | 72.83 | 98.16 | 99.05 | 98.33 | 36.68 |
Echo-Forcing 在 60s 上拿到最佳 Aesthetic、Background、Imaging、Flicker;在 120s 上拿到最佳 Aesthetic、Imaging、Motion、Flicker。它没有追求最高 Dynamic Degree(-RoPE 更高),但更好地平衡画质、稳定性和长程一致性。
Interactive video generation:
| Setting | Mode | Method | Text Align | Subject | Background | Aesthetic | Imaging |
|---|---|---|---|---|---|---|---|
| Unfine-tuned | Smooth | Self-Forcing+Recache | 26.92 | 86.13 | 86.48 | 50.15 | 50.22 |
| Unfine-tuned | Smooth | -RoPE | 25.94 | 83.95 | 87.94 | 57.33 | 66.81 |
| Unfine-tuned | Smooth | Echo-Forcing | 27.94 | 93.19 | 92.63 | 58.64 | 69.21 |
| Unfine-tuned | Cut | Self-Forcing+Recache | 29.88 | 76.43 | 86.77 | 50.02 | 50.17 |
| Unfine-tuned | Cut | -RoPE | 32.63 | 78.88 | 85.89 | 57.12 | 67.79 |
| Unfine-tuned | Cut | Echo-Forcing | 33.67 | 79.39 | 89.62 | 58.00 | 69.64 |
| Unfine-tuned | Memory | Self-Forcing+Recache | 28.58 | 78.12 | 74.71 | 50.98 | 51.02 |
| Unfine-tuned | Memory | -RoPE | 29.47 | 79.31 | 78.39 | 56.31 | 66.73 |
| Unfine-tuned | Memory | Echo-Forcing | 32.58 | 83.11 | 81.57 | 58.76 | 68.88 |
| Fine-tuned | Smooth | LongLive | 27.38 | 94.01 | 91.39 | 54.89 | 67.17 |
| Fine-tuned | Smooth | LongLive+Flush | 27.34 | 94.22 | 91.88 | 54.85 | 67.33 |
| Fine-tuned | Smooth | LongLive+Ours | 29.77 | 95.32 | 93.74 | 54.78 | 67.87 |
| Fine-tuned | Cut | LongLive | 30.59 | 81.53 | 57.78 | 54.46 | 67.76 |
| Fine-tuned | Cut | LongLive+Flush | 31.97 | 81.99 | 56.33 | 54.49 | 69.01 |
| Fine-tuned | Cut | LongLive+Ours | 34.27 | 83.39 | 57.75 | 55.01 | 69.77 |
| Fine-tuned | Memory | LongLive | 28.56 | 82.23 | 86.50 | 53.31 | 66.32 |
| Fine-tuned | Memory | LongLive+Flush | 30.18 | 82.77 | 86.23 | 53.77 | 67.43 |
| Fine-tuned | Memory | LongLive+Ours | 32.58 | 83.48 | 87.57 | 54.98 | 69.13 |

Figure 5 解读:定性比较覆盖 smooth transition、hard cut、scene recall 与普通 long-video。Echo-Forcing 的优势主要体现在:旧场景不会在 hard cut 后持续污染背景;recall 时能重新取回早先场景的布局/主体线索;长视频 rollout 中主体和背景更不容易漂移。
5.2 Ablations
Drift-Gated Phase Compression:
| Method | Aesthetic | Background | Imaging | Subject | Motion | Flicker | Dynamic |
|---|---|---|---|---|---|---|---|
| No AMP | 61.24 | 96.17 | 72.54 | 97.00 | 98.03 | 98.20 | 35.31 |
| Only AMP | 59.34 | 94.28 | 71.33 | 96.11 | 97.92 | 97.28 | 30.51 |
| AMP w/o drift gate | 61.67 | 96.13 | 72.85 | 97.16 | 98.68 | 98.21 | 37.08 |
| Echo-Forcing | 61.69 | 97.17 | 72.09 | 97.17 | 98.79 | 98.28 | 47.59 |
移除 AMP 会把 Dynamic Degree 从 47.59 降到 35.31;只有 AMP 且没有可靠门控时,背景一致性从 97.17 降到 94.28,说明盲目放大幅值会引入不可靠 memory;加入 drift gate 后,动态与稳定性同时提升。
Anchor / memory budget:
| Ablation | Key finding |
|---|---|
| Static anchors | Dynamic Degree 只有 27.08,说明固定 early reference 过度压制运动。 |
| Positive / Reverse rolling | Dynamic Degree 分别为 42.50 / 42.08,但边界稳定性不如 bidirectional。 |
| Bidirectional rolling | Dynamic Degree 47.59,Temporal Flickering 98.28,Background 97.17。 |
6 anchors + 9 compressed | Imaging Quality 72.42 最高,但 Dynamic 39.27,长程运动弱。 |
15 anchors + 0 compressed | Subject 97.68 高,但 Dynamic 41.04,说明只靠 anchors 不够。 |
12 anchors + 3 compressed | Background 97.17、Motion 98.79、Flicker 98.28、Dynamic 47.59 最优,作为默认配置。 |
Scene memory modules:
| Component | Baseline | Echo-Forcing result | Interpretation |
|---|---|---|---|
| Recall source: No memory → Recall Frame | Subject 74.97 → 83.39;Text 33.48 → 34.27 | Scene Recall Frames 明显优于无记忆、first frame 或 single crucial frame。 | |
| Memory decay: No decay → Ours | Text 25.74 → 29.77;Subject 94.68 → 95.32;Background 92.45 → 93.74 | token-wise soft forgetting 比固定 decay ratio 更能同时保留兼容内容、压制冲突背景。 | |
| Drift gate sensitivity | Dynamic 36.35; Dynamic 34.79; Dynamic 47.59 | 过小反应不够,过大过度压制 AMP,默认 最平衡。 |
5.3 User study
| Setting | Method | Text Align | Subject | Motion | Video Quality |
|---|---|---|---|---|---|
| Long | Self-Forcing | 2.44 | 2.81 | 2.69 | 2.24 |
| Long | Deep-Forcing | 2.89 | 2.43 | 2.03 | 1.13 |
| Long | -RoPE | 2.97 | 2.83 | 3.05 | 3.04 |
| Long | Rolling-Sink | 3.24 | 3.28 | 3.16 | 3.33 |
| Long | LongLive | 3.16 | 3.23 | 3.08 | 3.34 |
| Long | Echo-Forcing | 3.52 | 3.33 | 3.64 | 3.41 |
| Interactive | -RoPE | 3.61 | 3.41 | 3.56 | 3.63 |
| Interactive | LongLive | 3.46 | 3.58 | 3.25 | 3.19 |
| Interactive | Self-Forcing | 2.52 | 2.38 | 2.13 | 2.36 |
| Interactive | Echo-Forcing | 3.80 | 3.47 | 3.78 | 3.68 |
人类评分与自动指标一致:Echo-Forcing 在 long-video 的四个维度全部最高;interactive 中 Text Align、Motion Smooth、Video Quality 最高,Subject Consistency 略低于 LongLive(3.47 vs. 3.58),这提示方法更偏向 prompt responsiveness 与转场/召回质量,未必在所有情况下最大化全局主体相似。
5.4 Additional qualitative results

Figure 6 解读:额外 long-video 示例显示 Echo-Forcing 在多段动作和长时间 rollout 中维持主体身份、背景结构和视觉质量;这主要对应 Hierarchical Temporal Memory 中 anchor + compressed + recent 的组合。

Figure 7 解读:smooth transition 示例强调相邻段落之间的主体、场景和动作连续性。此处不需要强行清空历史,而是让 recent window 与兼容旧记忆继续提供局部动态。

Figure 8 解读:hard cut 示例中,背景和动作突然变化但主体需要保持。Difference-aware Memory Decay 的作用是快速降低旧背景 token 的贡献,同时保留与主体身份相关的兼容 token。

Figure 9 解读:2-minute long-video comparison 更突出长程误差积累问题。Echo-Forcing 相比代表性 baselines 更能维持主体外观、背景一致性和帧级质量,但 FPS 不是最高,LongLive 因 active cache 更小有更高吞吐。

Figure 10 解读:Scene Recall Frames 的可视化展示每个 scene 的原始关键帧与 fused recall representation。它不是简单选第一帧,而是在 spatial position 上融合多个 stable frames,因此能保留互补的主体纹理、背景布局和遮挡区域线索。

Figure 11 解读:额外 scene-recall 结果展示 A-B-C-A-B-C 式长距离召回。Echo-Forcing 能在后半段取回前面场景的 identity/background,而不是把最近场景混入召回目标。
5.5 Limitations / caveats
论文结论强调 Echo-Forcing 在 bounded cache 下提升 long-video 和 interactive generation,但需要注意三点:第一,公开仓库尚未释放实现代码,无法核对公式与真实 engineering choices,也无法验证 H100 实验脚本、batching、采样参数等细节;第二,方法依赖 base autoregressive video diffusion backbone 的 KV-cache 可访问性,对闭源或不暴露 attention cache 的模型不直接适用;第三,automatic routing 基于 prompt embedding similarity 与固定阈值,在语义相近但视觉应 hard cut、或语义不同但视觉应保持的场景中可能需要人工 tag 修正。
总体结论:Echo-Forcing 的实验支持“scene memory lifecycle”这个假设——将历史 KV 分成 preserve / recall / forget 三类操作,比单一 sliding-window、sink token 或粗暴 flush 更适合交互式长视频生成。它的主要贡献是 training-free memory organization,而不是新视频 backbone 或新训练目标。