Thanks for the OpenPCDet, this implementation of the NIV-SSD is mainly based on the pcdet v0.6.
Abstract: Previous single-stage detectors typically suffer the misalignment between localization accuracy and classification confidence. To solve the misalignment problem, we introduce a novel rectification method named neighbor IoU-voting (NIV) strategy. Typically, classification and regression are treated as separate branches, making it challenging to establish a connection between them. Consequently, the classification confidence cannot accurately reflect the regression quality. NIV strategy can serve as a bridge between classification and regression branches by calculating two types of statistical data from the regression output to correct the classification confidence. Furthermore, to alleviate the imbalance of detection accuracy for complete objects with dense points (easy objects) and incomplete objects with sparse points (difficult objects), we propose a new data augmentation scheme named object resampling. It undersamples easy objects and oversamples difficult objects by randomly transforming part of easy objects into difficult objects. Finally, combining the NIV strategy and object resampling augmentation, we design an efficient single-stage detector termed NIV-SSD. Extensive experiments on several datasets indicate the effectiveness of the NIV strategy and the competitive performance of the NIV-SSD detector.
pip install -r requirement.txt
python setup.py develop
# Download KITTI and organize it into the following form:
├── data
│ ├── kitti
│ │ │── ImageSets
│ │ │── training
│ │ │ ├──calib & velodyne & label_2 & image_2 & (optional: planes)
│ │ │── testing
│ │ │ ├──calib & velodyne & image_2
# Generatedata infos:
python -m pcdet.datasets.kitti.kitti_dataset create_kitti_infos tools/cfgs/dataset_configs/kitti_dataset.yaml
python tools/train.py --cfg_file ${CONFIG_FILE}
# e.g.,
python tools/train.py --cfg_file tools/cfgs/kitti_models/niv-ssd.yaml
bash tools/scripts/dist_train.sh ${NUM_GPUS} --cfg_file ${CONFIG_FILE}
# or
bash tools/scripts/slurm_train.sh ${PARTITION} ${JOB_NAME} ${NUM_GPUS} --cfg_file ${CONFIG_FILE}
# e.g.,
bash tools/scripts/dist_train.sh 8 --cfg_file tools/cfgs/kitti_models/niv-ssd.yaml
python tools/test.py --cfg_file ${CONFIG_FILE} --ckpt ${CKPT}
# e.g.,
python tools/test.py --cfg_file tools/cfgs/kitti_models/niv-ssd.yaml --ckpt {path}
Please cite our paper if you find our work useful for your research:
@article{liu2024niv,
title={NIV-SSD: Neighbor IoU-Voting Single-Stage Object Detector From Point Cloud},
author={Liu, Shuai and Wang, Di and Wang, Quan and Huang, Kai},
journal={arXiv preprint arXiv:2401.12447},
year={2024}
}