GithubHelp home page GithubHelp logo

poonono / mirtorch Goto Github PK

View Code? Open in Web Editor NEW

This project forked from guanhuaw/mirtorch

0.0 1.0 0.0 15.84 MB

A PyTorch-powered differentiable image reconstruction/optimization toolbox

License: Other

Python 100.00%

mirtorch's Introduction

MIRTorch

GitHub release (latest by date including pre-releases) Read the Docs

A PyTorch-based differentiable Image Reconstruction Toolbox, developed at the University of Michigan.

The work is inspired by MIRT, a well-acclaimed toolbox for medical imaging reconstruction.

The overarching goal is to provide fast iterative and data-driven image reconstruction across CPUs and GPUs. Researchers can rapidly develop new model-based and learning-based methods (i.e., unrolled neural networks) with its convenient abstraction layers. With the full support of auto-differentiation, one may optimize imaging protocols and image reconstruction parameters with gradient methods.

Documentation: https://mirtorch.readthedocs.io/en/latest/

Installation

We recommend to pre-install PyTorch first. To install the MIRTorch package, after cloning the repo, please try pip install -e .

requirements.txt details the package dependencies.

Features

Linear maps

The LinearMap class overloads common matrix operations, such as +, - , *. It also supports an efficient backpropagation.

Instances include basic linear operations (like con\volution), classical imaging processing, and MRI system matrix (Cartesian and Non-Cartesian, sensitivity- and B0-informed system models). More is on the way...

Since the Jacobian matrix of a linear operator is itself, the toolbox may actively calculate such Jacobians during backpropagation, avoiding the large cache cost required by auto-differentiation.

Proximal operators

The toolbox contains common proximal operators such as soft thresholding. These operators also support the regularizers that involve multiplication with diagonal or unitary matrices, such as orthogonal wavelets.

Iterative reconstruction (IR) algorithms

Currently, the package includes the conjugate gradient (CG), FISTA, and POGM algorithms for image reconstruction.

Dictionary learning

For dictionary learning-based reconstruction, we implemented an efficient dictionary learning algorithm (SOUP-DIL) and orthogonal matching pursuit (OMP). Due to PyTorch’s limited support of sparse matrices, we use SciPy as the backend.

Basic usage

MRI reconstruction:

/example includes SENSE, Non-Cartesian SENSE, and B0-informed reconstruction with penalized weighted least squares (PWLS), compressed sensing (CS), and dictionary learning (DL) methods.

MRI sampling pattern optimization:

/example/demo_mri_traj.ipynb contains MRI sampling pattern optimization examples. One may use the reconstruction loss as objective function to jointly optimize reconstruction algorithms and the sampling pattern.

Acknowledgments

This work is inspired by (but not limited to):

SigPy: https://github.com/mikgroup/sigpy

MIRT/MIRT.jl: https://web.eecs.umich.edu/~fessler/code/index.html

PyLops: https://github.com/PyLops/pylops

License

The MIRTorch uses the BSD3 license.

mirtorch's People

Contributors

guanhuaw avatar keyuezhu avatar neel-one avatar tianrluo avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.