GETTING_STARTED.md 5.25 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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
### 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`.
* Unzip all the above `xxxx.tar` files to the directory of `data/waymo/raw_data_v1_2` as follows (You could get 798 *train* tfrecord and 202 *val* tfrecord ):  
```
OpenPCDet
├── data
│   ├── waymo
│   │   │── ImageSets
│   │   │── raw_data_v1_2
│   │   │   │── segment-xxxxxxxx.tfrecord
|   |   |   |── ...
|   |   |   |── segment-xxxxxxxx.tfrecord
|   |   |── waymo_processed_data
│   │   │   │── segment-xxxxxxxx/
|   |   |   |── ...
|   |   |   |── 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.1.0.
pip3 install waymo-open-dataset-tf-2-1-0==1.2.0 --user
# tf 2.0.0
# pip3 install waymo-open-dataset-tf-2-0-0==1.2.0 --user
# tf 1.15.0
# pip3 install waymo-open-dataset-tf-1-15-0==1.2.0 --user
```

* Generate the data infos by running the following command (it takes several hours): 
```python 
python -m pcdet.datasets.waymo.waymo_dataset --func create_waymo_infos --cfg_file tools/cfgs/dataset_configs/waymo_dataset.yaml
```

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
101
## Training & Testing
Shaoshuai Shi's avatar
Shaoshuai Shi committed
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116


### 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
117
sh scripts/dist_test.sh ${NUM_GPUS} \
Shaoshuai Shi's avatar
Shaoshuai Shi committed
118
    --cfg_file ${CONFIG_FILE} --batch_size ${BATCH_SIZE}
119
120
121

# or

122
sh scripts/slurm_test_mgpu.sh ${PARTITION} ${NUM_GPUS} \ 
123
    --cfg_file ${CONFIG_FILE} --batch_size ${BATCH_SIZE}
Shaoshuai Shi's avatar
Shaoshuai Shi committed
124
125
126
127
```


### Train a model
128
129
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
130

131
* Train with multiple GPUs or multiple machines
Shaoshuai Shi's avatar
Shaoshuai Shi committed
132
```shell script
133
sh scripts/dist_train.sh ${NUM_GPUS} --cfg_file ${CONFIG_FILE}
Shaoshuai Shi's avatar
Shaoshuai Shi committed
134

135
136
137
# or 

sh scripts/slurm_train.sh ${PARTITION} ${JOB_NAME} ${NUM_GPUS} --cfg_file ${CONFIG_FILE}
Shaoshuai Shi's avatar
Shaoshuai Shi committed
138
139
140
141
```

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