# Spherical CNNs

## Equivariant CNNs for the sphere and SO(3) implemented in PyTorch

## Overview

This library contains a PyTorch implementation of the rotation equivariant CNNs for spherical signals (e.g. omnidirectional images, signals on the globe) as presented in [1]. Equivariant networks for the plane are available here.

## Dependencies

**PyTorch**: http://pytorch.org/ (>= 0.4.0)**cupy**: https://github.com/cupy/cupy**lie_learn**: https://github.com/AMLab-Amsterdam/lie_learn**pynvrtc**: https://github.com/NVIDIA/pynvrtc

(commands to install all the dependencies on a new conda environment)

```
conda create --name cuda9 python=3.6
conda activate cuda9
# s2cnn deps
#conda install pytorch torchvision cuda90 -c pytorch # get correct command line at http://pytorch.org/
conda install -c anaconda cupy
pip install pynvrtc
# lie_learn deps
conda install -c anaconda cython
conda install -c anaconda requests
# shrec17 example dep
conda install -c anaconda scipy
conda install -c conda-forge rtree shapely
conda install -c conda-forge pyembree
pip install "trimesh[easy]"
```

## Installation

To install, run

`$ python setup.py install`

## Usage

Please have a look at the examples.

Please cite [1] in your work when using this library in your experiments.

## Feedback

For questions and comments, feel free to contact us: **geiger.mario (gmail)**, taco.cohen (gmail), jonas (argmin.xyz).

## License

MIT

## References

[1] Taco S. Cohen, Mario Geiger, Jonas Köhler, Max Welling, Spherical CNNs. International Conference on Learning Representations (ICLR), 2018.

[2] Taco S. Cohen, Mario Geiger, Jonas Köhler, Max Welling, Convolutional Networks for Spherical Signals. ICML Workshop on Principled Approaches to Deep Learning, 2017.

[3] Taco S. Cohen, Mario Geiger, Maurice Weiler, Intertwiners between Induced Representations (with applications to the theory of equivariant neural networks), ArXiv preprint 1803.10743, 2018.