mmdet3d+waymo test/evaluation流程

本文详细介绍了使用mmdet3d评估waymo数据集的流程,包括通过dist_test.sh和test.py进行测试,重点讲解了single_gpu_test、dataset.evaluate()、format_results()以及坐标转换的过程,涉及Kitti2Waymo转换器,解决tensorflow与cuda冲突的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

evaluation是最直观反映模型性能和问题的步骤,也是检验运行环境是否有错的重要一换,下面依托detr3d与custom waymo dataset类,介绍一下mmdet3d+waymo在eval的流程。
调用eval有两种流程,一种是training过程中eval,另一种是调用test.py,test.py支持validation set和test set的处理。无论哪种,其核心都是调用dataset类下的evaluate方法。下面主要讲调用test.py的流程。

evaluation

调用bash

bash tools/dist_test.sh \
projects/configs/detr3d/detr3d_res101_gridmask_waymo.py \
work_dirs/detr3d_res101_gridmask_waymo/epoch_10.pth \
8 --eval=waymo

其中 --eval代表evaluate的时候用哪种style的metric,比如waymo,在mmdet3d里支持kitti和waymo两种style。

tools/dist_test.sh

CONFIG=$1
CHECKPOINT=$2
GPUS=$3
PORT=${PORT:-29500}

PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \
python -m torch.distributed.launch --nproc_per_node=$GPUS --master_port=$PORT \
    $(dirname "$0")/test.py $CONFIG $CHECKPOINT --launcher pytorch ${@:4}

就是用torch的distributed.launch方法来启动我们的test.py。这里有个巨坑是之后可能会调用tensorflow,环境配置不好的话就会出现cuda error,解决方法后面说。

tools/test.py

和tools/train.py类似。首先处理命令行参数,读config文件,初始化dataset,dataloader,载入model。
值得注意的是dataset = build_dataset(cfg.data.test),也就是config文件的‘data’里,‘test’的部分;data里还有’train’和’eval’,这个都是在training流程里使用的。
初始化后,就是把image放进model里,然后进行evaluate了,核心代码如下:

outputs = single_gpu_test(model, data_loader, args.show, args.show_dir)
#list of dict where dict['pts_bbox']=dict(bboxes scores labels)
if args.format_only:
    dataset.format_results(outputs, **kwargs)
if args.eval:
	print(dataset.evaluate(outputs, **eval_kwargs))

如果跑的是test set,没有gt box,就只会format result,否则调用dat

### MMDetection3D (MMDet3D) 三维目标检测 PyTorch 开源库使用教程 #### 安装与配置环境 为了快速上手 MMDetection3D 库,首先需要确保 Python 和 PyTorch 已经正确安装。可以通过 `pip` 命令直接安装最新的 MMDetection3D 版本[^2]: ```bash pip install mmdet3d ``` 如果需要 GPU 支持,则需确认 CUDA 和 cuDNN 的版本兼容性。 #### 数据集准备 MMDetection3D 提供了对多个数据集的支持,其中包括 KITTI、Waymo Open Dataset 等。对于 KITTI 数据集的目标检测任务,通常涉及点云和单目图像两种模态的数据处理[^4]。默认情况下,实验结果会被保存到 `/mmdetection3d/work_dirs/` 下的相关子目录中[^1]。 #### 配置文件详解 MMDetection3D 继承了 MMDetection 的设计理念,采用模块化的架构设计,其配置系统非常灵活。所有的超参数调整都可以通过修改 YAML 或 Python 格式的配置文件完成。例如,SMOKE 模型的配置可能位于 `configs/smoke/` 文件夹下,具体路径取决于所选模型及其变体。 以下是 SMOKE 单目 3D 目标检测的一个基础配置模板示例: ```python model = dict( type='SMOKE', backbone=dict(type='DLA', depth=34), neck=dict( type='DLANeck', in_channels=[16, 32, 64, 128], out_channels=sum([16, 32, 64, 128]), ), bbox_head=dict( type='SMOKEMono3DHead', num_classes=3, in_channels=128, ) ) data_root = 'data/kitti/' train_pipeline = [ dict(type='LoadImageFromFileMono3D'), ... ] test_pipeline = [ dict(type='LoadImageFromFileMono3D'), ... ] data = dict( samples_per_gpu=4, workers_per_gpu=4, train=dict(...), val=dict(...), test=dict(...) ) ``` 此配置定义了一个典型的 SMOKE 检测器结构,并指定了训练和测试阶段所需的数据预处理流程。 #### 训练过程 运行以下命令即可开始训练模型: ```bash python tools/train.py configs/smoke/smoke_dla34_kitti_mono3d.py --work-dir work_dirs/smoke/ ``` 其中 `--work-dir` 参数用于指定日志和权重存储位置。如果没有特别设置,默认会存放在前述提到的工作目录中。 #### 测试与评估 当训练完成后,可加载最佳权重并执行推理操作: ```bash python tools/test.py configs/smoke/smoke_dla34_kitti_mono3d.py \ work_dirs/smoke/latest.pth --eval kitti ``` 这一步骤会对验证集或测试集进行预测,并输出性能指标如 AP(平均精度)等。 #### 实战应用案例 在实际开发过程中,建议参考官方文档中的实例代码逐步调试自己的项目需求。此外,《Python 技术栈》一书也提到了关于如何将此类开源框架融入个人项目的技巧[^3]。书中还涵盖了诸如相机标定、多传感器融合等内容,这些知识点能够帮助更好地理解整个系统的运作机制。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值