当前位置: 首页 » 资讯 » 新科技 » 正文

KeyRec:给视频AI装一个会取舍的记忆

IP属地 中国·北京 科技行者 时间:2026-10-31 00:21:42


你有没有试过一边看直播一边回答朋友的问题。比如体育比赛直播到第八十分钟,朋友突然问你"刚才那个争议判罚到底发生了什么"。这时候你脑子里要做两件事:一是回忆刚刚几秒钟发生的细节,二是从前八十分钟里翻出和这次判罚有关的那几个瞬间。你不会把整场比赛从头到尾在脑子里重播一遍,那样太慢也太累。

现在的视频AI模型,面对长视频或者直播流,恰恰就有点像一个笨拙的大脑,它什么都记得,但记的方式很死板。

**视觉token的爆炸问题**

要理解这篇论文解决的难题,得先弄明白一个概念。

视觉语言模型*(VLM,Vision-Language Model):能同时理解图像/视频和文字,并用自然语言回答问题的AI模型。

视觉语言模型看一段视频的方式,是把每一帧画面切成几十到几百个"视觉token"。

视觉token*:模型把一张图片拆分成的若干个小块,每块被编码成一串数字向量,供模型内部计算使用,相当于机器"看"东西的最小单位。

问题来了。视频每多一帧,视觉token就多几十上百个。十分钟的视频,可能产生几万个token。模型做推理的时候用的是自注意力机制,计算量跟token数量是平方关系增长的,不是线性增长。

自注意力机制*:模型内部让每个token都去"关注"其他所有token,从中提取关联信息的计算方式,是Transformer架构的核心,但计算量随输入长度平方增长。

这就意味着,视频越长,模型跑起来越慢、越占显存,到后面干脆直接报错"内存不够"(论文里叫OOM,out of memory)。这不是夸张,论文的实验里,Gemma模型处理256帧长视频时显存就冲到了39.23 GiB,到512帧直接崩了。

直播这种场景更麻烦,因为你不知道这场直播会播多久,问题随时可能冒出来,模型没法提前规划"存多少记忆才够用"。

**已有的压缩方法,问题出在哪**

研究者们当然想到了办法,那就是"压缩",也就是从海量视觉token里挑出重要的、扔掉不重要的。这类方法不需要重新训练模型,属于"训练-free"(training-free)路线,代表性的有STC-Pruner、StreamingTOM、CausalMem等。

这些方法的核心思路,是给每个token打分,看它跟相邻帧比起来有没有变化,或者跟某种"历史平均样貌"差多少,差得越多说明信息量越大,就留下来。

听起来挺合理,但论文作者指出了三个坑。

第一个坑是,这些方法衡量"新鲜度"的标准太粗糙,往往只拿当前token和上一帧或者一个笼统的全局印象比较,没有把历史内容按"事件"组织起来。结果就是,同一个正在发展的事件,可能被切成好几段零散记忆;而两个长得很像但发生在完全不同时间的场景,反而被混到了一起,误以为是重复信息。

第二个坑是,独立挑选单个token容易丢掉上下文。一个动作要完整理解,需要演员、动作、物体、场景这几个元素配合起来看,如果只挑"看起来最显眼"的那几个token,很可能把连接这些元素的关键背景信息给删了。

第三个坑最隐蔽,也是这篇论文着力要改的。几乎所有已有方法,都用同一套标准去压缩整段视频,不管这段视频刚发生还是很久以前发生的。

这就好比你让一个记笔记的人,对一场持续三小时的会议,从头到尾用同样的详细程度记录。

如果真这么做会怎样?最新讨论的议题,因为笔记本已经写满了前面两个小时的琐碎细节,反而只能被压缩成几个字;而三个小时前那个早就讨论完、价值不大的开场白,占用了大量篇幅。这种"一刀切"的记忆策略,会导致模型回答"现在发生了什么"这类问题时,恰恰缺乏足够细节,因为最新鲜的证据被和陈旧历史用同一个标准筛选,挤掉了。

**KeyRec的解法:把记忆拆成两块,再配一个调度员**

搞清楚问题之后,这篇论文提出的KeyRec框架,核心思路其实很直白:既然"最近的要详细、久远的要概括"是人类处理记忆的自然方式,那就干脆把视觉记忆明确拆成两部分来管理。

