OpenPCDet自定义数据集构建完全指南

OpenPCDet自定义数据集构建完全指南

OpenPCDet OpenPCDet Toolbox for LiDAR-based 3D Object Detection. OpenPCDet 项目地址: https://gitcode.com/gh_mirrors/op/OpenPCDet

前言

OpenPCDet作为优秀的点云目标检测框架,支持多种主流3D检测算法。在实际应用中,开发者经常需要将自己的数据集接入框架进行训练和评估。本文将详细介绍如何在OpenPCDet中构建自定义点云数据集的全流程,帮助开发者快速实现从数据准备到模型训练的全过程。

数据集格式规范

点云数据格式要求

OpenPCDet要求点云数据以.npy格式存储,这是NumPy的标准二进制格式,具有读取速度快、存储效率高的特点。每个点云文件应包含N×D的矩阵,其中:

  • N代表点的数量
  • D代表点的特征维度,通常包括:
    • x, y, z坐标
    • 反射强度(intensity)
    • 其他可选特征(如回波次数等)

标注文件格式规范

标注信息存储在.txt文件中,每行对应一个3D边界框,格式如下:

x y z dx dy dz heading_angle category_name

各字段含义:

  • (x,y,z):边界框中心坐标
  • (dx,dy,dz):边界框长宽高尺寸
  • heading_angle:朝向角(弧度制)
  • category_name:目标类别名称

示例:

1.50 1.46 0.10 5.12 1.85 4.13 1.56 Vehicle
5.54 0.57 0.41 1.08 0.74 1.95 1.57 Pedestrian

数据集目录结构

规范化的目录结构对于数据管理至关重要,建议采用如下结构:

data
├── custom
│   ├── ImageSets
│   │   ├── train.txt  # 训练集文件名列表
│   │   └── val.txt    # 验证集文件名列表
│   ├── points         # 点云数据目录
│   │   ├── 000000.npy
│   │   └── 999999.npy
│   └── labels         # 标注文件目录
│       ├── 000000.txt
│       └── 999999.txt

注意:

  1. ImageSets中的文本文件只需包含文件名(不含扩展名)
  2. 点云文件与标注文件应一一对应,通过文件名关联

配置文件详解

点云特征配置

custom_dataset.yaml中需要配置点云特征处理参数:

POINT_FEATURE_ENCODING:
  encoding_type: absolute_coordinates_encoding
  used_feature_list: ['x', 'y', 'z', 'intensity']  # 实际使用的特征
  src_feature_list: ['x', 'y', 'z', 'intensity']   # 原始数据中的特征顺序

关键参数说明:

  • encoding_type:编码类型,通常保持默认
  • used_feature_list:实际使用的特征列表
  • src_feature_list:原始数据中的特征排列顺序
  • NUM_POINT_FEATURES:必须与used_feature_list长度一致

点云范围与体素化参数

对于基于体素的检测器(如SECOND、PV-RCNN等),需要特别注意:

  1. Z轴范围与体素大小的比值应为40
  2. XY轴范围与体素大小的比值应为16的倍数

这一规则同样适用于基于柱状的检测器(如PointPillar)。

类别与锚框配置

需要根据实际数据集调整类别和锚框参数:

CLASS_NAMES: ['Vehicle', 'Pedestrian', 'Cyclist']  # 自定义类别

MAP_CLASS_TO_KITTI:  # 与KITTI类别的映射关系
  'Vehicle': 'Car',
  'Pedestrian': 'Pedestrian',
  'Cyclist': 'Cyclist',

anchor_sizes: [[3.9, 1.6, 1.56]]  # 各类别的锚框尺寸

PREPARE:  # 数据过滤参数
  filter_by_min_points: ['Vehicle:5', 'Pedestrian:5', 'Cyclist:5'],
  filter_by_difficulty: [-1],

SAMPLE_GROUPS: ['Vehicle:20','Pedestrian:15', 'Cyclist:15']  # 数据增强采样配置

数据信息文件生成

完成上述配置后,需要生成数据信息文件:

python -m pcdet.datasets.custom.custom_dataset create_custom_infos tools/cfgs/dataset_configs/custom_dataset.yaml

该命令会生成以下文件:

  • custom_infos_train.pkl:训练集信息文件
  • custom_infos_val.pkl:验证集信息文件

评估配置说明

OpenPCDet目前提供KITTI风格的评估方式。需要在配置文件中定义自定义类别与KITTI类别的映射关系:

MAP_CLASS_TO_KITTI:
  'Vehicle': 'Car',
  'Pedestrian': 'Pedestrian',
  'Cyclist': 'Cyclist',

评估指标将基于此映射关系计算,确保评估结果与KITTI基准一致。

常见问题与解决方案

  1. 点云范围设置不合理

    • 症状:训练时出现NaN损失
    • 解决:检查点云范围与体素大小的比值是否符合要求
  2. 类别映射错误

    • 症状:评估时出现类别不匹配警告
    • 解决:确保MAP_CLASS_TO_KITTI中的类别名称与CLASS_NAMES完全一致
  3. 数据信息生成失败

    • 症状:无法找到点云或标注文件
    • 解决:检查目录结构是否符合规范,文件名是否匹配

最佳实践建议

  1. 数据预处理:

    • 建议对点云进行归一化处理
    • 移除超出有效范围的点
  2. 锚框设计:

    • 根据实际目标尺寸统计结果设置锚框大小
    • 不同类别应设置不同的锚框尺寸
  3. 数据增强:

    • 合理配置GT-Sampling参数
    • 根据场景特点调整数据增强策略

通过本文的详细指导,开发者应该能够顺利地将自定义点云数据集接入OpenPCDet框架,并开始训练自己的3D目标检测模型。在实际应用中,可能还需要根据具体场景和需求进行适当的调整和优化。

OpenPCDet OpenPCDet Toolbox for LiDAR-based 3D Object Detection. OpenPCDet 项目地址: https://gitcode.com/gh_mirrors/op/OpenPCDet

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陶羚耘Ruby

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值