星图AI算力应用:PETRV2-BEV持续集成
在自动驾驶感知系统中,基于视觉的3D目标检测技术正逐步成为核心模块。其中,PETR系列模型凭借其端到端的视角转换机制和强大的BEV(Bird's Eye View)表征能力,在NuScenes等主流数据集上展现出优异性能。本文聚焦于PETRV2-BEV模型的训练与部署全流程实践,结合星图AI算力平台提供的高效计算资源,实现从环境配置、数据准备、模型训练到推理导出的完整CI/CD流程。
通过本实践,开发者可快速掌握如何利用高性能AI算力平台完成复杂感知模型的迭代优化,并为后续自动化测试与生产部署提供标准化模板。
1. 准备环境
1.1 进入Paddle3D Conda环境
首先确保已正确安装并激活Paddle3D专用的Conda虚拟环境。该环境预装了PaddlePaddle深度学习框架及Paddle3D工具库所需依赖,是运行PETRV2-BEV模型的基础执行环境。
conda activate paddle3d_env提示:若未创建对应环境,请参考官方文档使用
conda env create -f environment.yml命令初始化。
2. 下载依赖
2.1 下载预训练权重
为加速模型收敛,采用官方发布的PETRV2-VoVNet结构在NuScenes全量数据上预训练的权重作为初始模型参数。该权重文件将用于微调阶段的参数初始化。
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版本进行快速验证与调试。该子集包含约5%的数据样本,适用于开发阶段的功能测试与性能评估。
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注意:解压路径需与后续配置文件中的
dataset_root保持一致,避免路径错误导致数据加载失败。
3. 训练NuScenes v1.0-mini数据集
3.1 准备数据集标注信息
PETRV2模型需要特定格式的BEV空间标注文件。通过执行Paddle3D内置脚本生成适用于当前任务的.pkl格式标注缓存。
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两个关键文件,分别用于训练与验证阶段的数据索引。
3.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分析:初始mAP为26.69%,NDS为28.78%,表明模型具备基本识别能力,但仍有较大提升空间,适合进一步微调。
3.3 启动模型训练
使用以下命令启动为期100个epoch的训练任务,配置小批量大小(batch_size=2)、学习率(1e-4)以及每5个epoch保存一次检查点的策略。
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训练过程中将自动记录Loss、mAP、NDS等指标至output/目录下的日志文件中,便于后续可视化分析。
3.4 可视化训练曲线
启用VisualDL工具实时监控训练过程中的损失变化与评估指标趋势。
visualdl --logdir ./output/ --host 0.0.0.03.5 配置远程访问端口转发
若在远程服务器上运行训练任务,可通过SSH隧道将本地8888端口映射至服务器8040端口(默认VisualDL服务端口),实现本地浏览器查看训练曲线。
ssh -p 31264 -L 0.0.0.0:8888:localhost:8040 root@gpu-09rxs0pcu2.ssh.gpu.csdn.net随后在本地访问http://localhost:8888即可查看动态更新的训练曲线。
3.6 导出Paddle Inference模型
训练完成后,将最优模型(通常位于output/best_model/)导出为静态图格式,供后续部署使用。
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三个文件,构成完整的推理包。
3.7 运行DEMO验证结果可视化
最后执行DEMO脚本,加载训练好的模型对NuScenes样本进行推理,并输出带有3D边界框的可视化图像。
python tools/demo.py /root/workspace/nuscenes/ /root/workspace/nuscenes_release_model nuscenes该命令将生成包含检测结果的图片或视频,直观展示模型在BEV空间中的检测效果。
4. 训练Xtreme1数据集(可选)
4.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/4.2 测试初始模型在Xtreme1上的表现
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 bus 0.000 1.000 1.000 1.000 1.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.000 1.280 0.444 1.611 0.000 1.000 motorcycle 0.000 1.000 1.000 1.000 1.000 1.000 bicycle 0.000 1.000 1.000 1.000 1.000 1.000 traffic_cone 0.000 1.000 1.000 nan nan nan barrier 0.000 1.000 1.000 1.000 nan nan说明:由于模型未经适配,直接应用于Xtreme1时性能极低(mAP=0),需通过领域自适应或重新训练提升表现。
4.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_eval4.4 导出Xtreme1专用推理模型
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_model4.5 执行Xtreme1 DEMO可视化
python tools/demo.py /root/workspace/xtreme1_nuscenes_data/ /root/workspace/xtreme1_release_model xtreme1获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。