Skip to content

Latest commit

 

History

History
50 lines (32 loc) · 2.66 KB

README.md

File metadata and controls

50 lines (32 loc) · 2.66 KB

This repo is outdated and work in progress. Please use the implementation in DIPY (>=1.4.0) for the best possible implementation of Patch2Self.

Video on how to use: YouTube

Medium Article for detailed instructions: Blogpost Link

Patch2Self: Denoising Diffusion MRI with Self-Supervised Learning

This repo demonstrates a framework (Patch2Self) for denoising Diffusion MRI, as described in the paper: NeurIPS Spotlight

The main model to perform the denoising is contained in: model/patch2self.py

We provide support for 4 different types of regressors:

  • Ordinary Least Squares ('ols')
  • Ridge ('ridge')
  • Lasso ('lasso')
  • Multilayer Perceptron ('mlp')

API: To denoise any diffusion data via Patch2Self:

# load the 4D DWI data 
denoised_data = patch2self(data, model='ridge')

# one can save the denoised data in the Nifti file format using DIPY:
from dipy.io.image import save_nifti
save_nifti('filename.nii.gz', denoised data, np.eye(4))

Tutorial Notebooks:

Denoise various datasets shows how patch2self can be used to denoise different datasets.

Denoising simulated phantom shows how patch2self works on denoising on simulated data.

Regression Comparison shows effect of patch2self using different regressors mentioned above. To run the MLP Regressor, make sure to run the MLP Regressor first.

Tractography Comparison shows effect of patch2self on tractography using probabilistic tractography via CSA and CSD. We show comparison between different denoising algorithms using Fiber Bundle Coherency metric explaines in the paper.

Voxel-wise k-fold Crossvalidation and Box-plots: k-fold Crossvalidation shows the k-fold crossvalidation analyses.

Diffusion Kurtosis Imaging Analysis depicts the effects denoising on DKI maps.

  • Links to the data used in the above tutorials are provided in the supplement.

Dependencies are in the environment.yml file.