/waymo_2d_tracking

3rd place solution of Waymo open dataset challenge 2D tracking track

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

Baseline for 2D Object Detection and Tracking: Cascade R-CNN X152 and SORT

This repo is the 3rd place solution (method name: CascadeRCNN-SORT v2) of Waymo open dataset challenge 2D tracking track. See our report for technical details.

Video

Installation

Create a conda virtual environment and activate it.

conda env update
conda activate waymo_2d_tracking

Dataset Preprocessing

Download Waymo open dataset, extract images from TFRecords and generate annotations.json in COCO format with command:

python waymo_to_coco.py -i ${WAYMO_DATASET}/training -o ${EXPORTED_DATASET_ROOT}/training -j ${NUM_CPU_CORES} -t ${FRAME_INTERVAL}

Detection

Training with multi GPUs:

./detnet/trainer/launch.sh train.py @detnet/configs/detectron2.cfg --data-root=${EXPORTED_DATASET_ROOT} --batch-size=1 --batch-size-per-gpu --sync-bn --arch=detectron2:Misc/cascade_mask_rcnn_X_152_32x8d_FPN_IN5k_gn_dconv.yaml

Tensorboard training logs of our best model are provided in for reference.

Testing with multi GPUs:

python inference.py -m ${MODEL_FILE} --batch-size=1 -j=${N_GPUS} -o test_output --export $SUBMISSION -i ${PATH_TO_TESTING_IMAGES_FOLDER}

TTA can be applied with args, e.g.: --tta x1.5,hflip --auto-contrast=1

Ensemble multi testings:

python -m detnet.ensemble $SUBMISSION1 SUBMISSION2 [SUBMISSION3 ...] -o  $SUBMISSION_ENSEMBLED -m soft_nms --min-score=0.01 --soft-nms-cut=0.9 -j -1

Make submission for official evaluation:

python coco_to_waymo.py --unique-method-name ${METHOD_NAME} --description ${DESCRIPTION} ${SUBMISSION.json} -o submission.bin

The detection results of our submissions are provided for reference.

Tracking

For tracking, we use SORT with optimized score and IOU thresholds. To create a tracking submission:

python tracking/track.py --input $SUBMISSION_ENSEMBLED --output tracking_submission.json --max-age=2 --min-hits=0 --score-threshold=0.95,0.6,1.0,0.9
python coco_to_waymo.py --unique-method-name ${METHOD_NAME} --description ${DESCRIPTION} tracking_submission.json -o submission.bin