Foresight提出新解法:冻结视觉语言模型双副本实现主动预判
你有没有想过,一个一直盯着监控画面的AI,到底该什么时候开口说话?这个问题听起来简单,实际上藏着一个很棘手的矛盾。假设你让AI盯着一场足球比赛,告诉你什么时候有人进球。它要是看一帧画面就报告一次,那你的手机会被刷屏刷到爆炸。它要是攒够了一整场比赛才汇报,那“实时”这两个字就没有任何意义了。现在主流的解决...
一个始终盯着监控画面的AI,究竟该在什么时候开口说话?这个问题你想过没有?
听起来简单,里面却卡着一个很拧巴的矛盾。比如让AI盯一场足球赛,告诉它什么时候有人进球。每看一帧就报一次,手机能被通知刷到爆;可要等整场踢完再汇报,“实时”两个字就彻底没意义了。
目前常见的做法,要么训练一个专门的小模型来判断“该不该说话”,要么按固定时间表去检查。来自NAAMII、伦敦大学学院等机构研究者的论文Foresight抛出一个挺反直觉的看法:什么专项训练都不需要,一个现成的、权重冻结的视觉语言模型本身就具备预判未来的本事,只是没人把这本事用起来。
视觉语言模型*:一种能同时理解图像/视频和文字的AI模型,可以看懂画面内容,并用自然语言描述或回答关于画面的问题。
核心问题:现有系统都在"看过去"而不是"看未来"
先说说现在的系统是怎么工作的。
要说早期的流式视频理解系统,做法是边看边判断什么时候该开口说话。再往后,这类判断被拆得更细:MMDuet2用强化学习来训练响应时机,StreamChat每解码一步就刷新一次视觉上下文,MiniCPM-o 4.5则把视觉、音频、语音都接了起来,实现全双工交互。LiveStar的思路不太一样,它看新画面跟先前描述还“对得上”与否,据此决定要不要重新想一遍。Dispider走的是训练一个轻量级分类器、专做“响应不响应”二元判断这条路。
毛病是共同的:这些系统全都在被动响应。
也就是说,它们做决定依据的是“已经发生的事”,并不依据“即将发生的事”去提前准备。论文里那个例子很形象:场景一直在变,最好的下一步常常是先等正确证据冒出来,可现有系统把这个“等多久”甩给了固定时间表,或者一个单独训练出来的触发器。
打个比方,你请了个保安盯监控,他的干法是每30秒扫一眼屏幕,或者画面变化超过某个阈值就按下警报器。可这保安根本不懂足球规则——球员带球杀进禁区,接下来几秒很可能就有射门,他不知道,自然也没法提前把注意力挪到门前。缺了这种“预判”,保安只能靠提高检查频率来补,结果大半时间都白费,盯着一场什么都没发生的比赛反复核对。
论文看准的一点是:视觉语言模型既然已经读懂了场景,它其实也有能力推断“信息会在什么时候出现”“到那时该检查什么”。说白了,预判不该只当成一个被打分的预测任务,它更该成为调配计算资源的一种手段。
这一转变留下三块难啃的骨头。其一,预判得足够准,胡乱猜测会把整条推理链带歪。其二,“想”和“看”必须同时跑,规划不能把感知打断。其三,在线调整系统配置的开销要小到几乎可以忽略,不然省下来的算力又被规划本身吃回去了。
Foresight的解法:一个模型,分裂成两个“自己”
Foresight拿出的方案说穿了很朴素:同一个权重冻结的视觉语言模型跑出两份副本,一份负责Ingest(摄入),一份负责Think(思考)。
Siamese架构*:两个网络副本结构一模一样、权重也完全共享,同时并行干活,好比一对双胞胎,长相分不出差别,各做各的事情。
Ingest LLM*:持续处理视频流,把每一帧编码后写入共享的KV缓存,它从不停歇,也是唯一能往缓存里写数据的角色。
KV缓存*:Transformer模型的一种缓存机制,把已经处理过的上下文信息存起来,模型就不必每次都从头把整段历史重算一遍。
Ingest只管一件事,而且从不歇手:新画面进来就编码,编完塞进共享的因果状态里。Think不一样,它只在被叫醒时悄悄读一份当前缓存的“快照”,照着这份快照生成计划,再把计划写回去,用来指导视频流接下来怎么处理。
设计上最妙的一手是,Think读的是快照,从不朝缓存里写任何东西。这样一来,Think就算“胡思乱想”,也污染不了视觉历史的真实记录。
换一个比喻或许更容易理解。设想你在值夜班,仪表盘读数要盯,隔一阵还得停下来想接下来会怎样。两件事搅在一起做,你一琢磨,仪表盘上的数据就漏过去了。Foresight干的事,相当于把你复制一份:一个专心盯仪表盘、记录数据,从不分神;另一个定期拿记录的副本去推演下一步,推完把结论回传给值班系统,但原始记录他绝不碰。不这么分开,感知和规划就会互相抢资源,规划想得越深,感知越容易漏帧,放在实时监控场景里这没法接受。
计划里到底写了什么
每次运行Think,它吐出来的东西论文称作“计划”,由两块组成:一块叫“证据状态”,记下此刻看到了什么、够不够回答问题;另一块叫“控制更新”,管的是系统接下来的行为该怎么调。
控制更新中有几个字段很关键。FPS字段负责视觉门控的采样频率——局面平静就采得稀疏些省算力,预判要出事就加大密度。Keep Classes和Ignore Classes这两个字段,是告诉视觉编码器该关注画面里哪些物体类别,忽略哪些,这样可以把不相关的视觉token直接剔除掉。Compact Now是发给KV缓存的信号,告诉它该“瘦身”了,把陈旧或不重要的历史信息压缩掉。Next Check和Next Question则决定了Think下一次该在什么时候醒来,到时候该重点关注什么问题。
这套机制看着有点像总机调度员的干活方式。调度员不必一直守在电话旁,你只要他交代一句“下次大概什么时候会有重要来电、到时候重点听什么”,等下一通电话来之前,前台怎么接待、要不要先核实身份,全照这份事先写好的交接单办。要是没有这份交接单,调度员每回接班都得从头问一遍出了什么事,效率肯定高不了。
Live Executor*是论文里的“执行器”,Think生成的计划要靠它真正落到系统里:调整采样率、压缩缓存、更新视觉编码器该盯住的物体类别,都归它管。
论证的严谨性还体现在另一处:证据状态和控制状态分开管理。前者是“临时”的,每一步都从当前观测重新算,绝不持久保留;后者是“持久”的,某个设定一旦写入(比如采样频率),就一直有效,直到下一份计划显式修改它。这么设计,是为了不让瞬时的证据波动干扰长期的调度策略。论文把这叫作“保持瞬时证据和持久控制分离”。
计划怎么被“省着写”
工程上有个很聪明的细节:diff-based更新,也就是“差异化解码”。
打个比方,你每天给同事发工作交接单。第一天得写清楚所有流程细节,从第二天起大部分流程没变,只写“今天和昨天不一样的地方是……”,剩下的默认沿用昨天的版本就行。要是每次都重写一份完整交接单,时间全耗在重复劳动上,交接反而更慢。
布尔值的判断也做了优化。“证据是否足够”这种是非判断,模型不靠生成“是”或“否”来表达,而是直接读这两个候选词在模型内部的概率分布,用比值当作连续的置信度信号。省去了解码一整段文字的开销,一步logits读取就能拿到结果。
实验结果:23分的差距意味着什么
设计理念说了这么多,数据才是硬标准。
论文选用的骨干模型是Qwen3-VL-8B,全程权重完全冻结,没有任何额外训练。实验在三个基准上展开:专门测主动响应能力的OmniPro Online、综合测试流式视频理解的StreamingBench,以及测试证据出现时机差异的OVO-Bench。
最硬核的OmniPro Online里,Foresight拿到23.0的平均联合F1分数,排名第二的训练过的基线方法MiniCPM-o 4.5只有13.5。两者差9.5个百分点,换算成相对提升接近70%。九种不同任务类型里,一个完全没经过专门训练、只是巧妙调用现成模型的系统,整体表现把专门为这个任务训练过的系统甩开了一大截。
StreamingBench上,Foresight把骨干模型本身的表现提升了6.7分,总分达到66.0,超过此前最强的MiniCPM-o 4.5(62.7分)。
OVO-Bench上提升了15.4分。最引人注意的是“Forward Active Responding”任务,提升了18.7分。这个任务测的是答案要等视频后面才出现的情况,模型得先“憋着”,等合适的证据出现再回答。这恰好是整篇论文想证明的场景:正确答案晚点才揭晓时,提前规划好什么时候再检查一次,比每次都临场反应优势明显得多。
| 方法 | OmniPro联合F1 | StreamingBench总分 | OVO-Bench总分 |
|---|---|---|---|
| MiniCPM-o 4.5 | 13.5 | 62.70 | 59.70 |
| StreamAgent | 5.0 | 57.02 | 49.40 |
| QueryStream | 6.7 | — | 47.51 |
| **Foresight** | **23.0** | **66.00** | **62.16** |
速度也没落下
常见的疑虑是:这套“先想后做”的系统会不会反而更慢?
论文专门做了成本分析来回答。核心逻辑是这样:没有共享KV缓存的话,每次Think做计划都得把整段历史重读一遍、重算一遍,成本随视频长度的平方增长,视频长一倍,计算量涨四倍。Foresight不一样,所有视觉token只在Ingest阶段编码一次,Think读的是一份现成的快照,所以总计算量基本只取决于“做了多少次检查”和“触发了多少次响应”,跟视频总长度几乎没关系。
论文还测了几个真实跑起来的竞品的实际速度。StreamAgent不管用哪种骨干模型,处理一秒钟视频都要花两到三秒的计算时间,压根跟不上实时视频流。QueryStream跑得快,只需要原视频时长5%到8%的计算时间,但准确率明显不如Foresight。Foresight准确率大幅领先,速度也接近实时,这个“又快又准”的组合在论文的图里表现得很直观。
局限性:预判这件事,也不是万能的
论文的态度挺诚实,专门用一组实验去探究“模型到底能提前预判多久”。
研究团队设计了一个很直白的实验:在事件真正发生前T秒让模型停止观看,只凭已经看过的内容去判断后面会发生什么。结果显示,提前2秒时,模型的预判已经相当准,差不多达到“直接看到事件本身”这一理想水平的四分之三;可把时间拉到30秒,准确率就掉到和完全不看视频、纯瞎猜差不多的地步。换句话说,模型对未来的洞察力很短命。球员带球杀进禁区,确实预示着接下来几秒很可能会有一脚射门,但这个信号放到半分钟之后,对比分已经毫无意义。
Think之所以必须频繁重新检查,而不能靠一次计划管很久,原因也在这里。天气预报就是个类似的例子:气象台比较有把握说明天会不会下雨,但没人敢保证一个月后的某一天是什么天气。预判能管多久,取决于支撑它的线索还能看多远,而不是模型想预判多远就能预判多远。真让系统按很长的时间间隔去检查,中途突然冒出来的事件,它根本来不及反应。
论文还坦率点出了另一个问题:模型一旦误判并触发响应,接下来有时会反复报告同一个早已不存在的事件,哪怕证据已经不支持了。把“历史上已经报告过什么”这份记录交给Think,能明显缓解这一现象,但没能彻底根除。这些局限谈不上丢人,反倒说明研究者没有绕开问题,而是把测出来的边界如实写进了论文。
Q&A
Q1:Foresight是什么?它是一个训练免费的架构,用两个共享权重的视觉语言模型副本:一个持续感知视频流,另一个在后台提前规划未来该怎么处理。流式AI由此从被动响应转向主动预判,而且不需要重新训练任何模型。
Q2:Foresight比现有的流式视频理解方法好在哪里?在OmniPro Online主动响应测试中,Foresight的联合F1得分达到23.0,比最强的训练过的基线MiniCPM-o 4.5高出9.5分;StreamingBench和OVO-Bench上也分别提升了6.7分和15.4分,答案延迟出现的场景提升尤其明显,高达18.7分。
Q3:Foresight的预判能力有多远的有效期?论文实验显示,模型提前2秒预判事件时准确率接近理想水平,到30秒时几乎和瞎猜无异。预判只在短时间内可靠,这也是系统需要频繁重新检查、而非制定长期计划的原因。