GPU-CuPy accelerated regularisation routines of CCPi-regularisation toolkit
Project description
CCPi-Regularisation Toolkit (Software X paper)
Iterative image reconstruction (IIR) methods frequently require regularisation to ensure convergence and make inverse problem well-posed. The CCPi-Regularisation Toolkit (CCPi-RGL) toolkit provides a set of 2D/3D regularisation strategies to guarantee a better performance of IIR methods (higher SNR and resolution). The regularisation modules for scalar and vectorial datasets are based on the proximal operator framework and can be used with proximal splitting algorithms, such as PDHG, Douglas-Rachford, ADMM, FISTA and others. While the main target for CCPi-RGL is tomographic image reconstruction, the toolkit can be used for image denoising problems. The core modules are written in C-OMP and CUDA languages and wrappers for Matlab and Python are provided. With CuPy dependency installed for Python, one can use regularisers directly without the need for explicit compilation. We recommend this option as the simplest to start with if you've got a GPU. This software can also be used by running in parallel across multiple GPU devices on a PC or a cluster compute node.
Prerequisites
Package modules
Single-channel (scalar)
- Rudin-Osher-Fatemi (ROF) Total Variation (explicit PDE minimisation scheme) 2D/3D CPU/GPU + CuPy[^1]
- Fast-Gradient-Projection (FGP) Total Variation 2D/3D CPU/GPU[^2]
- Split-Bregman (SB) Total Variation 2D/3D CPU/GPU[^5]
- Primal-Dual (PD) Total Variation 2D/3D CPU/GPU + CuPy[^13]
- Total Generalised Variation (TGV) model for higher-order regularisation 2D/3D CPU/GPU[^6][^13]
- Linear and nonlinear diffusion (explicit PDE minimisation scheme) 2D/3D CPU/GPU[^8]
- Anisotropic Fourth-Order Diffusion (explicit PDE minimisation) 2D/3D CPU/GPU[^9]
- A joint ROF-LLT (Lysaker-Lundervold-Tai) model for higher-order regularisation 2D/3D CPU/GPU[^10][^11]
- Nonlocal Total Variation regularisation (GS fixed point iteration) 2D CPU/GPU[^12]
Multi-channel (vectorial)
- Fast-Gradient-Projection (FGP) Directional Total Variation 2D/3D CPU/GPU[^3][^4][^2]
- Total Nuclear Variation (TNV) penalty 2D+channels CPU[^7]
Installation
The package comes as a CMake project and additional wrappers for Python and Matlab. Please see more detailed Installation information.
Python binaries
To install precompiled binaries, you need conda and install from the ccpi channel using :
conda install ccpi-regulariser -c ccpi -c conda-forge
Python (GPU-CuPy)
One can also use some of the GPU modules with the provided CuPy interfaces. The functions in ccpi-regularisation-cupy package work with CuPy arrays as an input and return a CuPy array for output.
conda install -c httomo ccpi-regularisation-cupy
Once installed please see Demos. Please note that not all modules are yet supported as this is an ongoing development. One can install both CuPy-driven and the ccpi-regulariser package in one environment, but please be aware that the functions carry the identical names.
References
[^1]: Rudin, L.I., Osher, S. and Fatemi, E., 1992. Nonlinear total variation based noise removal algorithms. Physica D: nonlinear phenomena, 60(1-4) [^2]: Beck, A. and Teboulle, M., 2009. Fast gradient-based algorithms for constrained total variation image denoising and deblurring problems. IEEE Transactions on Image Processing, 18(11) [^3]: Ehrhardt, M.J. and Betcke, M.M., 2016. Multicontrast MRI reconstruction with structure-guided total variation. SIAM Journal on Imaging Sciences, 9(3) [^4]: Kazantsev, D., Jørgensen, J.S., Andersen, M., Lionheart, W.R., Lee, P.D. and Withers, P.J., 2018. Joint image reconstruction method with correlative multi-channel prior for X-ray spectral computed tomography. Inverse Problems, 34(6) Results can be reproduced using the following SOFTWARE [^5]: Goldstein, T. and Osher, S., 2009. The split Bregman method for L1-regularized problems. SIAM journal on imaging sciences, 2(2) [^6]: Bredies, K., Kunisch, K. and Pock, T., 2010. Total generalized variation. SIAM Journal on Imaging Sciences, 3(3) [^7]: Duran, J., Moeller, M., Sbert, C. and Cremers, D., 2016. Collaborative total variation: a general framework for vectorial TV models. SIAM Journal on Imaging Sciences, 9(1) [^8]: Black, M.J., Sapiro, G., Marimont, D.H. and Heeger, D., 1998. Robust anisotropic diffusion. IEEE Transactions on image processing, 7(3) [^9]: Hajiaboli, M.R., 2011. An anisotropic fourth-order diffusion filter for image noise removal. International Journal of Computer Vision, 92(2) [^10]: Lysaker, M., Lundervold, A. and Tai, X.C., 2003. Noise removal using fourth-order partial differential equation with applications to medical magnetic resonance images in space and time. IEEE Transactions on image processing, 12(12) [^11]: Kazantsev, D., Guo, E., Phillion, A.B., Withers, P.J. and Lee, P.D., 2017. Model-based iterative reconstruction using higher-order regularization of dynamic synchrotron data. Measurement Science and Technology, 28(9) [^12]: Abderrahim E., Lezoray O. and Bougleux S. 2008. Nonlocal discrete regularization on weighted graphs: a framework for image and manifold processing. IEEE Trans. Image Processing 17(7), pp. 1047-1060. [^13]: Chambolle, A. and Pock, T., 2010. A first-order primal-dual algorithm for convex problems with applications to imaging. Journal of mathematical imaging and vision 40(1)
Software (please cite if used)
Applications
- The Core Imaging Library by CCPi
- TOmographic MOdel-BAsed Reconstruction (ToMoBAR)
- Joint image reconstruction method with correlative multi-channel prior for X-ray spectral computed tomography (MATLAB code)
License
Acknowledgments
CCPi-RGL software is a product of the CCPi group and STFC SCD software developers. Any relevant questions/comments can be e-mailed to Daniil Kazantsev.
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 ccpi_regularisation_cupy-24.1.0.tar.gz.
File metadata
- Download URL: ccpi_regularisation_cupy-24.1.0.tar.gz
- Upload date:
- Size: 29.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1d6c7ea80fe250810740b35dade4b37c146ec69fb8ebec7ad49b13fc61125e6a
|
|
| MD5 |
7ce79df2eb17aedb77ce8aec7c5aa661
|
|
| BLAKE2b-256 |
ae5f777b2a1d22642873df70a1ec57b5a13262a760dacd23ed83f9b516ab4858
|
Provenance
The following attestation bundles were made for ccpi_regularisation_cupy-24.1.0.tar.gz:
Publisher:
ccpi_regulariser_pypi_publish.yml on dkazanc/CCPi-Regularisation-Toolkit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ccpi_regularisation_cupy-24.1.0.tar.gz -
Subject digest:
1d6c7ea80fe250810740b35dade4b37c146ec69fb8ebec7ad49b13fc61125e6a - Sigstore transparency entry: 155677492
- Sigstore integration time:
-
Permalink:
dkazanc/CCPi-Regularisation-Toolkit@e2e97d622084920e41a1d805ad6b17004a8d2255 -
Branch / Tag:
refs/tags/v2024.1.0 - Owner: https://github.com/dkazanc
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ccpi_regulariser_pypi_publish.yml@e2e97d622084920e41a1d805ad6b17004a8d2255 -
Trigger Event:
push
-
Statement type:
File details
Details for the file ccpi_regularisation_cupy-24.1.0-py3-none-any.whl.
File metadata
- Download URL: ccpi_regularisation_cupy-24.1.0-py3-none-any.whl
- Upload date:
- Size: 25.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
94b2af49a6447aa0d243d7e85b9ce80ab11b86509f016b410dfcb09d2a371469
|
|
| MD5 |
6a0d72305baf8747a2de728505eadf71
|
|
| BLAKE2b-256 |
b23783593f20db972538914928e831042032a475605666e2d8493a5811d31d24
|
Provenance
The following attestation bundles were made for ccpi_regularisation_cupy-24.1.0-py3-none-any.whl:
Publisher:
ccpi_regulariser_pypi_publish.yml on dkazanc/CCPi-Regularisation-Toolkit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ccpi_regularisation_cupy-24.1.0-py3-none-any.whl -
Subject digest:
94b2af49a6447aa0d243d7e85b9ce80ab11b86509f016b410dfcb09d2a371469 - Sigstore transparency entry: 155677496
- Sigstore integration time:
-
Permalink:
dkazanc/CCPi-Regularisation-Toolkit@e2e97d622084920e41a1d805ad6b17004a8d2255 -
Branch / Tag:
refs/tags/v2024.1.0 - Owner: https://github.com/dkazanc
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ccpi_regulariser_pypi_publish.yml@e2e97d622084920e41a1d805ad6b17004a8d2255 -
Trigger Event:
push
-
Statement type: