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

【pcdet3D检测】——OPenpcdet如何进行测试文件配置?能否自定义测试数据?一文看懂pointpillar(pcdet)中的test.py

专栏: 基于点云的神经网络,欢迎关注

本期主要介绍Openpcdet中配置文件中的测试文件。

0. 引言

OpenPCDet是一个3D检测的开源架构

pointnet++直接将点云作为输入进行训练。VoxelNet首先将点云进行体素化表示,再对体素化后的数据进行训练,本质上还是对三维数据的训练。为了减少计算损耗,pointpillar先将点云划分为各个 pillar再将处理后的数据映射到二维空间,大大减少了计算资源的消耗。

要了解OpenPCDet可以关注:hyshhh:pointpillar(OpenPCDet)介绍、安装、评价指标介绍

要了解KITTI数据集可以关注:hyshhh:KITTI数据集介绍、组成结构、可视化方法

1. test.py文件配置

模型的配置文件如何寻找可以关注:hyshhh:OPenPCDet中的pointpillar中各个模块源代码位置与代码原理

test.py文件位于tools文件中,容易寻找。

2. 文件解读

  • 第一部分是参数配置,代码如下所示,这个函数使用 argparse 解析命令行参数,允许用户在运行程序时自定义配置。例如:
python test.py --cfg_file configs/kitti.yaml --batch_size 4

主要参数

--cfg_file:指定 YAML 配置文件(如 kitti.yaml)。
--batch_size:训练时的 batch size。
--workers:数据加载的进程数(默认 8)。
--ckpt:用于加载训练好的模型权重。
--pretrained_model:指定预训练模型(如果需要)。
--launcher:用于分布式训练(nonepytorchslurm)。
--tcp_port:分布式训练使用的端口。
--local_rank:本地 GPU 设备编号。
--set:允许用户动态修改 YAML 配置文件的参数(可变参数)。
--eval_all:如果设为 True,则会评估所有模型检查点(checkpoint)。
--infer_time:如果设为 True,计算推理时间。

  • 第二部分.eval_single_ckpt() —— 评估单个 checkpoint.

args.ckpt 指定的 checkpoint(模型权重)。 pre_trained_path 可以加载额外的预训练模型。 model.cuda():将模型加载到 GPU。

然后调用 eval_utils.eval_one_epoch() 进行测试.这个函数运行一次完整的测试(一个 epoch),并存储测试结果。

  • 3. get_no_evaluated_ckpt() —— 查找未评估的 checkpoint(如果没有设置该函数,则不会进入检查点--eval_all

从 ckpt_dir 目录中找到还未评估的 checkpoint。glob.glob() 搜索所有以 checkpoint_epoch_*.pth 结尾的文件。sort(key=os.path.getmtime) 让最新的 checkpoint 排在后面。

如果所有 checkpoint 都已经评估,则返回 (-1, None)

  • 4. 判断是否是分布式

  • 5. 检查测试的批次

如果 batch_size 没指定,则从 YAML 配置里读取。
如果使用多个 GPU,则 batch_size 需要能整除 total_gpus

  • 6. 创建输出目录并记录日至

结果存放在 output/exp_group/tag/extra_tag/ 目录下。

  • 7. 构建数据集与模型函数

http://www.dtcms.com/a/107827.html

相关文章:

  • redis7.0搭建redis-cluster集群部署实战
  • AquaMoon and Chess_CodeForces - 1545B
  • AI前沿:资本狂潮下的技术暗战:巨头博弈、开源革命与生态重构
  • Java项目之基于ssm的简易版营业厅宽带系统(源码+文档)
  • Ubuntu 使用apt安装MySQL后的升级方法
  • Share02-小小脚本大大能量
  • 【面试篇】多线程
  • RTX5080 安装torch,torchvision ,torchaudio 指南
  • 全功能在线WEB工具箱PHP源码
  • 3. 线程间共享数据
  • 跨网文件安全交换系统|国产信创认证+安全高效传输
  • 2025-4-2 蓝桥杯刷题情况(分布式队列)
  • 智能觉醒:四大AI Agent框架重构未来生产力
  • 简单描述一下Unity物理系统的主要性能消耗点
  • 【高项】信息系统项目管理师(十五)高级项目管理【4分】
  • RocketMq 5.0之后延时消息底层是怎么实现的?
  • C++(匿名函数+继承+多态)
  • MySQL GROUP BY 和 HAVING 子句中 ‘Unknown column‘ 错误的深入解析
  • 详细介绍一下C++的按位运算
  • Tinder上线《The Game Game》
  • mapreduce工作原理
  • 论文阅读10——解开碳排放与碳足迹之间的关系:文献回顾和可持续交通框架
  • TCP四次挥手
  • 《K230 从熟悉到...》颜色识别
  • 归并排序延伸-非递归版本
  • 基于yolo11的BGA图像目标检测
  • Ubuntu18.04 编译 Android7.1代码报错
  • 使用numpy读取数据集
  • Ubuntu Wayland启动腾讯会议并实现原生屏幕共享
  • JS—页面渲染:1分钟掌握页面渲染过程