OpenPCDet 训练自己的数据集详细教程!
OpenPCDet 是一个基于 PyTorch 的开源 3D 点云检测工具包,专门用于激光雷达数据的 3D 目标检测任务。它可以训练和测试多种 3D 检测模型,支持各种数据集格式和模型架构。通过 OpenPCDet,你可以轻松地在自己的数据集上训练 3D 目标检测模型。
本教程将详细介绍如何使用 OpenPCDet 训练自己的数据集,包括数据集准备、配置文件修改、训练过程、模型评估等步骤。希望通过这篇教程,你能够顺利地在自定义的数据集上使用 OpenPCDet 进行训练。
目录
- OpenPCDet 简介
- 环境准备与安装
- 数据集准备
- 修改配置文件
- 训练模型
- 评估与测试
- 总结
1. OpenPCDet 简介
OpenPCDet 是一个专为 3D 点云检测设计的工具包,支持多种先进的 3D 检测模型,如 PointPillar、VoxelNet、SECOND 等。它可以处理来自激光雷达(LiDAR)设备的数据,帮助你进行物体检测任务。
- 支持的数据集:Kitti、Waymo、nuscenes 等。
- 模型架构:PointPillars、SECOND、VoxelNet、PV-RCNN 等。
- 功能:训练、评估、推理、数据增强等。
OpenPCDet 提供了丰富的功能和可定制化选项,能够帮助用户实现高效且精确的 3D 目标检测。
2. 环境准备与安装
2.1 安装依赖
首先,你需要安装 OpenPCDet 的依赖项。请确保你的系统中安装了 Python 3.7 或更高版本。以下是基本的环境配置步骤:
- 安装 PyTorch(根据你系统的 CUDA 版本选择合适的安装命令):
# 安装 PyTorch
pip install torch==1.8.0 torchvision==0.9.0
- 安装 OpenPCDet:
# 克隆 OpenPCDet 仓库
git clone https://github.com/openpcdet/openpcdet.git
cd openpcdet
# 安装 OpenPCDet 依赖
pip install -r requirements.txt
# 编译 CUDA 操作
python setup.py develop
注意:如果你的系统支持 GPU 加速,确保安装了正确版本的 CUDA。
3. 数据集准备
为了训练你自己的数据集,首先需要确保你的数据集格式符合 OpenPCDet 的要求。OpenPCDet 支持从其他数据集中读取点云数据,并根据其格式进行训练。
3.1 数据集格式
OpenPCDet 默认支持以下数据集格式:
- KITTI 数据集:这是最常见的 3D 点云数据集格式,包含了 LiDAR 点云和相应的标注信息(包括物体类别、边界框等)。
- nuScenes 数据集:包含了更复杂的场景,适用于更大规模的检测任务。
- Waymo 数据集:由 Waymo 提供的大规模自动驾驶数据集,包含了多种传感器数据。
假设我们使用的是自定义数据集,格式应当类似于 KITTI 数据集格式,包含以下内容:
- 点云数据:通常为
.bin
格式,存储在一个文件夹中,每个点云文件包含了多个 3D 点(x, y, z, intensity 等)。 - 标注文件:通常为
.txt
格式,包含每个点云的目标物体标注信息(类别、位置、尺寸等)。
以下是一个标注文件的示例(label_000001.txt
):
Car 0.0 0.0 0.0 1.0 1.0 1.0 0.0 0.0 0.0 1.0 1.0 1.0
这表示一个 Car
类别的物体,标注了物体的尺寸、位置、旋转等信息。
3.2 数据集组织
自定义数据集的组织通常如下:
/dataset
/train
/velodyne
000001.bin
000002.bin
...
/labels
label_000001.txt
label_000002.txt
...
/val
/velodyne
000001.bin
000002.bin
...
/labels
label_000001.txt
label_000002.txt
...
在 train
文件夹中存放训练集的数据,val
文件夹中存放验证集的数据。
3.3 自定义数据集类
OpenPCDet 提供了一个灵活的框架来支持自定义数据集。如果你的数据集与默认格式略有不同,可以通过继承和修改 Dataset
类来实现。
你需要在 tools
目录下创建一个自定义数据集的配置文件,并且实现读取点云和标注信息的逻辑。
4. 修改配置文件
OpenPCDet 的训练和测试过程由一系列配置文件控制,这些配置文件定义了数据集路径、模型超参数、训练参数等。我们需要修改配置文件,确保它适应你的数据集。
4.1 配置文件目录结构
配置文件通常位于 tools/cfgs
目录下,包含多个模型的配置文件。你可以基于现有的配置文件进行修改,或者创建一个新的配置文件。
例如,如果你使用的是 PointPillars
模型,可以在 cfgs
目录下找到 pointpillars_kitti.yaml
配置文件,并对其进行修改。主要需要修改以下几个部分:
- 数据集路径:修改
TRAIN_DATASET
和VALIDATION_DATASET
的路径,指向你的训练集和验证集。 - 类别定义:确保类别与数据集中的标注一致。
- 模型配置:如网络结构、学习率、批次大小等。
4.2 修改配置文件示例
# pointpillars_custom.yaml
# 数据集路径
TRAIN_DATASET:
NAME: 'KittiDataset' # 可以根据你的数据集修改
PATH: '/path/to/your/custom/dataset/train'
VALIDATION_DATASET:
NAME: 'KittiDataset' # 同上
PATH: '/path/to/your/custom/dataset/val'
# 类别设置
CLASS_NAMES: ['Car', 'Pedestrian', 'Cyclist']
# 模型配置
MODEL:
NAME: 'PointPillars' # 选择模型类型
BACKBONE: 'PillarFeatureNet' # 网络骨干配置
# 更多的网络层配置...
# 训练设置
TRAIN:
BATCH_SIZE: 16
LR: 0.001
MAX_EPOCHS: 50
...
4.3 配置文件详细说明
- TRAIN_DATASET:设置训练集路径和数据集类型(如 KittiDataset)。你可以根据需要修改数据集类型。
- CLASS_NAMES:列出数据集中的目标类别,如车、行人、骑行者等。
- MODEL:选择模型架构(如 PointPillars),并配置网络结构细节。
- TRAIN:设置训练过程中的超参数,如批量大小、学习率、最大训练周期等。
5. 训练模型
配置文件修改完成后,接下来可以开始训练模型。训练过程通过命令行运行,OpenPCDet 提供了 tools/train.py
脚本来启动训练。
5.1 启动训练
# 使用配置文件启动训练
python tools/train.py --cfg_file cfgs/pointpillars_custom.yaml
5.2 训练过程
在训练过程中,OpenPCDet 会输出日志信息,包括每个 epoch 的损失值、学习率、精度等。你可以根据这些信息判断训练的进展,并进行必要的调整。
5.3 模型保存
训练完成后,模型会保存在指定的路径下。你可以通过该模型进行推理或评估。
6. 评估与测试
训练完成后,我们可以使用 OpenPCDet 的评估脚本对模型进行测试和性能评估。评估通常包括计算检测精度、召回率等指标。
6.1 评估模型
# 使用训练后的模型进行评估
python tools/test.py --cfg_file cfgs/pointpillars_custom.yaml --ckpt /path/to/your/model.ckpt
6.2 结果可视化
OpenPCDet 提供了可视化功能,可以通过可视化工具查看模型的检测结果。你可以通过以下命令生成结果的可视化图像。
# 可视化检测结果
python tools/visualize.py --cfg_file cfgs/pointpillars_custom
.yaml --ckpt /path/to/your/model.ckpt
7. 总结
通过本教程,你已经学会了如何使用 OpenPCDet 训练自己的数据集。我们介绍了从数据集准备、配置文件修改、训练过程到模型评估的全过程。通过这些步骤,你可以在自己的数据集上高效地训练 3D 点云目标检测模型。
如果你有自定义的数据集或者需要对模型进行调整,可以通过修改配置文件和数据集类来满足需求。希望本教程能帮助你更好地理解 OpenPCDet,并应用于自己的项目中。