1、引言:空间模型与参数优化的重要性

做空间模型训练,说白了就是教算法理解三维世界。点云、网格、体素,这几年在自动驾驶、机器人、AR/VR 遍地开花。但模型不是扔进去就能跑的。

参数优化,才是真正区分“跑起来”和“跑得好”的分水岭。我入行那会儿,接过一个室内场景分割项目,一个 batch 可以跑,loss 就是下不去。当时我盯着曲线看了三天,试了十几种学习率,最后发现 optim `eps` 设错了——这类问题,不做参数优化你根本找不到根因。

为什么参数优化这么重要?

答案很直白:空间模型比图像模型更“敏感”。

  • 数据稀疏性——点云通常几万到几十万点,无效点、离群点、遮挡点都会扰动梯度方向。
  • 内存压力——3D 运算动辄数 G GPU 显存,batch size 调大一点就可能 OOM。
  • 收敛曲线诡异——我见过不少 PointNet++ 变体,训练 loss 正常但验证 mIoU 迟迟不涨。后来发现是学习率预热没做,一上来步子太大,直接踩到局部洼地。

所以参数优化不是锦上添花。它是让模型从“能用”变成“好用”的核心杠杆。

你想想看,我们其实在调控什么?

每一个超参数背后,都在平衡“学习速度”和“泛化能力”。调得太激进,loss 爆炸;调得太保守,收敛比便秘还慢。我记得有一次用 PointGroup 做实例分割,默认参数在 S3DIS 上 mAP 有 45,换到自己的扫描数据直接掉到 23。折腾一周后,把 learning rate 从 1e-3 降到 5e-4,batch size 从 4 改成 8,再加 cosine annealing——mAP 回到 41。你敢信?就是几个数字的事。

空间模型训练参数优化流程 数据准备 采样/体素化/增强 模型选型 PointNet++ / 3DCNN / GNN 超参数设置 lr / batch / optim / scheduler 训练 & 监控 loss / mIoU / 梯度 调优迭代 超参搜索 / 早停 / 重训 评估 & 部署 测试集 / 推理优化 💡 每个环节参数不同 组合效应远超想象

参数优化到底优化哪些东西?

咱们理一理,常见的参数维度至少包含下面这些。表格里是我个人常用的参考区间——注意:每套数据、每个模型都得重新试。

参数类别典型参数影响范围我常踩的坑
学习率与调度lr, warmup steps, cosine decay收敛速度、最终精度lr 给太大,loss 直接就 NaN
批量大小batch size梯度方差、内存点云 batch > 8 经常 OOM
优化器超参β₁, β₂, weight decay稳定性、泛化weight decay 设太大,准确率掉 3%~5%
正则化dropout, label smooth过拟合PointNet 加 dropout 反而更差
模型结构参数KNN 邻居数、体素分辨率感受野、计算量邻居太多显存爆炸

一个经验法则:先固定其他参数,只调学习率。等 loss 能稳定下降后,再动 batch size 和优化器。我试过同时调三个参数,完全分不清谁在起作用。

避坑指南

  • 千万不要照搬论文里的超参数。数据集不同,最优参数可能差一个数量级。
  • 我曾经以为 cosine annealing 一定比 step decay 好。后来发现对于小模型(比如 PointNet 轻量版),step decay 收敛更快。具体问题具体分析。
  • 监控梯度范数。空间模型梯度容易爆炸,我习惯在训练脚本里输出 grad norm。如果超过 10,说明学习率或 batch size 有问题。

一个小技巧:先跑 5~10 个 epoch,看 loss 下降趋势。如果 loss 震荡很大,先降学习率;如果 loss 降得很慢,考虑换优化器或增预热阶段。我一般用 AdamW + cosine + 5% 的预热。

写在前面

本书不会告诉你“万能参数”——那不存在。但我会把多年实战总结的调优框架、调试套路、常见模型的参数规律掰开揉碎讲清楚。读完第一章,你至少要知道:

  1. 参数优化是空间模型训练的“下半场”。
  2. 每个参数都有 trade-off,没有银弹。
  3. 监控 + 系统调优,远比盲目试参数高效。

好,后面我们一章章展开。先从最基础的学习率开始。