Skip to main content

Implementation of DeltaConv: an anisotropic operator for geometric deep learning on point clouds (and other discretizations that will be added in the future).

Project description

DeltaConv

[Paper] [Project page]

Code for the SIGGRAPH 2022 paper "DeltaConv: Anisotropic Operators for Geometric Deep Learning on Point Clouds" by Ruben Wiersma, Ahmad Nasikun, Elmar Eisemann, and Klaus Hildebrandt.

Anisotropic convolution is a central building block of CNNs but challenging to transfer to surfaces. DeltaConv learns combinations and compositions of operators from vector calculus, which are a natural fit for curved surfaces. The result is a simple and robust anisotropic convolution operator for point clouds with state-of-the-art results.

Top: unlike images, surfaces have no global coordinate system. Bottom: DeltaConv learns both scalar and vector features using geometric operators.

Contents

Installation

  1. Clone this repository:
git clone https://github.com/rubenwiersma/deltaconv.git
  1. Create a conda environment from the environment.yml:
conda env create -n deltaconv -f environment.yml

Done!

Manual installation

If you wish to install DeltaConv in your own environment, proceed as follows.

  1. Make sure that you have installed:

  2. Install DeltaConv:

pip install deltaconv

Building DeltaConv for yourself

  1. Make sure you clone the repository with submodules:
git clone --recurse-submodules https://github.com/rubenwiersma/deltaconv.git

If you have already cloned the repository without submodules, you can fix it with git submodule update --init --recursive.

  1. Install from folder:
cd [root_folder]
pip install

Replicating the experiments

See the README.md in replication_scripts for instructions on replicating the experiments and using the pre-trained weights (available in experiments/pretrained_weights).

In short, you can run bash scripts to replicate our experiments. For example, evaluating pre-trained weights on ShapeNet:

cd [root_folder]
conda activate deltaconv
bash replication_scripts/pretrained/shapenet.sh

You can also directly run the python files in experiments:

python experiments/train_shapenet.py

Use the -h or --help flag to find out which arguments can be passed to the training script:

python experiments/train_shapenet.py -h

You can keep track of the training process with tensorboard:

tensorboard logdir=experiments/runs/shapenet_all

Anisotropic Diffusion

The code that was used to generate Figure 2 from the paper and Figure 2 and 3 from the supplement is a notebook in the folder experiments/anisotropic_diffusion.

Data

The training scripts assume that you have a data folder in experiments. ModelNet40 and ShapeNet download the datasets from a public repository. Instructions to download the data for human body shape segmentation, SHREC, and ScanObjectNN are given in the training scripts.

Tests

In the paper, we make statements about a number of properties of DeltaConv that are either a result of prior work or due to the implementation. We created a test suite to ensure that these properties hold for the implementation, along with unit tests for each module. For example:

  • Section 3.6, 3.7: Vector MLPs are equivariant to norm-preserving transformations, or coordinate-independent (rotations, reflections)
    • test/nn/test_mlp.py
    • test/nn/test_nonlin.py
  • Section 3.7: DeltaConv is coordinate-independent, a forward pass on a shape with one choice of bases leads to the same output and weight updates when run with different bases
    • test/nn/test_deltaconv.py
  • Introduction, section 3.2: The operators are robust to noise and outliers.
    • test/geometry/test_grad_div.py
  • Supplement, section 1: Vectors can be mapped between points with equation (15).
    • test/geometry/test_grad_div.py

Citations

Please cite our paper if this code contributes to an academic publication:

@Article{Wiersma2022DeltaConv,
  author    = {Ruben Wiersma, Ahmad Nasikun, Elmar Eisemann, Klaus Hildebrandt},
  journal   = {Transactions on Graphics},
  title     = {DeltaConv: Anisotropic Operators for Geometric Deep Learning on Point Clouds},
  year      = {2022},
  month     = jul,
  number    = {4},
  volume    = {41},
  doi       = {10.1145/3528223.3530166},
  publisher = {ACM},
}

The farthest point sampling code relies on Geometry Central:

@misc{geometrycentral,
  title = {geometry-central},
  author = {Nicholas Sharp and Keenan Crane and others},
  note = {www.geometry-central.net},
  year = {2019}
}

And we make use of PyG (and underlying packages) to load point clouds, compute sparse matrix products, and compute nearest neighbors:

