Mining the manifolds of deep generative models for multiple data-consistent solutions of tomographic imaging problems - PyTorch implementation
Sayantan Bhadra1, Umberto Villa1 and Mark A. Anastasio2
1Washington University in St. Louis, USA
2University of Illinois at Urbana-Champaign, USA
- Linux
- Anaconda >= 2018.2
- Python >= 3.6
- NVIDIA GPU(s) (compute capability GeForce GTX 1080 or higher and minimum 8 GB RAM)
- NVIDIA driver >= 440.59, CUDA toolkit >= 10.0
- PULSE++ and PULSE: Create a virtual environment with the following command:
conda create -f pulse_pp.yml
- Langevin sampling: Set up virtual environment by running the commands at https://github.com/utcsilab/csgm-mri-langevin#setup-environment, with root directory as
MRI/langevin/
Download pre-trained model weights of StyleGANs and NCSNv2, and the system matrix for the limited-angle CT imaging system from UIUC Databank: https://doi.org/10.13012/B2IDB-8852490_V1
The scripts for PULSE++ and PULSE should be run with root directory as MRI/
. For running Langevin sampling, the root directory should be MRI/langevin
.
knee_1
andknee_2
: Folders containing objects Knee 1 and Knee 2kspace_1
andkspace_2
: Folders containing undersampled k-space data from Knee 1 and Knee 2masks
: Folder containing 6-fold and 8-fold random Cartesian sampling masks
- Save the downloaded MRI-StyleGAN model weights file
MRI_synthesis.pt
underMRI/
(used for both PULSE++ and PULSE) - Run
./run_meas_alpha.sh
- Run
./run_meas.sh
- Go to the directory
MRI/langevin
- Save the downloaded MRI-NCSNv2 model weights file
MRI_ncsnv2.pth
underMRI/
(used for both PULSE++ and PULSE) - Run
./run_multiple_no_norm.sh
Run PULSE++ with root directory as CT/
lung_1
andlung_2
: Folders containing objects Lung 1 and Lung 2proj_1
andproj_2
: Folders containing limited-angle projection data from Lung 1 and Lung 2
- Place the downloaded system matrix
CT_H_matrix.mat
in the directoryCT/
- Run
run_meas_alpha_airt_kl.sh