1. 课程导入

欢迎进入《激光雷达3D目标检测工程》课程。激光雷达(LiDAR,Light Detection and Ranging)通过发射激光束并测量回波时间,直接获取环境中物体表面的三维坐标,形成高精度的点云数据。所谓激光雷达3D目标检测,就是从这些无序、稀疏、密度不均的三维点云中,识别出感兴趣目标(如车辆、行人、骑行者、锥桶等),并估计其三维位置、尺寸、朝向和类别。与图像2D检测相比,它多出了深度、高度和姿态信息,是自动驾驶环境感知的核心能力之一。

理解这一任务,需要抓住三个关键词:三维空间、点云表示和目标属性回归。三维空间意味着检测结果通常以(x, y, z, l, w, h, yaw)七维参数描述;点云表示意味着输入不是规则网格,而是由数万到数十万个点构成的集合;目标属性回归意味着网络不仅要判断“是什么”,还要精确估计“在哪里、多大、朝哪边”。

激光雷达3D目标检测:从点云到三维框 定义 · 发展 · 场景 · 学习路线 ① 激光雷达点云 旋转式 / 固态 / 半固态 x, y, z, intensity, time 稀疏 · 无序 · 密度不均 ② 点云表示与编码 体素化 / 柱体化 / 点集 BEV 鸟瞰图特征 PointNet / VoxelNet / Pillar ③ 3D 检测头 类别 + 3D 框回归 x, y, z, l, w, h, yaw Anchor / Anchor-free ④ 输出 3D 边界框 置信度 跟踪 ID 发展历程:从手工特征到端到端深度学习 2014 前 聚类 + SVM 2015-2017 体素 CNN 起步 2018-2019 PointPillars / SECOND 2020-2021 CenterPoint / PV-RCNN 2022-2023 Transformer / 多模态 2024 至今 端到端 / 大模型 典型应用场景 自动驾驶 机器人导航 智慧交通 高精地图 无人机测绘 工业检测 课程学习路线 基础:点云与坐标系 核心:检测网络与损失 工程:数据、训练、部署 进阶:多模态与端到端

一、核心原理:从点到框的映射

激光雷达3D目标检测的本质,是学习一个从点云集合到三维边界框集合的映射函数。设点云为 P = {p₁, p₂, …, pₙ},每个点 pᵢ = (xᵢ, yᵢ, zᵢ, rᵢ),其中 rᵢ 可表示反射强度。检测器需要输出一组框 B = {b₁, b₂, …, bₘ},每个框 bⱼ = (x, y, z, l, w, h, θ, c),分别表示中心坐标、长宽高、偏航角和类别置信度。

由于点云无序且稀疏,主流方法通常先做空间离散化:将三维空间划分为体素(Voxel)或柱体(Pillar),再对每个单元内的点做特征聚合,最后用2D或3D卷积网络提取特征。另一类方法直接对原始点集做操作,如 PointNet 系列,保留更精细的几何信息,但计算效率通常较低。工程中常根据算力、精度和实时性要求做取舍。

关键认知:3D检测的难点不在“分类”,而在“定位”。一个类别判断错误可能只影响一个目标,但一个朝向角(yaw)估计错误,可能导致下游规划控制做出完全相反的决策。

二、方法流程:一条完整的检测流水线

无论具体网络如何变化,工程中的3D检测流水线通常包含以下环节:

  1. 数据采集与标定:获取激光雷达点云、相机图像、IMU/GNSS 位姿,并完成传感器外参标定。
  2. 点云预处理:去畸变、地面分割、ROI 裁剪、降采样,减少无效计算。
  3. 特征编码:体素化、柱体化或点集采样,将无序点云转为网络可处理的张量。
  4. 骨干网络与 Neck:提取多尺度特征,常用 3D 稀疏卷积或 2D BEV 卷积。
  5. 检测头:输出类别热力图、中心偏移、尺寸和朝向回归量。
  6. 后处理:NMS、置信度过滤、框解码,输出最终3D框。
  7. 跟踪与融合:多帧关联得到稳定轨迹,必要时与相机、毫米波雷达结果融合。

下面是一段典型的点云预处理与体素化伪代码,帮助建立工程直觉:

# 伪代码:点云 ROI 裁剪 + 体素化
points = load_lidar_frame("frame_0001.bin")   # N x 4, (x, y, z, intensity)
points = remove_ground(points)                 # 地面分割
points = crop_roi(points, x_range=(-50, 50),
                  y_range=(-50, 50),
                  z_range=(-3, 5))             # ROI 裁剪
voxels = voxelize(points,
                  voxel_size=(0.1, 0.1, 0.2),
                  max_points_per_voxel=32)     # 体素化
features = voxel_encoder(voxels)               # 体素特征编码
detections = detector(features)                # 3D 检测头
detections = nms_3d(detections, iou_thresh=0.1)

三、应用场景:3D检测在哪里发挥作用

激光雷达3D目标检测并非只服务于自动驾驶。下表列出典型场景及其对检测能力的关键要求:

应用场景 典型目标 关键要求 常见挑战
自动驾驶 车辆、行人、骑行者、锥桶 高召回、低延迟、朝向准确 遮挡、远距离稀疏、雨雾噪声
机器人导航 障碍物、货架、人员 实时避障、小目标敏感 室内结构复杂、动态目标多
智慧交通 车流、行人、交通事件 大范围覆盖、多目标跟踪 路侧视角差异、标定漂移
高精地图 路沿、杆状物、标牌 几何精度高、语义一致 长距离建图、动态过滤
工业检测 工件、托盘、AGV 重复精度、稳定触发 反光材质、粉尘干扰

四、误区与复盘:初学者最容易踩的坑

误区一:把3D检测当成2D检测的简单扩展。点云没有规则像素网格,直接套用2D卷积会丢失几何结构。体素化粒度、点云范围、坐标系定义都会显著影响结果。
误区二:只看 mAP,不看朝向和定位误差。在自动驾驶中,一个 mAP 很高但 yaw 误差大的模型,可能让车辆误判对向车道的行驶方向。工程评估必须同时关注中心距离误差、尺寸误差和朝向误差。
复盘建议:每做完一次实验,固定记录四项内容——数据版本、体素参数、训练轮次、失败案例可视化。3D检测的调参空间很大,没有记录就无法复现和归因。