第一部分叫做视觉缓存(recent cache),负责存最近若干帧的详细视觉token,先进先出,新的来了老的就被挤走,保证"眼前正在发生的事"永远看得清清楚楚。

第二部分叫做关键事件记忆库(key event memory),专门负责把历史上出现过的、有代表性的"事件"压缩保存下来,容量有限,但组织得有条理。

这种设计背后有一个重要的前提,叫做"查询无关写入、查询相关读取"(query-agnostic writing, query-adaptive reading)。

查询无关写入*:模型在存储记忆的时候,并不知道用户稍后会问什么问题,所以存储策略只能依据画面本身的内容来判断重要性,不能提前为某个具体问题服务。

查询相关读取*:等用户提出具体问题之后,再根据问题内容,动态决定从已经存好的记忆里,各取多少"最近"和多少"历史"。

这个设计其实很符合我们人类的直觉。你不会提前知道朋友会问什么问题才去看比赛,但看比赛的时候脑子里自然会分出"刚发生的"和"值得记住的关键时刻"两类印象,等问题真的来了,再去调取相应的部分。如果不这么分开处理,要么就得把所有细节都原样保留(那就是前面说的token爆炸问题),要么就得用同一套标准笼统压缩(那就会丢失细节或者丢失历史覆盖面,两头不讨好)。

**事件记忆库怎么判断什么该存**

关键事件记忆库不是随便存点东西进去就完事,它有一套严格的增删改流程,叫做add-merge-evict(添加-合并-驱逐),这是整篇论文技术含量最高的部分。

先说怎么判断一个新来的画面片段够不够"新鲜",值不值得当作一个新事件存起来。KeyRec的做法是,拿这个片段里的每个视觉token,跟记忆库里已经存的所有事件的"代表向量"做余弦相似度比较,相似度越低,说明这个token携带的信息,记忆库里越没见过,这个指标论文里叫"新颗度"(novelty)。

余弦相似度*:衡量两个向量方向是否接近的一种数学方法,结果在-1到1之间,数值越接近1说明两者越相似,常用来判断两段内容语义上有多像。

每一帧里新颍度排名前面的那些token,会被打包整理成一个"候选事件",候选事件带着自己的时间戳和一个概括性的代表向量。

接下来要决定,这个候选事件是该独立存成一个全新事件,还是该跟已有的某个事件合并。判断标准有两条:语义相似度够不够高(内容像不像)、时间间隔够不够近(是不是前后紧挨着发生的)。这里有个很关键的设计细节,仅仅内容相似还不够合并,必须同时满足时间上也挨得近。

为什么要加这条时间限制?因为同样的场景完全可能在视频里反复出现,比如监控画面里某个人多次经过同一个走廊。

如果光看内容相似就合并,这些相隔很远的重复片段会被错误地揉成一个事件,结果就是"这个人第一次经过"和"这个人第三次经过"被搞混,模型会以为这只是一件事,而实际上是三件独立的事。加上时间间隔这个限制之后,只有真正连续发生、属于同一个正在演进的情节的片段才会被合并,远距离的相似重复则各自成立为独立事件。

这就像整理照片相册一样。你去过同一家咖啡馆三次,如果相册软件只看照片内容相似就自动归到一组,那三次完全不同的约会就被混成了一张"合集",细节全丢了。但如果软件同时参考拍照的时间,就能正确分成三组,各自保留完整的故事线。

事件库的容量是有限的,一旦新事件插入导致总数超过上限,就要驱逐一个。驱逐规则也很讲究,不是简单地"先进先出",而是综合考虑这个事件本身信息量大不大(utility,效用分数,记录的是这个事件当初被创建时的最高新颍度),以及这个事件所处的时间点是不是视频里比较"孤独"的时段(如果附近没有其他事件覆盖,说明这段时间的信息如果被删掉就彻底没了)。两个因素加权相加,得分最低的那个事件就被淘汰。

这套机制的用意是,既不让记忆库被相似内容占满,也不让某一段时间的历史完全没有代表,尽量在"信息量"和"时间覆盖面"之间找平衡。

**问题来了之后,谁来决定读多少记忆**

光有记忆还不够,关键是用户问问题的时候,该从这两块记忆里各拿多少出来给模型看。KeyRec在这里设计了一个很巧妙的角色,叫做文本路由器(text-only router)。

