首页 理论 架构 工程 文档 白皮书 著作 研究 案例 下载 博客 关于 开始使用 →

第11章 场景类理论

第11章 场景类理论

11.1 场景类的定义

第10章已经建立了场景的结构化定义:

场景
=
场景元素
+
场景对象
+
场景属性
+
场景状态
+
场景关系

但是,现实世界中的场景虽然不断变化,却并不是完全没有规律。

例如,不同时间、不同地点、不同对象实例可能发生不同的烹饪活动:

厨房01 + 厨师01 + 锅01 + 鸡蛋01

也可能是:

厨房02 + 厨师02 + 锅02 + 鸡蛋02

两个场景中的具体对象不同,但是它们可能具有相似的结构:

人员
+
锅具
+
炉具
+
食材
+
操作关系
+
加热关系
+
烹饪行为

这种在多个具体场景中反复出现的稳定结构,可以进行更高层次的抽象。

**场景类(Scene Class)**是指从多个具有共同结构特征的具体场景中抽象出来,用于描述一类场景共同结构、对象类别、关系模式、状态条件和行为特征的结构化类别。

因此:

具体场景
+
具体场景
+
具体场景
↓
共同结构
↓
场景类

场景类不是一个具体场景。

例如:

厨房01

是一个具体空间对象。

而:

厨房场景类

描述的是一类厨房场景的共同结构。

因此:

场景类
↓
场景实例

与:

基础类
↓
对象实例

具有类似的抽象—实例关系。


11.2 场景类的本质

场景类的本质不是给场景重新命名,而是对场景内部稳定结构进行抽象。

例如观察大量机械抓取场景:

机械手
+
目标物
+
操作台
+
接近关系
+
接触关系
+
抓取行为

具体对象不断变化:

机械手01
鸡蛋01
桌面01

可能变成:

机械手02
瓶子01
工作台02

但结构仍然可能保持:

机械手类
+
目标物类
+
操作台类
+
空间关系
+
操作关系
+
抓取行为

于是机器可以形成:

机械抓取场景类

所以:

场景类抽象的是场景的共同结构,而不是某一个场景中的具体对象。

其核心关系可以表示为:

具体对象
↓
对象类

具体场景
↓
场景类

场景类因此成为机器从现实场景获得可复用结构知识的重要形式。


11.3 基础类与场景类

基础类与场景类都是类别,但它们处于不同结构层次。

基础类主要描述某一类对象的稳定结构。

例如:

鸡蛋类
锅类
机械手类
桌面类

它们回答:

“这个对象属于什么类别?”

场景类则描述多个对象以及它们之间关系形成的整体结构。

例如:

机械抓取场景类

它回答:

“这些对象按照什么结构共同构成一个场景?”

因此:

基础类
↓
对象类别

而:

场景类
↓
场景类别

两者之间不是替代关系,而是层级关系。

例如:

机械手类
+
鸡蛋类
+
桌面类
+
空间关系
+
抓取行为
↓
机械抓取场景类

其中:

机械手类
鸡蛋类
桌面类

仍然保持原有基础类身份。

场景类只是把这些基础类组织起来。

因此:

基础类负责稳定地定义对象类别,场景类负责稳定地定义场景结构类别。


11.4 基础类不会因为场景类而消失

建立场景类之后,不能把基础类替换掉。

例如:

鸡蛋类

不能因为存在:

烹饪场景类

就变成烹饪场景类。

因为二者描述的对象层次不同。

鸡蛋类
↓
描述鸡蛋对象

烹饪场景类
↓
描述烹饪场景

场景类实际上引用多个基础类:

烹饪场景类
├── 人类
├── 锅类
├── 炉具类
├── 食材类
└── 厨具类

并进一步定义:

对象关系
+
状态条件
+
行为结构

因此:

基础类
↓
提供场景成员类别

场景类
↓
组织这些类别形成整体结构

11.5 组合类与场景类

组合类与场景类都由多个类别组成,因此容易产生混淆。

二者需要严格区分。

**组合类(Composite Class)**主要描述多个类别按照一定结构形成的整体结构。

例如:

发动机类
+
车轮类
+
车身类
↓
汽车组合类

重点是:

整体由什么组成

而场景类重点描述:

