这篇文章整理 OpenPCDet 中比较常用的训练、测试、demo 可视化和显卡监控命令,方便后续实验时快速复制。
1. 启动 TensorBoard
在日志目录下运行:
1
| tensorboard --logdir=./
|
如果训练输出目录类似:
1
| output/kitti_models/pointpillar/default
|
也可以进入对应目录后再启动 TensorBoard。
2. PointPillar demo 测试
1
2
3
4
5
| python demo.py \
--cfg_file cfgs/kitti_models/pointpillar.yaml \
--ckpt /home/cx/OpenPCDet/output/kitti_models/pointpillar/default/ckpt/checkpoint_epoch_80.pth \
--data_path /home/cx/OpenPCDet/data/kitti/testing/velodyne \
--ext .bin
|
参数说明:
| 参数 | 说明 |
|---|
--cfg_file | 模型配置文件 |
--ckpt | 加载的 checkpoint |
--data_path | 点云数据路径 |
--ext | 点云文件后缀,KITTI 通常是 .bin |
3. PointPillar 测试
1
2
3
4
| python test.py \
--cfg_file ../tools/cfgs/kitti_models/pointpillar.yaml \
--batch_size 4 \
--ckpt ../output/kitti_models/pointpillar/default/ckpt/checkpoint_epoch_80.pth
|
如果测试时需要保存提交结果,需要加上:
例如:
1
2
3
4
5
| python test.py \
--cfg_file ../tools/cfgs/kitti_models/pointpillar.yaml \
--batch_size 4 \
--ckpt ../output/kitti_models/pointpillar/default/ckpt/checkpoint_epoch_80.pth \
--save_to_file
|
4. 训练 PillarNet
1
| python train.py --cfg_file cfgs/kitti_models/pillarnet.yaml
|
如果后续需要指定 batch size、epoch 或多卡训练,可以在此基础上继续扩展参数。
5. 评估模型
示例命令:
1
2
3
4
| python test.py \
--cfg_file cfgs/kitti_models/voxt_gnn.yaml \
--batch_size 4 \
--ckpt ../output/kitti_models/voxt_gnn/default/ckpt/checkpoint_epoch_120.pth
|
建议每次评估时记录:
- 配置文件;
- checkpoint 路径;
- batch size;
- 是否开启
--save_to_file; - 评估结果;
- 当前代码 commit 或修改说明。
6. demo 可视化颜色对应关系
OpenPCDet demo 中可以通过 box_colormap 设置不同类别框的颜色:
1
2
3
4
5
6
| box_colormap = [
[1, 1, 1], # index 0 -> 白色,未使用
[0, 1, 0], # index 1 -> 绿色
[0, 1, 1], # index 2 -> 青色,蓝绿色
[1, 1, 0], # index 3 -> 黄色
]
|
对应关系如下:
| 颜色 | index | 类别 |
|---|
| 绿色 | 1 | Car |
| 蓝绿色 | 2 | Pedestrian |
| 黄色 | 3 | Cyclist |
7. 显卡监控工具 nvitop
安装:
运行:
相比 nvidia-smi,nvitop 的交互体验更好,适合训练时观察显存、功耗和进程占用。
8. 建议的实验记录格式
每次训练或测试建议记录成下面这种格式:
1
2
3
4
5
6
7
8
9
10
11
12
| ## 实验名称
- 日期:
- 数据集:
- 配置文件:
- 修改代码:
- checkpoint:
- batch size:
- GPU:
- 训练轮数:
- 评估结果:
- 备注:
|
这样后续对比不同模型结构和参数时会更清楚。
总结
这篇主要是命令速查。OpenPCDet 实验比较多时,最重要的是保证配置文件、checkpoint 和代码改动能够对应起来,否则后期很容易忘记某个结果是怎么跑出来的。