在目前的视觉AI系统里,一个很反直觉的现象是:你把一个物体从画面里拿开,再放回来,模型并不知道这还是同一个物体。绝大多数检测器只看当前帧,跟踪器勉强能跨几帧,但一旦物体被完全遮挡住、长时间出画、或者画面切了一下,身份就全丢了。如果人类也这样,我们根本没法生活——我昨天把钥匙放进了抽屉,今天它还在不在?我知道在,因为我知道那个抽屉里有过钥匙,它没有消失。
这个能力在认知科学里叫客体连续性(object continuity),在婴儿发展心理学里还有一个更常见的词:客体永久性(object permanence)。经典的皮亚杰理论认为,婴儿要到9-17个月大左右,才逐渐形成稳定的客体概念——物体即使看不见了,也依然存在于某个地方。这就是标题里“9-17”的由来。这篇文章想把“9-17”这个认知发展里程碑,和AGI基础理论放在一起拆开讲:为什么说客体连续性是一切智能世界模型的底层地基,以及如果要给AGI补上这块地基,工程上可以怎么做。内容会比较长,但每个部分我都会给出实际可操作的思路和踩坑记录,适合正在做世界模型、多模态理解、具身智能,或者单纯想从底层理解AGI原理的朋友。
1. 先从“9-17”说起:婴儿是怎么获得客体连续性的
1.1 皮亚杰的经典实验,以及一个反复出现的错误
皮亚杰当年描述过一个非常经典的场景:当着婴儿的面,把玩具藏到一块布下面,9个月以前的婴儿不会去找,他们的眼神会直接停在你藏玩具的位置,然后好像什么都没发生一样转移注意力。到9-12个月,婴儿会掀开布找玩具,这说明他们开始相信“玩具还在,只是被盖住了”。但皮亚杰还记录了一个特别有意思的现象:如果连续把玩具藏在同一个位置A,让婴儿找两次,第三次当着他们的面把玩具藏到另一个位置B,婴儿仍然会先去翻A。这个现象后来被称为“A非B错误”。
这个错误特别值得AGI研究者注意。它的本质不是婴儿笨,而是婴儿对客体的表征并不依赖于当下的视觉输入——它是基于“以前成功的行为模式的痕迹”。换句话说,婴儿已经建立起一种“物件在盒子A里”的短暂记忆,但这个记忆还太脆弱,无法整合新鲜的、矛盾的位置信息。如果你把这个问题映射到视觉AI上,你会发现,现在大部分模型的漏洞比9个月的婴儿还大:它们连A位置的成功经验都维护不了。
从现代认知科学的角度看,A非B错误的消退过程,本质上是在发展一种“双重表征”能力:视觉上物体出现在B,记忆里物体曾在A,系统必须能够同时维护这两种信息,并做出基于因果关系的决策——选B,因为物体被藏到了B。这个能力一旦建立,婴儿就不再依赖“直接看到物体”来确认存在性,而是依赖“因果链的连续性”。这正是AGI需要一个世界模型的核心逻辑:不是看到才存在,而是根据事件链推断存在。
1.2 客体档案:物体不只是像素,而是一个持续更新的“账户”
认知科学里有一个比“客体永久性”更细的概念,叫客体档案。简单说,人类大脑在感知一个物体时,会为它建立一条独立的“档案记录”,这条记录里包含了物体的特征、位置、轨迹、类别,以及它和其他物体的关系。之后即使物体的外观变化(比如光照变了、稍微转过去一点),只要时空连续性没有断裂,系统就会把这个新输入绑定到旧的档案上,而不是新建一个档案。
你可以把客体档案想象成在食堂包了一个“固定座位”:就算你今天换了件衣服(外观变化),只要你还坐在同一个位置(时空连续),食堂阿姨就能认出你,并且记得你昨天点过什么。如果你离开食堂之后,过了两小时又进来,阿姨依然知道还是你,因为她维护了一条“这个人已经离开又回来了”的记录。这个“离开又回来”,就是客体连续性在时间维度的延展。
在AGI里,客体档案对应的技术概念叫“对象持久化”或者“轨迹级身份保持”。它要求模型在感知单元之外,单独维护一个跨时间的对象状态库。这意味着不能只做“帧级检测”,而必须做“实体级跟踪”——每一帧里检测到的框,要么归入已有档案,要么新开一个档案。整个过程涉及匹配、预测、更新、遗忘,就像数据库里的记录操作一样。当前的检测模型没有这个概念,跟踪模型也往往把身份绑定在低层特征上,一遮挡就断,本质上是缺了“档案”这一层。
1.3 9到17个月:不只是视觉,而是多感官统一
9-17个月之所以在这个阶段特别重要,还在于客体连续性并不是视觉单独完成的。你会注意到,婴儿在这个阶段不管拿到什么玩具都往嘴里塞,这其实是他们在把视觉对象、触觉质感、听觉反馈、甚至气味绑到一起:球是圆的(视觉)、球是软的(触觉)、球掉地上会弹(本体感觉+听觉)、球有某种气味(嗅觉)。当物体被遮挡时,婴儿能通过声音判断物体还在附近,这已经是一种跨模态的客体定位。
这也是为什么现在讨论AGI时,大家反复提到“多模态AGI”。因为真正的人类客体连续性系统,本质上就是一个多模态绑定系统:视觉提供空间和外观,音频提供活动和位置证据,触觉/本体感觉提供交互反馈,语言提供符号指称。AGI如果要复现这种能力,不能只盯着视觉一个模态,而应该设计一个“以对象为中心”的跨模态信息绑定层,把不同模态的信息更新到同一个对象档案上。这一点我会在第三部分详细展开。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 客体连续性和AGI:它到底卡在哪里
2.1 没有客体连续性,世界模型就不成立
这届AGI圈子里,“世界模型”是高频词。这个概念本质上是要让AI在内部维护一个关于环境的动态表示——环境里有什么物体、物体处于什么状态、它们之间会发生什么因果作用。但如果缺乏客体连续性,这个动态表示会非常不稳定:物体一旦出画或遮挡,状态就清零,所有因果关系链也就断了。
想象一个机器人做家务的情景:它看到你从冰箱里拿了一个鸡蛋,放进旁边的碗里,然后转身去拿另一个鸡蛋。由于它自身的运动,碗可能短暂脱离视野。如果机器人的神经网络模型认为“看不见的鸡蛋不存在”,那么它一转回视角,就会面对一个完全陌生的鸡蛋,它无法知道这个鸡蛋就是刚才那个。接下来,如果它需要把第一个鸡蛋和第二个鸡蛋分开放(比如第一个要做熟,第二个要做生),这种操作根本无法完成。
实际上,这正是当前端到端大模型的一个致命短板。大语言模型擅长处理“符号世界”里的连续性——一段话里的“它”指代前文的某个名词,模型能做指代消解。但在感知世界里,它根本无法做到像素级指代消解。比如视频输入中,模型看见一帧中圈出来的物体A,之后A被遮挡,再用语言问“刚才那个东西还在这里吗”,模型必须靠推测,而不是靠一个持续的痕迹来回答。这也解释了为什么现在很多多模态大模型在简单空间推理任务上会翻车:它们没有“对象状态库”,每一个问题都相当于对着新输入重新猜。
2.2 索引性:AGI缺少的那个“指针”
哲学和语言学里有一个概念叫“索引性”(indexicality),意思是语言中的某些词汇(比如“这个”“那个”)指向物理世界中的具体对象,并且这个指向依赖于说话时的具体语境。当一个人类说“那只猫”,对方脑中会自动定位到某个持续的猫档案上。而在AGI系统里,尤其是在视频理解系统里,语言中的“那只猫”根本找不到一个可持续的物理锚点。模型只能通过文本/图像模糊对齐来猜测,而不是通过“这个物体我在前10分钟一直在跟踪”的稳定索引用起来。
这就是客体连续性在AGI里最核心的理论价值:它为语言和感知提供了一座通行的锚定桥。只有当系统在感知层维护了一个持续存在的对象,语言层的指称(比如“那只猫”“刚才的杯子”)才能稳定落地。否则,所谓“多模态理解”就只是特征空间里的相关性计算,而不是真正的“理解到对象”。
现有的一些研究也在往这个方向试探,比如把检测到的物体变成可引用的实体令牌,让大模型在回答问题时可以直接引用这个令牌。但这和真正意义上的“跨时间持续实体”还有距离——因为大多数实现只是在当前帧或短视频片段里建立实体,而真正的客体连续性,要求实体在几分钟、几小时,甚至几天内保持身份一致。
2.3 从发展心理学到AGI架构设计:一个更底层的启发
如果你把婴儿的9-17个月理解为一个“架构变化期”,那么它对AGI的启示就非常清楚了。婴儿在这个阶段并不是单纯地记住了“布下面有玩具”这一个事实,而是在更新自己的认知架构:从“视觉感知驱动行为”转向“内部模型驱动行为”。这种架构更新的标志性特征就是:即使眼前没有物体,系统也能主动维持物体状态,并在行为中利用这个维持的状态。
对应到AGI,这意味着世界模型不能只是“预测下一帧”,而应该包含一个“对象持久层”——负责维护当前环境中的所有实体,包括它们在不在视野内。当你有了这个持久层,后续的预测、规划、因果推理才有抓手。这个持久层很像传统SLAM里维护的地图特征点,但比特征点高一个层级:它维护的不是几何特征,而是对象身份、属性和关系。这是所有能做主动感知、主动操作的智能体都绕不开的一块底料。
3. 工程实现:构建一个客体连续性模块的设计思路
3.1 总体架构:感知层-对象层-预测层-记忆层
在动手设计一个“客体连续性模块”之前,我建议先接受一个总的分层框架。这个框架一共有四层,每一层解决一个特定问题。
第一层是感知层。它的职责是从原始传感器输入(视频帧、音频流、文本等)中提取当前时刻的局部信息,比如“现在画面里有一个红色杯子,在左上角”。这一层不负责判断“这个杯子是不是三分钟前那个”,它只是提供当前的观察结果。
第二层是对象层,也叫持续实体层。这一层维护一个对象档案库,每一条档案代表一个物理对象,包含该对象的身份ID、外观特征、位置估计、最近更新时间、还有与它关联的其他对象。当感知层送来一个新的观测时,对象层负责回答:这个观测对得上哪个已有档案?对不上就新建档案;没有新观测但有旧档案,则继续保持它存在,只是标记为“不可见”。
第三层是预测层。预测层根据历史轨迹和运动模型,预测每个对象当前最可能出现的位置和状态。比如一个球朝右边滚动,在被遮挡后,预测层会推断“球此刻应该在右侧某个范围内”。预测层的作用是减少搜索范围、处理短暂遮挡,并且在物体重新出现时快速找回身份。
第四层是记忆层。这一层保存对象的长期历史,包括它过去和谁一起出现过、它有哪些属性变化、它最后出现在哪里。记忆层的设计可以借鉴认知科学里的“情景记忆”,它不是把所有数据都存下来,而是存储带有时间戳的摘要性事件。当一个对象长期消失后重新出现,记忆层可以基于“之前在这里见过,之后只有这一条路径能解释”,帮助重新建立绑定。
四层之间的数据流不是单向的。预测层的输出可以用来指导感知层更高效地检测(比如告诉感知层“你往右上角找,球应该在那里”),记忆层也可以纠正对象层的错误绑定(比如之前把蓝球和红球搞混了,记忆层的出现频率信息有助于纠正回来)。这种交互设计,参考的正是人类注意力机制的“自上而下调节”模式。
3.2 对象追踪与身份保持:核心匹配算法的选择
客体连续性的引擎核心,是解决“新观测归到已有对象档案”的匹配问题。这个问题在多目标跟踪领域有成熟做法,基本思路是每一步计算新观测与已有轨迹之间的相似矩阵,然后用匈牙利算法做最优分配。具体来说,匹配时一般会综合三类特征:
第一类是空间位置特征。预测层会给出旧对象在当前帧的预测框,如果新观测的框和预测框的IoU足够高,这就是一个很强的匹配证据。尤其是在高帧率、低遮挡场景下,IoU匹配本身就能解决绝大部分问题。第二类是外观特征。IoU匹配在遮挡和快速运动下会失效,所以需要用一个ReID网络把每个对象提取成高维向量,新观测的向量和档案里存的外观向量做余弦相似度。第三类是运动特征。根据对象过去几帧的位移,估计它的速度向量,然后计算新观测位置与“按速度外推位置”的距离。
实际工程里,我通常的做法是把三类得分做加权融合。默认权重可以设为:空间位置0.4、外观0.4、运动0.2。然后设定一个阈值,超过阈值才允许匹配;如果所有候选都低于阈值,则判定为“这是新物体”。同时配合一个“未匹配对象保护期”机制:对象连续N帧没有匹配到新观测,档案先不删除,只标记为“暂失可见”,直到超出保护期或被下一帧匹配到。这个保护期极其关键,它直接决定了系统能不能应对遮挡。
3.3 遮挡与出画预测:让系统“脑补”存在的物体
说到遮挡,这是客体连续性工程实现里最微妙的部分。婴儿在9-17个月发展出的能力,本质上是面对遮挡时不慌:玩具被布盖住,婴儿知道玩具还在布下面。工程上要做到这一点,系统需要维护“被遮挡对象”的候选列表,并且在遮挡期间持续预测其可能位置。
一个实用的做法是:为每个进入遮挡状态的对象建立一个卡尔曼滤波器或恒定速度模型,持续外推它的位置、速度和置信度。随着遮挡时间增加,置信度逐渐下降,但位置仍然有一个大概范围。等到遮挡解除后,我们在预测范围内优先搜索外观匹配结果。如果找到匹配对象,直接把原来的档案和新的观测重新绑定;如果没找到,再根据实际情况决定是继续等待还是终止档案。
有一个细节容易被忽略:遮挡不一定是其他物体挡住了对象,也可能是对象走出了视野边缘,还可能是镜头切换了。这三种情况对模型的处理要求不同。走出视野边缘时,我们可以根据对象速度推断它大概还在画面外不远,可以继续维护短暂时间;镜头切换时,位置连续性被破坏,只能依赖外观特征匹配,而且大概率匹配不上——这时候需要依赖全局重匹配机制来把镜头前的对象和镜头后的对象重新关联。这个问题在跨镜多目标跟踪中很常见,但在AGI的单镜头一致性问题里更容易被忽视。
3.4 跨模态关联:把视觉对象、语言指称和音频线索绑到一起
前面提到,人类客体连续性是多感官统一的。在工程上,我建议把跨模态关联设计成一个独立的模块,它的作用是回答这样一个问题:当某个对象离开视野后,系统从麦克风听到了它的声音(比如狗叫、杯子碎裂声),能否把这个音频信息绑定到正确的对象档案上?
一个可行的实现思路是:建立每个对象档案的“多模态特征缓存”。平时视觉可见时,同步记录它的视觉特征和可能的音频特征;当对象不可见后,如果新来一个音频事件,我们先对音频事件做声源定位(比如通过麦克风阵列判断声音来自哪个方向),再结合对象预测位置,评分音频事件与对象档案的关联概率。如果概率足够高,就把这个音频事件作为“该对象仍然存在”的证据,追加到它的档案里。
语言指称的绑定就更复杂一些。当系统收到自然语言指令“把红色的那个杯子拿过来”时,它需要把“红色的杯子”映射到对象档案库中的一个或多个档案。这里我建议不要直接用大模型做端到端输出,而是先让大模型做“实体指称分析”,输出一个统一的特征描述:“颜色=红色、类别=杯子”,然后把这个描述与档案库中的对象属性做结构化匹配。这样做的好处是可控性强,出错时可以直接追查是语言解析出错还是档案属性出错。
3.5 一个简化但完整的流程说明
为了帮助你更好理解整体流程,我给出一个简化版的运行时序:
- 系统收到新的一帧视频,感知层先做目标检测和特征提取,得到一组候选对象。
- 每个候选对象分别与对象层里的档案逐个计算匹配得分,得到初步分配关系。
- 结合预测层给出的预测框,对分配结果做最终修正:预测框内部找到的候选优先绑定到预测对象。
- 未能匹配到任何档案的候选,启动新档案创建流程,分配一个全局唯一ID。
- 在对象层,更新每个档案的最新观测时间、位置、外观特征均值;对于有观测到但未匹配的档案,进行遮挡计数器递增,并更新预测层状态。
- 最后,对当前帧语言输入进行处理(如果有),提取实体指称,与档案库做匹配,更新语言-对象绑定关系。
- 执行定期清理:只保留超出保护期且此间从未被激活的档案,并将已清理对象归档到记忆层的长期存储中。
这七个步骤构成了一个最基础的“客体连续性环”。每一帧循环运行,所有模块共享同一个对象ID空间,这样整个系统才可能做到跨时间的身份一致。
4. 实操过程:从零搭建一个客体连续性原型系统
4.1 数据准备:不要只依赖常规检测数据集
在做客体连续性原型验证时,数据准备非常关键,因为通用检测数据集(比如COCO)根本不考虑跨帧身份连续性问题。为了训练和评估系统,你需要“视频级”数据,而不是“图像级”数据。建议从下面几类数据入手:
第一类是日常室内监控视频,比如一段几十分钟的固定视角视频,里面有行人走来走去、坐下、站起来、被遮挡。第二类是桌面操作场景的自录视频,你可以用手机固定机位录一段自己往盒子里放东西、拿出来、遮挡、再放回去的过程,这个数据最适合测试短距离遮挡下的对象保持能力。第三类是公开的多目标跟踪基准,比如MOT Challenge系列,它们带身份标注,方便你计算身份切换等指标。
我个人的经验是:先别追求大规模,先用一小段自录视频把整个流水线跑通,再在公开基准上评估。如果在一段60秒的自录视频里,系统连“杯子被手遮挡后又出现”这种基本场景都通过不了,那换更大规模的数据也不会好到哪里去。数据标注方面,身份ID是必须标注的:每一个出现的物体对象,在整个视频中要始终保持同一个ID,即使它中间消失了一段时间。
4.2 实现选型:检测、ReID、匹配,每一步都有现成轮子
不要从零手写检测网络和ReID网络,这个阶段尽量复用成熟工具。检测方面,YOLO系列或者RT-DETR都很好用;ReID方面,可以使用现成的行人ReID模型,或者使用一个通用的视觉特征提取器(比如CLIP的视觉编码器),把每个对象框裁剪缩放后提取成一个特征向量。
这里我想特别聊一下ReID特征的选择。行人ReID的特征是针对人的,泛化到一般物体效果会打折扣。一个折中方案是用CLIP这类对比学习模型的特征,它对常见物体的辨识度会更好一些,而且对颜色、语义的描述很清晰。但CLIP特征对细粒度外观变化(比如同样一个杯子,换个角度拍出来差异很大)处理得不够好。所以我在实际项目中,通常会同时保存两类特征:语义级特征(来自CLIP)用于长期重匹配,像素级特征(来自一个轻量的自编码器)用于短时遮挡找回。两层特征配合,比只用单层特征更稳。
匹配调度上也不用自己去写匈牙利算法,很多语言库已经实现了。问题往往不在算法本身,而在于匹配阈值和权重的调参,这个需要基于你自己的数据反复试验。我给出一个初始值:空间距离阈值0.3(按归一化IoU距离算),外观相似度阈值0.6,运动距离阈值0.4;三者加权后综合得分低于0.5则拒绝匹配。你可以以这个为起点,跑一版看错误类型,再决定怎么调。
4.3 损失函数与评估指标:用“连续率”说话
在训练阶段,如果你打算微调ReID模型或者预测模型,损失函数的设计需要专门考虑连续性。我建议采用一种组合损失:不仅算单帧检测损失,还要算跨帧身份一致性损失。具体来说,把同一对象在相邻帧的ReID特征拉近,把不同对象的特征推开;如果对象之间存在遮挡关系,则要求被遮挡对象的ReID特征与它遮挡前的特征保持稳定,不能因为遮挡而漂移。
评估指标上,我最推荐三个:
- IDF1:这是多目标跟踪里的经典指标,衡量身份ID预测的准确率和召回率,兼顾了检测和跟踪。
- 遮挡恢复率:统计所有进入遮挡状态的对象中,有多少比例在解除遮挡后能正确找回原身份。这是客体连续性最直接的量化指标。
- 身份保持时长:统计每个对象在身份不变的情况下,持续被正确跟踪的平均时长,单位可以是秒。这个指标对评测“长时间客体连续性”非常直观。
这三个指标结合起来,可以比较全面地反映系统在客体连续性方面的表现,而不只是看检测精度。
4.4 调参与推理优化:一些实用心得
原型系统跑通后,你会遇到的第一堆问题基本集中在“丢失遮挡对象”和“身份错乱”这两个方向。针对这两个方向,我有几条具体建议。
第一,“对象保护期”的设置要和你面对的遮挡时长成正比。如果视频里经常出现超过2秒的遮挡,保护期至少设到3秒。设得太短,系统会把对象过早判死;设得太长,又会积累太多死档案,影响匹配效率。第二,ReID特征更新不宜过快,也不宜过慢。我一般用指数滑动平均来更新档案里的外观特征,比如alpha=0.6,既保留历史信息,又让外观特征跟随视角变化缓慢漂移。第三,在推理优化上,不需要每帧都跑一遍全量的ReID匹配。可以直接先用IoU匹配,只有IoU匹配不上的候选才动用ReID特征,可以省下大量计算资源。
另外一个容易忽略的性能瓶颈是“档案数量膨胀”。如果长时间运行一个场景,但环境中很多对象已经离开,保护期之后这些档案虽然被清理,但清理前它们仍然参与匹配计算。建议在系统里设置一个“活跃对象上限”,比如维护当前帧可见对象+近期可预测对象,最多不超过50个;超出上限时,优先清理置信度最低的档案。
5. 常见问题与排查技巧实录
5.1 身份切换(ID Switch):怎么办都避免不了的顽疾
做跟踪和对象保持,绕不开“ID Switch”。最典型的场景是两个人迎面走近,互相遮挡,再分开,系统把两个人的身份对调了。这个问题的根源在于遮挡期间,模型只能靠外观特征来维持身份,而外观特征在遮挡瞬间可能被污染(比如把另一个人的衣服颜色融到了自己的特征里)。
排查的时候不要只看最终结果,要回溯到遮挡发生前和遮挡结束后的特征变化轨迹。我遇到过好几次“看似匹配得分很高,其实是把对方的外观光环吸进来了”的情况。解决办法有几个:一是降低外观特征在短时重连时的权重,优先相信预测位置;二是在遮挡期间冻结档案的外观特征,不更新任何来自“被遮挡对象附近”的特征信息;三是引入轨迹平滑性检验,如果重连之后的位置与遮挡前轨迹的方向、速度差异过大,就拒绝这次重连。
5.2 长期遮挡导致对象被彻底遗忘
当你处理一段长视频,某个物体被遮挡超过60秒,然后重新出现,系统大多数情况下会把它当成一个新对象。这其实不一定是系统的错——这更像是一个“记忆”决策:多久没有出现,就应该认为它不存在了?婴儿的客体永久性经过一两年的巩固后,可以保留几天甚至几个月;但工程系统必须平衡“可持续跟踪”和“资源消耗”的矛盾。
我建议不要试图让所有对象都永久保存,而是设计一个三级状态:可见状态、暂失状态、长期归档状态。可见状态正常追踪;暂失状态保持一段时间(比如10秒);超过暂失时间但还没有删除的对象,进入长期归档,不再参与常规匹配,只保留它的特征、最后位置和语义标签。长期归档后系统再次检测到它时,走“全局重匹配”通道——用外观语义特征和语言描述来尝试找回身份。这个逻辑就像人到一个陌生城市碰到一个多年不见的老同学:你不记得他穿的什么颜色的衣服(像素特征失效),但你记得他的脸和名字(语义特征还在),只要他喊了你一声,你就认出他来了。
5.3 跨模态错绑:听到狗叫,却把声音绑到了猫身上
在多模态绑定模块中,最常出现的错误就是跨模态错绑。比如场景里有一只猫和一只狗,猫在画面内但狗在画面外,这时候系统收到一声狗叫,如果两个对象距离比较接近,系统可能会把“狗叫”这个事件错误地关联到“猫”的档案上。
这个问题的排查首先看声源定位的精度:如果没有麦克风阵列,声音方向本来就是模糊的,那么建议把“音频事件绑定”的置信度门槛调高,宁可暂时不绑定,也不要错绑。一旦错绑,后续基于音频的事件推理就会彻底乱套。其次要注意时间窗:物体通常不会在声音发出之前就“知道”声音会来,所以绑定事件时应满足“音频事件晚于对象最近状态变化”或者“在对象仍然可感知的范围内”这类时间一致性条件。
5.4 跳帧与动态交错:视频输入抖动引发的连续性崩塌
训练数据是30帧视频,但实际推理时因为计算资源不够,可能会降到5帧/s处理,甚至发生跳帧。这种稀疏采样会严重破坏连续运动假设,导致卡尔曼预测完全失准。面对这个情况,我的经验是:在使用稀疏帧之前,先让预测层明确定义“时间步长”,不要假设每帧之间的间隔恒定。跳帧后,运动模型要相应放大预测不确定度,同时降低空间匹配权重,提高外观匹配权重。
另外还有一个细节:视频压缩导致的模糊帧。有些帧压缩后,小物体边缘细节丢失,ReID特征计算出了一些噪声。这时候最好不要对这些模糊帧进行外观特征更新,而只做位置更新。你可以简单地用一个“清晰度评分”模块来判断当前帧是否值得用来更新档案,避免把噪声写进身份特征里。
6. 从工程回到理论:客体连续性到底给AGI带来了什么
6.1 客体个体化的起点:把“东西”从“过程”里剥离出来
我做了这么多工程实验之后,再回头看AGI基础理论,越来越觉得客体连续性其实是在回答一个更基本的问题:什么是“一个东西”。对于纯数据驱动的模型来说,世界是像素、是token、是特征向量之间连续变化的流。但物理世界里真正的“一个东西”,指的是在时间中保持同一性的实体。我们管这个叫“个体化”(individuation)。
个体化听起来哲学,但它有实际的工程后果。如果AGI不能把连续感知流切分为一个个稳定的对象,那么它就无法谈论“物体的历史”,无法谈论“谁动了谁的什么”,无法建立最基本的因果叙事。所有的活动,都会退化成特征空间里没有主语的变化。从这种意义上说,客体连续性不是AGI的一个模块,而是AGI理解世界的基本语法单位。
6.2 为什么不能指望通用大模型“一锅端”
有人可能会说,大模型见得多了,是不是靠数据量就能学会客体连续性?我的看法是:大模型可以在语言层面模拟“指代消解”,但在感知层面,它们是按“帧”或“短视频片段”建模的,它们没有在被遮挡的几十秒里持续维护一个对象状态的能力。这是架构层面的缺失,不是数据量大了就能涌现出来的。
即便视频大模型可以记住“之前出现过一只猫”,那也更多是基于文本描述的记忆,而不是基于空间和时间的动态推理。若要真正给大模型补上持续身份保持能力,需要在架构里显式加入“对象状态库”和“时间更新算子”,让它们成为网络结构的一部分。这样模型才能像婴儿在9-17个月那样,经历一次从“感知驱动”到“模型驱动”的架构跃迁。
6.3 多模态AGI最可能复用的模式
和现在的多模态大模型相比,客体连续性框架提供了一种更节俭且更稳健的多模态融合模式:不是把所有模态的特征全部拼在一起送进注意力层,而是以对象档案为中心,把每个模态的信息写进对应的对象档案中。视觉负责创建档案,音频提供“存在证据”,语言提供“属性标签”,触觉/力觉(在机器人场景中)提供“交互状态”。每个模态的输入都是对某个对象档案的“属性更新”,而不是一次无结构的特征混合。
这种模式的优势在跨模态检索时特别明显:当你问“刚才那个掉在地上的东西是什么”时,系统只需要检索所有存在过的档案,找到带“掉落事件”属性的那个,然后读取它的视觉和历史归档信息就能回答。不需要回溯原始视频,也不需要重新把整段视频过一遍模型。这是真正面向长期持续认知的架构。
我对客体连续性技术的最大感受是:它看起来是个很基础的感知问题,但做深了以后会发现,它实际上触及了“智能体如何把流动的感知经验组织成离散的、可操作的世界知识”这个核心议题。你在工程上做的每一个匹配策略、每一条遮挡处理规则,其实都在帮系统建立一种“什么东西是同一个东西”的判定标准。这个标准定义清楚了,后面的因果推理、规划决策、跨模态对话,才有可能稳稳地长在上面。
7. 我的一点心得体会
最后分享一下我实际做这个问题的几点体会。
第一,别急着上模型,先把“对象档案”的接口设计好。什么时候更新、什么时候冻结、什么时候归档,这些逻辑比网络结构更影响最终效果。我第一版实现就是因为档案清理策略太激进,导致大量对象被过早遗忘,后来把保护期调长,又遇到档案膨胀,最后改成三级状态管理才稳定下来。
第二,验证要从小场景做起。我建议准备一些专属的“小剧本”:一个杯子被手挡住又出现,一个人走出画面又回来,一只猫从黑暗角落走出来。这些场景虽然简单,但每一个都能暴露出系统里的不同缺陷。把这些小场景逐个跑通,比直接做大而全的复杂场景更容易收到正反馈。
第三,如果你正在做多模态AGI或者具身智能,请一定把客体连续性当成一条设计红线来抓。你的系统可以暂时没有很好的因果推理模块,但绝不能保不住对象的身份。身份一旦丢失,后续的一切推理都是空中楼阁。换句话说,先在系统里建立一个“世界是由连续存在的对象组成的”基本假定,再谈其他高级认知能力。
我现在做任何感知系统的第一版原型,都会先检查一件事:把一个对象移出画面,过几秒再移回来,系统是否还在跟踪它?如果连这个都做不到,其他指标再好我也不会放心。这个习惯,就是从研究客体连续性开始养成的。
