打开网易新闻 查看精彩图片

你有没有玩过这样的游戏:角色转身看向别处,等再转回来,原本停在路边的车不见了,或者变成了另一个颜色。这不是什么彩蛋,这是当下几乎所有视频世界模型都有的通病。

世界模型是什么:一种能根据你的动作(比如移动镜头、发出指令)生成接下来会发生什么画面的AI系统,可以理解成一个会"脑补"未来画面的摄像机。

这类模型最近火得不行,自动驾驶模拟、游戏生成、机器人训练都靠它。但它们有一个共同的死穴:只认自己当前看到的东西。一旦摄像机转开,某个物体离开了画面,这个物体在AI的世界里就等于消失了。等镜头转回来,AI得重新"编"一个它应该是什么样子。编得好还行,编不好,就出现了各种怪异的穿帮。

论文里总结了四种典型翻车现场,一个比一个让人哭笑不得。第一种叫"贴屏幕":摄像机明明在转,行人却像被502胶水粘在画面某个角落一样纹丝不动,完全不符合物理逻辑。第二种叫"失踪":一个走远的人,镜头转回来之后,人就是找不着了,仿佛被传送走了。第三种叫"冻结":车本来在往前开,等它重新出现在画面里,车还停在原地,就好像它离开视野那一刻时间突然停止,直到你再看它才重新按下播放键。第四种最诡异,叫"冒名顶替":一个穿西装戴墨镜的男人走出画面,再回来时还是那身打扮、那张脸,但做了一件完全不搭的事,模型编了一段"看起来挺合理"但跟事实对不上的剧情。

这四种毛病的根子,都指向同一件事:模型没有办法在物体不在眼前的时候,继续"观察"它的变化。

这事儿听起来好像有点抽象,换个说法你就懂了。假设你在家看电视直播一场足球比赛,镜头一直对着你喜欢的那个前锋。突然导播切到了另一个角度,拍观众席十秒钟,再切回来,前锋已经进了一个球。你会觉得奇怪吗?不会,因为你知道摄像机只是没拍到,比赛没有因为镜头移开而停止。可现有的AI视频世界模型不是这样想的,它们的逻辑更像是:没拍到的东西,根本就没有在发生。

这就是这篇论文要解决的核心矛盾:怎么让一个世界模型,在摄像机看不到某个地方的时候,依然知道那里在发生什么。

一个"观察者"的想法

研究团队给出的答案很直接:既然问题出在只有一个视角在负责"看",那就再加一个专门负责"看"的角色。

他们管这个新东西叫World Observer,核心思路是把"行动"和"观察"这两件事拆开来做。原来的模型只有一个主视角,既要负责按照用户指令移动、生成画面,又要负责记住整个世界的状态,一心二用,自然顾此失彼。现在,他们引入了两条独立的生成流:一条叫actor(演员),就是你平常看到的那个第一人称视角,跟着摄像机走到哪儿拍到哪儿;另一条叫observer(观察者),是一个固定站在某处的360度全景摄像头,不管actor往哪边转头,它始终盯着自己负责的那片区域。

actor和observer:actor是模型里负责渲染用户实际看到画面的视角,相当于游戏里的主摄像机;observer是一个额外生成的全景视角,持续监视某个区域,哪怕actor已经转头看别处了。

这两条流不是各干各的,而是被同一个AI模型联合生成出来的,它们共享同一个"世界状态"。换句话说,当actor转开视线的那一刻,observer依然在给那辆车、那个行人画后续的动作,车继续开,人继续走。等actor转回来,它看到的不是一个被冻结的画面,而是observer这段时间里实实在在"画"出来的、已经演化过的新状态。

