Camera-based Semantic Scene Completion with Sparse Guidance Network.
- [2023/12]: We release the evaluation results and training code for SSCBench-KITTI-360.
- [2023/12]: Our paper is on arxiv.
- [2023/08]: SGN achieve the SOTA on Camera-based SemanticKITTI 3D SSC (Semantic Scene Completion) Task with 15.76% mIoU and 45.52% IoU.
Semantic scene completion (SSC) aims to predict the semantic occupancy of each voxel in the entire 3D scene from limited observations, which is an emerging and critical task for autonomous driving. Recently, many studies have turned to camera-based SSC solutions due to the richer visual cues and cost-effectiveness of cameras. However, existing methods usually rely on sophisticated and heavy 3D models to process the lifted 3D features directly, which are not discriminative enough for clear segmentation boundaries. In this paper, we adopt the dense-sparse-dense design and propose an end-to-end camera-based SSC framework, termed SGN, to diffuse semantics from the semantic- and occupancy-aware seed voxels to the whole scene based on geometry prior and occupancy information. Firstly, to dynamically select sparse seed voxels and provide occupancy-aware information, we redesign the sparse voxel proposal network to process points generated by depth prediction directly with the coarse-to-fine paradigm. Furthermore, by designing hybrid guidance (sparse semantic and geometry guidance) and effective voxel aggregation for spatial occupancy and geometry priors, we enhance the feature separation between different categories and expedite the convergence of semantic diffusion. Finally, we devise the multi-scale semantic diffusion module for flexible receptive fields while reducing the computation resources. Extensive experimental results on the SemanticKITTI and SSCBench-KITTI-360 datasets demonstrate the superiority of our SGN over existing state-of-the-art methods. And even our light version SGN-L achieves notable scores of 14.80% mIoU and 45.45% IoU on SeamnticKITTI validation with only 12.5 M parameters and 7.16 G training memory.
Please refer to Voxformer to create base environment. Some extra packages are needed to be installed:
- spconv-cu111==2.1.25
- torch-scatter==2.0.8
- tochmetrics>=0.9.0
Please refer to the README in the preprocess folder for details.
Train SGN with 4 GPUs
./tools/dist_train.sh ./projects/configs/sgn/sgn-T-one-stage-guidance.py 4
Eval SGN with 4 GPUs
./tools/dist_test.sh ./projects/configs/sgn/sgn-T-one-stage-guidance.py ./path/to/ckpts.pth 4
Backbone | Dataset | Method | IoU | mIoU | Params (M) | Config | Download |
---|---|---|---|---|---|---|---|
R50 | Sem.KITTI val/test | SGN-T | 46.21/45.42 | 15.32/15.76 | 28.2 | config | model |
R50 | KITTI360 val/test | SGN-T | 47.50/47.06 | 19.07/18.25 | 28.2 | config | model |
R18 | Sem.KITTI val/test | SGN-L | 45.45/43.71 | 14.80/14.39 | 12.5 | config | model |
R18 | KITTI360 val/test | SGN-L | 46.67/46.64 | 17.11/16.95 | 12.5 | config | model |
R50 | Sem.KITTI val/test | SGN-S | 43.60/41.88 | 14.55/14.01 | 28.2 | config | model |
R50 | KITTI360 val/test | SGN-S | 46.13/46.22 | 18.29/17.71 | 28.2 | config | model |
Note that we used the checkpoints that performed best on the validation set during training to evaluate SGN on the test sets for both SemanticKITTI and SSCBench-KITTI-360 datasets.
- SemanticKITTI
- SSCBench-KITTI-360
- Data augmentation
Many thanks to these excellent open source projects: