4. 深度学习基础
在激光雷达点云语义分割与跟踪任务中,深度学习模型是核心引擎。理解神经网络的基本结构、卷积与点云网络的差异、损失函数的设计以及优化器与训练技巧,是构建高性能模型的前提。本章将围绕这四个方面展开,帮助读者建立从理论到工程落地的完整认知。
一、神经网络基础:从感知机到多层特征提取
神经网络的基本单元是神经元,它接收输入向量 x,通过权重 W 和偏置 b 进行线性变换,再经过非线性激活函数 σ 得到输出:y = σ(Wx + b)。多个神经元组成全连接层,多层堆叠形成深度网络。在点云任务中,常用的激活函数包括 ReLU、LeakyReLU 和 GELU,其中 ReLU 因计算简单、缓解梯度消失而被广泛使用。
前向传播计算预测值,反向传播利用链式法则计算梯度,再通过优化器更新参数。这一过程构成了深度学习的训练闭环。对于点云语义分割,网络需要同时输出每个点的类别概率,因此输出层通常采用 Softmax 或 Sigmoid 激活。
核心公式:反向传播中,第 l 层的梯度为 δl = (Wl+1)T δl+1 ⊙ σ'(zl),其中 ⊙ 表示逐元素相乘。理解该公式有助于诊断梯度消失或爆炸问题。
二、卷积与点云网络:从规则网格到无序点集
二维卷积在图像上通过滑动窗口提取局部特征,具有平移不变性和参数共享的优势。然而,激光雷达点云是无序、稀疏且非均匀分布的三维点集,直接套用二维卷积并不合适。为此,研究者提出了多种点云网络架构:
- PointNet:通过共享多层感知机(MLP)和对称函数(最大池化)处理无序点集,实现置换不变性。
- PointNet++:引入分层采样与分组,逐步提取局部几何特征,增强对复杂场景的适应能力。
- 稀疏卷积网络:如 MinkowskiNet、SPVCNN,将点云体素化后仅在非空体素上计算卷积,大幅提升效率。
- Transformer 类方法:利用自注意力机制捕捉长距离依赖,适用于大场景语义分割。
下图展示了从二维卷积到点云网络的典型结构对比,帮助读者直观理解不同网络对数据组织方式的依赖。
三、损失函数:语义分割与跟踪的优化目标
损失函数衡量模型预测与真实标签之间的差异。在点云语义分割中,常用的损失函数包括:
| 损失函数 | 适用场景 | 特点 |
|---|---|---|
| 交叉熵损失(CE) | 多分类语义分割 | 计算简单,但对类别不平衡敏感 |
| 加权交叉熵 | 类别不平衡点云 | 通过权重调节稀有类别贡献 |
| Focal Loss | 极端不平衡场景 | 降低易分类样本权重,聚焦难样本 |
| Dice Loss | 分割重叠度优化 | 直接优化 IoU,适合小目标 |
| Lovász-Softmax | IoU 直接优化 | 凸 surrogate,训练稳定 |
在跟踪任务中,损失函数通常结合分类损失和回归损失。例如,CenterPoint 使用高斯热图焦点损失进行中心点检测,再通过 L1 损失回归尺寸和朝向。多任务学习时,需平衡各损失项的权重,避免某一任务主导训练。
工程建议:对于激光雷达点云,建议先使用加权交叉熵或 Focal Loss 处理类别不平衡,再在验证集上观察 IoU 变化。若小目标(如行人、自行车)分割效果差,可引入 Dice Loss 或 Lovász-Softmax 进行联合优化。
四、优化器与训练技巧:从 SGD 到 AdamW
优化器决定参数更新策略。随机梯度下降(SGD)及其动量版本是经典选择,而 Adam 系列因自适应学习率在点云任务中表现优异。AdamW 通过解耦权重衰减,进一步提升了泛化能力。以下是一个典型的训练配置示例:
optimizer = AdamW(model.parameters(), lr=1e-3, weight_decay=1e-4)
scheduler = CosineAnnealingLR(optimizer, T_max=50, eta_min=1e-6)
criterion = nn.CrossEntropyLoss(weight=class_weights)
for epoch in range(50):
model.train()
for points, labels in train_loader:
optimizer.zero_grad()
pred = model(points)
loss = criterion(pred, labels)
loss.backward()
torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)
optimizer.step()
scheduler.step()
训练技巧方面,以下几点尤为关键:
- 学习率预热:前几个 epoch 从极小学习率线性增长,避免初期梯度震荡。
- 梯度裁剪:限制梯度范数,防止点云稀疏区域梯度爆炸。
- 数据增强:随机旋转、缩放、抖动、混合采样,提升模型鲁棒性。
- 类别平衡采样:对稀有类别过采样,或使用加权损失。
- 混合精度训练:使用 AMP 减少显存占用,加速训练。
- 模型集成与 EMA:指数移动平均平滑参数,提升验证集表现。
常见误区:盲目增大 batch size 而不调整学习率,可能导致收敛变慢;忽略点云密度差异,直接使用统一体素尺寸,会丢失小目标细节;在验证集上过早停止训练,可能错过最佳泛化点。建议结合学习率调度和早停策略,并监控 mIoU 与每类 IoU。
五、案例复盘:城市道路点云语义分割训练
以 SemanticKITTI 数据集为例,使用 SPVCNN 作为骨干网络,输入为 64 线激光雷达点云。训练配置:AdamW 优化器,初始学习率 1e-3,余弦退火至 1e-6,权重衰减 1e-4,batch size 为 8,训练 50 个 epoch。损失函数采用加权交叉熵与 Lovász-Softmax 联合,权重分别为 0.7 和 0.3。数据增强包括随机旋转(±180°)、缩放(0.95~1.05)和点抖动(σ=0.01)。
训练过程中,前 5 个 epoch 使用线性预热,梯度裁剪阈值设为 1.0。最终在验证集上达到 mIoU 68.5%,其中道路、建筑物、车辆类别 IoU 均超过 85%,但行人和自行车类别 IoU 仅为 52% 和 48%。复盘发现,行人和自行车点云稀疏且样本少,后续通过增加过采样和引入 Focal Loss 后,两类 IoU 分别提升至 61% 和 57%。
关键结论:点云语义分割的训练效果不仅取决于网络结构,更依赖于损失函数与优化器的匹配、数据增强策略以及类别不平衡处理。工程中应建立“训练-验证-分析-调参”的闭环,持续迭代。