这个设计思路其实特别像现实生活里的监控系统。想象一下商场里的某个店铺,店员(actor)走来走去忙自己的事,有时候转身进了仓库,看不到店门口的情况。但天花板上装了一个摄像头(observer),它不随店员转头而转,一直对着门口。店员进仓库的那段时间,顾客推门进来、挑了件衣服、又走掉了,这些事情监控摄像头全程记录着。等店员出来一看监控,立刻就知道刚才发生了什么,而不需要凭空猜。如果没有这个监控,店员回来只能靠猜测,顾客是不是还在,衣服架上少没少东西,全凭经验编一个"大概率合理"的答案,这跟前面说的"冒名顶替"问题是一个性质。

那么问题来了:全景视角能看一整圈,但分辨率有限,怎么让它既覆盖得广,又不至于看起来一团模糊?研究者的解法是干脆不追求observer本身的画质,它只负责记状态,不负责出片。actor渲染的分辨率是1280×704,清晰度正常;observer只用640×320,说白了就是糊一点没关系,反正它不是给你看的,是给模型"记"的。这就好比你去旅游,正经拍照用单反(actor),但随手用手机拍张全景照片留个底(observer),手机照片画质差点没关系,它的作用是提醒你"这个地方大概长这样",而不是拿去印海报。

但光靠一张糊的全景图记状态,还不够。因为全景图本身存在几何畸变——想象把地球仪表面展开成一张平面地图,南北极附近的区域会被拉得特别长,这就是等距柱状投影(ERP)常见的问题。

等距柱状投影:一种把球面(比如全景图)展开成矩形平面图的方式,特点是两极区域会被严重拉伸变形,这也是为什么世界地图上格陵兰岛看起来比实际大很多。

这意味着,就算observer一直盯着某个区域,它存下来的画面也是变形、模糊的,细节早就丢了。等actor转回来想要看清楚那辆车的车牌或者那个人的衣服纹理,observer给不了。

为了补上这个洞,研究团队又加了一个叫Observer Sink的机制。它的做法是:在最开始,从那张高清全景图里裁出四个方向(前后左右)的普通视角小图,存起来当作"参考样本",让后续生成的画面可以随时去"查阅"这几张高清小样,补回细节。

Observer Sink:一组从初始全景图裁切出的四个高分辨率视角参考图,作用类似于贴在冰箱上的备忘便签,模型生成画面时可以随时"瞄一眼"来找回被全景图牺牲掉的细节。

这个设计特别像你出门旅行前,把护照、身份证这些重要文件先拍张高清照片存在手机相册里。路上导航可以用手机自带的低精度地图(相当于observer),不需要多清楚,能指路就行;但万一真遇到查证件的情况,你翻出那张提前存好的高清照片(Observer Sink),细节一清二楚。如果没有这份高清备份,你就只能凭导航地图上那个模糊的小图标去猜你的证件照片长什么样,显然不靠谱。

观察者可以搬家,也可以多开几个

光是有一个跟着actor走的observer还不够用。论文作者意识到一个更现实的问题:有时候值得关注的东西,根本就不在actor附近。

比如一个仓库场景,actor(可能是个机器人)在左边搬货,但真正重要的变化发生在仓库右边的某个角落,一个包裹正在被别人拿走。如果observer非要跟着actor走,它永远也看不到那个角落。

所以研究者干脆让observer完全自由:它的轨迹可以跟actor的轨迹完全脱钩,想放哪儿放哪儿,甚至可以设置好几个observer,一个盯着左边,一个盯着右边,各自独立演化,又共享同一个世界状态。

这就像小区里装监控探头,不可能只装一个跟着保安走的摄像头,而是在小区大门、地下车库、单元门口各装一个,固定在那儿,不管保安走到哪儿,这几个探头始终各司其职。保安巡逻经过某个探头覆盖的区域时,正好能和监控画面对上;保安走远了,探头还在继续记录,等保安下次巡逻回来,调出录像就知道这段时间发生了什么。

要训练这样一个"能多开分身"的模型,现实世界的数据几乎找不到,很难找到真实场景里,好几个摄像头同时在不同地方、严丝合缝地拍同一时刻画面的素材。于是研究团队用了一个叫CARLA的自动驾驶仿真器,专门造了一批带有"多个同步观察点"的虚拟数据,用来补这块真实数据的缺口。CARLA可以精确控制行人车辆的移动、天气光照,还能让好几个摄像机在仿真时钟下完全同步,拍到同一个瞬间发生的一切。

