PointCNN is a simple and general framework for feature learning from point cloud, which refreshed five benchmark records in point cloud processing, including:
- classification accuracy on ModelNet40 (91.7%)
- classification accuracy on ScanNet (77.9%)
- segmentation part averaged IoU on ShapeNet Parts (86.13%)
- segmentation mean IoU on S3DIS (62.74%)
- per voxel labelling accuracy on ScanNet (85.1%).
See our research paper on arXiv for more details.
The core X-Conv and PointCNN architecture are defined in ./pointcnn.py.
The network/training/data augmentation hyperparameters for classification tasks are defined in ./pointcnn_cls/*.py, for segmentation tasks are defined in ./pointcnn_seg/*.py
Commands for training and testing ModelNet40 classification:
cd data_conversions python3 ./download_datasets.py -d modelnet cd ../pointcnn_cls ./train_val_modelnet.sh -g 0 -x modelnet_x2_l4
Commands for training and testing ShapeNet Parts segmentation:
cd data_conversions python3 ./download_datasets.py -d shapenet_partseg cd ../pointcnn_seg ./train_val_shapenet.sh -g 0 -x shapenet_x8_2048_fps ./test_shapenet.sh -g 0 -x shapenet_x8_2048_fps -l ../../models/seg/pointcnn_seg_shapenet_x8_2048_fps_xxxx/ckpts/iter-xxxxx -r 10 cd .. python3 ./evaluate_seg.py -g ../data/shapenet_partseg/test_label -p ../data/shapenet_partseg/test_data_pred_10
Other datasets can be processed in a similar way.