3.3 语义 SLAM 与开放词汇场景理解


文档摘要

3.3 语义 SLAM 与开放词汇场景理解 一个只有点云和位姿的地图对机器人来说意义有限。它需要知道「这是桌子、那是椅子、杯子在桌沿」——这就是语义 SLAM:把几何地图升级为有含义的环境表征。 3.3.1 为什么需要语义 SLAM 纯几何 SLAM 解决了「我在哪、墙在哪」的问题,但机器人执行任务还需要: 物体级信息:「把那个红色杯子拿给我」——机器人得知道地图里哪些点是杯子。 结构化关系:「把杯子放到桌上」——机器人得知道杯子和桌子的相对位置。 属性标签:「不要碰易碎的」——机器人得知道物体类别甚至属性。 开放词汇查询:用户用任意自然语言描述目标,机器人要在地图里定位。 这就引出了从几何地图到语义地图的演进: 3.3.

3.3 语义 SLAM 与开放词汇场景理解

一个只有点云和位姿的地图对机器人来说意义有限。它需要知道「这是桌子、那是椅子、杯子在桌沿」——这就是语义 SLAM:把几何地图升级为有含义的环境表征。

3.3.1 为什么需要语义 SLAM

纯几何 SLAM 解决了「我在哪、墙在哪」的问题,但机器人执行任务还需要:

  • 物体级信息:「把那个红色杯子拿给我」——机器人得知道地图里哪些点是杯子。
  • 结构化关系:「把杯子放到桌上」——机器人得知道杯子和桌子的相对位置。
  • 属性标签:「不要碰易碎的」——机器人得知道物体类别甚至属性。
  • 开放词汇查询:用户用任意自然语言描述目标,机器人要在地图里定位。

这就引出了从几何地图到语义地图的演进:

点云地图 → 网格地图(Occupancy Grid) → 物体级地图 → 3D 场景图 → 开放词汇场景表征 几何 占有/空闲 离散物体实例 关系图结构 任意自然语言查询

3.3.2 几何地图的三种表征

先回顾几何地图的三种基础表征(第 2 章已部分介绍):

表征 描述 适用
点云地图 一堆 3D 点 视觉 SLAM 输出,用于定位
占据网格(Occupancy Grid) 2D/3D 网格每格存占有概率 导航避障,路径规划
TSDF / ESDF 截断/欧氏距离场 稠密建图、碰撞检测

这三种都是纯几何的——它们只知道空间哪里有东西,不知道是什么。语义 SLAM 在其之上叠加语义层。

3.3.3 语义 SLAM 的核心思路

语义 SLAM 在传统 SLAM 三段式架构上增加语义模块:

关键改动:

  1. 前端增加物体检测:每帧图像跑语义分割 / 物体检测,得到 2D 物体掩膜。
  2. 跨帧物体数据关联:判断「这一帧看到的杯子」与「上一帧看到的杯子」是否是同一个物体实例。
  3. 后端引入物体因子:把物体作为变量加入因子图,物体观测作为约束。
  4. 输出语义地图:地图里不仅有路标点,还有物体实例(位置 + 类别 + 形状)。

语义 SLAM 的额外好处

语义不只是给地图加标签,它反过来帮助几何 SLAM

  • 动态点剔除:识别出人、车等动态物体的点,从 SLAM 优化中剔除,避免动态干扰。
  • 结构约束:椅子腿通常对称、桌子表面是平面——语义先验提供额外几何约束。
  • 数据关联增强:基于物体类别做匹配比纯几何点匹配更鲁棒。

3.3.4 物体级 SLAM:代表方法

物体级 SLAM(Object-oriented SLAM / Object SLAM) 把每个物体作为地图的一等公民。代表方法:

方法 思路 输出
CubeSLAM 用 3D 立方体拟合物体,物体作为路标 物体立方体 + 位姿
QuadricSLAM 用椭圆锥(quadric)表示物体 椭球体地图
DSP-SLAM 深度语义 + 物体因子 稠密点云 + 物体实例
ObjectFusion 物体先验形状 + 重建 形状补全的物体模型
vMAP 用神经辐射场表示每个物体 高保真物体 NeRF

物体级 SLAM 让机器人地图从「一堆点」变成「一堆物体」,这是从几何理解走向任务理解的关键一步。

3.3.5 3D 场景图:结构化环境表征

更进一步,3D 场景图(3D Scene Graph) 把环境组织成层次化的关系图:

楼层 Floor └── 房间 Room └── 物体 Object(桌、椅、杯、电器) └── 部分 Part(桌腿、抽屉) └── 关系 Relation(杯子在桌上、椅子靠近桌)

场景图的节点是实体(房间、物体、部分),边是关系(on、near、in、behind 等)。MIT 的 Kimera 系统、ETH 的 Hydra 系统是 3D 场景图的代表作。