CARLA:一款开源的自动驾驶仿真平台,能够模拟城市道路、车辆、行人等场景,并支持精确控制多个摄像机的位置和时间同步,常被用来生成训练AI所需的合成数据。

怎么知道模型是不是真的在"认真记"

这里有个挺棘手的问题:你怎么证明一个AI世界模型确实把看不见的东西的动态记住了,而不是蒙对了?

以前的评测方法大多依赖VLM(视觉语言大模型)去给生成的视频打分,问它"这个物体消失又出现的过程看起来自然吗"。

VLM:Vision-Language Model的缩写,指能同时理解图像和文字的大模型,常被用来当"裁判"去评判一段生成视频是否合理。

但论文里做了个挺扎心的实验,直接戳穿了这种评测方式的漏洞。他们挑出一个"冻结"案例:车本该一直往前开,结果离开画面后就原地不动了,重新出现时速度完全对不上。拿这个案例去问VLM:"这辆车的移动速度在整个过程中看起来一致吗?"VLM的回答居然是"Yes"。再拿一个"冒名顶替"案例去问:"这辆车离开画面期间的轨迹逻辑连贯吗?"VLM同样答"Yes"。

也就是说,让一个语言模型靠"看画面顺不顺眼"去判断动态是否合理,根本靠不住,因为它压根没办法从平面画面里推算出物体在三维空间里到底挪动了多少、往哪个方向挪。这就好比让一个从没学过物理的人去看一段慢动作视频,判断里面球的抛物线轨迹对不对,他可能只会说"看起来挺顺的",但根本说不出具体偏差了多少度、速度差了多少。

研究团队于是另起炉灶,设计了一套直接在三维空间里量化的指标。先用一个叫SAM3的分割模型把画面里的物体抠出来,再用深度估计模型算出每个像素离摄像机多远,这样就能把一个二维画面里的物体"立"起来,变成三维空间里的一个真实坐标点,物体离开画面前的位置和重新出现后的位置,都能换算成具体的空间位移向量,而不是靠眼睛"感觉"。

SAM3:一个用于图像和视频分割的模型,能够根据文字描述(比如"行人"、"车辆")自动框出画面里对应的物体轮廓。

基于这套三维坐标,论文提出了三个具体指标。第一个叫OOV-F,统计的是"该离开画面又该回来的物体,到底有多少真的按剧本离开和回来了",直接量化前面说的"贴屏幕"和"失踪"两种翻车。第二个叫OOV-D_gt,拿物体实际的三维位移和文本描述里应有的真实轨迹去对比,离得越近分数越高,这个指标对"冻结"特别敏感,因为冻结的物体位移几乎是零,跟真实轨迹差得老远。第三个叫OOV-D_self,拿物体离开画面后的位移和它离开之前自己的运动方向去比,这个专门抓"冒名顶替":方向对不上自己原来的轨迹,这个物体十有八九就是被偷换了逻辑。

拿前面提到的那个"冻结"例子套进这套指标,论文给出的数字是OOV-D_self只有0.05,OOV-D_gt更是只有0.03,接近0,清清楚楚地暴露了问题,而不是VLM那句轻飘飘的"Yes"。

数据说话:观察者真的管用吗

研究团队搭了两套测试场景,一套基于真实世界的全景视频,一套基于CARLA仿真,每套各100个片段,专门挑了那些摄像机来回转、物体必然离场又回场的片段来考验模型。