这个路由器本身用的就是同一个冻结参数的VLM,但只给它看问题文本,不给它看任何视频画面,让它判断这个问题更偏向"需要最新细节"还是"需要翻历史"。路由器会把问题分到五档里的其中一档,从全部用最近记忆、偏重最近记忆、均衡分配、偏重历史事件、到全部用历史事件。

这个设计的巧妙之处在于,它完全不需要重新处理视频,只靠文字判断分配比例,速度很快,而且不同类型的问题确实需要不同的记忆配比。论文里给了个很直观的例子,"现在发生了什么"这种问题自然应该多用最近记忆,而"刚才那个争议判罚是怎么回事"这种回溯性问题就该多调历史事件,有时候还得把事件按时间均匀挑选,覆盖整段历史,而不是光挑和问题关键词最像的那几个。

路由器的存在解决的是一个很现实的矛盾,如果固定一种读取比例(比如永远五五分),论文的消融实验显示,没有一种固定比例能在所有任务上都表现最好。OVO-Bench的回溯类问题最适合全用事件记忆,而它的实时类问题偏偏在全用事件记忆时表现暴跌,长视频理解反而需要两者混合。固定策略就像一把钝刀,切什么都差点意思,而路由器相当于配了一把可以根据场景切换角度的多功能刀。

**NEO-ov:没有独立视觉编码器的模型怎么办**

这篇论文还做了一件不算起眼但很有意思的工作,就是把KeyRec用到了一种结构完全不同的模型上,叫NEO-ov。

传统的VLM,比如Gemma系列,结构是"视觉编码器+投影层+语言模型"三段式,图像先被专门的视觉模块处理,再投影成语言模型能懂的格式。NEO-ov属于另一类架构,叫原生单视觉模型(native one-vision model),它压根没有独立的视觉编码器,图像的小块直接被当成token,和文字token混在一起扔进同一个统一的骨干网络处理。

这种架构差异意味着很多现有的压缩方法会失效,因为它们依赖的是视觉编码器里特有的注意力信号或者特征结构,而NEO-ov根本没有这些东西可以借用。

KeyRec之所以能顺利迁移过去,恰恰是因为它操作的对象是"模型要看到的视觉嵌入本身",而不是某个架构特有的中间产物。唯一需要额外处理的,是把每个被保留token原本所在的帧、空间位置这些元数据一起保留下来,读取的时候按原来的时空位置插回模型该放的地方。

这个细节其实揭示了一个更深的东西,训练-free的压缩方法要想真正通用,必须足够"轻",只依赖最基础、最普遍存在的信息(这里就是视觉嵌入向量本身),而不能依赖某种架构特有的"小动作"。这也是为什么论文最后专门强调,这次对NEO-ov的适配是"初步探索",未来编码器-free架构会越来越多,怎么给它们设计记忆机制,还有很大空间。

**实验结果说了什么**

这套方法到底好不好用,得看数字。

论文在四个基准测试、三个模型骨架上做了全面评估,一共十五种组合,KeyRec在其中十三种组合里拿到了压缩方法里的最好成绩,而且只用了未压缩方法十分之一的视觉token预算。

在实时问答这类任务上(比如直播场景下问"现在发生了什么"),KeyRec比最强的对比压缩方法领先2.21到18.37分,这是个相当大的差距。而在NEO-ov这个新架构上,KeyRec在所有测试里都是表现最好的压缩方法。

有个细节特别值得说一下,KeyRec在部分场景下的表现,甚至超过了完全不压缩、保留全部token的"Vanilla"版本,最多领先10.01分。这乍一听挺反直觉,压缩了居然比不压缩还好?

但仔细想想就明白了,不压缩不代表信息质量高,长视频里充斥大量重复、无关的背景画面,这些冗余内容反而会把真正关键的证据"淹没"。KeyRec通过结构化筛选,相当于帮模型提前把噪音过滤掉了,留下的都是浓缩后的精华,所以某些情况下反而表现更好。这提醒我们一个常识可能并不总对,更多的信息不一定带来更好的理解,关键是信息的组织方式。