哪些对象
+
处于什么状态
+
具有什么关系
+
正在进行什么活动
+
形成什么整体场景

例如:

机械手类
+
鸡蛋类
+
桌面类
+
空间关系
+
抓取行为
+
操作状态
↓
机械抓取场景类

因此:

组合类
→ 强调组成结构

而:

场景类
→ 强调整体场景结构

二者可以相互嵌套。

例如:

锅组合类
↓
进入
↓
烹饪场景类

也可以:

多个组合类
+
多个基础类
+
关系
+
状态
+
行为
↓
场景类

因此,场景类可以看作更高层次的结构抽象。


11.6 场景类的组成结构

场景类不是简单的名称,而应具有明确的内部结构。

可以表示为:

SceneClass
{
    class_objects
    attributes
    states
    relations
    behaviors
    methods
    conditions
}

其中:

  • class_objects 表示场景中的对象类别;
  • attributes 表示场景相关属性;
  • states 表示场景状态条件;
  • relations 表示对象类别之间的关系;
  • behaviors 表示场景中的行为结构;
  • methods 表示适用于该场景的处理方法;
  • conditions 表示场景成立的条件。

例如“机械抓取场景类”可以表示为:

场景类:机械抓取场景类

成员类别:
机械手类
目标物类
操作台类

关系:
机械手 → 接近 → 目标物
目标物 → 位于 → 操作台

行为:
接近
抓取
搬运
释放

条件:
目标物可操作
机械手可到达
抓取条件满足

这样,场景类就成为一种可以被机器匹配和调用的结构知识。


11.7 场景类的形成

场景类不是凭空产生的。

它需要从具体场景中发现共同结构。

基本过程可以表示为:

具体场景
↓
场景结构提取
↓
场景之间比较
↓
共同对象类别
↓
共同关系
↓
共同状态
↓
共同行为
↓
共同结构
↓
场景类形成

例如机器观察:

场景A:
机械手01 + 鸡蛋01 + 桌面01

以及:

场景B:
机械手02 + 苹果01 + 桌面02

再观察:

场景C:
机械手03 + 球01 + 工作台01

三个场景虽然目标对象不同:

鸡蛋
苹果
球

但是可能具有共同结构:

机械手
+
目标物
+
操作台
+
接近
+
抓取

于是可以抽象:

机械抓取场景类

这里发生的是:

实例场景差异
↓
结构比较
↓
共同结构提取
↓
场景类

因此:

场景类形成的基础是多个具体场景之间存在可重复识别的共同结构。


11.8 场景类形成的条件

并不是任意两个场景都能够形成一个场景类。

至少需要考虑以下条件。

第一,对象类别具有共同性

例如:

机械手01
机械手02
机械手03

都可以匹配:

机械手类

第二,关系结构具有共同性

例如:

机械手
↓
接近
↓
目标物

在多个场景中重复出现。


第三,状态条件具有共同性

例如:

目标物
=
可抓取状态

第四,行为结构具有共同性

例如:

接近
→
抓取
→
搬运

第五,整体结构具有稳定性

只有当这些共同结构具有一定稳定程度时,才适合形成场景类。

因此:

对象共同
+
关系共同
+
状态共同
+
行为共同
+
结构稳定
↓
场景类

11.9 场景类不是具体场景的复制

场景类形成之后,并不是把某一个场景完整复制下来。

例如:

机械手01
鸡蛋01
桌面01

属于具体实例。

场景类则应该抽象为:

机械手类
+
目标物类
+
操作台类
+
抓取关系
+
抓取行为

因此:

具体对象 → 被实例化
具体位置 → 被实例化
具体状态 → 被实例化

而:

对象类别
+
关系模式
+
行为模式
+
状态条件

属于场景类结构。

因此:

场景类保存的是结构规则,而不是某一次场景中的全部具体数值。


11.10 场景类的实例化

**场景类实例化(Scene Class Instantiation)**是指根据场景类所规定的对象类别、关系结构、状态条件和行为结构,将现实中的具体对象组织为一个具体场景实例的过程。

其基本过程为:

场景类
↓
现实对象匹配
↓
对象实例绑定
↓
关系实例建立
↓
状态确认
↓
场景实例形成

例如已有:

