Point cloud classification on ModelNet40
Note in this experiment, we do not use any re-sampled version of ModelNet40 (more than 2K points) or any normal information. The data we use is: modelnet40_ply_hdf5_2048[1].
Dataset
ModelNet40 dataset will be downloaded automatically.
Train
For example, train PointNeXt-S
CUDA_VISIBLE_DEVICES=0 python examples/classification/main.py --cfg cfgs/modelnet40ply2048/pointnext-s.yaml
Test
The default cfgs/modelnet40ply2048/pointnext-s.yaml config uses PointNeXt-S with width 32. The released ModelNet40 model-zoo checkpoint is the C=64 variant, so testing that checkpoint requires model.encoder_args.width=64.
Download the checkpoint with the helper after the HF mirror is published:
python tools/download_checkpoint.py modelnet40-pointnext-s-c64 --output-dir ./hf_cache
Test PointNeXt-S (C=64):
CUDA_VISIBLE_DEVICES=0 python examples/classification/main.py \
--cfg cfgs/modelnet40ply2048/pointnext-s.yaml \
model.encoder_args.width=64 \
mode=test \
--pretrained_path hf_cache/checkpoints/modelnet40/pointnext-s-c64.pth \
wandb.use_wandb=False
Expected released checkpoint result: about OA 94.0 / mAcc 91.1.
Reference
@InProceedings{wu2015modelnet,
author = {Wu, Zhirong and Song, Shuran and Khosla, Aditya and Yu, Fisher and Zhang, Linguang and Tang, Xiaoou and Xiao, Jianxiong},
title = {3D ShapeNets: A Deep Representation for Volumetric Shapes},
booktitle = {CVPR},
year = {2015}
}