Git Product home page Git Product logo

zs-ssl's Introduction

ZS-SSL: Zero-Shot Self-Supervised Learning

๐ŸšฉTensorflow: This is official tensorflow implementation of ZS-SSL in the following ICLR paper: Zero-Shot Self-Supervised Learning for MRI Reconstruction.

๐ŸšฉPyTorch: For pytorch implementation please visit (zs-ssl-pytorch-implementation).

๐Ÿšฉ If you find our work is helpful for you, please star this repo and cite our paper .

ZS-SSL Overview

ZS-SSL enables physics-guided deep learning MRI reconstruction using only a single slice/sample (paper). Succintly, ZS-SSL partitions the available measurements from a single scan into three disjoint sets. Two of these sets are used to enforce data consistency and define loss during training for self-supervision, while the last set serves to self-validate, establishing an early stopping criterion. In the presence of models pre-trained on a database with different image characteristics, ZS-SSL can be combined with transfer learning (TL) for faster convergence time and reduced computational complexity.


An overview of the proposed zero-shot self-supervised learning approach. a) Acquired measurements for the single scan are partitioned into three sets: a training (ฮ˜) and loss mask (ฮ›) for self-supervision, and a self-validation mask for automated early stopping (ฮ“). b) The parameters, ฮธ, of the unrolled MRI reconstruction network are updated using ฮ˜ and ฮ› in the data consistency (DC) units of the unrolled network and for defining loss, respectively. c) Concurrently, a k-space validation procedure is used to establish the stopping criterion by using โ„ฆ\ฮ“ in the DC units and ฮ“ to measure a validation loss. d) Once the network training has been stopped due to an increasing trend in the k-space validation loss, the final reconstruction is performed using the relevant learned network parameters and all the acquired measurements in the DC unit.

Installation

Dependencies are given in environment.yml. A new conda environment zs_ssl can be installed with

conda env create -f environment.yml

Datasets

We have used the fastMRI dataset in our experiments.

How to use

ZS-SSL training can be performed by running zs_ssl_train.py file. Prior to running training file, hyperparameters such as number of unrolled blocks, split ratio for validation,training and loss masks can be adjusted from parser_ops.py.

zs_ssl_train.py file saves the model corresponding to lowest validation error and saves it to the directory defined by user. Testing can be performed by running zs_ssl_test.ipynb file.

We highly recommend the users to set the outer k-space regions with no signal as 1 in training mask to ensure consistency with acquired measurements. This should be done for both zs_ssl_train.py and zs_ssl_test.ipynb files. Please refer to our SSDU repository for further details.

Transfer Learning (TL)

If ZS-SSL will be combined with TL, user should enable TL option and provide TL path to parser_ops.py. Note that, for transfer learning, pretrained model and ZS-SSL should have the same network architecture. We have provided a pretrained supervised model compatible with ZS-SSL architecture in pretrained_models folder. The pretrained model is used in zs_ssl_train.py for initializing the weights for the training. Pretrained self-supervised models can also be used with ZS-SSL.

Early Automated Stopping

In parser_ops.py, we have also defined a parameter (--stop_training) to automatically stop the training process. The --stop_training parameter denotes the number of consecutive epochs without achieving a lower validation loss (to disable early automated stopping, fix --stop_training to the number of epochs).

Citation

If you find the codes useful in your research, please cite

@inproceedings{
yaman2022zeroshot,
title={Zero-Shot Self-Supervised Learning for {MRI} Reconstruction},
author={Burhaneddin Yaman and Seyed Amir Hossein Hosseini and Mehmet Akcakaya},
booktitle={International Conference on Learning Representations},
year={2022},
url={https://openreview.net/forum?id=085y6YPaYjP}
}

Copyright & License Notice

ยฉ 2021 Regents of the University of Minnesota

ZS-SSL is copyrighted by Regents of the University of Minnesota and covered by US 17/075,411. Regents of the University of Minnesota will license the use of ZS-SSL solely for educational and research purposes by non-profit institutions and US government agencies only. For other proposed uses, contact [email protected]. The software may not be sold or redistributed without prior approval. One may make copies of the software for their use provided that the copies, are not sold or distributed, are used under the same terms and conditions. As unestablished research software, this code is provided on an "as is'' basis without warranty of any kind, either expressed or implied. The downloading, or executing any part of this software constitutes an implicit agreement to these terms. These terms and conditions are subject to change at any time without prior notice.

Questions

If you have questions or issues, please open an issue or reach out to me at yaman013 at umn.edu .

zs-ssl's People

Contributors

byaman14 avatar

Stargazers

Zhifeng Chen avatar  avatar  avatar  avatar HU Jiahao avatar Ziyu Fu avatar Xinran Wang avatar  avatar  avatar aTrotier avatar  avatar Chunxu Guo avatar ๅฏ‚ๅฏž็š„ๆ˜ฏ็ƒŸ่Šฑ avatar B.x. avatar  avatar Zhiyang Fu avatar Heng avatar Stefan avatar Muhammed Balta avatar Gad Mohamed Gad avatar Dimitris Karkalousos avatar Mohammad Zalbagi Darestani avatar Luis Torres avatar Mutaz M. Jaber avatar  avatar David Akinpelu avatar Nilanjan Sarkar avatar  avatar Xinwen Liu avatar  avatar

Watchers

 avatar

zs-ssl's Issues

training time

Hi Burhaneddin,

It is really a nice job. I use your code and train on my data. The result is perfect but it seems to take a long time to train (in my case, ~10 hours for 100 epochs). Does this make sense to you or something is wrong when I am training?
Thank you so much for your help!

Best,
Heng

data preprocess

Hello, could you share something about the processing of the dataset? Thank you!

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.