Graph R-CNN: Towards Accurate 3D Object Detection with Semantic-Decorated Local Graph (ECCV 2022, Oral)
NEWS
[2022-09-30] Code for the Waymo Open Dataset is released 🚀!
[2022-07-04] Graph R-CNN is accepted at ECCV 2022 🔥!
[2021-12-26] We rank 1st on the KITTI BEV car detection leaderboard 🔥!
Installation
We test this project on NVIDIA A100 GPUs and Ubuntu 18.04.
conda create -n graphrcnn python=3.7
conda activate graphrcnn
conda install pytorch==1.10.1 torchvision==0.11.2 cudatoolkit=11.1 -c pytorch -c conda-forge
pip install protobuf==3.19.4 waymo-open-dataset-tf-2-2-0 spconv-cu111 numpy numba scipy pyyaml easydict fire tqdm shapely matplotlib opencv-python addict pyquaternion nuscenes-devkit==1.0.5
pip install torch-scatter -f https://data.pyg.org/whl/torch-1.10.1+cu111.html
git clone https://github.com/Nightmare-n/GraphRCNN
cd GraphRCNN && python setup.py develop --user
Data Preparation
- Please download the official Waymo Open Dataset,
including the training data
training_0000.tar~training_0031.tar
and the validation datavalidation_0000.tar~validation_0007.tar
. - 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 ):
data
│── waymo
│ │── ImageSets (from OpenPCDet)
│ │── raw_data
│ │ │── segment-xxxxxxxx.tfrecord
│ │ │── ...
│ │── waymo_processed_data_cp
│ │ │── train/
│ │ │ │── annos/
│ │ │ │── lidar/
│ │ │── ...
│ │── gt_database_1sweeps_withvelo/
│ │── dbinfos_train_1sweeps_withvelo.pkl
│ │── infos_train_01sweeps_filter_zero_gt.pkl
│ │── infos_val_01sweeps_filter_zero_gt.pkl
- Convert the tfrecord data to pickle files.
python det3d/datasets/waymo/waymo_converter.py --root_path /data/waymo --raw_data_tag raw_data --processed_data_tag waymo_processed_data_cp --split train
python det3d/datasets/waymo/waymo_converter.py --root_path /data/waymo --raw_data_tag raw_data --processed_data_tag waymo_processed_data_cp --split val
- Extract point cloud data from tfrecord and generate data infos by running the following command:
python tools/create_data.py waymo_data_prep --root_path /data/waymo --processed_data_tag waymo_processed_data_cp --split train --nsweeps 1
python tools/create_data.py waymo_data_prep --root_path /data/waymo --processed_data_tag waymo_processed_data_cp --split val --nsweeps 1
Training & Testing
bash ./slurm_trainval.sh
# or
bash ./dist_tranval.sh
Results
We show the reproduced results based on the latest version of the CenterPoint codebase.
Vec_L1 | Vec_L2 | Ped_L1 | Ped_L2 | Cyc_L1 | Cyc_L2 | All | |
---|---|---|---|---|---|---|---|
Graph R-CNN (w/o PointNet) | 80.46/79.97 | 72.27/71.82 | 82.01/76.49 | 74.13/68.90 | 77.63/76.50 | 74.87/73.78 | Log |
Citation
If you find this project useful in your research, please consider citing:
@inproceedings{yang2022graphrcnn,
author = {Honghui Yang and Zili Liu and Xiaopei Wu and Wenxiao Wang and Wei Qian and Xiaofei He and Deng Cai},
title = {Graph R-CNN: Towards Accurate 3D Object Detection with Semantic-Decorated Local Graph},
booktitle = {ECCV},
year = {2022},
}
Acknowledgement
This project is mainly based on the following codebases. Thanks for their great works!