当前位置: 首页 > news >正文

Paddle3D-PETRv1 精度测试与推理实践指南

Paddle3D-PETRv1 精度测试与推理实践指南

    • 一、背景
    • 二、内容提要
    • 三、操作步骤
      • 1、创建容器
      • 2. 安装Paddle3D
      • 3. 创建数据集
      • 4. 修改配置文件
      • 5. 下载预训练权重并测试精度
      • 6. 导出模型
      • 7. 自定义精度测试(保存预处理输入)
      • 8. 使用Paddle Inference进行推理
      • 9. 验证推理输出的精度
    • 四、总结

一、背景

PETR(Position Embedding Transformation for multi-view 3D object detection)是一种基于多视角图像的3D物体检测方法。它通过将3D坐标空间的位置信息编码到2D图像特征中,实现了无需深度估计的3D检测,具有良好的实时性与准确性。Paddle3D 是飞桨推出的3D感知模型库,集成了多种先进的3D检测、分割等算法。

本文将详细介绍如何对 Paddle3D 中的 PETRv1 模型进行精度测试,包括环境配置、数据集准备、模型评估以及导出推理的全流程,并对关键步骤进行解释,帮助普通读者理解其原理与操作。

二、内容提要

  1. 环境准备:通过Docker配置标准测试环境
  2. 模型获取:安装Paddle3D并下载预训练权重
  3. 数据预处理:准备NuScenes迷你数据集并生成注解文件
  4. 精度测试:使用原始模型测试精度指标
  5. 模型导出:将训练好的模型导出为推理格式
  6. 推理验证:使用Paddle Inference进行部署并验证精度一致性,该脚本也可以用于其它推理方式输出结果的精度测试

三、操作步骤

1、创建容器

容器技术(如Docker)可以创建一个隔离且可复现的环境,避免由于系统环境差异导致的问题。

cd /home/apollo
docker run --gpus all --shm-size=128g -it -e NVIDIA_VISIBLE_DEVICES=all \--privileged --net=host \-v $PWD:/home -w /home \--name petrv1_acc registry.baidubce.com/paddlepaddle/paddle:2.4.2-gpu-cuda11.7-cudnn8.4-trt8.4 /bin/bash	

参数解释

  • --gpus all:允许容器使用所有GPU
  • --shm-size=128g:设置共享内存大小,大型数据集需要更多内存
  • -v $PWD:/home:将当前目录挂载到容器的/home目录
  • -w /home:设置工作目录为/home
  • 镜像包含CUDA 11.7、cuDNN 8.4和TensorRT 8.4,适合深度学习推理

2. 安装Paddle3D

Paddle3D是飞桨的3D感知工具库,提供了多种3D感知算法的实现。

cd /home/
git clone https://github.com/PaddlePaddle/Paddle3D.git
cd /home/Paddle3D
pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
python3 setup.py install
pip install ortools==9.1.9490

步骤说明

  • 从GitHub克隆Paddle3D仓库
  • 安装依赖库(使用清华镜像加速下载)
  • 以开发模式安装Paddle3D
  • 安装OR-Tools优化工具库,用于后续的推理优化

3. 创建数据集

NuScenes是自动驾驶领域的经典3D检测数据集,包含多传感器数据。

# 下载mini数据集(3.9GB)
wget -O /home/v1.0-mini.tgz https://www.nuscenes.org/data/v1.0-mini.tgzmkdir -p data/nuscenes
tar -xf /home/v1.0-mini.tgz -C data/nuscenes
python3 tools/create_petr_nus_infos.py --dataset_root data/nuscenes/ --save_dir data/nuscenes/ --mode mini_val

步骤说明

  • 创建数据集目录结构
  • 解压预先下载的NuScenes迷你数据集
  • 生成PETR模型所需的注解文件(包含物体标注、校准信息等)

4. 修改配置文件

# 修改configs/petr/petr_vovnet_gridmask_p4_800x320.yml
val_dataset:type: NuscenesMVDatasetdataset_root: data/nuscenes/ann_file: data/nuscenes/petr_nuscenes_annotation_val.pklmode: mini_val # 使用迷你数据集验证模式

重要参数

  • dataset_root:数据集根目录
  • ann_file:注解文件路径
  • mode:数据集模式(mini_val表示使用迷你验证集)

5. 下载预训练权重并测试精度

预训练权重是模型在大型数据集上已训练好的参数,可以直接用于推理。

wget https://paddle3d.bj.bcebos.com/models/petr/petr_vovnet_gridmask_p4_800x320_amp/model.pdparams
python3 tools/evaluate.py --config configs/petr/petr_vovnet_gridmask_p4_800x320.yml --model model.pdparams

