Skip to main content

Machine Enhanced Reconstruction Learning and Interpretation Networks (MERLIN) - merlinth

Project description

MERLIN - Machine Enhanced Reconstruction Learning and Interpretation Networks

MERLIN logo

This repository contains machine learning (ML) tools for PyTorch, TensorFlow and Python in three modules:

  • merlinth: ML extensions to PyTorch
  • merlintf: ML extensions to TensorFlow
  • merlinpy: ML extensions to Python

If you use this code, please cite

@inproceedings{HammernikKuestner2022,
  title={Machine Enhanced Reconstruction Learning and Interpretation Networks (MERLIN)},
  author={Hammernik, K. and K{\"u}stner, T.},
  booktitle={Proceedings of the International Society for Magnetic Resonance in Medicine (ISMRM)},
  year={2022}
}

Requirements

git clone https://github.com/midas-tum/optox.git
cd optox
python3 install.py

follow build instructions on the github.

Installation

PyPi

pip3 install merlinpy-mri merlinth-mri merlintf-mri

In case you want to use the sampling codes (C++), please use the direct way installation below for direct compilation according to your system setup.

Direct way

git clone https://github.com/midas-tum/merlin.git
python3 install.py

Verification

Run unittests to ensure proper working of sub-modules

python3 -m unittest discover -s merlinpy.test
python3 -m unittest discover -s merlinth.test
python3 -m unittest discover -s merlintf.test

Contents

!!! Attention !!! This package is work in progress and still under construction. Major changes in structure will appear. If you experience any issues, if you have any feature requests or if you found any bugs, please let us know and raise an issue and/or pull request in github :)

Please watch the Issues space and look for the latest updates regularly! :)

merlinth

merlinth
    |--- layers     # Data-driven regularizer following (https://github.com/VLOGroup/tdv), extended to complex-valued layers and similar setup as layers in `merlintf.keras`
        |-- Complex-valued convolutions
        |-- Complex-valued activations
        |-- Complex-valued pooling
        |-- Complex-valued normalization
        |-- FFT operations
        |-- Data consistency
        |-- ...
    |-- losses     # Common and custom loss functions
    |-- models     # Model zoo
        |-- Fields-of-Experts (FOE) regularizer
        |-- Total deep variation (TDV) regularizer
        |-- UNet
    |-- optim      # Custom optimizers such as BlockAdam

merlintf

merlintf
    |-- keras
        |-- layers      # basic building blocks, focusing on complex valued operations
            |-- Complex-valued convolutions
            |-- Complex-valued activations
            |-- Complex-valued pooling
            |-- Complex-valued normalization
            |-- FFT operations
            |-- Data consistency
            |-- ...
        |-- models      # several layers are put together into networks for complex-valued processing (2-channel-real networks, complex networks)
            |-- Convolutional Neural Network
            |-- Fields-of-Experts (FOE) regularizer
            |-- Total deep variation (TDV) regularizer
            |-- UNet
        |-- optimizers       # custom optimizers    
    |-- optim                # custom optimizers

merlinpy

merlinpy
    |-- datapipeline        # collection of datapipelines and transform functions
        |-- sampling        # subsampling codes and sampling trajectories
    |-- fastmri             # dataloader and processing related to fastMRI database
    |-- losses              # losses/metrics
    |-- recon               # conventional reconstructions
    |-- wandb               # logging via wandb.ai

Common mistakes and best practices

writing own keras modules and layers

  • tf.keras.Model cannot hold any trainable parameters. All trainable weights have to be defined in tf.keras.layers.Layers. Wrong implementation will cause weird behaviour when saving and re-loading the model weights!
  • Do not define weights in the __init__ function. Weights should be only created and initialized in the def build(self, input_shape) function of the Layer. Wrong implementation will cause weird behaviour when saving and re-loading the model weights!
  • The online documentation is a good orientation point to write own modules. Make use of keras Constraints and Initializers.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

merlinth_mri-0.4.1.tar.gz (56.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

merlinth_mri-0.4.1-py2.py3-none-any.whl (80.9 kB view details)

Uploaded Python 2Python 3

File details

Details for the file merlinth_mri-0.4.1.tar.gz.

File metadata

  • Download URL: merlinth_mri-0.4.1.tar.gz
  • Upload date:
  • Size: 56.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.19

File hashes

Hashes for merlinth_mri-0.4.1.tar.gz
Algorithm Hash digest
SHA256 74f8889fbb74fa3fba22d07230de4942e34b1b5f0eadef14eecb8cf3f02b6cb2
MD5 423b11ab5e8d6d4d1fd07bb818d8e1ec
BLAKE2b-256 e8257b949242e6323bdd276ce0d360eac106e78554810b146ec50c8985d6a610

See more details on using hashes here.

File details

Details for the file merlinth_mri-0.4.1-py2.py3-none-any.whl.

File metadata

  • Download URL: merlinth_mri-0.4.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 80.9 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.19

File hashes

Hashes for merlinth_mri-0.4.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 5b4c3843f18a60b85560063ac5c8c2392a820e895f1d8e40a7f8459463a5856f
MD5 6a78dfaa45a55f5b24ce9387ec0eeb73
BLAKE2b-256 3ac05d9c53ce15c4e90d934fc853ae993ac033350ffc3df156cc9f5a7e53f88d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page