PETRV2-BEV实战教程:evaluate.py脚本使用与mAP/NDS指标计算原理

发布时间:2026/5/23 4:24:03

PETRV2-BEV实战教程:evaluate.py脚本使用与mAP/NDS指标计算原理 PETRV2-BEV实战教程evaluate.py脚本使用与mAP/NDS指标计算原理1. 环境准备与快速开始想要评估PETRV2-BEV模型的性能首先需要搭建好运行环境。这里我们使用星图AI算力平台它已经预装了所有必要的依赖。进入准备好的conda环境非常简单conda activate paddle3d_env这个环境包含了Paddle3D框架和所有相关的依赖库让你可以直接开始模型评估无需担心环境配置问题。2. 理解评估指标mAP和NDS在开始实际操作之前我们先来理解两个核心评估指标mAP和NDS。mAPmean Average Precision是目标检测中最常用的评估指标它衡量的是模型检测的准确率。简单来说mAP越高说明模型检测物体越准。NDSNuScenes Detection Score是NuScenes数据集特有的综合评分指标它不仅考虑检测准确率还考虑了其他多个因素mATE平均平移误差位置准不准mASE平均尺度误差大小准不准mAOE平均方向误差方向准不准mAVE平均速度误差速度准不准mAAE平均属性误差其他属性准不准NDS把这些误差都考虑进来给出一个综合评分更能全面反映模型的实际表现。3. 准备评估所需资源3.1 下载预训练模型首先需要下载训练好的模型权重wget -O /root/workspace/model.pdparams https://paddle3d.bj.bcebos.com/models/petr/petrv2_vovnet_gridmask_p4_800x320/model.pdparams这个模型是在NuScenes数据集上预训练好的可以直接用来评估性能。3.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/nuscenesmini版本虽然数据量小但完全足够用来学习和测试评估流程。4. 运行评估脚本4.1 准备数据标注在运行评估之前需要先生成数据集的标注信息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这一步会生成评估所需的标注文件告诉模型每张图片里应该检测出什么物体。4.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 # ... 其他类别结果5. 解读评估结果5.1 整体指标分析从上面的结果可以看出mAP为0.2669说明模型整体检测准确率还有提升空间NDS为0.2878综合评分相对较低主要是因为各项误差较大评估时间5.8秒在mini数据集上评估速度很快5.2 各类别性能分析仔细观察每个类别的表现小汽车carAP达到0.446表现最好卡车truck和巴士busAP都在0.38左右表现不错行人pedestrianAP为0.378检测效果较好交通锥traffic_coneAP高达0.637检测非常准确自行车bicycleAP只有0.063检测效果较差这种分析可以帮助我们了解模型在哪些类别上表现好哪些需要改进。5.3 误差分析各项误差指标反映了模型的不同问题mATE为0.7448位置检测有较大误差mASE为0.4621物体大小估计不够准确mAOE为1.4553方向估计误差较大mAVE为0.2500速度估计相对准确6. 评估脚本原理详解6.1 评估流程evaluate.py脚本的工作流程如下加载配置读取模型配置文件加载模型载入预训练权重准备数据读取测试数据集推理预测对每张图片进行检测结果后处理处理模型输出生成检测结果指标计算对比预测结果和真实标注计算各项指标结果输出打印评估结果6.2 mAP计算原理mAP的计算过程比较复杂但可以简单理解为对每个检测结果计算置信度根据置信度排序计算精确率Precision和召回率Recall绘制P-R曲线计算曲线下面积AP对所有类别取平均得到mAP6.3 NDS计算原理NDS的计算更加复杂它考虑了多个误差项# 简化版的NDS计算逻辑 def calculate_nds(mAP, mATE, mASE, mAOE, mAVE, mAAE): # 各项误差的权重 weights [1, 1, 1, 1, 1, 1] # 计算各项指标的得分误差越小得分越高 tps [1 - min(mATE, 1.0), 1 - min(mASE, 1.0), 1 - min(mAOE / π, 1.0), 1 - min(mAVE, 1.0), 1 - min(mAAE, 1.0)] # 综合得分 nds mAP * 0.1 0.9 * sum([w * tp for w, tp in zip(weights, tps)]) / sum(weights) return nds7. 实际训练与评估7.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_eval7.2 监控训练过程训练过程中可以实时查看损失曲线visualdl --logdir ./output/ --host 0.0.0.0如果需要远程查看可以设置端口转发ssh -p 31264 -L 0.0.0.0:8888:localhost:8040 rootgpu-09rxs0pcu2.ssh.gpu.csdn.net7.3 导出和测试模型训练完成后可以导出模型并进行可视化测试# 导出模型 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 # 运行演示 python tools/demo.py /root/workspace/nuscenes/ /root/workspace/nuscenes_release_model nuscenes8. 总结与建议通过本教程你应该已经掌握了如何准备评估环境和数据集如何运行评估脚本并解读结果理解mAP和NDS指标的计算原理和意义分析模型在不同类别上的表现强弱根据评估结果指导模型优化方向实用建议如果mAP较低可以尝试增加训练数据或调整模型参数如果某项误差较大可以针对性地优化相应的检测头定期评估模型性能监控训练效果对比不同模型的评估结果选择最优方案评估不仅是检验模型性能的手段更是指导模型优化的重要工具。通过深入分析评估结果你可以更好地理解模型的优缺点从而进行有针对性的改进。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

相关新闻