5步搞定:在星图AI上训练PETRV2-BEV模型(保姆级教程)

张开发
2026/4/13 6:42:11 15 分钟阅读

分享文章

5步搞定:在星图AI上训练PETRV2-BEV模型(保姆级教程)
5步搞定在星图AI上训练PETRV2-BEV模型保姆级教程想自己动手训练一个能看懂复杂交通场景的自动驾驶感知模型吗听起来很高深但今天我要带你用星图AI平台在5个核心步骤内搞定PETRV2-BEV模型的训练。整个过程就像搭积木跟着做就行不需要你从头研究复杂的算法和配置。PETRV2是当前自动驾驶视觉感知领域的一个热门模型它能从多个摄像头的画面里构建出上帝视角的鸟瞰图然后识别出车辆、行人、障碍物等目标。我们这次就用公开的nuScenes迷你数据集来练手让你快速体验从零到一的完整训练流程。1. 第一步环境准备与启动1.1 理解我们即将要做的事在开始敲命令之前我们先简单了解一下整个流程。你可以把它想象成做一道菜准备厨房环境星图AI已经帮我们准备好了所有“厨具”和“调料”。准备食材数据与模型下载公开的数据集和预训练好的模型权重。处理食材数据预处理把原始数据转换成模型能“吃”的格式。开火烹饪模型训练让模型学习数据中的规律。品尝与装盘评估与导出看看模型学得怎么样并把它打包成可以用的形式。1.2 激活即用环境登录星图AI平台找到并启动“训练PETRV2-BEV模型”这个镜像。实例启动成功后打开终端第一件事就是激活已经预装好的环境conda activate paddle3d_env这行命令就像打开了一个专门的工作间里面Python、PaddlePaddle深度学习框架、Paddle3D工具包等所有需要的软件都装好了。你可以通过下面命令简单验证一下cd /usr/local/Paddle3D ls你应该能看到configs,tools,dataset等目录这说明环境已经就绪。2. 第二步获取“食材”——数据与预训练模型2.1 下载模型起点文件训练模型很少从完全随机的状态开始那样太慢了。通常我们会用一个在大型数据集上预训练好的模型作为起点然后针对我们的新数据做微调。这就像学画画先临摹大师的作品再自己创作。运行以下命令下载PETRV2的预训练权重wget -O /root/workspace/model.pdparams https://paddle3d.bj.bcebos.com/models/petr/petrv2_vovnet_gridmask_p4_800x320/model.pdparams这个文件包含了模型已经学会的“基础绘画技巧”文件会保存在/root/workspace/目录下。2.2 下载练习数据集为了快速演示我们使用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解压后在/root/workspace/nuscenes里你会看到samples图片、sweeps、maps等文件夹以及最重要的标注信息文件。3. 第三步处理数据与初始测试3.1 转换数据格式原始的数据标注文件是JSON格式的模型训练时直接读取效率不高。我们需要运行一个脚本把它转换成更快的缓存文件格式.pkl文件。# 确保在Paddle3D目录下 cd /usr/local/Paddle3D # 删除可能存在的旧缓存文件如果有的话 rm /root/workspace/nuscenes/petr_nuscenes_annotation_* -f # 运行格式转换脚本指定数据集路径和“mini_val”模式 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 测试预训练模型的“初始水平”在开始我们的训练之前先看看这个预训练模型在咱们这个小数据集上表现如何建立一个性能基线。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这里你主要关注两个指标mAP平均精度均值数值越高说明模型检测得越准。0.2669不算高因为预训练模型还没见过我们这个迷你数据集的数据分布。NDSnuScenes检测分数是一个综合指标也越高越好。记住这些数字等我们训练完再来对比。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学习率相当于模型调整参数的“步幅”。这里用较小的值进行微调避免“步子太大”破坏了预训练好的特征。--save_interval 5每训练5轮就保存一次模型快照。--do_eval在每次保存模型时自动在验证集上评估性能方便我们挑选最好的模型。训练开始后终端会滚动显示损失loss下降的过程。看到loss在稳步下降就说明模型正在学习。4.2 可视化训练过程光看数字不够直观我们可以用VisualDL这个可视化工具像看仪表盘一样监控训练。首先启动VisualDL服务visualdl --logdir ./output/ --host 0.0.0.0这个命令会在后台启动一个服务。由于我们是在远程服务器上需要在本地电脑和服务器之间建立一个“隧道”才能用浏览器访问。打开你本地电脑的终端比如Mac的Terminal或Windows的PowerShell运行端口转发命令注意替换其中的服务器地址和端口为你自己的实例信息ssh -p 31264 -L 0.0.0.0:8888:localhost:8040 rootgpu-09rxs0pcu2.ssh.gpu.csdn.net然后在本地浏览器访问http://localhost:8888你就能看到一个图表界面。这里可以看到Loss曲线训练损失和验证损失应该随着训练轮次逐渐下降并趋于平稳。指标曲线像mAP、NDS这些评估指标应该随着训练轮次逐渐上升。直方图展示模型参数分布的变化。通过观察这些图表你可以判断模型是否在正常学习以及何时可以停止训练比如损失不再下降时。5. 第五步模型导出与效果验证5.1 导出最终模型训练完成后在output/目录下会保存很多轮次的模型。通常我们会选择在验证集上性能最好的那个模型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导出成功后在/root/workspace/nuscenes_release_model目录下你会找到inference.pdmodel模型结构和inference.pdiparams模型权重等文件。这个格式的模型可以被Paddle Inference引擎高效加载和运行。5.2 运行演示亲眼看看效果最后让我们用导出的模型跑一个演示把检测结果可视化出来这是最有成就感的一步python tools/demo.py /root/workspace/nuscenes/ /root/workspace/nuscenes_release_model nuscenes这个脚本会加载测试图片和我们刚刚训练好的模型。进行推理预测出3D边界框。把预测框画到原始图片上并生成鸟瞰图视图。把结果图片保存到demo/output/目录。完成后去demo/output/文件夹看看生成的图片。你会看到原始摄像头画面中车辆、行人等目标被3D框标注了出来同时还有一个从上方俯视的BEV视图展示了目标在道路上的空间位置。对比一下训练前的效果你应该能发现检测框更准、更稳定了。6. 总结与后续探索6.1 回顾我们的五步流程恭喜你你已经完成了一个完整的PETRV2模型训练微调流程。我们简单回顾一下环境启动利用星图AI预置镜像秒速进入开发状态。获取资源下载预训练模型和公开数据集。数据准备转换数据格式并测试了模型的初始能力。训练监控启动训练并用可视化工具观察学习过程。成果检验导出最终模型并通过演示程序直观验证效果。6.2 如何做得更好如果你想让模型表现更上一层楼可以尝试使用全量数据用完整的nuScenes数据集替换迷你数据集进行训练。调整超参数比如尝试不同的learning_rate或增加batch_size如果显存允许。训练更久增加--epochs的数量让模型充分学习。数据增强在配置文件中启用更丰富的数据增强策略让模型见识更多样的场景。6.3 处理其他数据集可选教程文档中还提供了在XTREME1数据集上训练的流程。如果你有该数据集步骤是类似的准备好数据运行对应的数据预处理脚本create_petr_nus_infos_from_xtreme1.py然后修改--dataset_root路径指向你的数据即可开始训练。这体现了本教程方法的可扩展性。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

更多文章