|
# XPDNet-brain-af4 |
|
--- |
|
tags: |
|
- TensorFlow |
|
- MRI reconstruction |
|
- MRI |
|
datasets: |
|
- fastMRI |
|
--- |
|
|
|
This model was used to achieve the 3rd highest submission in terms of PSNR on the fastMRI dataset (see https://fastmri.org/leaderboards/). |
|
It is a base model for acceleration factor 4. |
|
The model uses 25 iterations and a medium MWCNN, and a big sensitivity maps refiner. |
|
|
|
## Model description |
|
For more details, see https://arxiv.org/abs/2010.07290. |
|
This section is WIP. |
|
|
|
## Intended uses and limitations |
|
This model can be used to reconstruct brain data from Siemens scanner at acceleration factor 4. |
|
It was shown [here](https://arxiv.org/abs/2106.00753), that it can generalize well, although further tests are required. |
|
|
|
## How to use |
|
This model can be loaded using the following repo: https://github.com/zaccharieramzi/fastmri-reproducible-benchmark. |
|
After cloning the repo, `git clone https://github.com/zaccharieramzi/fastmri-reproducible-benchmark`, you can install the package via `pip install fastmri-reproducible-benchmark`. |
|
The framework is TensorFlow. |
|
|
|
You can initialize and load the model weights as follows: |
|
```python |
|
import tensorflow as tf |
|
|
|
from fastmri_recon.models.subclassed_models.denoisers.proposed_params import get_model_specs |
|
from fastmri_recon.models.subclassed_models.xpdnet import XPDNet |
|
|
|
|
|
n_primal = 5 |
|
model_fun, model_kwargs, n_scales, res = [ |
|
(model_fun, kwargs, n_scales, res) |
|
for m_name, m_size, model_fun, kwargs, _, n_scales, res in get_model_specs(n_primal=n_primal, force_res=False) |
|
if m_name == 'MWCNN' and m_size == 'medium' |
|
][0] |
|
model_kwargs['use_bias'] = False |
|
run_params = dict( |
|
n_primal=n_primal, |
|
multicoil=True, |
|
n_scales=n_scales, |
|
refine_smaps=True, |
|
refine_big=True, |
|
res=res, |
|
output_shape_spec=True, |
|
n_iter=25, |
|
) |
|
model = XPDNet(model_fun, model_kwargs, **run_params) |
|
kspace_size = [1, 1, 320, 320] |
|
inputs = [ |
|
tf.zeros(kspace_size + [1], dtype=tf.complex64), # kspace |
|
tf.zeros(kspace_size, dtype=tf.complex64), # mask |
|
tf.zeros(kspace_size, dtype=tf.complex64), # smaps |
|
tf.constant([[320, 320]]), # shape |
|
] |
|
model(inputs) |
|
model.load_weights('model_weights.h5') |
|
``` |
|
|
|
Using the model is then as simple as: |
|
```python |
|
model([ |
|
kspace, # shape: [n_slices, n_coils, n_rows, n_cols, 1] |
|
mask, # shape: [n_slices, n_coils, n_rows, n_cols] |
|
smaps, # shape: [n_slices, n_coils, n_rows, n_cols] |
|
shape, # shape: [n_slices, 2] |
|
]) |
|
``` |
|
|
|
## Limitations and bias |
|
The limitations and bias of this model have not been properly investigated. |
|
|
|
## Training data |
|
This model was trained using the [fastMRI dataset](https://fastmri.org/dataset/). |
|
|
|
## Training procedure |
|
The training procedure is described in https://arxiv.org/abs/2010.07290. |
|
This section is WIP. |
|
|
|
## Evaluation results |
|
On the fastMRI validation dataset, the same model with a smaller sensitivity maps refiner gives the following results for 30 validation volumes per contrast: |
|
|
|
| Contrast | T1 | T2 | FLAIR | T1-POST | |
|
|----------|--------|--------|--------|---------| |
|
| PSNR | 41.56 | 40.68 | 39.60 | 42.53 | |
|
| SSIM | 0.9506 | 0.9554 | 0.9321 | 0.9683 | |
|
|
|
Further results can be seen on the fastMRI leaderboards for the test and challenge dataset: https://fastmri.org/leaderboards/ |
|
|
|
|
|
## Bibtex entry |
|
``` |
|
@inproceedings{Ramzi2020d, |
|
archivePrefix = {arXiv}, |
|
arxivId = {2010.07290}, |
|
author = {Ramzi, Zaccharie and Ciuciu, Philippe and Starck, Jean-Luc}, |
|
booktitle = {ISMRM}, |
|
eprint = {2010.07290}, |
|
pages = {1--4}, |
|
title = {{XPDNet for MRI Reconstruction: an application to the 2020 fastMRI challenge}}, |
|
url = {http://arxiv.org/abs/2010.07290}, |
|
year = {2021} |
|
} |
|
``` |
|
|
|
|