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