maxxxzdn / implicit-steerable-kernels

Official repository of Implicit Neural Convolutional Kernels for Steerable CNNs, Zhdanov et al.
MIT License
23 stars 1 forks source link

Figure 1

Implicit Convolutional Kernels for Steerable CNNs (NeurIPS 2023)

Authors: Maksim Zhdanov, Nico Hoffmann, Gabriele Cesa [ArXiv](https://arxiv.org/abs/2212.06096) | [Blog post](https://maxxxzdn.github.io/blog/implicit_kernels.html) | [Examples](/examples) | [Google Colab](https://colab.research.google.com/drive/1mE_9GRWdhLi8KD6phAc0DPcFOec-b-8Y?usp=sharing)

✨ How can we simplify designing equivariant neural networks and make them more expressive? By using implicit parameterization of convolutional kernels! ✨

Abstract

Steerable convolutional neural networks (CNNs) provide a general framework for building neural networks equivariant to translations and other transformations belonging to an origin-preserving group $G$, such as reflections and rotations. They rely on standard convolutions with $G$-steerable kernels obtained by analytically solving the group-specific equivariance constraint imposed onto the kernel space. As the solution is tailored to a particular group $G$, the implementation of a kernel basis does not generalize to other symmetry transformations, which complicates the development of general group equivariant models. We propose using implicit neural representation via multi-layer perceptrons (MLPs) to parameterize $G$-steerable kernels. The resulting framework offers a simple and flexible way to implement Steerable CNNs and generalizes to any group $G$ for which a $G$-equivariant MLP can be built. We prove the effectiveness of our method on multiple tasks, including N-body simulations, point cloud classification, and molecular property prediction.

Requirements and Installation

Tutorials

Check examples/ for following tutorials:

  1. kernels.ipynb - how to initialize kernels + validating the corectness of learned bases.
  2. grid_conv.ipynb - initializing SO(2) and O(2)-equivariant convolution with implicit kernels on a regular grid + validating its equivariance.
  3. point_conv.ipynb- initializing SO(2) and O(2)-equivariant convolution with implicit kernels on a point cloud + validating its equivariance.
  4. model.ipynb - creating a simple point cloud model that is O(3)-equivariant.

Code Organization

Citation

If you found this code useful, please cite our paper:

@inproceedings{
zhdanov2023implicit,
title={Implicit Convolutional Kernels for Steerable {CNN}s},
author={Zhdanov, Maksim and Hoffmann, Nico and Cesa, Gabriele},
booktitle={Thirty-seventh Conference on Neural Information Processing Systems (NeurIPS)},
year={2023},
url={https://openreview.net/forum?id=2YtdxqvdjX}
}