数据集配置位于tools / cfgs / dataset_configs
内,模型配置位于针对不同数据集的tools / cfgs
中。
数据集准备
目前,我们提供了KITTI数据集和NuScenes数据集的数据加载器,并且正在支持更多数据集。
KITTI数据集
- 请下载官方的KITTI 3D对象检测数据集,并按以下方式组织下载的文件(可以从[road plane]下载road planes,这对于训练中的数据增强是可选的):
- 注意:如果您已经有来自的数据信息pcdet v0.1,则可以选择使用旧的信息,并将
tools / cfgs / dataset_configs / kitti_dataset.yaml
中的DATABASE_WITH_FAKELIDAR选项设置为True。第二个选择是您可以再次创建infos和gt数据库,并保持配置不变。
OpenPCDet
├── data
│ ├── kitti
│ │ │── ImageSets
│ │ │── training
│ │ │ ├──calib & velodyne & label_2 & image_2 & (optional: planes)
│ │ │── testing
│ │ │ ├──calib & velodyne & image_2
├── pcdet
├── tools
- 通过运行以下命令来生成数据信息:
python -m pcdet.datasets.kitti.kitti_dataset create_kitti_infos tools/cfgs/dataset_configs/kitti_dataset.yaml
会在kitti目录下面生成5个pkl文件 :
NuScenes数据集
请下载官方的NuScenes 3D对象检测数据集,并按以下方式组织下载的文件:
OpenPCDet
├── data
│ ├── nuscenes
│ │ │── v1.0-trainval (or v1.0-mini if you use mini)
│ │ │ │── samples
│ │ │ │── sweeps
│ │ │ │── maps
│ │ │ │── v1.0-trainval
├── pcdet
├── tools
通过运行以下命令安装nuscenes-devkitwith
版本1.0.5:
pip install nuscenes-devkit==1.0.5
通过运行以下命令来生成数据信息(可能需要几个小时):
python -m pcdet.datasets.nuscenes.nuscenes_dataset --func create_nuscenes_infos \
--cfg_file tools/cfgs/dataset_configs/nuscenes_dataset.yaml \
--version v1.0-trainval
Waymo Open数据集
- 请下载官方的Waymo Open Dataset,包括训练数据training_0000.tar ~training_0031.tar和验证数据validation_0000.tar ~ validation_0007.tar。
- 将上述所有xxxx.tar文件解压缩到以下目录data/waymo/raw_data(您可以获得798 train tfrecord和202 val tfrecord):
OpenPCDet
├── data
│ ├── waymo
│ │ │── ImageSets
│ │ │── raw_data
│ │ │ │── segment-xxxxxxxx.tfrecord
| | | |── ...
| | |── waymo_processed_data
│ │ │ │── segment-xxxxxxxx/
| | | |── ...
│ │ │── pcdet_gt_database_train_sampled_xx/
│ │ │── pcdet_waymo_dbinfos_train_sampled_xx.pkl
├── pcdet
├── tools
waymo-open-dataset
通过运行以下命令来安装官方:
pip3 install --upgrade pip
# tf 2.0.0
pip3 install waymo-open-dataset-tf-2-0-0 == 1.2.0 --user
通过运行以下命令从tfrecord提取点云数据并生成数据信息(这需要几个小时,您可以参考data/waymo/waymo_processed_data以查看已处理了多少条记录):
python -m pcdet.datasets.waymo.waymo_dataset --func create_waymo_infos \
--cfg_file tools/cfgs/dataset_configs/waymo_dataset.yaml
请注意,waymo-open-dataset如果您之前已经处理过数据,则无需安装,也不需要使用官方Waymo Metrics进行评估。
训练与测试
所有的配置文件都在tools/cfgs/
中。
训练模型
目前,要训练PointPillar或SECOND或PartA2,--batch_size
取决于您训练GPU的数量,因为我们使用$ {BATCH_SIZE} = 4 * $ {NUM_GPUS}
,即--batch_size 32
来训练8个GPU。
您可以选择添加其他命令行参数--batch_size ${BATCH_SIZE}
并--epochs ${EPOCHS}
指定首选参数。extra_tag
表示储存路径的一个文件夹名,最好和训练的参数保持一致
使用多个GPU或多台机器进行训练
sh scripts/dist_train.sh ${NUM_GPUS} \
--cfg_file ${CONFIG_FILE} --batch_size ${BATCH_SIZE}
#或多台机器
sh scripts/slurm_train.sh ${PARTITION} ${JOB_NAME} ${NUM_GPUS} \
--cfg_file ${CONFIG_FILE} --batch_size ${BATCH_SIZE}
使用单个GPU进行训练:
python train.py --cfg_file ${CONFIG_FILE} --batch_size ${BATCH_SIZE}
我的:
python train.py --cfg_file=cfgs/kitti_models/pointpillar.yaml --batch_size=3 --epochs=100 --extra_tag 'mydata_1'
测试和评估预训练的模型
使用预训练的模型进行测试:
python test.py --cfg_file $ {CONFIG_FILE} --batch_size $ {BATCH_SIZE} --ckpt $ {CKPT}
例如,要使用上面提供的Part-A ^ 2模型进行测试,请运行以下命令(此处我们添加–set来修改一些默认参数,使其与所提供的Part-A ^ 2模型的训练设置相匹配,并且 其他提供的模型不需要添加它):
python test.py --cfg_file cfgs/PartA2_car.yaml --batch_size 4 --ckpt PartA2.pth \
--set MODEL.RPN.BACKBONE.NAME UNetV0 MODEL.RPN.RPN_HEAD.ARGS use_binary_dir_classifier:True
我的:
要测试特定训练设置的所有保存的检查点并在Tensorboard上绘制性能曲线,请添加–eval_all
参数:
python test.py --cfg_file ${CONFIG_FILE} --batch_size 4? --eval_all
要使用多个GPU进行测试:
sh scripts/dist_test.sh ${NUM_GPUS} \
--cfg_file ${CONFIG_FILE} --batch_size ${BATCH_SIZE}
# or
sh scripts/slurm_test_mgpu.sh ${PARTITION} ${NUM_GPUS} \
--cfg_file ${CONFIG_FILE} --batch_size ${BATCH_SIZE}
我的,储存路径命名为'mydata_1'
:
CUDA_VISIBLE_DEVICES=3,6,7 python -m torch.distributed.launch --nproc_per_node=3 train.py --cfg_file cfgs/kitti_models/pv_rcnn.yaml --launcher pytorch --extra_tag 'mydata_1'
用几张卡–nproc_per_node的值就去取多少,防止溢出