This is a pytorch implementation of the paper: Why Discard if You can Recycle?: A Recycling Max Pooling Module for 3D Point Cloud Analysis. The paper could be found here. For a quick learning, you could go to /model/cls or /model/seg to compare the original DGCNN and DGCNN with RMP for classification and segmentation task. The code for ScanObjectNN, ModelNet40 and S3DIS dataset experiment has been given, I will finish the code instruction of ScanObjectNN and S3DIS as soon as possible.
The picture below shows the network structure of point-based method. Most point-based method use max pooling module to extract Permutation Invaraint Feature for downstream task. However, according to our abservation, a great number of points are completely discarded during the max pooling.
In order to solve this problem, we proposed the Recycling Max Pooling Module to make use of the discarded points' feature, which is shown below:
For more details, please refer to the paper
You can download the official data, and unzip it. The path of "Data" is needed for traning.
Training the original DGCNN
python main_modelnet40.py --data_path /path/to/Data --exp_name DGCNN
Training the DGCNN with RMP(Recycling Max Pooling)
python main_modelnet40_ref.py --data_path /path/to/Data --exp_name DGCNN_RMP
Evaluation is performed after each epoch's training. You could check the accuracy by
tensorboard --logdir /path/to/the/experiment