APP-Net: Auxiliary-point-based Push and Pull Operations for Efficient Point Cloud Classification arxiv
Tao Lu, Chunxu Liu, Youxi Chen, Gangshan Wu, Limin Wang
Multimedia Computing Group, Nanjing University
APP-Net is a fast and memory-efficient backbone for point cloud recognition. The efficiency comes from that the total computation complexity is linear to the input points. To achieve this goal, we abandon the FPS+kNN (or Ball Query) paradigm and propose a RandomSample+1NN aggregator. To the best of our knowledge, APP-Net is the first pure-cluster-based backbone for point cloud processing.
The version of below dependencies can be modified according to your machine. The tested system is Ubuntu 16.04.
conda create -n APPNet python=3.7
conda activate APPNet
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch
pip install torch-scatter -f https://data.pyg.org/whl/torch-1.12.1+cu113.html
pip install -e pointnet2_ops_lib/
pip install -r requirements.txt
python install python-pcl
Download it from the official website and then unzip it to data folder:
mkdir -p classification/datasets
cd classification/datasets
wget -c https://shapenet.cs.stanford.edu/media/modelnet40_normal_resampled.zip --no-check-certificate
unzip modelnet40_normal_resampled.zip
cd classification/datasets
Download data from Google Drive, Official or BaiduYun(cdn4).
unzip scanobjectnn.zip
We support two versions of S3DIS, with slight difference in splitting the scenes. The first is the adopted by PointNet2_Pytorch.
mkdir -p semseg/dataset
cd semseg/dataset
wget -c https://shapenet.cs.stanford.edu/media/indoor3d_sem_seg_hdf5_data.zip --no-check-certificate
unzip indoor3d_sem_seg_hdf5_data.zip
The second is adopted by the PointCNN and PVCNN. You can follow them to pre-process the data. We provide a processed one in BaiduYun(5t2n), which can be uncompressed with
cat pointcnn.tar.gz* | tar zx
The dataset file structure should be like
classification/
datasets/
modelnet40_normal_resampled_cache/
train/
test/
scanobjectnn/
h5_files/main_split/
training_objectdataset_augmentedrot_scale75.h5
test_objectdataset_augmentedrot_scale75.h5
-----------------------------------------------------------------------------------------------------------
semseg/
dataset/
indoor3d_sem_seg_hdf5_data/
all_files.txt
room_filelist.txt
ply_data_all_0.h5
*.h5
pointcnn/
Area_1/
Area_2/
Area_3/
Area_4/
Area_5/
Area_6/
We provide scripts for simplifying the starting process. To train classification, type
sh cls_train.sh
To train segmentation (coming soon), type
sh segmseg_train.sh
To change the experiment dataset and backbone, modify the related keyword in
{task}/config/config_{task}.yaml
{task}
refers to classification
or semseg
.
@misc{lu2022appnet,
title={APP-Net: Auxiliary-point-based Push and Pull Operations for Efficient Point Cloud Classification},
author={Tao Lu and Chunxu Liu and Youxin Chen and Gangshan Wu and Limin Wang},
year={2022},
eprint={2205.00847},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
This project is based on the following repos, sincerely thanks to the efforts: