轻量化开放词汇3D场景图动态物体跟踪技术解析
1. 项目概述:轻量化开放词汇3D场景图动态物体跟踪
在机器人感知领域,3D场景图(3D Scene Graphs, 3DSG)正逐渐成为环境建模的主流方法。这种将几何结构与语义信息相结合的表征方式,让机器人能够像人类一样理解周围世界的物体及其相互关系。然而,现有大多数系统都面临一个共同痛点:为了支持开放词汇(open-vocabulary)能力而不得不依赖CLIP等大型视觉语言模型生成的高维嵌入特征,导致内存占用激增和计算效率下降。
我们团队开发的LOST-3DSG系统提出了一种创新解决方案。通过采用word2vec词向量和句子嵌入等轻量化语义表示,在保持开放词汇能力的同时,将内存占用从传统方法的数百MB降低到仅需几KB。这个突破使得在资源受限的移动机器人(如TIAGo)上实现实时动态物体跟踪成为可能。
关键创新:用语义属性(颜色、材质等)替代密集视觉特征,通过词向量空间中的相似度计算实现物体跨视角跟踪,解决了动态环境中物体移动、消失等场景下的身份维持难题。
2. 核心设计思路与技术选型
2.1 传统方案的技术瓶颈
当前主流的开放词汇3DSG方案(如ConceptGraphs、DovSG等)通常采用以下技术路线:
- 使用CLIP等模型提取每个物体/体素的视觉特征
- 存储512维甚至更高维的浮点向量
- 通过特征相似度匹配实现物体跟踪
这种设计在25mm分辨率下,单个场景就可能需要超过600MB内存。对于需要持续更新场景图的动态环境,频繁的特征提取和匹配会带来巨大计算开销。
2.2 轻量化语义跟踪方案
LOST-3DSG的核心思想是将物体表示为语义属性的集合:
- 基础属性:标签(如"锤子")、颜色(如"红棕色")、材质(如"木质")
- 细粒度描述:由VLM生成的文本描述(如"带有金属头的木柄锤子,表面有磨损痕迹")
这些属性通过以下方式编码为紧凑表示:
- 标签和材质:转换为300维word2vec词向量
- 颜色:归一化RGB值(3维)
- 描述:使用text-embedding-3-small生成384维句子向量
相比CLIP的512维特征,我们的组合表示仅需约700维(word2vec:300+300,RGB:3,句子向量:384),且大部分维度是稀疏的。
2.3 系统架构设计
系统采用模块化设计,主要包含两个核心组件:
感知模块(Perception Module)
- 输入:RGB-D图像(RGB帧+深度图)
- 处理流程:
- 使用VLM(GPT-5-mini)提取场景中的物体标签
- OWLv2检测器进行开放词汇物体检测
- EfficientViT-SAM生成像素级分割掩码
- 通过深度信息将2D检测投影到3D空间
- 构建初始3D场景图(包含物体节点和层级关系)
场景更新模块(Scene Update Module)
- 核心算法:基于语义相似度的物体跟踪
- 计算新观测与已有物体的Lost相似度函数(LSF)
- 通过阈值判定物体身份(相同/新实例)
- 两种工作模式:
- 探索模式:构建初始场景图
- 跟踪模式:动态更新物体位置和状态
3. 关键技术实现细节
3.1 Lost相似度函数(LSF)设计
LSF是系统实现准确跟踪的核心算法,由四个加权子项组成:
| 相似度类型 | 计算方式 | 权重 | 作用 |
|---|---|---|---|
| 语义相似度(sℓ) | word2vec余弦相似度 | 0.15 | 判断物体类别相关性 |
| 颜色相似度(sc) | RGB空间欧氏距离 | 0.30 | 匹配物体外观颜色 |
| 材质相似度(sm) | word2vec余弦相似度 | 0.15 | 判断物体构成材料 |
| 描述相似度(sd) | 句子嵌入余弦相似度 | 0.40 | 细粒度实例区分 |
计算公式:
LSF(o1, o2) = 0.15*sℓ + 0.30*sc + 0.15*sm + 0.40*sd实际应用示例:
- 场景中存在两个"杯子"物体
- 杯子A:白色陶瓷杯,描述为"纯白陶瓷杯,杯口有金色镶边"
- 杯子B:透明玻璃杯,描述为"无花纹透明玻璃杯"
- 虽然语义标签相同(sℓ=1.0),但颜色和描述差异明显(sc≈0.2, sd≈0.3)
- 最终LSF=0.151 + 0.30.2 + 0.151 + 0.40.3 = 0.45 < 阈值(通常设0.7)
- 系统判定为不同实例
3.2 场景图更新策略
系统通过算法1实现动态场景维护,关键逻辑包括:
物体匹配流程
- 对新检测的物体d,计算与场景图P中所有物体的LSF值
- 选择最高分匹配p=argmax(LSF(d, p∈P))
- 如果LSF(d,p) > τ(阈值=0.7),判定为同一物体
- 否则,视为新物体加入场景图
空间一致性检查
- 即使语义匹配成功,还需验证空间关系:
- 如果物体出现在不可能移动到的位置(如穿过墙壁)
- 则标记原物体为"不确定",新增当前观测为可能实例
内存管理机制
- 定期清理不可见区域中未被观测到的物体
- 保留"不确定"物体一段时间以待后续验证
3.3 实现优化技巧
VLM提示工程:设计特定模板获取结构化属性
"描述以下物体的视觉特征: 1. 主要颜色:[颜色] 2. 主要材质:[材质] 3. 详细描述:[描述]"相似度计算加速:
- 预计算word2vec向量
- 使用FAISS进行最近邻搜索
动态权重调整:
- 根据场景复杂度自动调整LSF权重
- 物体密集时提高sd权重
- 光照变化大时降低sc权重
4. 实验验证与性能分析
4.1 测试场景设计
我们在TIAGo机器人上构建了三级复杂度测试环境:
| 场景级别 | 物体数量 | 动态性 | 挑战点 |
|---|---|---|---|
| 简单(★) | 3 | 物体移动/消失 | 基础跟踪能力验证 |
| 中等(★★) | 21 | 部分物体移出视野 | 大数据量处理能力 |
| 复杂(★★★) | 9 | 高频不可见移动 | 语义推理能力 |
4.2 关键性能指标
跟踪准确率
| 场景级别 | 检测率 | 更新准确率 | 删除准确率 |
|---|---|---|---|
| ★ | 100% | 100% | 100% |
| ★★ | 95.2% | 100% | 66.7% |
| ★★★ | 66.7% | 92.9% | 66.7% |
内存占用对比
| 方法 | 存储内容 | 场景尺寸 | 内存占用 |
|---|---|---|---|
| CLIP-based | 512维/体素 | 626,140体素 | ~641MB |
| LOST-3DSG | 属性/物体 | 21物体 | ~3.3KB |
4.3 典型问题与解决方案
问题1:语义描述不一致
- 现象:同一物体在不同视角获得差异较大的描述
- 解决方案:引入时间滑动窗口,聚合多次观测的描述
问题2:相似物体混淆
- 现象:同类别同颜色物体被误判为同一实例
- 解决方案:在LSF中增加几何特征(如尺寸)作为辅助判断
问题3:VLM幻觉
- 现象:生成不存在的属性(如将塑料误认为金属)
- 解决方案:设置属性置信度阈值,可疑属性标记为待验证
5. 实际部署建议
基于我们在TIAGo机器人上的部署经验,总结以下实践要点:
传感器标定:
- RGB-D相机需要高精度时间同步
- 深度图与RGB图像对齐误差需<2像素
计算资源分配:
- 优先保障VLM推理资源(建议预留2CPU核心)
- 相似度计算可部署在边缘计算模块
参数调优指南:
- 简单场景:提高sc权重(β=0.4)
- 复杂场景:提高sd权重(δ=0.5)
- 动态环境:降低匹配阈值(τ=0.6)
异常处理机制:
- 设置物体生命周期计数器
- 超过5次未观测到的物体自动归档
这套系统已在实验室环境下稳定运行6个月,成功支持了包括动态物体避障、语义导航等多项任务。相比传统方法,内存占用降低99.5%,同时保持了90%以上的跟踪准确率。
