This repository is the official implementation of "A simple and universal rotation equivariant point-cloud network".
This project is based on PyTorch 1.9.0, PyTorch Geometric library and pytorch3d 0.6.0.
To install dependencies:
conda create -n pytorch3d python=3.9
conda activate pytorch3d
conda install -c pytorch pytorch=1.10.0 torchvision cudatoolkit=10.2
(or conda install -c pytorch pytorch=1.10.0 torchvision cudatoolkit=11.3 )
conda install -c fvcore -c iopath -c conda-forge fvcore iopath
conda install pytorch3d -c pytorch3d
conda install pyg -c pyg -c conda-forge
To download the ModelNet40 dataset:
wget https://shapenet.cs.stanford.edu/media/modelnet40_normal_resampled.zip
unzip modelnet40_normal_resampled.zip
mv modelnet40_normal_resampled ./datasets/modelnet40_normal_resampled
-
--dataset
: Name of the dataset, all caps -
--n_neighbors
: number of neighbors for our expanded ascending layer -
--dynamic_knn
: Whether the neighbors for the KNN summation should be calculated base on the feature space (when True), or the point cloud data (when False). -
--add_relus
: Whether to add activation layers -
--eps
,--share
,--negative_slope
: the activation layer's hyperparameters -
--k
: The highest order of representation -
--add_linears
: Whether to add linear layers -
--in_channel
: The number of channels we start with in our model -
--u_shape
: Adds U-net style skip connection in between the different orders of representation of our ascending and descending layers -
--z_align
: Assume all point clouds are aligned according to the z axis -
--pool_type
: The pooling layer used -
--drop_out
: The dropout used in our MLP -
--additive_noise
: The maximal ratio of additive noise that is added to each example at train-time -
--scale_noise
: The maximal scaling noise that is applied to each example in train-time -
--SO3_train
: Changed the random rotation around the vertical axis to a random rotation -
--seed
: a seed for reproducibility