Home

Awesome

Clustering based Point Cloud Representation Learning for 3D Analysis

Clustering based Point Cloud Representation Learning for 3D Analysis <br> Tuo Feng, Wenguan Wang, Xiaohan Wang, Yi Yang, Qinghua Zheng

This repository is the official implementation of "Clustering based Point Cloud Representation Learning for 3D Analysis".

Requirements

The implementation has been based on SPVNAS, and the installation also follows SPVNAS. The details are as follows:

Recommended Installation

For easy installation, use conda:

conda create -n torch python=3.7
conda activate torch
conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch
conda install numba opencv
pip install torchpack
pip install --upgrade git+https://github.com/mit-han-lab/torchsparse.git

SemanticKITTI

Please follow the instructions from semantic-kitti to download the SemanticKITTI dataset (both KITTI Odometry dataset and SemanticKITTI labels) and extract all the files in the sequences folder to /dataset/semantic-kitti. You shall see 22 folders 00, 01, …, 21; each with subfolders named velodyne and labels.

Please replace the dataset root in spvnas/configs/semantic_kitti/default.yaml with the actual directory path of your dataset.

Control file and pretrained models

The control file and pretrained models for SPVNAS<sub>10.8M</sub> were shared by SPVNAS. And the difference between SPVNAS<sub>12.5M</sub> and SPVNAS<sub>10.8M</sub> is that SPVNAS<sub>10.8M</sub> is trained except sequence 08. As for our implementation, SPVNAS<sub>10.8M</sub> and SPVNAS<sub>10.8M</sub> + Ours are trained on sequences 00-10 and evaluated on sequence 11-21.

We placed the Control file and SPVNAS<sub>10.8M</sub> pretrained model in spvnas/configs/semantic_kitti/spvnas/net.config and SemanticKITTI_val_SPVNAS @65GMACs/init, respectively.

Training

To train the models in the paper, run these commands:

CUDA_VISIBLE_DEVICES=0 python spvnas/train_spvnas108m.py

and

CUDA_VISIBLE_DEVICES=0 python spvnas/train_spvnas108m_cluster.py

Evaluate the pretrained model

To evaluate the pretrained models, run:

CUDA_VISIBLE_DEVICES=0 python spvnas/test_spvnas108m.py

and

CUDA_VISIBLE_DEVICES=0 python spvnas/test_spvnas108m_cluster.py

Results will be stored in ./out folder. Test performance can be evaluated by uploading label results onto the SemanticKITTI competition website here.

Remember to shift label number back to the original dataset format before submitting! Instruction can be found in semantic-kitti-api repo.

python remap_semantic_labels.py -p </your result path> -s test --inverse

Pre-trained Models

Our pretrained models are provided here:

Results

The model achieves the following performance on SemanticKITTI Single-Scan test Challenge:

Model namemIoU
SPVNAS<sub>10.8M</sub>62.3
SPVNAS<sub>10.8M</sub> + Ours64.3

Citation

If you find the code useful in your research, please consider citing our paper:

@inproceedings{feng2023clustering,
  title = {Clustering based Point Cloud Representation Learning for 3D Analysis},
  author = {Feng, Tuo and Wang, Wenguan and Wang, Xiaohan and Yang, Yi and Zheng, Qinghua},
  booktitle = {The IEEE International Conference on Computer Vision (ICCV)},  
  year = {2023}
}

Any comments, please email: feng.tuo@student.uts.edu.au.

Acknowledgments

We thank for the opensource codebases: ProtoSeg, self-label, and SPVNAS.