1. 课程导入

欢迎进入《点云语义分割与地图融合》课程。本课程面向自动驾驶、机器人导航、高精地图与三维感知等方向,系统讲解如何从原始三维点云中理解场景语义,并将这些语义结果与地图进行融合,形成可供定位、规划、决策使用的结构化环境表达。第 1 章作为导入章节,不急于进入复杂算法,而是先建立全局认知:我们处理的对象是什么、要解决什么问题、需要掌握哪些能力、最终能落地到哪些场景。

一、什么是点云语义分割

点云是三维空间中离散点的集合,通常由激光雷达、深度相机或摄影测量方式获得。每个点至少包含三维坐标 (x, y, z),还可能带有强度、颜色、法向量、时间戳等属性。点云语义分割的任务,是为每一个点分配一个语义类别标签,例如道路、建筑、车辆、行人、植被、交通标志、可行驶区域等。

与二维图像分割相比,点云语义分割面临三个典型难点:第一,点云无序且稀疏,同一物体在不同距离下的点密度差异巨大;第二,三维空间中没有天然的网格结构,卷积操作不能直接套用;第三,类别分布极不均衡,道路和建筑点数远多于行人和交通标志。因此,点云语义分割的核心是设计能够处理无序性、稀疏性和类别不平衡的三维特征学习网络。

一句话理解:点云语义分割回答的是“每个点是什么”;地图融合回答的是“这些语义对象在全局地图中的位置和关系是什么”。

二、什么是地图融合

地图融合是指将多帧、多传感器或多车采集的语义点云、局部地图与先验地图进行配准、关联和融合,形成一致、完整、可复用的全局语义地图。它通常包括位姿估计、点云配准、回环检测、地图更新与语义关联等环节。地图融合的目标不是简单叠加点云,而是让地图具备语义一致性、几何一致性和时间一致性。

在自动驾驶中,地图融合常用于高精地图构建与更新;在机器人中,它用于构建语义 SLAM 地图;在智慧城市中,它用于将多源点云整合为城市级三维底座。点云语义分割为地图融合提供“语义标签”,地图融合反过来为语义分割提供“全局上下文”,二者互为支撑。

三、整体知识框架

本课程共 30 章,整体可划分为五个模块:基础与数据、点云语义分割方法、地图融合方法、工程实践与优化、综合案例与复盘。下图展示了从原始点云到语义地图的完整知识链路。

从原始点云到语义地图:课程知识链路 数据与传感器 激光雷达 / 深度相机 标定 · 去畸变 · 滤波 KITTI / nuScenes / 自采 点云语义分割 PointNet / PointNet++ 稀疏卷积 · Transformer 损失函数 · 评价指标 地图融合 ICP / NDT / 特征配准 回环检测 · 位姿图优化 语义地图 · 地图更新 典型应用 自动驾驶 机器人导航 高精地图 工程实践与优化 数据增强 · 类别不平衡 · 模型压缩 · 推理加速 · 多帧融合 · 在线建图 · 评测与可视化 工具链:PyTorch3D · Open3D · PCL · MinkowskiEngine · ROS / Autoware 综合案例与复盘 城市道路语义建图 · 园区机器人语义 SLAM · 多车协同地图更新 常见误区:只追 mIoU 忽略实时性 · 配准初值不当 · 语义与几何不一致 · 忽略时间同步

四、学习目标

完成本课程后,学习者应达到以下目标:

  • 理解点云数据的基本表示、常见数据集与预处理流程;
  • 掌握 PointNet、PointNet++、稀疏卷积、Transformer 等主流语义分割网络的核心思想;
  • 能够独立完成点云语义分割模型的训练、评估与调参;
  • 理解 ICP、NDT、特征配准、回环检测与位姿图优化的原理与实现;
  • 能够将语义分割结果与地图进行融合,构建语义地图;
  • 具备工程化落地能力,包括实时性优化、多传感器同步与可视化调试。

五、典型应用场景

点云语义分割与地图融合的应用非常广泛,下表列出主要场景及其关注重点。

应用场景 核心任务 关注指标 典型挑战
自动驾驶感知 可行驶区域、车辆、行人分割 mIoU、延迟、召回率 远距离稀疏、雨雾干扰
高精地图构建 道路、车道线、交通设施语义建图 几何精度、语义一致性 多帧配准误差累积
机器人语义 SLAM 室内外语义地图与定位 定位精度、地图更新速度 动态物体、回环误检
智慧城市三维底座 建筑、植被、地面分类 覆盖完整度、分类精度 数据量巨大、多源异构
工业检测与测绘 部件分割、形变分析 毫米级精度、稳定性 小样本、类别不均衡

六、核心原理与方法流程

从原始点云到语义地图,典型流程可以概括为以下步骤:

  1. 数据采集与同步:激光雷达、相机、IMU、GNSS 时间对齐,获取带位姿的点云序列;
  2. 预处理:去畸变、降采样、地面分割、感兴趣区域裁剪;
  3. 语义分割:使用深度学习网络为每个点预测类别;
  4. 位姿估计与配准:通过 ICP、NDT 或学习式配准估计帧间位姿;
  5. 回环检测与全局优化:构建位姿图,消除累积误差;
  6. 语义融合与地图更新:将多帧语义点云融合为全局语义地图,并支持增量更新。

下面是一段使用 Open3D 进行点云读取与降采样的示例代码,帮助建立直观感受:

import open3d as o3d

# 读取点云
pcd = o3d.io.read_point_cloud("frame_0001.ply")
print("原始点数:", len(pcd.points))

# 体素降采样,降低计算量
down = pcd.voxel_down_sample(voxel_size=0.2)
print("降采样后点数:", len(down.points))

# 估计法向量,供后续配准使用
down.estimate_normals(
    search_param=o3d.geometry.KDTreeSearchParamHybrid(radius=0.5, max_nn=30)
)

# 可视化
o3d.visualization.draw_geometries([down])

学习建议:先跑通一个最小闭环——读取一帧点云、完成一次语义分割推理、与相邻帧做一次 ICP 配准。闭环跑通后,再逐步深入网络结构、损失函数和全局优化。

七、常见误区与复盘

初学者在本课程中容易陷入以下误区:

  • 只关注 mIoU:语义分割精度高不等于系统可用,实时性、内存占用和鲁棒性同样关键;
  • 忽略配准初值:ICP 对初值敏感,初值偏差过大时容易陷入局部最优;
  • 语义与几何脱节:分割结果若没有与几何配准结合,融合后会出现“语义漂移”;
  • 忽视时间同步:多传感器时间戳不一致会直接破坏地图一致性;
  • 过度依赖单一数据集:在 KITTI 上表现好,不代表在自采数据或雨雾场景中同样可靠。

复盘要点:每完成一个模块,都要问自己三个问题——输入输出是什么?误差从哪里来?如何量化评估?把这三个问题回答清楚,比记住某个网络结构更重要。