输出

mAP: 0.3479
mATE: 0.7280
mASE: 0.4597
mAOE: 0.6863
mAVE: 0.8642
mAAE: 0.2995
NDS: 0.3702
Eval time: 6.7sPer-class results:
Object Class    AP      ATE     ASE     AOE     AVE     AAE
car     0.609   0.514   0.160   0.135   0.224   0.064
truck   0.504   0.593   0.192   0.075   0.142   0.016
bus     0.480   0.737   0.091   0.599   2.938   0.097
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.510   0.693   0.254   0.634   0.462   0.212
motorcycle      0.455   0.731   0.310   0.990   0.062   0.004
bicycle 0.243   0.585   0.199   0.745   1.086   0.004
traffic_cone    0.679   0.427   0.391   nan     nan     nan
barrier 0.000   1.000   1.000   1.000   nan     nan

精度指标解释

  • mAP:平均精度均值,衡量检测准确性(越高越好)
  • mATE:平均平移误差,衡量位置准确性(越低越好)
  • mASE:平均尺度误差,衡量尺寸准确性(越低越好)
  • mAOE:平均方向误差,衡量方向准确性(越低越好)
  • mAVE:平均速度误差,衡量速度预测准确性(越低越好)
  • mAAE:平均属性误差,衡量属性预测准确性(越低越好)
  • NDS:NuScenes检测分数,综合指标(越高越好)

6. 导出模型

将训练好的模型导出为推理格式,便于部署。

python3 tools/export.py --config configs/petr/petr_vovnet_gridmask_p4_800x320.yml \--model model.pdparams --save_dir petr_inference

导出内容

  • .pdmodel:模型结构文件
  • .pdiparams:模型参数文件
  • .pdiparams.info:模型参数信息文件

7. 自定义精度测试(保存预处理输入)

此步骤保存模型输入数据,便于后续对比推理结果。

cat > my_eval.py <<-'EOF'
import argparse
import os
import random
import numpy as np
import paddle
from paddle3d.apis.config import Config
from paddle3d.apis.trainer import Trainer
from paddle3d.slim import get_qat_config
from paddle3d.utils.checkpoint import load_pretrained_model
from paddle3d.utils.logger import logger
from paddle3d.apis.pipeline import training_step, validation_step
import inspectclass CustomTrainer(Trainer)
http://www.xdnf.cn/news/1348039.html

相关文章:

  • 容器安全实践(一):概念篇 - 从“想当然”到“真相”
  • 车载诊断架构 --- EOL引起关于DTC检测开始条件的思考
  • Mongodb操作指南
  • 大麦盒子DM4036-精简固件包及教程
  • 2025.8.22周五 在职老D渗透日记day24:burp+mumu抓包 安卓7.0以上证书配置
  • 电脑端完全免费的动态壁纸和屏保软件(真正免费、无广告、无会员)
  • 二叉搜索树(BST)、AVL树、红黑树
  • 爬虫基础学习-链接协议分析,熟悉相关函数
  • 基于抗辐照性能的ASP4644S电源芯片特性分析与多领域应用验证
  • 笔记本怎么才能更快散热?
  • DataStream实现WordCount
  • 信息结构统一论:物理世界与人类感知、认知及符号系统的桥梁
  • 透射TEM新手入门:衍射斑点标定 1
  • [特殊字符] TTS格局重塑!B站推出Index-TTS,速度、音质、情感表达全维度领先
  • Day25 栈 队列 二叉树
  • 特大桥施工绳断 7 人亡:索力实时监测预警机制亟待完善
  • kvcache比赛记录
  • 集群与负载均衡:HAProxy 与 Nginx 实践
  • 融云Im单独一个拍照或者拍摄插件Plugin
  • 自学嵌入式第二十五天:数据结构-队列、树
  • 配电网重构优化:以减小网损为目标的智能算法实现
  • 20250822给荣品RD-RK3588开发板刷Rockchip原厂的Android14时点亮荣品的8寸屏
  • SN编码升级:从“制造标记”到“数字孪生身份证”
  • There are test failures. clean deploy 异常
  • [RestGPT] RestGPT智能体
  • Bluedroid vs NimBLE
  • 20.9 QLoRA微调实战:1.5B参数Whisper-large-v2在24GB显存实现中文语音识别,CER骤降50%!
  • 使用tauri打包cocos小游戏,并在抖音小玩法中启动,拿到启动参数token
  • ​Kubernetes 详解:云原生时代的容器编排与管理
  • python selenium+pytest webUI自动化基础框架