3. 场景图基础

在机器人空间关系与场景图推理中,场景图(Scene Graph)是把“看到什么”和“它们之间怎样关联”统一表达出来的一种结构化知识表示。它把图像或三维场景中的实体抽象为节点,把实体之间的空间、语义、功能或交互关系抽象为边,从而让机器人不仅能识别物体,还能回答“杯子在桌面上”“机械臂位于箱子左侧”“门把手连接在门上”这类关系问题。对机器人而言,场景图是连接感知、语言与任务规划的中间层:感知模块输出物体与位姿,场景图负责组织成可查询、可推理、可更新的图结构,任务规划再基于图结构进行目标检索、路径约束和操作顺序推断。

一、场景图的定义与核心组成

形式化地,场景图可表示为 G = (V, E)。其中 V 是节点集合,E 是边集合。每个节点通常对应一个物体实例或区域,例如“红色马克杯”“餐桌”“机械臂末端”;每条边表示两个节点之间的关系,例如“在……上面”“靠近”“属于”“可抓取”。与普通图不同的是,场景图中的节点和边都带有类型与属性:节点有类别、颜色、材质、位姿、置信度;边有关系类型、方向、距离、接触状态等。

从机器人视角看,场景图至少包含三层信息:几何层(位置、朝向、包围盒、点云)、语义层(类别、属性、功能)和关系层(空间关系、支撑关系、连接关系、交互关系)。这三层共同支撑“在哪里—是什么—能做什么”的推理链条。

二、节点类型与边类型

节点类型可按粒度划分。常见节点包括:物体节点(杯子、椅子、门)、部件节点(把手、轮子、关节)、区域节点(桌面、地面、货架层)、机器人节点(基座、末端执行器、传感器)以及抽象节点(房间、任务目标)。在三维场景图中,还会出现“支撑面”“可通行区域”等特殊节点。

边类型则决定场景图的推理能力。典型边类型如下表所示:

边类型 示例 机器人用途
空间关系 杯子在桌面上;椅子在桌子左侧 抓取位姿选择、避障、导航
支撑关系 盘子支撑杯子;桌面支撑显示器 判断可移动性与稳定性
连接关系 把手连接门;轮子连接底盘 操作关节、开门、移动
语义关系 杯子属于餐具;扳手属于工具 任务目标检索与常识推理
交互关系 人拿着杯子;机械臂抓取零件 人机协作、动作预测
时序关系 先开门再进入;先抓取再放置 任务规划与动作排序

需要特别注意的是,空间关系边通常具有方向性。“A在B上”与“B在A上”含义完全不同,因此场景图常被建模为有向图。对于对称关系如“相邻”,可以保留双向边或使用无向边,但在机器人操作中,方向性往往直接影响抓取与放置策略。

三、场景图的构建流程

场景图构建通常遵循“感知—关联—建图—校验”的流程。以机器人抓取任务为例:

  1. 物体检测与分割:从RGB-D图像或点云中提取物体实例,得到类别、包围盒、掩码和点云簇。
  2. 位姿估计与属性提取:估计物体6D位姿、尺寸、颜色、材质,并计算质心与主轴。
  3. 关系推断:基于几何计算与语义规则判断关系,例如通过包围盒重叠判断“支撑”,通过距离阈值判断“靠近”,通过接触检测判断“连接”。
  4. 图结构生成:将物体作为节点、关系作为边写入图数据库或内存图结构,并附加置信度。
  5. 校验与更新:利用多帧观测、物理约束和常识规则消除矛盾边,例如“杯子不能支撑桌子”。

下面是一个简化的场景图JSON片段,展示节点与边的组织方式:

{
  "nodes": [
    {"id": "cup_1", "type": "object", "category": "cup", "pose": [0.42, 0.15, 0.78]},
    {"id": "table_1", "type": "object", "category": "table", "pose": [0.40, 0.00, 0.75]},
    {"id": "robot_arm", "type": "robot", "category": "manipulator", "pose": [0.10, -0.20, 0.90]}
  ],
  "edges": [
    {"source": "cup_1", "target": "table_1", "relation": "on", "confidence": 0.96},
    {"source": "robot_arm", "target": "cup_1", "relation": "near", "confidence": 0.81},
    {"source": "cup_1", "target": "table_1", "relation": "supported_by", "confidence": 0.93}
  ]
}
构建场景图时,建议把“几何关系”和“语义关系”分开存储。几何关系随机器人移动会频繁变化,语义关系相对稳定。分开存储可以减少更新开销,也便于不同模块按需查询。

四、常用数据集:Visual Genome与3DSSG

Visual Genome 是二维场景图领域的经典数据集,包含大量图像、区域描述、问答对和关系标注。它的核心贡献是提供了“物体—属性—关系”的三元组标注,常被用于训练图像场景图生成模型。对机器人而言,Visual Genome 的价值在于提供丰富的常识关系,例如“人骑自行车”“杯子放在桌上”,可用于预训练关系检测器,再迁移到机器人场景。

3DSSG(3D Scene Graph) 则面向三维场景,基于3RScan等室内扫描数据构建,包含房间、物体、部件等节点,以及“支撑”“连接”“属于”等三维关系。它更贴近机器人在真实室内环境中的空间推理需求,例如判断“椅子在桌子旁边”“显示器在桌面上”“门连接墙体”。3DSSG 的边类型强调三维空间中的物理与功能关系,适合用于三维场景图生成、室内导航和操作任务。

此外,还有 SceneGraphGen、Open Images 的关系标注、GQA 等数据集可用于关系推理。选择数据集时,应关注三点:关系类型是否覆盖机器人任务、是否包含三维位姿或深度信息、标注粒度是否包含部件级节点。

五、案例与常见误区

假设机器人要在桌面上抓取杯子。感知模块检测到杯子、桌子、机械臂三个节点。若只记录“杯子在桌上”,机器人知道杯子位置,但不知道机械臂是否可达。加入“机械臂靠近杯子”的边后,系统可以判断抓取可行性。再加入“杯子被桌子支撑”的边,机器人可以推断:若移动桌子,杯子可能随之移动,从而调整抓取顺序。

常见误区一:把场景图当成普通物体列表。没有边,就没有关系推理能力。误区二:忽略边的方向与置信度。方向错误会导致“杯子在桌上”变成“桌子在杯子上”,置信度过低则会让规划器频繁误判。误区三:二维场景图直接用于三维操作。二维关系缺少深度与支撑面信息,容易导致抓取高度错误。

复盘时,可以用“节点是否完整、边类型是否覆盖任务、方向是否正确、置信度是否可靠、更新是否及时”五个问题检查场景图质量。只有图结构与机器人任务闭环,场景图才真正成为空间关系推理的可用基础。

场景图:节点、边与构建流程 节点 V 物体节点:杯子 / 桌子 部件节点:把手 / 轮子 机器人节点:末端 / 基座 边 E 空间:在……上 / 靠近 支撑:supported_by 连接 / 交互 / 时序 属性与置信度 类别 / 颜色 / 材质 位姿 / 包围盒 / 点云 关系置信度 0~1 构建流程:感知 → 关联 → 建图 → 校验 1. 检测与分割 RGB-D / 点云 2. 位姿与属性 6D位姿 / 尺寸 3. 关系推断 几何 + 语义规则 4. 建图与校验 图数据库 / 更新 Visual Genome:2D 图像关系与常识 3DSSG:3D 室内场景与物理关系 节点 → 边 边 → 属性