PETRV2-BEV模型训练:环境配置与依赖安装详细步骤
1. 训练PETRV2-BEV模型概述
随着自动驾驶技术的快速发展,基于视觉的三维目标检测方法逐渐成为研究热点。PETR系列模型通过将相机视角(perspective view)特征映射到鸟瞰图(BEV, Bird's Eye View),实现了端到端的多模态感知能力。其中,PETRV2作为其升级版本,在NuScenes数据集上表现出优异的性能。
本文聚焦于PETRV2-BEV模型的实际训练流程,涵盖从环境准备、依赖下载、数据处理、模型训练到结果可视化的完整工程链路。特别地,我们将结合星图AI算力平台进行实操演示,确保读者能够在真实计算环境中快速复现并部署该模型。
本教程适用于具备一定深度学习基础、希望在Paddle3D框架下开展BEV感知任务的研究者和工程师。
2. 使用星图AI算力平台训练PETRV2-BEV模型
星图AI算力平台为开发者提供了高性能GPU资源与预置深度学习环境,极大简化了复杂模型的部署过程。通过该平台,用户可一键启动搭载PaddlePaddle及Paddle3D的容器实例,避免繁琐的底层依赖配置。
使用星图平台的优势包括:
- 预装CUDA、cuDNN、PaddlePaddle等核心组件
- 支持自定义Conda环境隔离管理
- 提供VisualDL可视化服务支持
- 可灵活挂载存储空间用于模型与数据集管理
接下来,我们将在该平台上逐步完成PETRV2-BEV模型的训练全流程。
3. 环境准备与依赖安装
3.1 进入paddle3d_env conda环境
首先,确保已成功连接至星图平台提供的远程实例,并激活Paddle3D专用的Conda环境:
conda activate paddle3d_env此环境已预装PaddlePaddle 2.5+以及Paddle3D开发库,包含PETR系列模型所需的全部模块。若未自动创建该环境,请参考官方文档手动构建。
提示:可通过
conda env list查看当前可用环境,确认paddle3d_env存在。
4. 下载必要依赖文件
4.1 下载预训练权重
为了加速训练收敛,我们采用官方发布的PETRV2预训练权重作为初始化参数。执行以下命令将其保存至工作目录:
wget -O /root/workspace/model.pdparams https://paddle3d.bj.bcebos.com/models/petr/petrv2_vovnet_gridmask_p4_800x320/model.pdparams该权重基于VOVNet主干网络并在NuScenes全量数据集上训练得到,适合作为微调起点。
4.2 下载nuscenes v1.0-mini数据集
使用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解压后,数据结构应包含:
samples/:原始传感器数据sweeps/:扩展帧序列maps/:高清地图信息v1.0-mini/:标注元信息JSON文件
5. 在NuScenes v1.0-mini数据集上训练模型
5.1 准备数据集标注信息
Paddle3D需特定格式的info文件以支持PETR模型输入。进入Paddle3D根目录并生成对应annotation文件:
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该脚本会生成petr_nuscenes_annotation_train.pkl和petr_nuscenes_annotation_val.pkl,分别用于训练与验证阶段。
5.2 测试初始模型精度
加载预训练权重对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: 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 trailer 0.000 1.000 1.000 1.000 1.000 1.000 construction_vehicle 0.000 1.000 1.000 1.000 1.000 1.000 pedestrian 0.378 0.737 0.263 1.259 0.000 1.000 motorcycle 0.356 0.748 0.314 1.410 0.000 1.000 bicycle 0.063 0.760 0.236 1.862 0.000 1.000 traffic_cone 0.637 0.418 0.377 nan nan nan barrier 0.000 1.000 1.000 1.000 nan nan说明:由于mini集样本有限且类别分布不均,部分类别AP为0属正常现象。
5.3 启动模型训练
使用以下命令开始微调训练,关键参数说明如下:
--epochs 100:最大训练轮数--batch_size 2:每卡批量大小(受限于显存)--learning_rate 1e-4:初始学习率--do_eval:每个保存周期后执行验证
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训练日志将保存在output/目录下,默认路径为output/petrv2_vovnet_gridmask_p4_800x320_nuscene/。
5.4 可视化训练曲线
利用VisualDL工具实时监控Loss与Metric变化趋势:
visualdl --logdir ./output/ --host 0.0.0.0随后通过SSH端口转发访问Web界面:
ssh -p 31264 -L 0.0.0.0:8888:localhost:8040 root@gpu-09rxs0pcu2.ssh.gpu.csdn.net浏览器打开http://localhost:8888即可查看:
- Total Loss下降趋势
- mAP、NDS等指标演化
- 学习率调度曲线
5.5 导出推理模型
训练完成后,导出静态图模型以便后续部署:
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导出内容包括:
inference.pdmodel:网络结构inference.pdiparams:模型权重inference.pdiparams.info:参数描述
5.6 运行DEMO验证效果
最后运行可视化demo,展示检测结果:
python tools/demo.py /root/workspace/nuscenes/ /root/workspace/nuscenes_release_model nuscenes程序将随机选取测试图像,叠加BEV检测框并生成融合视角效果图,可用于直观评估模型表现。
6. 训练xtreme1数据集(可选扩展)
若需迁移至其他数据集如xtreme1(极端天气场景),可参照以下流程。
6.1 准备xtreme1数据集
假设数据已上传至/root/workspace/xtreme1_nuscenes_data/,生成适配info文件:
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 测试初始精度
加载相同预训练权重进行零样本推理:
python tools/evaluate.py \ --config configs/petr/petrv2_vovnet_gridmask_p4_800x320.yml \ --model /root/workspace/model.pdparams \ --dataset_root /root/workspace/xtreme1_nuscenes_data/输出示例:
mAP: 0.0000 mATE: 1.0703 mASE: 0.8296 mAOE: 1.0807 mAVE: 0.6250 mAAE: 1.0000 NDS: 0.0545 Eval time: 0.5s Per-class results: Object Class AP ATE ASE AOE AVE AAE car 0.000 1.308 0.232 2.074 0.000 1.000 truck 0.000 1.114 0.621 0.042 0.000 1.000 ...可见跨域性能显著下降,需进一步微调。
6.3 执行训练
启动针对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.4 导出模型
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_model6.5 运行DEMO
python tools/demo.py /root/workspace/xtreme1_nuscenes_data/ /root/workspace/xtreme1_release_model xtreme1获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。