【OpenPCDet】模型的数据采样训练

Friday, Dec 20, 2024 | 1 minute read | Updated at Friday, Dec 20, 2024

@

OpenPCDet中,KITTI 数据集的 ImageSet 中已经包含了训练和测试数据的索引信息,这使得可以不必直接扫描点云数据文件来获取某个特定的数据集。通过修改 ImageSet 中的索引,就可以直接选择不同的数据帧来进行训练、测试或推理。

1. KITTI 数据集中的 ImageSet

imageset 文件夹包含了多个文本文件,其中每个文件列出了训练和测试数据的帧索引。这些文件通常以如下格式命名:

1
2
3
4
5
6
data/
  ├── kitti/
  │   ├── ImageSets/
  │   │   ├── train.txt      # 训练集的帧索引
  │   │   ├── val.txt        # 验证集的帧索引
  │   │   └── test.txt       # 测试集的帧索引

每个 txt 文件中列出了一系列的帧编号,例如:

1
2
3
4
000000
000001
000002
...

这些帧编号对应的是 velodyne 文件夹中的 .bin 点云数据文件.

2. 修改索引文件

此处我想要基于Kitti数据集进行采样,生成十个不同的用于训练的数据集 可以直接原本的train.txt进行采样,将其保存为一个新的索引集 在kitti文件路径下新建一个脚本文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
import random

# 读取原始的 train.txt 文件
with open('kitti/training/imageset/train.txt', 'r') as f:
    lines = f.readlines()

# 随机采样 10 组数据
num_samples = 1000  # 每组采样的帧数量
num_groups = 10  # 需要采样的组数

# 随机生成 10 组数据集
for i in range(1, num_groups + 1):
    # 随机选择 1000 个帧
    sampled_lines = random.sample(lines, num_samples)

    # 保存到不同的 train_sampledX.txt 文件中
    sampled_file_path = f'kitti/training/imageset/train_sampled{i}.txt'
    with open(sampled_file_path, 'w') as f:
        f.writelines(sampled_lines)

    print(f"Group {i} saved to {sampled_file_path}")

运行以上代码即可在原本的目录下生成一系列的采样数据集

image
image

2.使用采样数据进行训练

首先找到kitti_dataset.yaml文件

关于Kitti_dataset.yaml文件

xxxxxxxxxx pip uninstall spconv-cu113pip install spconv-cu102python

  • 数据集根目录 (DATASET_ROOT):指示 KITTI 数据集所在的根路径。
  • 训练和验证集的索引文件路径 (TRAIN_SET, VAL_SET):指定训练和验证集的帧索引文件路径(即 train.txt 和 val.txt)。
  • 类别定义:包括 3D 检测任务中所使用的类别,例如 Car、Pedestrian、Cyclist 等。
  • 其他参数:可能包括图像和点云的预处理设置,数据增强方法等。

如何修改 kitti_dataset.yaml 使用新生成的 train_sampled.txt

在该文件内容中找到DATA_SPLIT 默认值如下示例:

1
2
3
4
DATA_SPLIT: {
    'train': train,
    'test': val
}

使用上面生成的新的索引只需修改‘train’键的值为train_sampled1/train_sampled2保存即可

3.启动训练

1
python tools/train.py --cfg_file tools/cfgs/kitti_models/pointpillar.yaml

训练中

image
image

© 2021 - 2026 古月月仔的博客

🌱 Powered by Hugo with theme Dream.

关于我
  • 我是古月月仔
  • Ethan Hu
  • 分享技术学习笔记与生活点滴
  • 现居: 上海 中国
  • 家乡: 平遥 山西
在用的学习工具
  • 📝 Typora —— 极致简洁的 Markdown 编辑器,助力沉浸式文档撰写与知识记录。
  • 📓 Notion —— 一站式工作空间,用于搭建个人知识库、项目管理与深度协作。
  • 🔗 N8N —— 强大的基于节点的自动化工作流工具,轻松实现不同应用间的逻辑联动。
  • 🤖 Gemini —— 智能 AI 助手,在代码辅助、创意激发与信息检索中提供强力支撑。
我的爱好
  • 🚀 喜欢折腾各种好玩的技术
  • 📸 业余摄影爱好者
  • 🎮 各类游戏玩家
  • 💻 数码产品折腾爱好者
  • 📚 阅读:赫尔曼·黑塞 & 阿尔贝·加缪
  • 🎞️ 追番中:《电锯人:蕾塞篇》
  • 🎬 经典重温:《命运石之门》
最近正在学