机械抓取场景类

现实中出现:

机械手01
鸡蛋01
桌面01

机器进行匹配:

机械手01 → 机械手类
鸡蛋01 → 目标物类
桌面01 → 操作台类

然后建立实际关系:

机械手01 → 接近 → 鸡蛋01
鸡蛋01 → 位于 → 桌面01

形成具体场景:

机械抓取场景01

因此:

场景类
↓
对象匹配
↓
关系实例化
↓
状态实例化
↓
场景实例

11.11 场景类实例与场景类的区别

必须严格区分:

场景类

和:

场景实例

例如:

机械抓取场景类

描述:

机械手类
+
目标物类
+
操作台类
+
抓取关系
+
抓取行为

而:

机械抓取场景01

可能是:

机械手01
+
鸡蛋01
+
桌面01
+
当前实际位置
+
当前实际状态
+
当前实际关系

因此:

场景类
→ 抽象结构
场景实例
→ 具体现实

11.12 场景类的实例化并不意味着固定

场景类实例化以后,场景实例仍然会发生变化。

例如:

机械抓取场景01

初始状态:

机械手
↓
接近
↓
鸡蛋

随后:

机械手
↓
抓取
↓
鸡蛋

再之后:

机械手
↓
搬运
↓
鸡蛋

场景实例不断变化:

Scene01(t₁)
↓
Scene01(t₂)
↓
Scene01(t₃)

但它仍然可以保持:

属于
↓
机械抓取场景类

因此:

场景实例可以动态变化,而场景类保持相对稳定。

这与基础类和对象实例之间的关系具有一致性:

基础类 → 对象实例 → 对象状态变化

场景类 → 场景实例 → 场景状态变化

11.13 场景类与对象类的层级关系

场景类可以引用多个基础类,也可以引用组合类和群类。

例如:

烹饪场景类
├── 人类
├── 锅类
├── 炉具类
├── 食材类
├── 厨具类
└── 烹饪组合类

其中:

烹饪组合类

本身可能又由:

锅类
+
炉具类
+
食材类

形成。

于是出现层级嵌套:

基础类
↓
组合类
↓
场景类

也可能:

基础类
+
组合类
+
群类
↓
场景类

因此场景类是一个较高层次的结构组织形式。


11.14 场景类与认知匹配

场景类形成以后,可以反过来参与机器的认知匹配。

机器面对一个新场景:

机械手02
+
苹果01
+
工作台02

首先建立场景实例:

当前场景

然后进行结构匹配:

当前场景
↓
对象类别匹配
↓
关系匹配
↓
状态匹配
↓
行为匹配
↓
场景类匹配

如果与:

机械抓取场景类

具有足够的结构对应关系,则可以判断:

当前场景
≈
机械抓取场景类

这里的“匹配”不是要求具体对象完全相同。

例如:

鸡蛋01

和:

苹果01

虽然不是同一个对象,也不是同一种对象类别,但如果当前任务只要求“可抓取目标物”,则二者可能共享某些场景结构角色。

因此:

场景类匹配的核心是结构匹配,而不是对象名称完全相同。


11.15 场景类的复用

场景类最重要的价值之一是结构复用。

例如机器已经形成:

机械抓取场景类

以后出现:

机械手01 + 苹果01 + 工作台01

无需重新从零建立全部结构。

机器可以:

当前场景
↓
场景类匹配
↓
机械抓取场景类
↓
读取已有结构
↓
绑定当前对象
↓
形成当前场景实例

因此:

场景类
↓
结构复用
↓
快速形成场景认知

这使机器能够从过去形成的场景结构中获得可复用知识。


11.16 场景类的动态性

虽然场景类具有相对稳定性,但场景类本身并不是绝对固定的。

当机器不断观察新的场景时,可能发现原有场景类:

结构不完整

或者:

出现新的稳定关系

或者:

出现新的共同状态

于是场景类可以进行扩展:

原场景类
↓
增加结构
↓
扩展场景类

也可能:

原场景类
↓
内部存在两个不同结构
↓
拆分
↓
场景类A
+
场景类B

因此:

场景类
↓
相对稳定
↓
可以动态扩展
↓
可以动态重组

这里仍然遵循第8章的基本原则:

