v0lta/PyTorch-Wavelet-Toolbox

[JMLR] Differentiable fast wavelet transforms in PyTorch with GPU support.

What it solves

It provides a PyTorch-native implementation of wavelet transforms, enabling the use of discrete (DWT) and continuous (CWT) wavelet transforms within deep learning workflows. Unlike standard libraries, it allows these transforms to benefit from GPU acceleration and automatic differentiation (gradient support).

How it works

The toolbox implements various wavelet operations using PyTorch backends:

  • Convolution-based transforms: Uses conv1d, conv2d, and their transposed counterparts for fast wavelet transforms (fwt) across 1D, 2D, and 3D data.
  • Sparse-matrix transforms: Uses torch.sparse.mm to implement boundary wavelets, which avoid adding extra pixels at the edges of the data.
  • Adaptive Wavelets: Provides experimental support for training adaptive product-filters and optimizable orthogonal-wavelets as layers within a neural network.
  • Integration: It extends the functionality of PyWavelets while ensuring compatibility with PyTorch tensors.

Who it’s for

Researchers and developers working on signal processing, image analysis, or neural network architectures that require multi-resolution analysis and differentiable wavelet transforms.

Highlights

  • Multi-dimensional support: Includes analysis and synthesis for 1D, 2D, and 3D data.
  • Hardware acceleration: Full GPU support via PyTorch.
  • Differentiable: Supports gradients, making it suitable for integration into trainable ML models.
  • Boundary handling: Offers sparse-matrix-based transforms to handle boundaries without padding.
  • Wavelet Packets: Supports single and two-dimensional wavelet packet transforms.

Related

  • Project
  • Project
  • Project
  • Project
  • Project