All Projects → matteo-ronchetti → torch-radon

matteo-ronchetti / torch-radon

Licence: GPL-3.0 license
Computational Tomography in PyTorch

Programming Languages

python
139335 projects - #7 most used programming language
Cuda
1817 projects
C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to torch-radon

MIRT.jl
MIRT: Michigan Image Reconstruction Toolbox (Julia version)
Stars: ✭ 80 (-17.53%)
Mutual labels:  tomography, inverse-problems
pycsou
Pycsou is a Python 3 package for solving linear inverse problems with state-of-the-art proximal algorithms. The software implements in a highly modular way the main building blocks -cost functionals, penalty terms and linear operators- of generic penalised convex optimisation problems.
Stars: ✭ 37 (-61.86%)
Mutual labels:  inverse-problems
forest-benchmarking
A library for quantum characterization, verification, validation (QCVV), and benchmarking using pyQuil.
Stars: ✭ 41 (-57.73%)
Mutual labels:  tomography
MuRAT
A multi-resolution seismic attenuation tomography code - currently in its 3.0 release
Stars: ✭ 24 (-75.26%)
Mutual labels:  tomography
bh tomo
A Matlab borehole radar/seismic tomography package
Stars: ✭ 17 (-82.47%)
Mutual labels:  tomography
ChaosMagPy
ChaosMagPy is a simple python package for evaluating the CHAOS geomagnetic field model.
Stars: ✭ 14 (-85.57%)
Mutual labels:  inverse-problems
ScouseTom
Open Source EIT system using Keithley 6221 current source and EEG systems
Stars: ✭ 17 (-82.47%)
Mutual labels:  tomography
score sde pytorch
PyTorch implementation for Score-Based Generative Modeling through Stochastic Differential Equations (ICLR 2021, Oral)
Stars: ✭ 755 (+678.35%)
Mutual labels:  inverse-problems
pyunfold
Iterative unfolding for Python
Stars: ✭ 23 (-76.29%)
Mutual labels:  inverse-problems
ERTplot
Script to plot 2D electrical resistivity tomography (ERT) data with much more versatility than RES2DINV allows.
Stars: ✭ 15 (-84.54%)
Mutual labels:  tomography
GlobalBioIm
A unifying Matlab framework for the development of reconstruction algorithms (solving inverse problems) in computational imaging
Stars: ✭ 60 (-38.14%)
Mutual labels:  inverse-problems
sarepy
Numerical techniques for ring artifact removal in tomography.
Stars: ✭ 28 (-71.13%)
Mutual labels:  tomography
direct
Deep learning framework for MRI reconstruction
Stars: ✭ 161 (+65.98%)
Mutual labels:  inverse-problems
tike
Repository for ptychography software
Stars: ✭ 20 (-79.38%)
Mutual labels:  tomography
NeuTomPy-toolbox
Python package for tomographic data processing and reconstruction
Stars: ✭ 20 (-79.38%)
Mutual labels:  tomography
Reproducible Image Denoising State Of The Art
Collection of popular and reproducible image denoising works.
Stars: ✭ 1,776 (+1730.93%)
Mutual labels:  inverse-problems
idrlnet
IDRLnet, a Python toolbox for modeling and solving problems through Physics-Informed Neural Network (PINN) systematically.
Stars: ✭ 54 (-44.33%)
Mutual labels:  inverse-problems
dl-cs
Compressed Sensing: From Research to Clinical Practice with Data-Driven Learning
Stars: ✭ 36 (-62.89%)
Mutual labels:  inverse-problems
pypret
Python for ultrashort laser pulse retrieval
Stars: ✭ 35 (-63.92%)
Mutual labels:  inverse-problems

Travis (.com) Documentation Status GitHub Open In Colab

TorchRadon: Fast Differentiable Routines for Computed Tomography

TorchRadon is a PyTorch extension written in CUDA that implements differentiable routines for solving computed tomography (CT) reconstruction problems.

The library is designed to help researchers working on CT problems to combine deep learning and model-based approaches.

Main features:

  • Forward projections, back projections and shearlet transforms are differentiable and integrated with PyTorch .backward().
  • Up to 125x faster than Astra Toolbox.
  • Batch operations: fully exploit the power of modern GPUs by processing multiple images in parallel.
  • Transparent API: all operations are seamlessly integrated with PyTorch, gradients can be computed using .backward(), half precision can be used with Nvidia AMP.
  • Half precision: storing data in half precision allows to get sensible speedups when doing Radon forward and backward projections with a very small accuracy loss.

Implemented operations:

  • Parallel Beam projections
  • Fan Beam projections
  • Shearlet transform

Installation

Currently only Linux is supported, if you are running a different OS please use Google Colab or the Docker image.

Precompiled packages

If you are running Linux you can install Torch Radon by running:

wget -qO- https://raw.githubusercontent.com/matteo-ronchetti/torch-radon/master/auto_install.py  | python -

Google Colab

You can try the library from your browser using Google Colab, you can find an example notebook here.

Docker Image

Docker images with PyTorch CUDA and Torch Radon are available here.

docker pull matteoronchetti/torch-radon

To use the GPU in docker you need to use nvidia-docker

Build from source

You need to have CUDA and PyTorch installed, then run:

git clone https://github.com/matteo-ronchetti/torch-radon.git
cd torch-radon
python setup.py install

If you encounter any problem please contact the author or open an issue.

Benchmarks

The library is noticeably faster than the Astra Toolbox, especially when data is already on the GPU. Main disadvantage of Astra is that it only takes inputs which are on the CPU, this makes training end-to-end neural networks very inefficient. The following benchmark compares the speed of Astra Toolbox and Torch Radon: V100 Benchmark

If we set clip_to_circle=True (consider only the part of the image that is inside the circle) the speed difference is even larger: V100 Benchmark circle

These results hold also on a cheap laptop GPU: GTX1650 Benchmark

Cite

If you are using TorchRadon in your research, please cite the following paper:

@article{torch_radon,
Author = {Matteo Ronchetti},
Title = {TorchRadon: Fast Differentiable Routines for Computed Tomography},
Year = {2020},
Eprint = {arXiv:2009.14788},
journal={arXiv preprint arXiv:2009.14788},
}

Testing

Install testing dependencies with pip install -r test_requirements.txt then test with:

nosetests tests/
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].