动态主要发生在结构组织,而不是任意改变基础类别。


11.17 场景类的统一结构模型

综合本章,可以建立:

场景类
│
├── 对象类别集合
│
├── 组合类集合
│
├── 群类集合
│
├── 属性集合
│
├── 状态集合
│
├── 关系集合
│
├── 方法集合
│
├── 行为集合
│
└── 成立条件

可以形式化表示为:

SC =
{
C,
CC,
GC,
A,
S,
R,
M,
B,
Cond
}

其中:

  • SC 表示场景类;
  • C 表示基础类集合;
  • CC 表示组合类集合;
  • GC 表示群类集合;
  • A 表示属性集合;
  • S 表示状态集合;
  • R 表示关系集合;
  • M 表示方法集合;
  • B 表示行为集合;
  • Cond 表示场景成立条件。

这个结构说明,场景类不是单纯的“场景名称”,而是一个完整的结构知识单元。


11.18 场景类与场景实例的转换

场景类与场景实例之间存在双向关系。

正向:

场景类
↓
现实对象匹配
↓
场景实例

反向:

多个场景实例
↓
结构比较
↓
共同结构
↓
场景类

因此:

场景类
↔
场景实例

形成一种持续的结构循环。

例如:

已有场景类
↓
实例化
↓
实际运行
↓
产生新场景数据
↓
与已有场景比较
↓
场景类更新

这使场景知识能够随着现实经验不断丰富。


11.19 场景类在机器世界中的位置

经过前面十章的发展,可以把场景类放到整个世界结构中:

世界
↓
基础类
↓
对象实例
↓
对象属性
↓
对象状态
↓
对象关系
↓
具体场景
↓
场景结构
↓
共同结构提取
↓
场景类
↓
场景类实例化
↓
新的具体场景

因此:

基础类
→ 稳定对象类别

场景类
→ 稳定场景类别

而:

对象实例
→ 具体个体

场景实例
→ 具体场景

这形成了机器世界的两个重要抽象层次。


11.20 本章总结

第11章建立了场景类理论。

场景类不是具体场景,也不是基础类的简单集合,而是:

从多个具有共同结构特征的具体场景中抽象出来,用于描述一类场景共同的对象类别、关系结构、状态条件、行为模式和方法结构的高层次类别。

本章首先区分:

基础类
↓
描述对象类别

与:

场景类
↓
描述场景类别

然后进一步区分:

组合类
↓
强调多个类别组成一个整体

与:

场景类
↓
强调对象、关系、状态、行为共同形成的场景整体

场景类的形成过程为:

具体场景
↓
场景结构提取
↓
多个场景比较
↓
共同对象类别
↓
共同关系
↓
共同状态
↓
共同行为
↓
共同结构
↓
场景类

场景类形成之后,可以进一步实例化:

场景类
↓
对象匹配
↓
对象实例绑定
↓
关系实例建立
↓
状态确定
↓
场景实例

例如:

机械抓取场景类
↓
机械手01
+
鸡蛋01
+
桌面01
↓
机械抓取场景01

场景实例仍然可以动态变化:

接近
↓
接触
↓
抓取
↓
搬运
↓
释放

但它始终可以保持对其所属场景类的结构关联。

因此,本章最核心的理论结论是:

基础类解决“对象属于什么类别”,场景类解决“多个对象及其关系、状态和行为属于什么场景结构类别”。

进一步:

场景类是对具体场景共同结构的抽象,不保存某一次场景的全部具体对象,而保存能够被重复识别、匹配和复用的结构规则。

最终形成:

基础类
↓
对象实例
↓
对象关系
↓
具体场景
↓
场景结构
↓
共同结构
↓
场景类
↓
场景类匹配
↓
场景类实例化
↓
新的场景实例
↓
动态变化
↓
新的场景结构

由此,机器不再只是认识“一个场景”,而开始建立:

一类场景是什么
↓
一类场景由什么组成
↓
一类场景具有什么关系
↓
一类场景在什么状态下成立
↓
一类场景可以产生什么行为

这为下一阶段研究场景的动态变化、场景之间的转换,以及机器如何通过场景匹配形成认知判断建立了理论基础。

Leave a Reply

Your email address will not be published. Required fields are marked *