📍 文 / 老Z
见过那种AI生成的"电影"吗,开头男主角是一个黑发帅哥,中间跑了个场景变成金发,结尾又换了个完全不同的脸——旁白还在继续同一个故事?
这不是创作风格,这是技术缺陷,而且是整个视频生成领域长期存在的痛点。
AI生成单个镜头已经相当好了,但一旦要生成有故事连贯性的长视频,同一个角色在不同镜头里往往会悄悄"漂移"——脸型变了,发型变了,衣服颜色变了,叙事还在假装这是同一个人。
今天HF排名第二的这篇论文叫Memento,来自厦门大学和百度ERNIE团队。它找到了这个问题的根本原因,并给出了一个相当干净的解决思路。
角色为什么会漂移
先从现有方法说起。
目前主流的长视频生成方式之一,是一个镜头一个镜头地生成,同时维护一个"记忆库",存着历史视频帧的特征,生成下一个镜头时拿这个记忆库来参考,保持连贯性。StoryMem是这类方法里做得比较好的。
听起来合理:记忆库里存着历史画面,角色的脸应该也在里面。
问题在于记忆库选什么、怎么选,是由一个通用的"视觉相关性"指标驱动的。模型不区分"这帧对保留角色身份有没有用"和"这帧对生成下一个镜头的构图有没有用"。两种需求共用一套筛选机制,角色身份信息很容易被场景信息压制。
更根本的问题是:没有任何训练信号直接要求"记忆库里必须保留角色的身份信息"。模型完全可以学会"用记忆库来参考镜头构图"而不是"用记忆库来保留角色的脸",短期效果看起来不错,但角色一跨场景就开始飘。
Memento的诊断:身份一致性从来不是被直接优化的目标,只是被间接期待的副产品。
重建才是真记住
这篇论文最核心的那句话:
"如果记忆库真的保存了一个角色的身份,那模型应该能仅靠记忆重建出这个角色的外貌。"
这把一个模糊的期待——"记忆库应该记住角色"——变成了一个可以直接优化的目标:给模型看记忆库和故事描述,不给任何当前的视觉参考,让它把角色的外貌还原出来。能还原,才算真记住了。
这个"重建任务"被设计成一个辅助训练目标,和主任务(生成下一个镜头)一起联合训练。重建失败的loss会直接反向传播到记忆选择机制上,逼着记忆库学会留住身份关键信息——脸部特征、发型、体型、服装细节。

图:Memento的整体框架。左边是生成流程,右边是Dual-Path Disentangled Memory Bank的更新机制:story query和shot query从同一个候选池里各自检索,互不干扰,分别服务长程身份保留和短程视觉连贯性。
两个问题,两套记忆
但只有重建任务还不够,因为还有一个隐藏的冲突。
重建角色需要的信息,和生成下一个镜头需要的信息,根本不是同一类。
重建角色:需要跨镜头的长程身份证据。第1个镜头里角色正面清晰的脸,哪怕现在已经到第10个镜头了,这帧仍然是最有用的参考。
生成下一个镜头:需要近期上下文。上一个镜头的构图、运动方向、光线,帮助新镜头顺畅衔接。
用同一套记忆选择机制服务这两个目标,它们会互相竞争。如果近期场景信息视觉上很显著,它可能会把对角色身份很关键但视觉不够突出的帧给挤掉。
Memento的方案是把记忆检索路径一分为二。
Story query(用全局故事描述来查询记忆):专门检索长程身份证据,服务重建任务和跨场景一致性。
Shot query(用当前镜头描述来查询记忆):专门检索近期上下文,服务下一个镜头的视觉连贯性。
两套query从同一个候选记忆池里各自取TopK,彼此独立,不互相干扰。
数据层有个关键细节
整个框架能work,还依赖一个基础建设:标注质量。
标准的视频描述里充满了代词——"他走进房间"、"她转过身来"。一段视频里有两个角色时,"他"到底指谁,模型完全搞不清楚。
Memento的数据标注流程强制使用代词无关的角色描述:不是"他",而是"Person A: 穿白色宇航服的男人"。每个角色在Story Caption里建了一个固定身份档案,后续所有Shot Caption里提到这个角色时,必须用这个固定描述。

图:三级标注流程。Story Caption建立全局叙述和角色名录;Shot Caption用固定的代词无关描述指代每个角色;Reconstruction Caption由ByteTrack追踪到角色最清晰的帧作为重建目标,配上对应的描述。
这个代词无关的标注让模型在训练时能明确把"记忆里的哪个视觉token"和"哪个具体角色"关联起来。Qwen3-VL负责生成三层标注,ByteTrack负责追踪每个角色的最佳可见帧。
数字层面
Backbone是Wan2.2 14B,480×832分辨率,16台H100训练,数据集20K clips。
主要竞品:StoryMem、HoloCine、StoryDiffusion+Wan2.2-I2V。

表:量化对比。Memento在所有Subject Consistency指标(inter-shot、intra-shot、inter-scene)上全面领先,semantic consistency和background consistency也保持了较好水平。
角色一致性指标:
• 相邻镜头间(inter-shot):0.7338 vs StoryMem的0.6606,提升约11个点
• 跨场景(inter-scene):0.7268 vs StoryMem的0.6693——这个提升最明显,恰恰在场景切换时角色最容易漂移
User study里,10名评测者对30个生成案例做了盲测对比。跨镜头一致性上,Memento对StoryMem赢了57.3%,对HoloCine赢了69.0%。审美质量上也没有明显损失。

图:视觉对比。同一个故事(PhD学生、Jack和Rose),StoryMem和HoloCine在跨镜头时角色面部特征出现了明显变化(红/蓝框标注),Memento的角色在不同镜头间保持了一致的外貌。
消融实验里有个有意思的结果:加入disentangled memory之后,相邻镜头的一致性小幅下降(0.7489→0.7338),但跨场景一致性和整体视觉质量都提升了。原因:双路记忆引入了其他角色的长程信息,对"直接相邻镜头"的预测有轻微噪声,但对整个故事的跨场景连贯性有显著帮助。这个trade-off是有意为之的——让相邻两帧稍微牺牲一点局部相似度,换来全局身份的稳定性。
多走了一步
Memento展示了两个进阶能力:一是跨年龄叙事里的身份保留(角色从少年到中年,脸部结构保持可识别);二是5分钟连续生成,整个过程主角外貌稳定。

图:进阶能力演示。上:跨年龄的身份保留;下:5分钟长视频的连续生成,主角外貌始终一致。
这篇论文最值得关注的地方,不是架构有多复杂,而是那个insight的清晰度——把"记忆好不好"从一个无法量化的期待,变成了一个可以直接优化的重建任务。这种"用任务可验证性来驱动表征学习"的逻辑,在其他地方也反复出现过,但在视频生成的角色一致性问题上,Memento把它做得很直接。
有一点论文没有讨论但我觉得值得留意:重建任务对训练数据质量要求很高,你需要每个角色的清晰大图作为重建目标。对全程被遮挡、或在镜头里脸很小的次要角色,这个监督信号会很弱。现实里主角能保持一致,配角大概率还是会飘。这个问题没有出现在论文的实验场景里,但在实际的影视制作场景里,配角的漂移问题可能不容忽视。
arxiv: https://arxiv.org/abs/2606.14667
✍️ 老Z ·
欢迎转发,谢绝洗稿
夜雨聆风