Giter Site home page Giter Site logo

gradirn's Introduction

Embedding Gradient-based Optimization in Image Registration Networks

Welcome!

This repository contains the code for training, testing and evaluating the method introduced in the paper:
"Embedding Gradient-based Optimization in Image Registration Networks"
by Huaqi Qiu, Kerstin Hammernik, Chen Qin, Chen Chen, Daniel Rueckert to be presented in MICCAI 2022

The paper is available on ArXiv: https://arxiv.org/abs/2112.03915

Paper TLDR

(If you have read the paper, you can skip this using the Table of Content in the top-left corner of the README!)

In this paper, we introduce a new learning-based registration method (clumsily named "GraDIRN" = "Gradient Descent Network for Image Registration") by connecting the variational energy-based iterative optimization with learning-based iterative networks. Our proposed approach trains ("higher-levle optimization") a DL network that embeds unrolled multiresolution gradient-based energy optimization in its forward pass ("lower-level optimization"), which explicitly enforces image dissimilarity minimization in its update steps.

image

Extensive evaluations were performed on registration tasks using 2D cardiac MR and 3D brain MR images. We demonstrate that our approach achieved state-of-the-art registration performance while using fewer learned parameters,

2D cardiac MRI intra-subject
(UK biobank, end-diastolic vs. end-systolic)
3D brain MRI inter-subject
(CamCAN, aging study)
cardiac brain

with good data efficiency and domain robustness:

More effectively trained with less data Robust against domain shift
data efficiency domain shift

Dependencies

Core dependencies:

  • Pytorch v1.8.1
  • Pytorch Lightning v.1.2.7
  • Numpy v1.21.1
  • Nibabel v3.1.
  • Hydra-core v1.1.0

Running the code

Training

  1. Download and organise the data files of each subject into a directory, with the name of the data files matching the suffix given in the dataloaders in data/datasets.py
  2. Give the path of your train/val data directory in conf/train/data/<your_data_config>.yaml or via command line data.train_path=<your_train_data_path> data.val_path=<your_val_data_path>
  3. Run python train.py experiment_root=<your_experiment_root_dir> run_dir=<your_run_dir_under_experiment_root>

By default this runs on GPU 0 of your machine with mixed precision. Your model should be under <your_experiment_root_dir>/<your_run_dir_under_experiment_root>. These behaviours can be changed in conf/train/conf.yaml.

More detailed instructions coming soon...

Evaluation

More detailed instructions coming soon...

Configurations

We use Hydra for configuration parsing, which means all configurations defined in the YAML files can be overwritten easily via command line.

More detailed instructions coming soon...

Data

The cardiac MRI data from UK biobank and the CamCAN datasets are publicly available. However, we are not allowed to redistribute the original or the preprocessed data ourselves. The preprocessing process are described in the paper and the original data can be applied via the following links:

The data used to evaluate domain shift robustness is freely available from the M&M2 challenge: https://www.ub.edu/mnms-2

Contact us

Email: [email protected]

gradirn's People

Contributors

qiuhuaqi 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.