All the codes are tested in the following environment:
- Python 3.6+
- PyTorch 1.10.1
- CUDA 11.3
- wandb 0.12.11
spconv-cu113 v2.1.21
Our implementations of 3D detectors are based on the lastest OpenPCDet. To install this pcdet library and its dependent libraries, please run the following command:
python setup.py developNOTE: Please re-install even if you have already installed pcdet previoursly.
Currently we provide the dataloader of KITTI dataset and Waymo dataset, and the supporting of more datasets are on the way.
- Please download the official KITTI 3D object detection dataset and organize the downloaded files as follows (the road planes could be downloaded from [road plane], which are optional for data augmentation in the training):
- If you would like to train CaDDN, download the precomputed depth maps for the KITTI training set
- 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.
STONE-Active-3D-Detection
├── data
│ ├── kitti
│ │ │── ImageSets
│ │ │── training
│ │ │ ├──calib & velodyne & label_2 & image_2 & (optional: planes) & (optional: depth_2)
│ │ │── testing
│ │ │ ├──calib & velodyne & image_2
├── pcdet
├── tools
- Generate the data infos by running the following command:
python -m pcdet.datasets.kitti.kitti_dataset create_kitti_infos tools/cfgs/dataset_configs/kitti_dataset.yaml- Please download the official Waymo Open Dataset,
including the training data
training_0000.tar~training_0031.tarand the validation datavalidation_0000.tar~validation_0007.tar. - Unzip all the above
xxxx.tarfiles to the directory ofdata/waymo/raw_dataas follows (You could get 798 train tfrecord and 202 val tfrecord ):
STONE-Active-3D-Detection
├── data
│ ├── waymo
│ │ │── ImageSets
│ │ │── raw_data
│ │ │ │── segment-xxxxxxxx.tfrecord
| | | |── ...
| | |── waymo_processed_data_v0_5_0
│ │ │ │── segment-xxxxxxxx/
| | | |── ...
│ │ │── waymo_processed_data_v0_5_0_gt_database_train_sampled_1/
│ │ │── waymo_processed_data_v0_5_0_waymo_dbinfos_train_sampled_1.pkl
│ │ │── waymo_processed_data_v0_5_0_gt_database_train_sampled_1_global.npy (optional)
│ │ │── waymo_processed_data_v0_5_0_infos_train.pkl (optional)
│ │ │── waymo_processed_data_v0_5_0_infos_val.pkl (optional)
├── pcdet
├── tools
- Install the official
waymo-open-datasetby running the following command:
pip3 install --upgrade pip
pip3 install waymo-open-dataset-tf-2-0-0==1.2.0 --user- Extract point cloud data from tfrecord and generate data infos by running the following command (it takes several hours,
and you could refer to
data/waymo/waymo_processed_data_v0_5_0to see how many records that have been processed):
python -m pcdet.datasets.waymo.waymo_dataset --func create_waymo_infos \
--cfg_file tools/cfgs/dataset_configs/waymo_dataset.yamlNote 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.
sh scripts/${DATASET}/train_${DATASET}_backbone.sh- STONE sampling [
STONE] - random selection [
random] - confidence sample [
confidence] - entropy sampling [
entropy] - MC-Reg sampling [
montecarlo] - greedy coreset [
coreset] - learning loss [
llal] - BADGE sampling [
badge] - CRB sampling [
crb]
- Train:
python train.py --cfg_file ${CONFIG_FILE}