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 🔥.
- Seg-NN has been accepted as CVPR 2024 Highlight Paper 🔥!
- We release Seg-NN and code, which adapts Point-NN & Point-PN into 3D scene segmentation tasks 🔥.
- For the first time, we conduct 3D analysis entirely requiring
$\color{darkorange}{No\ Parameter\ or\ Training.}$ 💥 - The code of Point-PN has been released 📌.
- The code of Point-NN for shape classification and part segmentation has been released.
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.
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/.
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/
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.
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 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.
@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}
}
If you have any question about this project, please feel free to contact zhangrenrui@pjlab.org.cn.