Home

Awesome

Parameter is Not All You Need

Official implementation of 'Parameter is Not All You Need: Starting from Non-Parametric Networks for 3D Point Cloud Analysis'.

The paper has been accepted by CVPR 2023 🔥.

PWC PWC PWC

News

Introduction

We present a Non-parametric Network for 3D point cloud analysis, Point-NN, which consists of purely non-learnable components. Surprisingly, requiring no parameters or training, it performs well on various 3D tasks, and even surpasses existing fully trained models. Starting from this basic non-parametric model, we propose two extensions. First, Point-NN can serve as a base architectural framework to construct Parametric Networks, Point-PN, which exhibits superior performance with simple linear layers. Second, Point-NN can be regarded as a plug-and-play module to enhance the already trained 3D models during inference by complementary knowledge.

<div align="center"> <img src="pipeline.png"/> </div>

Requirements

Installation

Create a conda environment and install dependencies:

git clone https://github.com/ZrrSkywalker/Point-NN.git
cd Point-NN

conda create -n pointnn python=3.7
conda activate pointnn

# Install the according versions of torch and torchvision
conda install pytorch torchvision cudatoolkit

pip install -r requirements.txt
pip install pointnet2_ops_lib/.

Dataset

Please download the following datasets: ModelNet40, ScanObjectNN, and ShapeNetPart. Then, create a data/ folder and organize the datasets as

data/
|–– h5_files/
|–– modelnet40_ply_hdf5_2048/
|–– shapenetcore_partanno_segmentation_benchmark_v0_normal/

Point-NN --- Very Quick Implementation 🚀

Shape Classification

Due to the training-free manner, the preparation and inference of Point-NN only take 2 minutes.

For ModelNet40 dataset, just run:

python run_nn_cls.py --dataset mn40

For ScanObjectNN dataset, just run:

python run_nn_cls.py --dataset scan --split 1

Please indicate the splits at --split by 1,2,3 for OBJ-BG, OBJ-ONLY, and PB-T50-RS, respectively.

Part Segmentation

For ShapeNetPart, Point-NN takes 7 minutes to achieve 71.5% mIOU (70.4% in the paper), just run:

python run_nn_seg.py

You can increase the point number --points and k-NN neighbors --k into 2048 and 128, which further acheives 74% with 18 minutes.

Point-PN

Shape Classification

Point-PN is the parametric version of Point-NN with efficient parameters and simple 3D operators.

For ModelNet40 dataset, just run:

python run_pn_mn40.py --msg <output filename>

For ScanObjectNN dataset, just run:

python run_pn_scan.py --split 1 --msg <output filename>

Please indicate the splits at --split by 1,2,3 for OBJ-BG, OBJ-ONLY, and PB-T50-RS, respectively.

Citation

@article{zhang2023parameter,
  title={Parameter is not all you need: Starting from non-parametric networks for 3d point cloud analysis},
  author={Zhang, Renrui and Wang, Liuhui and Wang, Yali and Gao, Peng and Li, Hongsheng and Shi, Jianbo},
  journal={arXiv preprint arXiv:2303.08134},
  year={2023}
}

Contact

If you have any question about this project, please feel free to contact zhangrenrui@pjlab.org.cn.