GithubHelp home page GithubHelp logo

someusername1 / merlin Goto Github PK

View Code? Open in Web Editor NEW

This project forked from midas-tum/merlin

0.0 0.0 0.0 2.72 MB

License: MIT License

C++ 6.85% Python 39.38% Makefile 0.37% CMake 0.02% Jupyter Notebook 53.37%

merlin's Introduction

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.

merlin's People

Contributors

khammernik avatar thomaskuestner 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.