dashidhy / SMOKE

SMOKE: Single-Stage Monocular 3D Object Detection via Keypoint Estimation

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Original README

New features of this repo

  • python code for KITTI evaluation
  • multi-GPU inference
  • support training and evaluating on nuScenes dataset.
  • tuned hyperparameters for nuScenes
  • estimating objects' velocities and attributes
  • radar data

Requirements

All codes are tested under the following environment:

  • Ubuntu 16.04
  • Python 3.7
  • Pytorch 1.3.1
  • CUDA 10.1

Dataset

This repo supports training and evaluating on official KITTI 3D Object Dataset and nuScenes detection task. For KITTI, please first download the dataset and organize it as following structure:

kitti
│──training
│    ├──calib 
│    ├──label_2 
│    ├──image_2
│    └──ImageSets
└──testing
     ├──calib 
     ├──image_2
     └──ImageSets

For nuScenes, please follow the setup instruction in nuscenes-devkit.

Setup

  1. We use conda to manage the environment:
conda create -n smoke python=3.7
conda activate smoke 
conda install pytorch==1.3.1 torchvision==0.4.2 cudatoolkit=10.1 -c pytorch
pip install yacs scikit-image tqdm shapely nuscenes-devkit
  1. Clone this repo:
git clone https://github.com/dashidhy/SMOKE.git
cd SMOKE
  1. Build codes:
python setup.py build develop
  1. Link to dataset directory:
mkdir datasets
ln -s /path/to/kitti datasets/kitti
ln -s /path/to/nuscenes datasets/nuscenes

Getting started

First check the config files under configs/. Following the origin setting, models are trained on 4 GPUs with 32 batch size, and tested on single GPU.

KITTI dataset:

Training:

python tools/plain_train_net_kitti.py --num-gpus 4 --config-file configs/smoke_gn_vector_kitti.yaml OUTPUT_DIR /your/output/dir

Evaluating:

python tools/plain_train_net_kitti.py --eval-only --config-file configs/smoke_gn_vector_kitti.yaml --ckpt /your/checkpoint OUTPUT_DIR /your/output/dir

nuScenes dataset

First, convert data of nuScenes to json file for better loading:

python tools/convert_nuscenes.py

Training:

python tools/plain_train_net_nusc.py --num-gpus 4 --config-file configs/smoke_gn_vector_nusc.yaml OUTPUT_DIR /your/output/dir

Evaluating, this script only writes json file as required in nuScenes detection task:

python tools/plain_train_net_nusc.py --eval-only --config-file configs/smoke_gn_vector_nusc.yaml --ckpt /your/checkpoint OUTPUT_DIR /your/output/dir

Compute metrics:

python tools/nusc_detection_eval.py --result_path /your/result/json/file --eval_set val --dataroot datasets/nuscenes --output_dir /your/output/dir

About

SMOKE: Single-Stage Monocular 3D Object Detection via Keypoint Estimation

License:MIT License


Languages

Language:Python 76.1%Language:Cuda 17.3%Language:C++ 4.8%Language:C 1.8%