亲测PETRV2-BEV模型:nuscenes数据集训练效果全记录
1. 实验背景与目标
随着自动驾驶技术的快速发展,基于视觉的三维目标检测方法逐渐成为研究热点。其中,PETR系列模型凭借其将相机外参信息直接注入Transformer结构的设计,在BEV(Bird's Eye View)感知任务中表现出色。本文基于星图AI算力平台提供的“训练PETRV2-BEV模型”镜像环境,完整复现了PETRV2在nuScenes数据集上的训练流程,并对关键步骤、性能指标及可视化结果进行了系统性记录与分析。
本次实验的核心目标包括:
- 验证预置镜像环境中Paddle3D框架的可用性
- 完成PETRV2模型在nuScenes mini子集上的端到端训练与评估
- 分析模型精度表现并导出可部署的推理模型
- 探索不同数据集迁移训练的可行性(xtreme1)
通过本实践,读者可掌握从环境配置、数据准备到模型训练、评估和部署的全流程操作,为后续BEV感知系统的开发提供参考。
2. 环境准备与依赖安装
2.1 激活Conda环境
首先进入Paddle3D专用的conda环境:
conda activate paddle3d_env该环境已预装PaddlePaddle深度学习框架及相关依赖库,确保后续训练过程稳定运行。
2.2 下载预训练权重
使用以下命令下载PETRV2-VoVNet主干网络对应的预训练参数:
wget -O /root/workspace/model.pdparams https://paddle3d.bj.bcebos.com/models/petr/petrv2_vovnet_gridmask_p4_800x320/model.pdparams此权重文件是模型初始化的关键,能够显著提升收敛速度并改善最终性能。
2.3 获取nuScenes数据集
nuScenes v1.0-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解压后目录结构应包含maps/,samples/,sweeps/, 和v1.0-mini/等标准子目录。
3. 数据处理与模型评估
3.1 生成标注信息文件
在正式训练前,需将原始nuScenes数据转换为PETR模型所需的格式。切换至Paddle3D根目录并执行脚本:
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该脚本会生成两个JSON文件:
petr_nuscenes_annotation_mini_train.json:训练集标注petr_nuscenes_annotation_mini_val.json:验证集标注
这些文件包含了图像路径、标定参数、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| Object Class | AP | ATE | ASE | AOE |
|---|---|---|---|---|
| car | 0.446 | 0.626 | 0.168 | 1.735 |
| truck | 0.381 | 0.500 | 0.199 | 1.113 |
| bus | 0.407 | 0.659 | 0.064 | 2.719 |
| pedestrian | 0.378 | 0.737 | 0.263 | 1.259 |
| motorcycle | 0.356 | 0.748 | 0.314 | 1.410 |
| bicycle | 0.063 | 0.760 | 0.236 | 1.862 |
| traffic_cone | 0.637 | 0.418 | 0.377 | nan |
核心观察:模型在car、truck、bus和pedestrian类别上具备一定检测能力(AP > 0.35),但在bicycle和障碍物类别的识别能力较弱。整体NDS为0.2878,表明尚有较大优化空间。
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:最大训练轮数--batch_size 2:受限于显存容量,采用小批量训练--learning_rate 1e-4:初始学习率--do_eval:每保存一次模型即执行验证集评估
4.2 可视化训练曲线
训练过程中可通过VisualDL工具实时查看Loss变化趋势:
visualdl --logdir ./output/ --host 0.0.0.0结合SSH端口转发实现远程访问:
ssh -p 31264 -L 0.0.0.0:8888:localhost:8040 root@gpu-09rxs0pcu2.ssh.gpu.csdn.net打开本地浏览器访问http://localhost:8888即可查看:
- Total Loss下降趋势
- Detection Loss分项(分类、回归)
- Learning Rate衰减曲线
- Validation mAP变化情况
典型现象:前20个epoch Loss快速下降,之后趋于平缓;mAP在第40轮左右达到饱和。
5. 模型导出与推理演示
5.1 导出Paddle Inference模型
训练完成后,将最佳模型导出为静态图格式,便于部署:
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.2 运行DEMO进行可视化
执行推理脚本并在指定目录下生成可视化结果:
python tools/demo.py /root/workspace/nuscenes/ /root/workspace/nuscenes_release_model nuscenes输出示例图片将展示:
- 多视角摄像头输入融合后的BEV特征图
- 检测到的车辆、行人等目标及其3D边框
- 类别标签与置信度分数
提示:可通过调整
demo.py中的阈值参数控制检测灵敏度。
6. 跨数据集迁移训练尝试(xtreme1)
6.1 xtreme1数据集适配
xtreme1是一个面向极端天气条件的自动驾驶数据集。尝试将其用于PETRV2训练:
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所有类别AP均为0,说明预训练模型完全无法适应xtreme1的数据分布。
6.3 训练建议
尽管初始精度极低,但仍可尝试继续训练:
- 建议增加数据增强策略(如随机雾化、雨滴模拟)
- 使用更长的warm-up周期应对域差异
- 引入自监督预训练缓解标注稀缺问题
当前阶段不推荐直接迁移应用,需针对性地重新设计训练策略。
7. 总结
本文详细记录了在星图AI算力平台上训练PETRV2-BEV模型的全过程,涵盖环境搭建、数据处理、模型训练、评估与部署等关键环节。主要成果如下:
- 成功复现训练流程:基于预置镜像完成nuScenes mini子集上的端到端训练,验证了平台可用性。
- 获得合理性能基线:初始mAP达0.2669,经充分训练后有望突破0.35+。
- 实现模型导出与推理:生成可用于嵌入式部署的Paddle Inference模型,并完成可视化验证。
- 揭示跨域挑战:在xtreme1数据集上表现不佳,凸显了实际场景中域适应的重要性。
未来工作方向建议:
- 尝试更大规模的nuScenes full训练
- 探索知识蒸馏或自监督预训练提升泛化能力
- 结合TensorRT加速推理,满足车载实时性需求
整个实验表明,PETRV2架构具有良好的工程落地潜力,配合成熟的工具链可高效推进BEV感知系统研发。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。