对比的对象包括好几个业内有代表性的模型,比如参数量28B的LingBot-World、8B的HY-World 1.5,还有专门针对"记忆"问题设计的HyDRA。结果挺说明问题的:World Observer只有2B参数,是对比模型里最小的几个之一,但在关键的OOV-F指标上做到了0.492到0.580(真实场景/合成场景),远高于HY-World 1.5的0.128/0.133,也明显好于Matrix-Game-3的0.568/0.508;更关键的是OOV-D_gt和OOV-D_self两项,World Observer同时拿到了两个场景下的最高分,说明它不仅让物体"真的回来了",回来之后的动态还跟真实轨迹和自身历史都对得上。

表格里还有个细节值得多说一句:很多对比模型存在OOV-F高但OOV-D低的情况,比如FantasyWorld在合成场景里OOV-F能到0.633,看起来挺高,但OOV-D_gt只有0.338,这说明它确实能让物体"回来",但回来的动作是乱来的,相当于演员准时归位,但台词全忘了。World Observer两头都不弱,这恰恰是联合生成actor和observer带来的直接收益。

当研究团队加入多个observer之后(表格里的World Observer Multi),OOV-F进一步提升到0.722,这符合直觉:观察点越多,能照顾到的"离场物体"自然也越多。

拆开来看,每个零件都有自己的活儿

论文还做了一组消融实验,专门验证每个设计到底各自贡献了多少。

去掉observer之后,只靠actor自己生成一切,结果是OOV-F看起来还不错(0.674),但OOV-D_gt和OOV-D_self都明显偏低(0.387和0.430)。这说明单靠actor,它确实会把以前没看到的东西重新塞回画面里,但状态是编出来的,不连贯,正是"冒名顶替"的典型表现。

反过来,去掉actor,只靠全景的observer生成,再从中裁剪出视角,OOV-D表现反而是几个变体里最高的(0.471/0.499),但代价是图像质量大幅下降,VBench的图像质量分数从完整模型的0.641骤降到0.433,因为全景图本身的几何畸变没法通过裁剪消除。

去掉Observer Sink之后,OOV-D_self从完整模型的0.526降到0.470,3D adherence(用来衡量静态背景还原度的指标)的mLPIPS也从0.276变差到0.303,印证了高清参考样本对细节还原确实有实打实的帮助。

完整版的World Observer把这几块拼起来,在视觉质量、相机跟随精度、三维一致性和离场动态一致性几个维度上都保持了相对均衡的表现,没有哪一项掉得特别离谱,这正是"联合生成"这个设计思路想要达到的效果:用两条流互相补台,而不是牺牲一方成全另一方。

观察者还能被"下指令"

这篇论文里有个挺有意思的延伸能力,就是observer不仅能被动记录,还能主动被控制。

因为actor和observer各自有独立的文字提示词(prompt),你完全可以给observer下一个actor根本看不到的指令。论文举了个例子:一个士兵朝画面右边一辆停着的车开了一枪,车瞬间爆炸起火,这个指令是写在observer的prompt里的,而不是actor的。actor当时压根没朝那个方向看,但等它转过去的时候,确实看到了燃烧的车辆,因为observer已经在背后把这件事"演"完了。

这也揭示了一个此前模型不具备的能力:你可以操控世界上看不见的地方正在发生什么,而不需要先把镜头转过去。这就好比你在玩一个角色扮演游戏,主角正在城堡前厅和NPC对话,与此同时你让后院的花园里下起了雨,哪怕主角此刻完全看不到后院,等他走出去的时候,地面已经是湿的了。这种"background scripting"(后台剧本)的能力,对游戏引擎、交互式模拟这类场景价值不小。

不过论文也提醒了一个容易踩的坑:如果不把actor和observer的提示词分开,用同一句话去同时指挥两条流,会出问题。论文给了个具体案例,圣诞老人从走廊走进房间坐进扶手椅,这句话如果actor和observer共用,因为actor本来看不到房间全貌,它会自己在自己的视角里"脑补"出一个圣诞老人走进来,而这个脑补的产物又会反过来污染observer,导致最后画面里出现了两个圣诞老人,一个已经坐在椅子上,另一个还在往里走。这个穿帮现场相当生动地说明了,为什么拆开两条提示词这件事不是锦上添花,而是必须的。