论文还做了读取预算的扫描实验,结果发现一个有意思的规律,准确率并不是随token数量单调上升的,而是在5%左右的读取比例时达到峰值,之后反而缓慢下降。这进一步印证了上面那个反直觉结论,塞给语言模型越多视觉token,不代表理解力越强,超过某个临界点之后,多余的、关联性弱的证据反而会稀释掉真正有用的那部分。

| 测试基准 | 模型 | 子集 | Vanilla(不压缩) | 最强压缩基线 | **KeyRec** |

| OVO-Bench | Gemma 4 E4B | Realtime | 59.83 | 62.51 | **64.81** |

| OVO-Bench | NEO-ov 2B | Realtime | 58.07 | 44.41 | **62.78** |

| StreamingBench | Gemma 4 E2B | Realtime | 51.28 | 58.01 | **61.29** |

| StreamingBench | NEO-ov 2B | Realtime | 69.06 | 55.56 | **69.10** |

| LongVideoBench | NEO-ov 2B | Validation | 52.51 | 44.43 | **49.29** |

| Video-MME-v2 | Gemma 4 E4B | Overall | 20.09 | 15.91 | **17.63** |

**延迟和显存的账算下来值不值**

压缩不是没有代价的。KeyRec要额外跑一次文本路由判断,还要维护事件库的增删改逻辑,这些都需要时间。

论文的实测数据显示,在64帧的视频上,KeyRec端到端耗时7.08秒,比不压缩的Vanilla(5.73秒)还略慢一点。但随着视频变长,这个额外开销的比例在不断摊薄,到512帧时,KeyRec耗时43.08秒,而Vanilla这时候已经直接内存溢出跑不动了。相对于另一个强力压缩对手StreamingTOM,KeyRec的额外开销比例从64帧时的约19%,降到了512帧时的约10%。

换算成普通人能理解的感受,这就像你雇了一个助理帮你整理会议记录,助理每次整理需要花点额外时间,但只要会议时间够长,这点额外投入带来的省心程度就越划算,而如果没有助理,你自己根本扛不住那么长的会议记录,记到一半脑子就死机了。

写在后面

读完这篇论文,让我印象最深的不是KeyRec方法本身设计得多巧妙,而是那个被反复验证的反直觉结论,更多的视觉token不代表更好的理解。这件事放在当下AI圈普遍迷信"规模越大越好"的语境里,其实挺值得多想一层。

论文里那个"5%读取比例反而达到峰值"的实验结果,如果换一个角度看,其实在暗示一件更根本的事,语言模型在处理海量上下文时,可能本身就存在某种"注意力稀释"的天然局限,塞进去的信息越多,每一份信息分到的"关注权重"就越薄,这跟人脑开会走神的机制,倒还真有点像。

另外论文坦诚地把"适配NEO-ov这种新架构"称为初步探索,而不是号称彻底解决,这种态度在一堆号称"颠覆性突破"的论文里显得挺难得。编码器-free的架构会越来越多,但现有的token压缩方法几乎全部是围着传统ViT编码器的注意力信号设计出来的,这意味着整个压缩研究领域可能需要重新从底层逻辑想一遍,而这篇论文只是刚打开了这扇门的一条缝。

那个被淘汰的历史事件,它携带的信息就这样彻底消失了,还是说它的影子,已经悄悄融进了之前合并进来的其他事件里?这个问题论文没细说,但挺值得琢磨。

Q&A

Q1:KeyRec是什么?

A:KeyRec是一种训练-free的视频AI记忆压缩框架,把视觉记忆拆成最近缓存和关键事件库两部分,用文字路由器根据问题动态分配读取比例,在只用10%视觉token预算的情况下,实现了接近甚至超过不压缩模型的效果。

Q2:KeyRec为什么比不压缩的模型表现还好?

A:因为长视频里存在大量重复、无关的冗余画面,这些内容会稀释掉真正关键的证据。KeyRec通过结构化筛选提前过滤掉噪音,留下的是浓缩后的精华,所以在部分场景反而比保留全部token的模型表现更好,最多领先10.01分。

Q3:KeyRec能用在没有独立视觉编码器的模型上吗?

A:能。KeyRec在NEO-ov这类原生单视觉模型上做了适配,只需要保留每个token原本的时空位置信息,不需要修改底层记忆算法,在所有NEO-ov测试场景中都取得了压缩方法里最好的成绩。

【数据支持来自天眼查App】

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其内容真实性、完整性不作任何保证或承诺。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。