/SRCNN-pytorch

PyTorch implementation of Image Super-Resolution Using Deep Convolutional Networks (ECCV 2014)

Primary LanguagePython

SRCNN

This repository is implementation of the "Image Super-Resolution Using Deep Convolutional Networks".

Differences from the original

  • Added the zero-padding
  • Used the Adam instead of the SGD
  • Removed the weights initialization

Requirements

  • PyTorch 1.0.0
  • Numpy 1.15.4
  • Pillow 5.4.1
  • h5py 2.8.0
  • tqdm 4.30.0

Train

The 91-image, Set5 dataset converted to HDF5 can be downloaded from the links below.

Dataset Scale Type Link
91-image 2 Train Download
91-image 3 Train Download
91-image 4 Train Download
Set5 2 Eval Download
Set5 3 Eval Download
Set5 4 Eval Download

Otherwise, you can use prepare.py to create custom dataset.

python train.py --train-file "BLAH_BLAH/91-image_x3.h5" \
                --eval-file "BLAH_BLAH/Set5_x3.h5" \
                --outputs-dir "BLAH_BLAH/outputs" \
                --scale 3 \
                --lr 1e-4 \
                --batch-size 16 \
                --num-epochs 400 \
                --num-workers 8 \
                --seed 123                

Test

Pre-trained weights can be downloaded from the links below.

Model Scale Link
9-5-5 2 Download
9-5-5 3 Download
9-5-5 4 Download

The results are stored in the same path as the query image.

python test.py --weights-file "BLAH_BLAH/srcnn_x3.pth" \
               --image-file "data/butterfly_GT.bmp" \
               --scale 3

Results

We used the network settings for experiments, i.e., .

PSNR was calculated on the Y channel.

Set5

Eval. Mat Scale SRCNN SRCNN (Ours)
PSNR 2 36.66 36.65
PSNR 3 32.75 33.29
PSNR 4 30.49 30.25
Original BICUBIC x3 SRCNN x3 (27.53 dB)
Original BICUBIC x3 SRCNN x3 (29.30 dB)
Original BICUBIC x3 SRCNN x3 (28.58 dB)