Official PyTorch implementation for the following paper:
Incorporating Rotation Invariance with Non-invariant Networks for Point Clouds
by Jiajun Fei, Zhidong Deng
TL;DR: We propose a novel rotation invariant representation learning method for point clouds named EIPs, which bridge the gap between the non-invariant point cloud representation learning and the invariant one. With EIPs, well-performed non-invariant networks can be easily deployed in invariant tasks and applications.
The repository is built upon OpenPoints, which is a library built for fairly benchmarking and easily reproducing point-based methods for point cloud understanding. It is born in the course of PointNeXt project and is used as an engine therein.
For any question related to OpenPoints, please open an issue in PointNeXt repo.
@Article{qian2022pointnext,
author = {Qian, Guocheng and Li, Yuchen and Peng, Houwen and Mai, Jinjie and Hammoud, Hasan and Elhoseiny, Mohamed and Ghanem, Bernard},
title = {PointNeXt: Revisiting PointNet++ with Improved Training and Scaling Strategies},
journal = {arXiv:2206.04670},
year = {2022},
}
We modify OpenPoints in the following aspects:
- Implement EIP under
openpoints/models/pose
. - Add
validate_so3
support inexamples/classification/train.py
andexamples/shapenetpart/main.py
. - Remove most unrelated files and packages.
- Make some other slight modifications.
conda create -n eip -y python=3.7
conda activate eip
conda install -y pytorch=1.10.1 torchvision cudatoolkit=11.3 -c pytorch -c nvidia
pip install -r requirements.txt
cd openpoints/cpp/pointnet2_batch
python setup.py install
Fill in the datasets path of all cfgs/DATASET/default.yaml
. OpenPoints support automatic downloading and processing.
# train
CUDA_VISIBLE_DEVICES=$GPUs python examples/classification/main.py --cfg $cfg
# test so(3)
CUDA_VISIBLE_DEVICES=$GPUs python examples/classification/main.py --cfg $cfg --pretrained_path $ckpt_path --mode test_so3 --so3_mode random_rot --num_rot 1
# train
CUDA_VISIBLE_DEVICES=$GPUs python examples/shapenetpart/main.py --cfg $cfg
# test so(3)
CUDA_VISIBLE_DEVICES=$GPUs python examples/shapenetpart/main.py --cfg $cfg --pretrained_path $ckpt_path --mode test_so3 --so3_mode random_rot --num_rot 1
We release all EIP checkpoints with log files. You can get our results by unzipping the downloaded file under release_ckpt/
and running evaluate.sh
. Download links: [百度网盘]、[Google Drive].
Our codes are built upon OpenPoints. Thanks to their excellent works!
placeholder