PETRV2-BEV模型训练实战:从数据准备到模型导出
1. 引言
自动驾驶技术正在快速发展,而基于视觉的三维目标检测是其中的关键技术之一。PETRV2-BEV模型作为当前先进的视觉感知方案,能够将多摄像头图像转换为鸟瞰图视角,实现精准的环境感知和目标检测。
本文将带你完整走通PETRV2-BEV模型的训练全流程,从环境准备、数据获取到模型训练和导出,每一步都有详细的代码示例和操作说明。无论你是自动驾驶领域的研究者还是工程师,都能通过本文学会如何快速上手和训练这个先进的BEV感知模型。
2. 环境准备与配置
2.1 进入Paddle3D环境
首先我们需要激活预配置好的Paddle3D环境:
conda activate paddle3d_env这个环境已经预装了PaddlePaddle深度学习框架和Paddle3D三维视觉库,为我们后续的训练工作做好了准备。
2.2 下载预训练权重
为了加速训练过程,我们使用官方提供的预训练权重作为起点:
wget -O /root/workspace/model.pdparams https://paddle3d.bj.bcebos.com/models/petr/petrv2_vovnet_gridmask_p4_800x320/model.pdparams这个预训练权重是在完整NuScenes数据集上训练得到的,包含了模型已经学习到的特征提取能力,能帮助我们在小数据集上更快收敛。
2.3 获取训练数据
我们使用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/nuscenes解压后的数据包含约40个驾驶场景,足够我们进行模型训练和验证的演示。
3. 数据预处理与准备
3.1 生成数据标注信息
PETRV2模型需要特定格式的数据标注文件,我们使用工具脚本生成:
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_val这个脚本会解析原始数据,生成模型训练所需的标注信息文件,包括图像路径、相机参数、3D边界框等信息。
3.2 验证环境配置
在开始训练前,我们先验证一下环境和预训练权重的效果:
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: 0.2669 mATE: 0.7448 mASE: 0.4621 mAOE: 1.4553 mAVE: 0.2500 mAAE: 1.0000 NDS: 0.2878 Eval time: 5.8s Per-class results: Object Class AP ATE ASE AOE AVE AAE car 0.446 0.626 0.168 1.735 0.000 1.000 truck 0.381 0.500 0.199 1.113 0.000 1.000 bus 0.407 0.659 0.064 2.719 0.000 1.000这个结果说明预训练模型已经具备了一定的检测能力,但还有很大的提升空间。
4. 模型训练与监控
4.1 启动模型训练
现在开始正式训练模型:
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_eval参数说明:
epochs 100:训练100个轮次batch_size 2:每次训练使用2个样本(根据GPU显存调整)learning_rate 1e-4:学习率设为0.0001save_interval 5:每5个epoch保存一次模型do_eval:训练过程中进行验证评估
4.2 监控训练过程
使用VisualDL工具实时查看训练曲线:
visualdl --logdir ./output/ --host 0.0.0.0如果需要在本地查看训练曲线,可以通过端口转发:
ssh -p 31264 -L 0.0.0.0:8888:localhost:8040 root@gpu-09rxs0pcu2.ssh.gpu.csdn.net然后在浏览器中访问http://localhost:8888即可看到损失函数下降曲线和评估指标变化情况。
5. 模型导出与推理
5.1 导出推理模型
训练完成后,将模型导出为部署格式:
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_model导出的模型包含:
model.pdmodel:模型结构文件model.pdiparams:模型权重文件deploy.yaml:模型配置文件
5.2 运行演示程序
使用导出的模型进行推理演示:
python tools/demo.py /root/workspace/nuscenes/ /root/workspace/nuscenes_release_model nuscenes这个演示程序会随机选择测试样本,显示模型的三维检测效果,包括在图像上的2D投影和在BEV视角下的3D检测框。
6. 扩展训练:XTREME1数据集
6.1 准备XTREME1数据
XTREME1数据集包含更多挑战性的驾驶场景:
cd /usr/local/Paddle3D rm /root/workspace/xtreme1_nuscenes_data/petr_nuscenes_annotation_* -f python3 tools/create_petr_nus_infos_from_xtreme1.py /root/workspace/xtreme1_nuscenes_data/6.2 训练XTREME1版本
使用相同的流程训练XTREME1数据集:
python tools/train.py \ --config configs/petr/petrv2_vovnet_gridmask_p4_800x320.yml \ --model /root/workspace/model.pdparams \ --dataset_root /root/workspace/xtreme1_nuscenes_data/ \ --epochs 100 \ --batch_size 2 \ --log_interval 10 \ --learning_rate 1e-4 \ --save_interval 5 \ --do_eval6.3 导出和测试
训练完成后同样导出模型并进行测试:
rm -rf /root/workspace/xtreme1_release_model mkdir /root/workspace/xtreme1_release_model python tools/export.py \ --config configs/petr/petrv2_vovnet_gridmask_p4_800x320.yml \ --model output/best_model/model.pdparams \ --save_dir /root/workspace/xtreme1_release_model python tools/demo.py /root/workspace/xtreme1_nuscenes_data/ /root/workspace/xtreme1_release_model xtreme17. 总结
通过本文的实践教程,我们完整掌握了PETRV2-BEV模型的训练流程:
- 环境准备:使用预配置的Paddle3D环境,省去繁琐的依赖安装
- 数据准备:下载和处理NuScenes数据集,生成训练所需的标注信息
- 模型训练:使用预训练权重加速收敛,监控训练过程确保效果
- 模型导出:将训练好的模型导出为部署格式,便于实际应用
- 效果验证:通过演示程序直观查看模型的检测效果
关键收获:
- 学会了如何快速上手先进的BEV感知模型
- 掌握了从数据准备到模型导出的完整流程
- 了解了如何监控和评估模型训练过程
- 获得了可实际部署的推理模型
这种方法不仅适用于PETRV2模型,也可以迁移到其他3D检测模型的训练中,为自动驾驶感知系统的开发提供了实用的技术方案。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。