This repository provides code to reproduce results from the paper: Compressed Sensing using Generative Models.
Here are a few example results:
Reconstruction | Super-resolution | Inpainting |
---|---|---|
Here we show the evolution of the reconstructed image for different number of iterations:
NOTE: Please run all commands from the root directory of the repository, i.e from csgm/
Pip installation can be done by $ pip install -r requirements.txt
Clone the repository and dependencies
$ git clone https://github.com/AshishBora/csgm.git
$ cd csgm
$ git submodule update --init --recursive
Download/extract the datasets:
$ ./setup/download_data.sh
Download/extract pretrained models or train your own!
$ ./setup/download_models.sh
$ ./setup/train_mnist_vae.sh
To use wavelet based estimators, you need to create the basis matrix:
$ python ./src/wavelet_basis.py
The following are the supported experiments and example commands to run the demos:
[Note: For celebA experiments, we run very few iterations per experiment (30) to give a quick demo. To get results with better quality, increase the number of iterations to at least 500 and use at least 2 random restarts.]
$ ./quick_scripts/mnist_reconstr.sh
$ ./quick_scripts/celebA_reconstr.sh "./images/182659.jpg"
$ ./quick_scripts/mnist_superres.sh
$ ./quick_scripts/celebA_superres.sh "./images/182659.jpg"
$ ./quick_scripts/mnist_genspan.sh
$ ./quick_scripts/celebA_genspan.sh
$ ./quick_scripts/mnist_projection.sh
$ ./quick_scripts/celebA_projection.sh "./images/182659.jpg"
$ ./quick_scripts/mnist_inpaint.sh
$ ./quick_scripts/celebA_inpaint.sh "./images/182659.jpg"
Create a scripts directory $ mkdir scripts
Identfy a dataset you would like to get the quantitative results on. Locate the file ./quant_scripts/{dataset}_reconstr.sh
.
Change BASE_SCRIPT
in src/create_scripts.py
to be the same as given at the top of ./quant_scripts/{dataset}_reconstr.sh
.
Optionally, comment out the parts of ./quant_scripts/{dataset}_reconstr.sh
that you don't want to run.
Run ./quant_scripts/{dataset}_reconstr.sh
. This will create a bunch of .sh
files in the ./scripts/
directory, each one of them for a different parameter setting.
Start running these scripts.
$ ./utils/run_sequentially.sh
to run them one by one.$ ./utils/run_all_by_number.sh
to create screens and start proccessing them in parallel. [REQUIRES: gnu screen][WARNING: This may overwhelm the computer]. You can use $ ./utils/stop_all_by_number.sh
to stop the running processes, and clear up the screens started this way.Create a results directory : $ mkdir results
. To get the plots, see src/metrics.ipynb
. To get matrix of images (as in the paper), run $ python src/view_estimated_{dataset}.py
.
You can also manually access the results saved by the scripts. These can be found in appropriately named directories in estimated/
. Directory name conventions are defined in get_checkpoint_dir()
in src/utils.py
For a complete list of images not used while training on celebA, see here.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。