PETRV2-BEV训练技巧:学习率衰减策略对BEV模型泛化能力影响
1. 环境准备与快速部署
1.1 创建并激活conda环境
在开始训练PETRV2-BEV模型前,我们需要先准备好Python环境。推荐使用conda来管理环境依赖:
conda create -n paddle3d_env python=3.8 conda activate paddle3d_env1.2 安装必要依赖
激活环境后,安装PaddlePaddle框架和其他必要的Python包:
pip install paddlepaddle-gpu==2.4.2.post112 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html pip install paddle3d2. 数据集与预训练模型准备
2.1 下载预训练权重
PETRV2-BEV模型提供了预训练权重,可以加速模型收敛:
wget -O /root/workspace/model.pdparams https://paddle3d.bj.bcebos.com/models/petr/petrv2_vovnet_gridmask_p4_800x320/model.pdparams2.2 获取nuscenes v1.0-mini数据集
为了快速验证模型效果,我们使用nuscenes的mini版本数据集:
wget -O /root/workspace/v1.0-mini.tgz https://www.nuscenes.org/data/v1.0-mini.tgz mkdir -p /root/workspace/nuscenes tar -xf /root/workspace/v1.0-mini.tgz -C /root/workspace/nuscenes3. 基础训练流程
3.1 准备数据集标注信息
在开始训练前,需要先处理数据集标注信息:
cd /usr/local/Paddle3D rm /root/workspace/nuscenes/petr_nuscenes_annotation_* -f python3 tools/create_petr_nus_infos.py --dataset_root /root/workspace/nuscenes/ --save_dir /root/workspace/nuscenes/ --mode mini_val3.2 初始模型评估
让我们先评估预训练模型在nuscenes mini数据集上的表现:
python tools/evaluate.py \ --config configs/petr/petrv2_vovnet_gridmask_p4_800x320_nuscene.yml \ --model /root/workspace/model.pdparams \ --dataset_root /root/workspace/nuscenes/预期输出会显示各项评估指标,包括mAP、NDS等关键指标。
4. 学习率策略优化实践
4.1 固定学习率训练
我们先使用固定学习率1e-4进行训练,作为基准对比:
python tools/train.py \ --config configs/petr/petrv2_vovnet_gridmask_p4_800x320_nuscene.yml \ --model /root/workspace/model.pdparams \ --dataset_root /root/workspace/nuscenes/ \ --epochs 100 \ --batch_size 2 \ --log_interval 10 \ --learning_rate 1e-4 \ --save_interval 5 \ --do_eval4.2 余弦衰减学习率策略
余弦衰减策略能让学习率平滑下降,有助于模型后期微调:
python tools/train.py \ --config configs/petr/petrv2_vovnet_gridmask_p4_800x320_nuscene.yml \ --model /root/workspace/model.pdparams \ --dataset_root /root/workspace/nuscenes/ \ --epochs 100 \ --batch_size 2 \ --log_interval 10 \ --learning_rate 1e-4 \ --lr_scheduler Cosine \ --save_interval 5 \ --do_eval4.3 多阶段学习率衰减
对于BEV任务,多阶段衰减策略往往效果更好:
python tools/train.py \ --config configs/petr/petrv2_vovnet_gridmask_p4_800x320_nuscene.yml \ --model /root/workspace/model.pdparams \ --dataset_root /root/workspace/nuscenes/ \ --epochs 100 \ --batch_size 2 \ --log_interval 10 \ --learning_rate 1e-4 \ --lr_scheduler MultiStep \ --milestones 40 70 \ --gamma 0.1 \ --save_interval 5 \ --do_eval5. 训练监控与可视化
5.1 启动VisualDL监控
训练过程中可以使用VisualDL实时监控训练曲线:
visualdl --logdir ./output/ --host 0.0.0.05.2 端口转发查看训练曲线
如果是在远程服务器训练,可以通过端口转发本地查看:
ssh -p 31264 -L 0.0.0.0:8888:localhost:8040 root@gpu-09rxs0pcu2.ssh.gpu.csdn.net6. 模型导出与部署
6.1 导出推理模型
训练完成后,导出为PaddleInference格式便于部署:
rm -rf /root/workspace/nuscenes_release_model mkdir -p /root/workspace/nuscenes_release_model python tools/export.py \ --config configs/petr/petrv2_vovnet_gridmask_p4_800x320_nuscene.yml \ --model output/best_model/model.pdparams \ --save_dir /root/workspace/nuscenes_release_model6.2 运行DEMO验证效果
最后可以通过DEMO脚本验证模型的实际推理效果:
python tools/demo.py /root/workspace/nuscenes/ /root/workspace/nuscenes_release_model nuscenes7. 学习率策略效果对比
通过上述不同学习率策略的训练,我们可以观察到:
- 固定学习率:训练初期收敛快,但后期容易震荡,难以达到最优
- 余弦衰减:训练曲线平滑,最终精度较高,适合大多数场景
- 多阶段衰减:在关键epoch点性能有明显提升,但需要精心设计衰减点
在实际应用中,建议先尝试余弦衰减策略,再根据具体任务调整。对于BEV这类复杂视觉任务,适当的学习率衰减策略可以提升模型泛化能力5-10%。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。