Semantic Mapping
语义地图通过融合分割、深度和姿态信息,构建记录各类事物所在位置的地图,例如道路、墙壁、门或行人,并随时间更新。
语义建图是构建环境空间地图的过程,地图中的每个位置除了几何信息,还带有含义或类别标签,例如道路、人行道、墙壁、门、椅子或行人。几何地图告诉机器人表面的位置,语义地图还会告诉机器人这些表面是什么,因此机器人可以执行“去厨房的餐桌旁”这类指令、避开草坪,或预判人行横道附近可能有行人。语义地图结合了语义分割或目标检测、深度感知和定位,是机器人技术、自动驾驶汽车和空间计算感知系统的核心组成部分。
语义建图的工作原理#
每个新摄像头帧都会经历三个步骤。分割模型为每个像素标注类别。LiDAR、立体摄像头、RGB-D 摄像头或单目深度估计提供深度信息,将已标注的像素提升为 3D 点;机器人通过视觉 SLAM或里程计估算自身位姿,再将这些点放入共享地图的单元格中。最后,传感器融合会随时间推移,将新标签与每个单元格迄今累积的信息合并;移动物体会单独处理,以免路过的行人变成永久的墙壁。
在 Cityscapes 上预训练的 Ultralytics YOLO26 语义分割模型会为每个像素标注 19 种城市类别之一,包括道路、人行道、建筑物、植被、行人和汽车;这是街景语义地图融合的逐帧输入。
融合会将含噪声的逐帧预测转化为可靠地图。2017 年,伦敦帝国理工学院的 John McCormac 及其同事提出了 SemanticFusion:该方法为每个表面元素维护一个类别概率分布,并通过递归贝叶斯更新,将每次新的网络预测纳入其中。以下模拟采用相同的更新方法,处理一个包含 1,000 个单元格的地图;分割模型每次预测的正确率为 70%:
import numpy as np
rng = np.random.default_rng(0)
num_cells, num_classes = 1000, 4 # map cells; classes such as road, sidewalk, building, vegetation
truth = rng.integers(0, num_classes, num_cells)
# Sensor model: segmentation labels a cell correctly 70% of the time, otherwise picks another class
likelihood = np.full((num_classes, num_classes), 0.1)
np.fill_diagonal(likelihood, 0.7)
log_belief = np.zeros((num_cells, num_classes)) # uniform prior in every cell
for frame in range(1, 11):
# A new frame observes every cell from a new viewpoint, with independent errors
wrong = rng.random(num_cells) > 0.7
labels = np.where(wrong, (truth + rng.integers(1, num_classes, num_cells)) % num_classes, truth)
# Recursive Bayesian update: add the log-likelihood of this observation to each cell's belief
log_belief += np.log(likelihood[labels])
if frame in (1, 3, 10):
print(f"Frame {frame:>2}: {(log_belief.argmax(axis=1) == truth).mean():.1%} of cells correct")经过一帧后,地图的正确率为 69.6%;三帧后为 80.6%;十帧后为 98.2%。效果提升取决于不同观测中的错误是否发生变化,因此当机器人从不同视角观察每个地点时,融合最有效;如果模型从各个角度都会重复同一个错误,该错误仍会留在地图中。SemanticFusion 也报告了相同趋势;在视角变化更多的数据集上,其相较于单帧标签的提升更大。
地图表示方法与相关概念#
语义地图的形式多种多样,从每个单元格还存有类别信息的二维占用栅格,到带标签的三维点云、体素和网格。MIT 的 Kimera 可以实时构建度量语义三维网格;三维场景图则将相同信息组织为对象、房间和建筑物,并通过关系将它们连接起来。开放词汇地图存储 CLIP嵌入,而不是固定类别,因此机器人可以通过任意文本查询搜索地图,例如“灭火器”。
语义建图建立在多项相关任务之上。视觉 SLAM 提供摄像头位姿和几何地图。占用地图只记录空间是空闲、被占用还是未知。实例分割和全景分割会分离出独立物体,这对于需要统计椅子数量或跟踪停放汽车的对象级地图很重要。语义搜索是一种无关的检索技术,两者只是名称中有相同的词。










