Skip to content
Image restoration with neural networks but without learning.
Branch: master
Clone or download
Pull request Compare This branch is 3 commits ahead of DmitryUlyanov:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
data added gif generation + outputting images per iteration May 13, 2019
utils fixes for pytorch 0.4 Jun 7, 2018
Dockerfile Added Dockerfile and environment file, together with usage instructions Jan 21, 2018
LICENSE Rename LICENCE to LICENSE Dec 2, 2017 Update Jun 29, 2018
activation_maximization.ipynb fixes for pytorch 0.4 Jun 7, 2018
denoising.ipynb . May 15, 2019
feature_inversion.ipynb Update feature_inversion.ipynb Jan 13, 2019
flash-no-flash.ipynb Update flash-no-flash.ipynb Jan 13, 2019
inpainting.ipynb Update inpainting.ipynb Aug 2, 2018
restoration.ipynb Update restoration.ipynb Mar 10, 2019
sr_prior_effect.ipynb fixes for pytorch 0.4 Jun 7, 2018
super-resolution.ipynb fixes for pytorch 0.4 Jun 7, 2018

Warning! The optimization may not converge on some GPUs. We've personnaly experienced issues on Tesla V100 and P40 GPUs. When running the code, make sure you get similar results to the paper first. Easiest to check using text inpainting notebook. Try to set double precision mode or turn off cudnn.

Deep image prior

In this repository we provide Jupyter Notebooks to reproduce each figure from the paper:

Deep Image Prior

CVPR 2018

Dmitry Ulyanov, Andrea Vedaldi, Victor Lempitsky

[paper] [supmat] [project page]

Here we provide hyperparameters and architectures, that were used to generate the figures. Most of them are far from optimal. Do not hesitate to change them and see the effect.

We will expand this README with a list of hyperparameters and options shortly.


Here is the list of libraries you need to install to execute the code:

  • python = 3.6
  • pytorch = 0.4
  • numpy
  • scipy
  • matplotlib
  • scikit-image
  • jupyter

All of them can be installed via conda (anaconda), e.g.

conda install jupyter

Docker image

Alternatively, you can use a Docker image that exposes a Jupyter Notebook with all required dependencies. To build this image ensure you have both docker and nvidia-docker installed, then run

nvidia-docker build -t deep-image-prior .

After the build you can start the container as

nvidia-docker run --rm -it --ipc=host -p 8888:8888 deep-image-prior

you will be provided an URL through which you can connect to the Jupyter notebook.


    author    = {Ulyanov, Dmitry and Vedaldi, Andrea and Lempitsky, Victor},
    title     = {Deep Image Prior},
    journal   = {arXiv:1711.10925},
    year      = {2017}
You can’t perform that action at this time.