PDE-G-CNN package for PyTorch
Project description
LieTorch
This project provides a python package that expands the functionality of the PyTorch framework with PDE-based group equivariant CNN operators [1].
The name
The name LieTorch is a reference to the Norwegian mathematician Sophus Lie, whose contributions to geometry are extensively used in this project. The name is pronounced /li:/ (as in Lee) and not /ˈlī/ (as in lie).
Installation
The version of LieTorch you install must match the installed PyTorch version per the following table.
| PyTorch version | LieTorch version |
|---|---|
| 2.5 | 0.7 |
| 2.0 | 0.6 |
| 1.13 | 0.5 |
| 1.12 | 0.4 |
The following commands will install PyTorch and the lietorch package in a fresh conda environment.
conda create -n <environment name>
conda activate <environment name>
# install PyTorch the usual way
conda install pytorch torchvision torchaudio pytorch-cuda=12.4 -c pytorch -c nvidia
# install lietorch with pip
pip install lietorch
Make sure your Nvidia drivers are up to date!
Neural network modules
Modules are grouped according to the manifold they operate on. Most modules have a functional equivalant in the lietorch.nn.functional namespace.
Euclidean Space ℝ²
Basic operators:
| Module | Functional | C++/CUDA backend |
|---|---|---|
MorphologicalConvolutionR2 |
morphological_convolution_r2 |
✓ |
FractionalDilationR2 |
fractional_dilation_r2 |
✓ |
FractionalErosionR2 |
fractional_erosion_r2 |
✓ |
ConvectionR2 |
convection_r2 |
⏳ |
DiffusionR2 |
diffusion_r2 |
⏳ |
LinearR2 |
linear_r2 |
✓ |
Position and Orientation Space 𝕄₂
Basic operators:
| Module | Functional | C++/CUDA backend |
|---|---|---|
LiftM2Cartesian |
lift_m2_cartesian |
- |
ReflectionPadM2 |
reflection_pad_m2 |
- |
ConvM2Cartesian |
conv_m2_cartesian |
- |
MaxProjectM2 |
max_project_m2 |
- |
AnisotropicDilatedProjectM2 |
anisotropic_dilated_project_m2 |
✓ |
MorphologicalConvolutionM2 |
morphological_convolution_m2 |
✓ |
LinearConvolutionM2 |
linear_convolution_m2 |
✓ |
ConvectionM2 |
convection_m2 |
✓ |
DiffusionM2 |
diffusion_m2 |
⏳ |
FractionalDilationM2 |
fractional_dilation_m2 |
✓ |
FractionalErosionM2 |
fractional_erosion_m2 |
✓ |
LinearM2 |
linear_m2 |
✓ |
High-level modules for implementing PDE-based networks:
| Module | Description/PDE |
|---|---|
ConvectionDilationPdeM2 |
$u_t=-\mathbf{c}u + \lVert \nabla u \rVert^{2 \alpha}_{\mathcal{G}}$ |
ConvectionErosionPdeM2 |
$u_t=-\mathbf{c}u - \lVert \nabla u \rVert^{2 \alpha}_{\mathcal{G}}$ |
CDEPdeLayerM2 |
$u_t=-\mathbf{c}u + \lVert \nabla u \rVert^{2 \alpha}_{\mathcal{G}_1} - \lVert \nabla u \rVert^{2 \alpha}_{\mathcal{G}_2}$ with batch normalization and linear combinations |
Loss functions
Additional loss functions.
| Module | Functional | Description |
|---|---|---|
lietorch.nn.loss.DiceLoss |
lietorch.nn.functional.dice_loss |
Binary DICE loss |
Generic
The modules in the generic category do not fit into any previous category and include operators that serve as C++/CUDA implementation examples.
| Module | Functional | C++/CUDA backend |
|---|---|---|
GrayscaleDilation2D |
grayscale_dilation_2d |
✓ |
GrayscaleErosion2D |
grayscale_erosion_2d |
✓ |
Dependencies
The included experiments additionally depend on the following packages.
- scikit-learn
- tqdm
- numpy
- sty
- mlflow
- libtiff
Structure
/lietorchcontains the main python package./experimentscontains various experiments, including those used in publications./testscontains unit tests./backendcontains the source code of the C++/CUDA backend,- see ./backend/README.md if you wish to compile the extension yourself.
/assetsvarious files used in tests and documentation.
Cite
If you use this code in your own work please cite our paper:
[1] Smets, B.M.N., Portegies, J., Bekkers, E.J. et al. PDE-Based Group Equivariant Convolutional Neural Networks. J Math Imaging Vis (2022). https://doi.org/10.1007/s10851-022-01114-x
@article{smets2022pde,
title={PDE-based Group Equivariant Convolutional Neural Networks},
author={Smets, Bart and Portegies, Jim and Bekkers, Erik and Duits, Remco},
journal={Journal of Mathematical Imaging and Vision},
year={2022},
doi={10.1007/s10851-022-01114-x},
url={https://doi.org/10.1007/s10851-022-01114-x}
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lietorch-0.7.1.tar.gz.
File metadata
- Download URL: lietorch-0.7.1.tar.gz
- Upload date:
- Size: 10.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc300360f9ac2aa32ee163013cf27b72f3e384098f03aee2deb789ed07307476
|
|
| MD5 |
a1e676471b88cdd57c2e4780bb3c1061
|
|
| BLAKE2b-256 |
ae459096e251ebba110981e5d6047b26ce34433eef4095d5c079eda90ddf82a6
|
File details
Details for the file lietorch-0.7.1-py3-none-any.whl.
File metadata
- Download URL: lietorch-0.7.1-py3-none-any.whl
- Upload date:
- Size: 10.1 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bd3ea0a8efffa35af2f4930df64b93ced0dce95167cad86f6e16f0f80b4dcea9
|
|
| MD5 |
ccf551492945e44cf02ff931994bb9dc
|
|
| BLAKE2b-256 |
621defdc4b06e9ecec73cab8d935e810bced81bd18e4e6934aeb812fb923270d
|