1. 课程导入
欢迎进入《激光雷达3D目标检测工程》课程。激光雷达(LiDAR,Light Detection and Ranging)通过发射激光束并测量回波时间,直接获取环境中物体表面的三维坐标,形成高精度的点云数据。所谓激光雷达3D目标检测,就是从这些无序、稀疏、密度不均的三维点云中,识别出感兴趣目标(如车辆、行人、骑行者、锥桶等),并估计其三维位置、尺寸、朝向和类别。与图像2D检测相比,它多出了深度、高度和姿态信息,是自动驾驶环境感知的核心能力之一。
理解这一任务,需要抓住三个关键词:三维空间、点云表示和目标属性回归。三维空间意味着检测结果通常以(x, y, z, l, w, h, yaw)七维参数描述;点云表示意味着输入不是规则网格,而是由数万到数十万个点构成的集合;目标属性回归意味着网络不仅要判断“是什么”,还要精确估计“在哪里、多大、朝哪边”。
一、核心原理:从点到框的映射
激光雷达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检测流水线通常包含以下环节:
- 数据采集与标定:获取激光雷达点云、相机图像、IMU/GNSS 位姿,并完成传感器外参标定。
- 点云预处理:去畸变、地面分割、ROI 裁剪、降采样,减少无效计算。
- 特征编码:体素化、柱体化或点集采样,将无序点云转为网络可处理的张量。
- 骨干网络与 Neck:提取多尺度特征,常用 3D 稀疏卷积或 2D BEV 卷积。
- 检测头:输出类别热力图、中心偏移、尺寸和朝向回归量。
- 后处理:NMS、置信度过滤、框解码,输出最终3D框。
- 跟踪与融合:多帧关联得到稳定轨迹,必要时与相机、毫米波雷达结果融合。
下面是一段典型的点云预处理与体素化伪代码,帮助建立工程直觉:
# 伪代码:点云 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 | 重复精度、稳定触发 | 反光材质、粉尘干扰 |