@inproceedings{Fey/Lenssen/2019,
  title={Fast Graph Representation Learning with {PyTorch Geometric}},
  author={Fey, Matthias and Lenssen, Jan E.},
  booktitle={ICLR Workshop on Representation Learning on Graphs and Manifolds},
  year={2019},
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

deltaconv-1.0.2.tar.gz (1.7 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

deltaconv-1.0.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (181.9 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

deltaconv-1.0.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (182.0 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

deltaconv-1.0.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (182.0 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

deltaconv-1.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (181.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

deltaconv-1.0.2-cp39-cp39-win_amd64.whl (89.2 kB view details)

Uploaded CPython 3.9Windows x86-64

deltaconv-1.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (182.1 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

deltaconv-1.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (181.9 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

deltaconv-1.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (183.4 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

deltaconv-1.0.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (183.4 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ x86-64

deltaconv-1.0.2-1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (182.1 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

deltaconv-1.0.2-1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (182.1 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

deltaconv-1.0.2-1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (182.1 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

deltaconv-1.0.2-1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (182.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

deltaconv-1.0.2-1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (182.3 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

deltaconv-1.0.2-1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (182.1 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

deltaconv-1.0.2-1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (183.6 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

deltaconv-1.0.2-1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (183.5 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ x86-64

File details

Details for the file deltaconv-1.0.2.tar.gz.

File metadata

  • Download URL: deltaconv-1.0.2.tar.gz
  • Upload date:
  • Size: 1.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.12

File hashes

Hashes for deltaconv-1.0.2.tar.gz
Algorithm Hash digest
SHA256 806b40d51b615a0ea20c613b4789ef27801f1151e97228da2c0095e4d29ee9f8
MD5 d62080df905c9884bf09726a09f1dc06
BLAKE2b-256 34ae63b8c290e318ea157ccf91b35c0106b152b089f5212d7984be745f36aee6

See more details on using hashes here.

File details

Details for the file deltaconv-1.0.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for deltaconv-1.0.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7e7ee3f78ec76d23b146de96e7f4c8b5ef0de3f7a681f495a4249c117f5eb2b8
MD5 3b4e9bfecb3386e0fde88694415cb6aa
BLAKE2b-256 eaa6f3d3dec5a7b9bd93df152b27c026f2b03e051733ffe78a830a02db5aa3bd

See more details on using hashes here.

File details

Details for the file deltaconv-1.0.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for deltaconv-1.0.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 21ddb11a89f6512fe82100b6ddb46a52706f0c019edc5a7d5f3b05d636b7108d
MD5 325dd7f277ac51eccf3505288f9fd5f5
BLAKE2b-256 5a954575193d7e447275666293a3550204a9c0cfad04f2d8d87ccfa561c674e8

See more details on using hashes here.

File details

Details for the file deltaconv-1.0.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for deltaconv-1.0.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6d8295cb789edbc24f7ebf87b47b55336cfb6f031ff4d4b3b398347592157fd2
MD5 8bb8133c607969810740e4070ce8db15
BLAKE2b-256 1246f8fcbefdf6529ddcf9690d8acb7b140b0a0fca60a4ec5bf1364cf8d6d706

See more details on using hashes here.

File details

Details for the file deltaconv-1.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for deltaconv-1.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 010130e42e568cf273c699ea533dca07932175267f1159c4c6fca0db9c7376a7
MD5 3fa43a76d67cec478ba9cd4c84b3e72e
BLAKE2b-256 dbe2bdf4f64d454a54a19a73e3941703bc3d95254085795ad095f28eaff1b713

See more details on using hashes here.

File details

Details for the file deltaconv-1.0.2-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: deltaconv-1.0.2-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 89.2 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.12

File hashes

Hashes for deltaconv-1.0.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 1fcfd050f642396a1d8520204ad07c6d17e09757352edb737c6aa2dcb7c8d119
MD5 7ecee2d268098cb18409d66f7e3833c3
BLAKE2b-256 723990a586d95ccc06e4442afebd2d22bf5050a5f50093ba455104cc1ec4080d

See more details on using hashes here.

File details

Details for the file deltaconv-1.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for deltaconv-1.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 06f4d86290c4494fefe8348857e44054540dd0b054992acf077435bf5ae917da
MD5 1ae50f111837742f5b38c1b4034e5e30
BLAKE2b-256 d8cc7fdfacefe7d12cf94324053454ae246b23567b37b427a95164f866a395e5

See more details on using hashes here.

File details

Details for the file deltaconv-1.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for deltaconv-1.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b47a5e6edb98447ef470f84d968476257fe70f21a8b69eaa042bc0544560967a
MD5 5a8a235d90d8004892640c9a82d551ee
BLAKE2b-256 0bc0a0ae57f31fc56d4715679646b3a4a41cdabb5f37d6892c998af9f88e26b1

See more details on using hashes here.

File details

Details for the file deltaconv-1.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for deltaconv-1.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 26733d5feeccaa0c9ce8c31ba6fc94cfa6dfb7fd7dca8143d7e689a34807b4b0
MD5 2098f0e27c362381cb8e21b074af674a
BLAKE2b-256 51fafc5a592c23dc19a981e1b1d09a421eab79b448f5cc7856c80e86ec0e684b

See more details on using hashes here.

File details

Details for the file deltaconv-1.0.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for deltaconv-1.0.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 17bd2decb6f409a1cd04e288238f80b6a736f54089d991494e8a3fccecf9eb1e
MD5 b9a59b61dbd8e75a77604ceb9fe9b933
BLAKE2b-256 ef68a56dce0a06fe30de91168ce007b75aeebb32ed6ef99af2f820bc2261f8cf

See more details on using hashes here.

File details

Details for the file deltaconv-1.0.2-1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for deltaconv-1.0.2-1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e242d1188bc8d123584d5b64993ad946b059d994e38f4f34de4c35753b9c3dc3
MD5 272dea57fd64d2c5d0c505adc2d4c8f0
BLAKE2b-256 0eeea6ec19036ef18ae8529027a8eaa8dd47f6c5fe95ca7c8264d1566c20c712

See more details on using hashes here.

File details

Details for the file deltaconv-1.0.2-1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for deltaconv-1.0.2-1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d65ed388139fab3e57b78d380a1764b400e02fc7bc5b53b3b7ae9594f7e2ca87
MD5 9918d137c179a456d8da6007665bcac9
BLAKE2b-256 f0cbb0dd8deb54c49fa7862c741ca2a8f78f320ae51b680675d0825f496371d1

See more details on using hashes here.

File details

Details for the file deltaconv-1.0.2-1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for deltaconv-1.0.2-1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f94f5401d61cfd14a79675177484300b83a744bf1103505e8e8104feea8e8c98
MD5 f725e3718a5f1a3bb9de83cb5da91ce5
BLAKE2b-256 6c969b33a5fb4720fd5d39417a602ca12c67c54a39cacffe1fbf671dcffe32c8

See more details on using hashes here.

File details

Details for the file deltaconv-1.0.2-1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for deltaconv-1.0.2-1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2654c28066eb94e520dee4617878059f95967f9aa5027843e2d9c25e8faa3f67
MD5 9ad02f023f18cad1042621e1f8cd2bf7
BLAKE2b-256 9dd51a21ec6f7327de6d784ab2f2861c8303b3721344d07d8ba088129fc885da

See more details on using hashes here.

File details

Details for the file deltaconv-1.0.2-1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for deltaconv-1.0.2-1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4be93ad3edd78eabe3dcd554f2a0b3d33972bbe213f8f68f2b5d4263d2b3f65b
MD5 cf00a8f048f727a7e1ec98d4aed506f8
BLAKE2b-256 8c5165b8ea79b207ef9b3aa454b706cdcf80ae2f5bf8331541c4824493e2d457

See more details on using hashes here.

File details

Details for the file deltaconv-1.0.2-1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for deltaconv-1.0.2-1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8862d9f5775529297d63d0a799c7d616bff731adee75faf3853c573e737d3e16
MD5 5b6b4d806b850f30a377ed418684c7dc
BLAKE2b-256 0765b78db7fbb3c2c7cb2a5c82baac6e4c5f4b6e95d10e774ccc333ee81028d0

See more details on using hashes here.

File details

Details for the file deltaconv-1.0.2-1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for deltaconv-1.0.2-1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 24c7220cc58d9777cecebea1fa0eb28999684b9dbc12417d045b91efd64cda9a
MD5 6ee097fa14985209a2e840aa2c400a39
BLAKE2b-256 7ba177e2be7061a0b15e5e2a5ec9d0aef64173ae74dd7331ca6e611244ac4ea4

See more details on using hashes here.

File details

Details for the file deltaconv-1.0.2-1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for deltaconv-1.0.2-1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bfa65aea733bbbffde53aea1f504837b2fa32d282a902729e77bc24e27fbcf0f
MD5 f62107f95a2541ca48ff0d7aa1fe692e
BLAKE2b-256 a1240452161bdee73f3d165a384617f37496eeacda1177d7ec38bc53232684ec

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page