第12章 动态场景理论
12.1 动态场景的定义
第10章建立了场景的结构化定义,第11章进一步建立了场景类理论。本章在此基础上研究场景的动态性。
**动态场景(Dynamic Scene)**是指场景中的对象、属性、状态、关系、行为以及整体结构随着时间、空间、事件和动作不断发生变化,并形成连续场景状态序列的结构化场景。
静态场景强调:
某一时刻
↓
对象
+
属性
+
状态
+
关系
↓
场景
动态场景则强调:
场景(t)
↓
变化事件
↓
场景(t+1)
↓
变化事件
↓
场景(t+2)
↓
……
因此,动态场景不是一个固定的场景,而是一个持续变化的场景过程。
可以形式化表示:
S(t+1) = F(S(t), E(t))
其中:
S(t)表示时间t时的场景;E(t)表示时间t发生的变化事件;F表示场景状态转换规则;S(t+1)表示变化之后的新场景。
因此:
动态场景的核心不是“场景存在”,而是“场景如何变化”。
12.2 动态场景的基本构成
动态场景仍然由场景中的基本结构组成:
动态场景
├── 对象
├── 属性
├── 状态
├── 关系
├── 行为
├── 动作
├── 方法
├── 时间
└── 空间
可以表示为:
DS(t)
=
O(t)
+
A(t)
+
St(t)
+
R(t)
+
B(t)
+
Ac(t)
+
M(t)
+
T(t)
+
P(t)
其中:
DS(t)表示时间t的动态场景;O(t)表示对象集合;A(t)表示属性集合;St(t)表示状态集合;R(t)表示关系集合;B(t)表示行为集合;Ac(t)表示动作集合;M(t)表示方法集合;T(t)表示时间结构;P(t)表示空间结构。
这些元素并不是同时固定不变的。
例如一个机械抓取场景:
机械手
+
鸡蛋
+
桌面
最初:
机械手 → 远离 → 鸡蛋
之后:
机械手 → 接近 → 鸡蛋
然后:
机械手 → 接触 → 鸡蛋
再之后:
机械手 → 抓取 → 鸡蛋
最后:
机械手 → 搬运 → 鸡蛋
这就是一个完整的动态场景过程。
12.3 动态场景与静态场景
静态场景描述某一个时间点的结构:
S(t)
动态场景描述多个时间点之间的连续变化:
S(t₁)
→
S(t₂)
→
S(t₃)
→
S(t₄)
例如:
S₁:
鸡蛋在桌面上
↓
S₂:
机械手接近鸡蛋
↓
S₃:
机械手接触鸡蛋
↓
S₄:
机械手抓住鸡蛋
↓
S₅:
机械手搬运鸡蛋
其中每一个 S 都可以作为一个具体场景状态。
但是:
S₁ → S₂ → S₃ → S₄ → S₅
整体才构成动态场景过程。
因此:
静态场景是动态场景在某一时间点上的结构截面,动态场景则是多个场景状态按照时间顺序形成的连续结构。
12.4 场景状态变化
**场景状态变化(Scene State Change)**是指场景中一个或多个对象、环境、行为或者关系的状态发生变化,从而导致场景整体状态发生变化。
例如:
锅
状态:未加热
执行:
加热
之后:
锅
状态:已加热
场景因此发生变化:
未加热场景
↓
加热行为
↓
已加热场景
再例如鸡蛋:
生鸡蛋
↓
加热
↓
半熟鸡蛋
↓
继续加热
↓
熟鸡蛋
对象本身可能仍然是:
鸡蛋01
但是其状态不断变化:
State₁
→
State₂
→
State₃
因此:
对象身份可以保持连续,而对象状态可以不断变化。
场景状态同样如此。
12.5 场景状态不是对象状态的简单复制
场景状态不仅包含单个对象的状态,还包括多个对象共同形成的整体状态。
例如:
机械手状态:空闲
鸡蛋状态:位于桌面
桌面状态:稳定
整体可以形成:
场景状态:
目标物等待抓取
当机械手开始执行动作:
机械手 → 接近 → 鸡蛋
场景变成:
场景状态:
目标物正在被接近
抓取之后:
机械手 → 抓取 → 鸡蛋
场景状态变成:
场景状态:
目标物已被抓取
因此:
对象状态
+
对象关系
+
行为状态
+
环境状态
↓
场景整体状态
场景状态是多个局部状态共同作用形成的整体结构。
12.6 场景对象变化
动态场景中的对象集合并不是固定的。
场景可能出现:
对象加入
也可能:
对象离开
还可能:
对象被替换
例如一个仓库场景:
仓库
+
货架
+
机器人
后来出现货物:
仓库
+
货架
+
机器人
+
货物01
场景对象集合发生增加:
O(t+1) = O(t) + Object
当货物被搬走:
O(t+2) = O(t+1) - Object
因此:
对象出现
↓
进入场景
↓
参与关系
↓
参与行为
↓
离开场景
↓
场景结构变化
12.7 对象变化的类型
场景对象变化至少包括以下几类。
第一,对象新增
场景
↓
新对象出现
↓
对象集合增加
例如:
厨房
+
锅
+
炉具
加入:
鸡蛋
第二,对象移除
对象离开
↓
对象从场景集合中移除
例如:
鸡蛋
↓
被取走
↓
离开桌面场景
第三,对象替换
例如:
锅01
损坏后:
锅02
进入场景。
场景对象结构发生:
锅01
↓
移除
↓
锅02
↓
加入
第四,对象状态改变
对象仍然存在:
鸡蛋01
但状态发生:
生
→
熟
这种变化不会导致对象被删除。
因此:
对象变化
≠
对象消失
必须区分:
对象身份变化
对象状态变化
对象位置变化
对象关系变化
12.8 场景关系变化
动态场景最重要的变化之一是关系变化。
两个对象的关系可能:
建立
也可能:
解除
或者:
关系类型发生变化
例如机械手与鸡蛋:
远离
↓
接近
↓
接触
↓
抓取
↓
搬运
↓
释放
这不是对象不断更换,而是:
对象相同
+
关系不断变化
因此:
动态场景中的大量变化,本质上是对象之间关系结构的变化。
12.9 场景关系的建立
当两个对象进入某种结构条件时,可以建立关系。
例如:
机械手01
+
鸡蛋01
机械手逐渐靠近鸡蛋:
距离 > 阈值
进入一定范围后:
机械手01
→ 接近
→ 鸡蛋01
进一步:
机械手01
→ 接触
→ 鸡蛋01
关系由无到有:
R(t) = ∅
变化为:
R(t+1) = {接近}
再变化为:
R(t+2) = {接触}
12.10 场景关系的解除
关系同样可以消失。
例如:
机械手
→ 抓取
→ 鸡蛋
释放动作发生:
释放
之后:
机械手
×
鸡蛋
抓取关系解除。
可能形成:
鸡蛋
→ 位于
→ 新位置
因此:
关系建立
→
关系持续
→
关系变化
→
关系解除
这构成动态场景的重要变化过程。
12.11 场景结构变化
场景结构变化比单个对象或者单个关系变化更加重要。
**场景结构变化(Scene Structure Change)**是指场景中的对象集合、关系集合、状态集合、行为集合以及它们之间的组织方式发生变化,使场景整体结构发生改变。
例如:
场景A
机械手
+
鸡蛋
+
桌面
结构:
机械手 → 接近 → 鸡蛋
鸡蛋 → 位于 → 桌面
抓取后:
场景B
机械手
+
鸡蛋
+
桌面
对象没有变化。
但是关系发生变化:
机械手 → 抓取 → 鸡蛋
因此:
对象集合不变
+
关系变化
+
状态变化
↓
场景结构变化
再例如鸡蛋被搬离桌面:
场景A:
鸡蛋 → 位于 → 桌面
变成:
场景B:
鸡蛋 → 位于 → 机械手
整体结构发生明显改变。
12.12 场景结构变化的层级
场景结构变化可以按照影响范围划分为多个层次:
属性变化
↓
状态变化
↓
关系变化
↓
对象集合变化
↓
行为变化
↓
方法变化
↓
整体结构变化
并不是所有局部变化都会导致场景类别变化。
例如:
鸡蛋温度:
20℃
↓
25℃
虽然属性变化,但仍然属于同一个场景。
如果:
鸡蛋
↓
从桌面进入锅中
则空间关系和操作关系发生变化。
如果进一步:
鸡蛋
+
锅
+
炉具
+
加热关系
+
烹饪行为
形成新的结构,则可能从:
准备场景
转换为:
烹饪场景
因此需要区分:
局部场景变化
与:
场景结构类型变化
12.13 场景形成
**场景形成(Scene Formation)**是指多个对象在一定时间和空间范围内建立属性、状态、关系和行为联系,从而形成具有整体结构意义的场景。
基本过程为:
对象出现
↓
对象识别
↓
属性确定
↓
状态确定
↓
空间关系确定
↓
对象关系建立
↓
行为形成
↓
场景形成
例如:
锅01
炉具01
鸡蛋01
厨师01
分别进入当前空间。
机器识别:
锅01 → 锅类
炉具01 → 炉具类
鸡蛋01 → 鸡蛋类
厨师01 → 人类
建立关系:
锅01 → 位于 → 炉具01
厨师01 → 使用 → 锅01
鸡蛋01 → 被处理 → 厨师01
于是:
对象
+
关系
+
状态
+
行为
↓
烹饪场景
12.14 场景形成不是对象简单集合
不能认为:
锅
+
鸡蛋
+
炉具
+
厨师
自动构成烹饪场景。
因为只有对象集合,没有结构关系。
必须存在:
对象
+
关系
+
状态
+
行为
例如:
锅
+
鸡蛋
+
炉具
如果鸡蛋只是放在桌面上:
鸡蛋 → 位于 → 桌面
这可能是:
食材准备场景
而不是:
烹饪场景
当:
锅 → 加热
鸡蛋 → 进入锅
厨师 → 操作锅
结构发生变化:
烹饪场景形成
因此:
场景不是对象的集合,而是具有结构关系的对象集合。
12.15 场景消解
**场景消解(Scene Dissolution)**是指构成场景的关键对象、关系、状态或者行为结构不再满足场景成立条件,使原有场景结构逐渐失去整体性并结束存在。
例如:
机械抓取场景
完成释放:
机械手
↓
释放
↓
鸡蛋
抓取关系解除。
如果机械手离开:
机械手
↓
离开
原有结构:
机械手
+
鸡蛋
+
抓取关系
已经不存在。
因此:
场景形成
↓
场景运行
↓
关键结构解除
↓
场景消解
12.16 场景消解的条件
场景消解可能由多个原因造成。
对象消失
关键对象离开场景
↓
场景结构不完整
↓
场景消解
关系解除
关键关系解除
↓
场景结构失去连接
↓
场景消解
状态变化
例如:
锅正在加热
变成:
炉具关闭
锅冷却
如果场景定义依赖于加热状态,则:
烹饪场景
↓
结束
行为完成
例如:
抓取
→
搬运
→
释放
任务完成后:
抓取场景
↓
结束
空间条件改变
对象离开规定区域:
场景区域
↓
对象离开
↓
场景边界被突破
↓
场景消解
12.17 场景形成与消解不是简单的创建与删除
场景的生命周期不是:
CREATE
↓
DELETE
而是:
潜在结构
↓
形成
↓
稳定
↓
变化
↓
重组
↓
完成
↓
消解
因此动态场景具有生命周期:
Scene Lifecycle
可以表示:
形成
↓
存在
↓
变化
↓
转换
↓
完成
↓
消解
一个场景消解之后,新的场景可能立即形成。
例如:
准备场景
↓
烹饪场景
↓
装盘场景
↓
用餐场景
这说明场景不是孤立存在的。
12.18 场景转换
**场景转换(Scene Transition)**是指一个场景通过对象、状态、关系、行为或动作的变化,逐渐转化为另一个场景结构。
例如:
食材准备场景
↓
加热
↓
烹饪场景
↓
停止加热
↓
装盘场景
场景转换可以表示:
S₁
→
E₁
→
S₂
其中:
S₁表示原场景;E₁表示导致变化的事件或动作;S₂表示新场景。
因此:
场景不是孤立节点
而可以形成:
S₁ → S₂ → S₃ → S₄
这为后续研究场景序列和复杂行为提供基础。
12.19 动态场景与行为
行为是动态场景变化的重要驱动力。
基本关系:
场景
↓
认知
↓
行为
↓
动作
↓
对象状态变化
↓
关系变化
↓
场景变化
例如机械抓取:
当前场景
↓
发现目标物
↓
匹配抓取场景
↓
选择抓取行为
↓
机械手执行接近
↓
空间关系变化
↓
执行接触
↓
接触关系形成
↓
执行抓取
↓
抓取关系形成
↓
场景结构变化
因此:
行为不是脱离场景独立发生的,而是在场景中形成,并通过动作改变场景。
12.20 动态场景与认知
机器面对动态场景时,不能只进行一次识别。
因为:
场景(t)
发生变化后:
场景(t+1)
已经不是完全相同的结构。
因此需要:
感知
↓
场景建立
↓
认知
↓
行为
↓
动作
↓
场景变化
↓
重新感知
↓
重新建立场景
↓
再认知
形成闭环:
场景
→
认知
→
行为
→
动作
→
场景变化
→
再认知
这也是动态智能行为形成的重要基础。
12.21 动态场景序列
连续动态场景可以形成场景序列(Scene Sequence):
SS =
{
S₁,
S₂,
S₃,
...,
Sₙ
}
其中:
SS表示场景序列;S₁...Sₙ表示按照时间顺序排列的场景状态。
例如:
S₁:鸡蛋在桌面
↓
S₂:机械手接近
↓
S₃:机械手接触
↓
S₄:机械手抓取
↓
S₅:机械手搬运
↓
S₆:机械手释放
这实际上形成:
S₁ → S₂ → S₃ → S₄ → S₅ → S₆
如果每一次转换都具有明确条件和动作,那么场景序列本身就成为一种行为结构。
12.22 动态场景历史
动态场景不仅需要保存当前状态,还需要能够记录变化历史。
可以建立:
SceneHistory
记录:
场景ID
时间
对象变化
状态变化
关系变化
行为
动作
变化原因
前一场景
后一场景
例如:
Scene01
↓
机械手接近鸡蛋
↓
Scene02
↓
机械手接触鸡蛋
↓
Scene03
↓
机械手抓取鸡蛋
↓
Scene04
形成:
SceneHistory
这样机器不仅知道:
现在发生什么
还能够知道:
刚才发生了什么
以及:
场景为什么变成现在这样
这对于连续行为和经验形成具有重要意义。
12.23 动态场景的结构变化模型
综合前面的研究,可以建立动态场景转换模型:
现实世界
↓
对象变化
↓
状态变化
↓
关系变化
↓
行为变化
↓
场景结构变化
↓
新场景形成
↓
认知
↓
行为
↓
动作
↓
再次变化
形式化表示:
DS(t+1)
=
F(
DS(t),
ObjectChange,
StateChange,
RelationChange,
BehaviorChange,
Action
)
其中:
DS(t)表示当前动态场景;ObjectChange表示对象变化;StateChange表示状态变化;RelationChange表示关系变化;BehaviorChange表示行为变化;Action表示执行动作;F表示动态场景转换规则;DS(t+1)表示变化后的新动态场景。
这说明动态场景不是随机变化,而可以由明确的结构变化规则描述。
12.24 动态场景的完整生命周期
综合本章,可以建立:
潜在对象
↓
对象进入
↓
关系建立
↓
状态确定
↓
场景形成
↓
场景运行
↓
对象变化
↓
状态变化
↓
关系变化
↓
结构变化
↓
场景转换
↓
行为完成
↓
关键关系解除
↓
对象离开
↓
场景消解
如果新的对象和关系继续进入:
场景消解
↓
新场景形成
于是世界形成连续的动态场景链:
S₁
→
S₂
→
S₃
→
S₄
→
……
这也是机器理解连续现实的重要结构基础。
12.25 动态场景理论的核心原则
本章可以归纳出六条基本原则。
第一,场景是动态的。
场景不是固定快照
↓
场景持续变化
第二,对象具有连续性。
对象身份保持
↓
属性、状态、位置可以变化
第三,关系具有动态性。
无关系
→
建立关系
→
关系变化
→
关系解除
第四,场景结构可以重组。
对象
+
状态
+
关系
+
行为
↓
结构变化
第五,场景具有生命周期。
形成
→
存在
→
变化
→
转换
→
消解
第六,行为可以驱动场景变化。
行为
↓
动作
↓
对象变化
↓
关系变化
↓
状态变化
↓
场景变化
12.26 动态场景与场景类
第11章建立了场景类,本章建立动态场景。
二者必须区分:
场景类
↓
描述一类场景的共同结构
而:
动态场景
↓
描述一个具体场景随时间发生的变化
例如:
机械抓取场景类
可以有:
机械抓取场景01
机械抓取场景02
机械抓取场景03
其中每一个具体场景都可能经历:
接近
→
接触
→
抓取
→
搬运
→
释放
因此:
场景类
↓
场景实例
↓
动态变化
↓
场景序列
由此建立:
基础类
↓
对象类实例
↓
场景类
↓
场景实例
↓
动态场景
12.27 本章总结
第12章建立了动态场景理论。
场景不是静态的对象集合,而是由对象、属性、状态、关系、行为和动作共同形成,并随着时间持续发生变化的结构。
动态场景可以概括为:
场景
↓
状态变化
↓
对象变化
↓
关系变化
↓
结构变化
↓
场景转换
↓
场景消解
其基本生命周期为:
场景形成
↓
场景运行
↓
场景变化
↓
场景转换
↓
场景完成
↓
场景消解
更进一步:
场景
↓
认知
↓
行为
↓
动作
↓
对象 / 状态 / 关系变化
↓
新场景
↓
再认知
由此形成一个连续闭环:
世界
→
场景
→
认知
→
行为
→
动作
→
场景变化
→
再认知
因此,本章最核心的理论结论是:
动态场景是机器世界中对象、状态、关系、行为和结构随时间持续变化而形成的连续场景过程;场景的变化不是单一元素的孤立变化,而是对象变化、状态变化、关系变化和行为变化共同作用下产生的结构变化。
进一步可以得到:
场景形成是结构建立过程,场景变化是结构演化过程,场景转换是结构之间的连续转移过程,场景消解是原有结构失去成立条件的过程。
这样,第10章的“场景结构”、第11章的“场景类”和第12章的“动态场景”就形成了连续的理论层次:
第10章
场景结构
↓
回答:一个场景由什么构成?
第11章
场景类
↓
回答:一类场景具有怎样的共同结构?
第12章
动态场景
↓
回答:一个具体场景如何形成、变化、转换和消解?
而下一层真正需要解决的问题就是:
场景
↓
对象匹配
↓
属性匹配
↓
状态匹配
↓
关系匹配
↓
场景类匹配
↓
认知结果
这将自然进入后续的认知匹配理论。