GETTING_STARTED.md 5.07 KB
Newer Older
1
2
3
# Getting Started
The dataset configs are located within [tools/cfgs/dataset_configs](../tools/cfgs/dataset_configs), 
and the model configs are located within [tools/cfgs](../tools/cfgs) for different datasets. 
Shaoshuai Shi's avatar
Shaoshuai Shi committed
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52


## Dataset Preparation

Currently we provide the dataloader of KITTI dataset and NuScenes dataset, and the supporting of more datasets are on the way.  

### KITTI Dataset
* Please download the official [KITTI 3D object detection](http://www.cvlibs.net/datasets/kitti/eval_object.php?obj_benchmark=3d) dataset and organize the downloaded files as follows (the road planes could be downloaded from [[road plane]](https://drive.google.com/file/d/1d5mq0RXRnvHPVeKx6Q612z0YRO1t2wAp/view?usp=sharing), which are optional for data augmentation in the training):
* NOTE: if you already have the data infos from `pcdet v0.1`, you can choose to use the old infos and set the DATABASE_WITH_FAKELIDAR option in tools/cfgs/dataset_configs/kitti_dataset.yaml as True. The second choice is that you can create the infos and gt database again and leave the config unchanged.

```
OpenPCDet
├── data
│   ├── kitti
│   │   │── ImageSets
│   │   │── training
│   │   │   ├──calib & velodyne & label_2 & image_2 & (optional: planes)
│   │   │── testing
│   │   │   ├──calib & velodyne & image_2
├── pcdet
├── tools
```

* Generate the data infos by running the following command: 
```python 
python -m pcdet.datasets.kitti.kitti_dataset create_kitti_infos tools/cfgs/dataset_configs/kitti_dataset.yaml
```

### NuScenes Dataset
* Please download the official [NuScenes 3D object detection dataset](https://www.nuscenes.org/download) and 
organize the downloaded files as follows: 
```
OpenPCDet
├── data
│   ├── nuscenes
│   │   │── v1.0-trainval (or v1.0-mini if you use mini)
│   │   │   │── samples
│   │   │   │── sweeps
│   │   │   │── maps
│   │   │   │── v1.0-trainval  
├── pcdet
├── tools
```

* Install the `nuscenes-devkit` with version `1.0.5` by running the following command: 
```shell script
pip install nuscenes-devkit==1.0.5
```

Shaoshuai Shi's avatar
Shaoshuai Shi committed
53
* Generate the data infos by running the following command (it may take several hours): 
Shaoshuai Shi's avatar
Shaoshuai Shi committed
54
55
56
57
58
59
```python 
python -m pcdet.datasets.nuscenes.nuscenes_dataset --func create_nuscenes_infos \ 
    --cfg_file tools/cfgs/dataset_configs/nuscenes_dataset.yaml \
    --version v1.0-trainval
```

Shaoshuai Shi's avatar
Shaoshuai Shi committed
60
61
62
63
### Waymo Open Dataset
* Please download the official [Waymo Open Dataset](https://waymo.com/open/download/), 
including the training data `training_0000.tar~training_0031.tar` and the validation 
data `validation_0000.tar~validation_0007.tar`.
64
* Unzip all the above `xxxx.tar` files to the directory of `data/waymo/raw_data` as follows (You could get 798 *train* tfrecord and 202 *val* tfrecord ):  
Shaoshuai Shi's avatar
Shaoshuai Shi committed
65
66
67
68
69
```
OpenPCDet
├── data
│   ├── waymo
│   │   │── ImageSets
70
│   │   │── raw_data
Shaoshuai Shi's avatar
Shaoshuai Shi committed
71
72
73
74
75
76
77
78
79
80
81
82
83
84
│   │   │   │── segment-xxxxxxxx.tfrecord
|   |   |   |── ...
|   |   |── waymo_processed_data
│   │   │   │── segment-xxxxxxxx/
|   |   |   |── ...
│   │   │── pcdet_gt_database_train_sampled_xx/
│   │   │── pcdet_waymo_dbinfos_train_sampled_xx.pkl   
├── pcdet
├── tools
```
* Install the official `waymo-open-dataset` by running the following command: 
```shell script
pip3 install --upgrade pip
# tf 2.0.0
Shaoshuai Shi's avatar
Shaoshuai Shi committed
85
pip3 install waymo-open-dataset-tf-2-0-0==1.2.0 --user
Shaoshuai Shi's avatar
Shaoshuai Shi committed
86
87
```

Shaoshuai Shi's avatar
Shaoshuai Shi committed
88
* Extract point cloud data from tfrecord and generate data infos by running the following command (it takes several hours): 
Shaoshuai Shi's avatar
Shaoshuai Shi committed
89
```python 
90
91
python -m pcdet.datasets.waymo.waymo_dataset --func create_waymo_infos \ -
    -cfg_file tools/cfgs/dataset_configs/waymo_dataset.yaml
Shaoshuai Shi's avatar
Shaoshuai Shi committed
92
93
94
95
```

Note that you do not need to install `waymo-open-dataset` if you have already processed the data before and do not need to evaluate with official Waymo Metrics. 

Shaoshuai Shi's avatar
Shaoshuai Shi committed
96
## Training & Testing
Shaoshuai Shi's avatar
Shaoshuai Shi committed
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111


### Test and evaluate the pretrained models
* Test with a pretrained model: 
```shell script
python test.py --cfg_file ${CONFIG_FILE} --batch_size ${BATCH_SIZE} --ckpt ${CKPT}
```

* To test all the saved checkpoints of a specific training setting and draw the performance curve on the Tensorboard, add the `--eval_all` argument: 
```shell script
python test.py --cfg_file ${CONFIG_FILE} --batch_size ${BATCH_SIZE} --eval_all
```

* To test with multiple GPUs:
```shell script
112
sh scripts/dist_test.sh ${NUM_GPUS} \
Shaoshuai Shi's avatar
Shaoshuai Shi committed
113
    --cfg_file ${CONFIG_FILE} --batch_size ${BATCH_SIZE}
114
115
116

# or

117
sh scripts/slurm_test_mgpu.sh ${PARTITION} ${NUM_GPUS} \ 
118
    --cfg_file ${CONFIG_FILE} --batch_size ${BATCH_SIZE}
Shaoshuai Shi's avatar
Shaoshuai Shi committed
119
120
121
122
```


### Train a model
123
124
You could optionally add extra command line parameters `--batch_size ${BATCH_SIZE}` and `--epochs ${EPOCHS}` to specify your preferred parameters. 
  
Shaoshuai Shi's avatar
Shaoshuai Shi committed
125

126
* Train with multiple GPUs or multiple machines
Shaoshuai Shi's avatar
Shaoshuai Shi committed
127
```shell script
128
sh scripts/dist_train.sh ${NUM_GPUS} --cfg_file ${CONFIG_FILE}
Shaoshuai Shi's avatar
Shaoshuai Shi committed
129

130
131
132
# or 

sh scripts/slurm_train.sh ${PARTITION} ${JOB_NAME} ${NUM_GPUS} --cfg_file ${CONFIG_FILE}
Shaoshuai Shi's avatar
Shaoshuai Shi committed
133
134
135
136
```

* Train with a single GPU:
```shell script
137
python train.py --cfg_file ${CONFIG_FILE}
Gus-Guo's avatar
Gus-Guo committed
138
```