场景图的价值在于:

  • 支持高层推理:「找一把靠窗的椅子」可以转成图查询。
  • 任务规划的基础:LLM 规划器(第 4 章)可以读场景图做任务分解。
  • 人机交互:用户用自然语言描述环境,机器人转换为场景图查询。

3.3.6 开放词汇场景理解

传统语义 SLAM 用固定类别表(COCO 80 类、ADE20K 150 类)训练检测器,机器人只能识别训练时见过的物体。开放词汇(Open-Vocabulary) 场景理解打破这一限制:

方法 思路 代表
CLIP-Fields 用 CLIP 把场景点云编码到文本对齐空间 任意文本查询 3D 位置
LERF / LangSplat NeRF/3DGS + 语言特征嵌入 在 3D 场景中点对查询
ConceptFusion 把 CLIP 特征融合进 3D 重建 开放词汇物体定位
ConceptGraphs 物体级 3D 场景图 + 开放词汇 开放词汇场景图
OpenMask3D SAM 分割 + CLIP 特征 任意物体实例查询

开放词汇的工作流程

以 ConceptGraphs 为例:

  1. 用 SAM 在多视角图像中分割出物体实例。
  2. 用 CLIP 给每个实例提取开放词汇特征。
  3. 把多视角的同一实例关联并融合成 3D 物体。
  4. 把所有物体组织成 3D 场景图。
  5. 用户查询「那个金属的圆筒」→ CLIP 编码 → 与所有物体特征比对 → 返回最匹配的 3D 位置。

这让机器人能响应任意自然语言指令定位物体,无需为每个新物体训练检测器。

💡 VLA 的关键支撑:第 5 章 VLA 模型之所以能用自然语言指令操作机器人,部分原因就是底层有开放词汇场景理解——机器人能从语言指令定位到 3D 物体。两者构成「大脑(VLA)+ 空间记忆(语义 SLAM)」的协作。

3.3.7 NeRF/3DGS 与语义的结合

把语义特征嵌入 NeRF 或 3DGS 表征是当前热门方向:

  • 语义 NeRF(Semantic NeRF):在 NeRF 中除了预测颜色和密度,还预测语义特征。这样不仅能渲染图像,还能渲染语义分割图。
  • LERF(Language Embedded Radiance Fields):把 CLIP 特征稠密嵌入 NeRF,支持任意 3D 点的语言查询。
  • LangSplat:把语言特征嵌入 3D Gaussian Splatting,比 LERF 快 100 倍。

这些方法的共同价值:让 3D 场景表征同时具备几何、外观、语义三重信息,成为下一代机器人「空间记忆」的候选。

3.3.8 语义 SLAM 的工程挑战

挑战 描述 当前应对
算力消耗 实时跑 SAM/CLIP 是沉重负担 模型蒸馏、量化、关键帧策略
跨视角一致性 多帧看到的同一物体语义可能矛盾 投票、置信度加权
物体边界不准 分割边界漂移影响 3D 物体位置 多视角融合、精细化
开放词汇精度 罕见物体 CLIP 识别率低 检索增强、上下文提示
场景图构建错误 关系判断(on/near/in)易错 物理约束 + 大模型推理

⚠️ 当前痛点:语义 SLAM 在学术 demo 上效果惊艳,但工业落地仍受限于实时语义模型的算力消耗。一个跑 SAM + CLIP + 因子图优化的系统,单 GPU 实时运行已是挑战,更别说边缘部署。这是为什么生产系统常用「轻量检测器 + 关键帧策略 + 离线语义增强」的折中方案。

3.3.9 一个语义机器人地图的完整形态

把所有概念综合起来,一个面向具身智能的语义地图应该包含:

内容 用途
几何层 点云、TSDF、占据网格 导航、避障、定位
物体层 物体实例(位置、形状、类别) 操作目标定位
关系层 3D 场景图(on/near/in) 任务规划、空间推理
语义层 开放词汇特征、属性(易碎、可食用) 自然语言交互
可微层 NeRF/3DGS 表征 可微渲染、新视角合成
持久层 多会话地图、生命周期管理 长期使用

这种多层语义地图是机器人理解环境的终极目标,也是当前研究最活跃的方向之一。

本节小结

  • 语义 SLAM 在几何地图之上叠加语义层,从点云升级为物体级、场景图、开放词汇表征。
  • 物体级 SLAM(CubeSLAM、QuadricSLAM、vMAP)把物体作为地图一等公民。
  • 3D 场景图(Kimera、Hydra)把环境组织成层次化关系图,支持高层推理。
  • 开放词汇方法(ConceptGraphs、LERF、OpenMask3D)用 CLIP 实现任意自然语言查询。
  • NeRF/3DGS 与语义结合是当前热点,目标是几何+外观+语义三重表征。
  • 工程挑战主要在算力、跨视角一致性、关系判断准确度。

下一节《3.4 长程自主与环境表征》将讨论机器人长时间运行时如何维护这些地图——重定位、地图持久化、生命周期管理。


发布者: 作者: 灏天文库 转发
评论区 (0)
U