Clio
Maggio (MIT SPARK) 2024 · 论文
一句话总结 — Clio构建实时的、任务驱动的开放集3D场景图:给定自然语言描述的任务,它用一种增量式的聚合信息瓶颈(Agglomerative Information Bottleneck)方法对3D基元进行聚类,使地图只保留任务所需要的对象和区域——并保持在任务所需要的粒度上。
问题
类别无关的分割方法(SAM)加上开放集嵌入(CLIP)意味着机器人地图不再局限于几十或几百个类别——它们可以包含”数量庞大的对象和不计其数的语义变化”。这就引出了本文直接提出的问题:机器人地图中所需要的对象和语义概念,合适的粒度应该是什么?一个要搬动钢琴的机器人应把它当作一个整体对象来建图;一个要弹奏它的机器人需要键;一个要调音的机器人则需要琴弦和弦钉。以往的开放集流水线通过调节分割关联阈值来隐式地选定粒度;Clio则主张这种选择本质上是任务相关的,应该由建图系统自身来做出。
方法与架构
信息瓶颈公式化。 任务列表 (用CLIP嵌入的自然语言指令)和任务无关的基元 (3D对象分割和无障碍区域)定义了一个压缩问题:寻找任务相关的簇 ,即一个分配 ,求解
该式在压缩 的同时保留与任务的互信息, 用于权衡压缩程度与任务相关性。
聚合式信息瓶颈(Agglomerative IB)。 簇初始化为各个基元;每一步将合并权重最小的一对相邻簇
进行合并( = Jensen-Shannon散度),当信息损失比例
超过阈值 时停止。任务相关性分布 来自每个基元与每个任务的CLIP嵌入之间的余弦相似度 ,并加入一个评分为 的*空任务(null task)*进行增强:与空任务最相似的基元会被预先剔除为背景,并且只保留(重新加权后的)前 个任务相似度以强化排序效果。
增量式信息瓶颈。 由于聚类过程可以按基元图的连通分量分解,并且 是按分量可计算的,因此只有被新测量触及的分量才需要重新聚类——因此计算复杂度不会随环境规模增长,从而实现在线运行。
系统。 前端在RGB-D流上运行FastSAM + CLIP,将分割结果在时间上关联为3D对象基元轨迹(余弦相似度 ,3D IoU ,沿用Khronos的方法),并构建Hydra基于GVD的地点子图,为每个地点分配其质心可见的所有图像的平均CLIP嵌入。后端对对象基元图(边为相互重叠的边界框)运行增量式聚合IB,得到任务相关的对象,并对地点图运行同样的过程,将地点聚类为语义区域;每个节点都保留其CLIP嵌入,因此该图始终可以用语言查询。
实验结果
- 开放集对象检索在三个自采集标注场景上(Office、Apartment、Cubicle,分别有27/28/18个目标对象):Clio-batch/Clio-online在几乎所有指标上排名第一或第二,F1为0.55–0.80(batch版本),相比任务感知的ConceptGraphs为0.39–0.55,任务无关的ConceptGraphs为0.25–0.39。
- 紧凑性:Clio建图仅保留48–131个对象,而其自身未聚类的前端(Clio-Prim)保留了1070–1880个——通过IB聚类实现了一个数量级的压缩——同时提升了检索精度。
- 速度:每帧约0.23–0.31秒,比ConceptGraphs(2.0–8.1秒)快约6倍,可在线运行;第五个数据集覆盖一栋五层的大学建筑。
- 闭集合理性检查(Replica,8个场景):Clio-batch达到37.95 mAcc / 36.98 F-mIOU,相比ConceptGraphs的40.63 / 35.95——任务驱动的聚类不会降低闭集性能。
- 区域:以房间标签作为任务,Clio(平均嵌入)在语义上定义明确的Office(F1 0.76 vs 0.70)和Building(0.81 vs 0.78)场景上超过了Hydra纯几何的房间分割方法,而在几何上界限分明的Apartment场景上,几何方法Hydra则胜出(0.90 vs 0.69)。
- 机器人演示:在配备机械臂的波士顿动力Spot机器人上实现实时机载建图;在7次试验中进行语言提示抓取,通过在地点图上运行Dijkstra算法导航到相似度最高的对象。
对SLAM的意义
Clio标志着从”以固定语义粒度建图一切”转向”按任务所需建图”的转变——这是SLAM与具身人工智能融合过程中的一个关键思想。它的信息瓶颈公式为粒度问题提供了一个有原则的信息论基础,而不是靠调阈值;而增量式的按分量求解方式表明,基础模型语义(FastSAM、CLIP)可以运行在机载计算资源上的实时度量-语义建图栈内。对于语言驱动的机器人而言,任务条件化的场景图能让地图保持紧凑,同时仍足以支持规划和操作。
相关条目
- Kimera / 3D动态场景图
- Hydra
- ConceptGraphs
- Khronos — 提供了Clio的对象基元前端
- CLIP
- SAM